From b41a4263eadc121b21cf11b1df6617da160fe017 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Sat, 22 Jul 2023 15:37:48 +0200 Subject: [PATCH 001/249] Luna clothing. * Added Nail polish. * Added Piercings. * Added Tank top with shorts outfit. * Added Bimbo outfit. * Updated Heart glasses artwork. --- .../default/clothes/bottom/shorts/0.webp | 3 + .../default/clothes/bottom/shorts/1.webp | 3 + .../default/clothes/bottom/shorts/2.webp | 3 + .../clothes/bottom/shorts/outline.webp | 3 + .../default/clothes/bottom/shorts/skin.webp | 3 + .../default/clothes/bottom/skirt_plaid/0.webp | 3 + .../default/clothes/bottom/skirt_plaid/1.webp | 3 + .../default/clothes/bottom/skirt_plaid/2.webp | 3 + .../default/clothes/bottom/skirt_plaid/3.webp | 3 + .../clothes/bottom/skirt_plaid/outline.webp | 3 + .../clothes/bottom/skirt_plaid/skin.webp | 3 + .../default/clothes/earrings/ear_studs/0.webp | 3 + .../clothes/earrings/ear_studs/extra.webp | 3 + .../clothes/earrings/ear_studs/outline.webp | 3 + .../clothes/earrings/earring_moon/0.webp | 3 + .../clothes/earrings/earring_moon/1.webp | 3 + .../clothes/earrings/earring_moon/2.webp | 3 + .../clothes/earrings/earring_moon/extra.webp | 3 + .../earrings/earring_moon/outline.webp | 3 + .../clothes/glasses/sunglasses_2/0.webp | 3 - .../clothes/glasses/sunglasses_2/0_back.webp | 3 + .../glasses/sunglasses_2/0_zorder_150.webp | 3 + .../clothes/glasses/sunglasses_2/1.webp | 3 - .../glasses/sunglasses_2/1_zorder_150.webp | 3 + .../clothes/glasses/sunglasses_2/extra.webp | 3 - .../sunglasses_2/extra_zorder_150.webp | 3 + .../clothes/glasses/sunglasses_2/outline.webp | 3 - .../glasses/sunglasses_2/outline_back.webp | 3 + .../sunglasses_2/outline_zorder_150.webp | 3 + .../clothes/glasses/sunglasses_2/skin.webp | 3 + .../default/clothes/makeup/nail_polish/0.webp | 3 + .../clothes/makeup/nail_polish/extra.webp | 3 + .../default/clothes/piercing/clit_stud/0.webp | 3 + .../clothes/piercing/clit_stud/extra.webp | 3 + .../clothes/piercing/clit_stud/outline.webp | 3 + .../piercing/eyebrow_ring/angry/0.webp | 3 + .../piercing/eyebrow_ring/angry/extra.webp | 3 + .../piercing/eyebrow_ring/angry/outline.webp | 3 + .../piercing/eyebrow_ring/annoyed/0.webp | 3 + .../piercing/eyebrow_ring/annoyed/extra.webp | 3 + .../eyebrow_ring/annoyed/outline.webp | 3 + .../clothes/piercing/eyebrow_ring/base/0.webp | 3 + .../piercing/eyebrow_ring/base/extra.webp | 3 + .../piercing/eyebrow_ring/base/outline.webp | 3 + .../clothes/piercing/eyebrow_ring/low/0.webp | 3 + .../piercing/eyebrow_ring/low/extra.webp | 3 + .../piercing/eyebrow_ring/low/outline.webp | 3 + .../piercing/eyebrow_ring/raised/0.webp | 3 + .../piercing/eyebrow_ring/raised/extra.webp | 3 + .../piercing/eyebrow_ring/raised/outline.webp | 3 + .../piercing/eyebrow_ring/worried/0.webp | 3 + .../piercing/eyebrow_ring/worried/extra.webp | 3 + .../eyebrow_ring/worried/outline.webp | 3 + .../clothes/piercing/mouth_stud/angry/0.webp | 3 + .../piercing/mouth_stud/angry/extra.webp | 3 + .../piercing/mouth_stud/angry/outline.webp | 3 + .../piercing/mouth_stud/annoyed/0.webp | 3 + .../piercing/mouth_stud/annoyed/extra.webp | 3 + .../piercing/mouth_stud/annoyed/outline.webp | 3 + .../clothes/piercing/mouth_stud/base/0.webp | 3 + .../piercing/mouth_stud/base/extra.webp | 3 + .../piercing/mouth_stud/base/outline.webp | 3 + .../clothes/piercing/mouth_stud/clench/0.webp | 3 + .../piercing/mouth_stud/clench/extra.webp | 3 + .../piercing/mouth_stud/clench/outline.webp | 3 + .../piercing/mouth_stud/crooked_smile/0.webp | 3 + .../mouth_stud/crooked_smile/extra.webp | 3 + .../mouth_stud/crooked_smile/outline.webp | 3 + .../piercing/mouth_stud/disgust/0.webp | 3 + .../piercing/mouth_stud/disgust/extra.webp | 3 + .../piercing/mouth_stud/disgust/outline.webp | 3 + .../clothes/piercing/mouth_stud/full/0.webp | 3 + .../piercing/mouth_stud/full/extra.webp | 3 + .../piercing/mouth_stud/full/outline.webp | 3 + .../clothes/piercing/mouth_stud/grin/0.webp | 3 + .../piercing/mouth_stud/grin/extra.webp | 3 + .../piercing/mouth_stud/grin/outline.webp | 3 + .../clothes/piercing/mouth_stud/mad/0.webp | 3 + .../piercing/mouth_stud/mad/extra.webp | 3 + .../piercing/mouth_stud/mad/outline.webp | 3 + .../clothes/piercing/mouth_stud/normal/0.webp | 3 + .../piercing/mouth_stud/normal/extra.webp | 3 + .../piercing/mouth_stud/normal/outline.webp | 3 + .../clothes/piercing/mouth_stud/open/0.webp | 3 + .../piercing/mouth_stud/open/extra.webp | 3 + .../piercing/mouth_stud/open/outline.webp | 3 + .../piercing/mouth_stud/open_tongue/0.webp | 3 + .../mouth_stud/open_tongue/extra.webp | 3 + .../mouth_stud/open_tongue/outline.webp | 3 + .../mouth_stud/open_wide_tongue/0.webp | 3 + .../mouth_stud/open_wide_tongue/extra.webp | 3 + .../mouth_stud/open_wide_tongue/outline.webp | 3 + .../clothes/piercing/mouth_stud/scream/0.webp | 3 + .../piercing/mouth_stud/scream/extra.webp | 3 + .../piercing/mouth_stud/scream/outline.webp | 3 + .../clothes/piercing/mouth_stud/shock/0.webp | 3 + .../piercing/mouth_stud/shock/extra.webp | 3 + .../piercing/mouth_stud/shock/outline.webp | 3 + .../clothes/piercing/mouth_stud/silly/0.webp | 3 + .../piercing/mouth_stud/silly/extra.webp | 3 + .../piercing/mouth_stud/silly/outline.webp | 3 + .../clothes/piercing/mouth_stud/smile/0.webp | 3 + .../piercing/mouth_stud/smile/extra.webp | 3 + .../piercing/mouth_stud/smile/outline.webp | 3 + .../clothes/piercing/mouth_stud/soft/0.webp | 3 + .../piercing/mouth_stud/soft/extra.webp | 3 + .../piercing/mouth_stud/soft/outline.webp | 3 + .../clothes/piercing/mouth_stud/upset/0.webp | 3 + .../piercing/mouth_stud/upset/extra.webp | 3 + .../piercing/mouth_stud/upset/outline.webp | 3 + .../clothes/piercing/nipple_rings/0.webp | 3 + .../clothes/piercing/nipple_rings/extra.webp | 3 + .../piercing/nipple_rings/outline.webp | 3 + .../clothes/piercing/nipple_studs/0.webp | 3 + .../clothes/piercing/nipple_studs/extra.webp | 3 + .../piercing/nipple_studs/outline.webp | 3 + .../default/clothes/piercing/nose_ring/0.webp | 3 + .../clothes/piercing/nose_ring/extra.webp | 3 + .../clothes/piercing/nose_ring/outline.webp | 3 + .../clothes/stockings/leggings_bimbo/0.webp | 3 + .../clothes/stockings/leggings_bimbo/1.webp | 3 + .../clothes/stockings/leggings_bimbo/2.webp | 3 + .../clothes/stockings/leggings_bimbo/3.webp | 3 + .../stockings/leggings_bimbo/outline.webp | 3 + .../stockings/leggings_bimbo/skin.webp | 3 + .../default/clothes/top/short_tanktop/0.webp | 3 + .../default/clothes/top/short_tanktop/1.webp | 3 + .../clothes/top/short_tanktop/outline.webp | 3 + .../clothes/top/short_tanktop/skin.webp | 3 + .../poses/default/clothes/top/top_torn/0.webp | 3 + .../poses/default/clothes/top/top_torn/1.webp | 3 + .../default/clothes/top/top_torn/outline.webp | 3 + .../default/clothes/top/top_torn/skin.webp | 3 + game/scripts/characters/luna/wardrobe.rpy | 44 +++++++++++- .../characters/luna/wardrobe_reactions.rpy | 72 ++++++++++++++++++- game/scripts/shops/dress/chitchats.rpy | 23 ++++++ 136 files changed, 521 insertions(+), 17 deletions(-) create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts/0.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts/1.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts/2.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/skirt_plaid/0.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/skirt_plaid/1.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/skirt_plaid/2.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/skirt_plaid/3.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/skirt_plaid/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/skirt_plaid/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/earrings/ear_studs/0.webp create mode 100644 game/characters/luna/poses/default/clothes/earrings/ear_studs/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/earrings/ear_studs/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/earrings/earring_moon/0.webp create mode 100644 game/characters/luna/poses/default/clothes/earrings/earring_moon/1.webp create mode 100644 game/characters/luna/poses/default/clothes/earrings/earring_moon/2.webp create mode 100644 game/characters/luna/poses/default/clothes/earrings/earring_moon/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/earrings/earring_moon/outline.webp delete mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0.webp create mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0_back.webp create mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0_zorder_150.webp delete mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/1.webp create mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/1_zorder_150.webp delete mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/extra_zorder_150.webp delete mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_back.webp create mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_zorder_150.webp create mode 100644 game/characters/luna/poses/default/clothes/glasses/sunglasses_2/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/makeup/nail_polish/0.webp create mode 100644 game/characters/luna/poses/default/clothes/makeup/nail_polish/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/clit_stud/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/clit_stud/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/clit_stud/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nipple_rings/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nipple_rings/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nipple_rings/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nipple_studs/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nipple_studs/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nipple_studs/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nose_ring/0.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nose_ring/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/piercing/nose_ring/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/0.webp create mode 100644 game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/1.webp create mode 100644 game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/2.webp create mode 100644 game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/3.webp create mode 100644 game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/top/short_tanktop/0.webp create mode 100644 game/characters/luna/poses/default/clothes/top/short_tanktop/1.webp create mode 100644 game/characters/luna/poses/default/clothes/top/short_tanktop/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/top/short_tanktop/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_torn/0.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_torn/1.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_torn/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_torn/skin.webp diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts/0.webp b/game/characters/luna/poses/default/clothes/bottom/shorts/0.webp new file mode 100644 index 00000000..d24dcace --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50b1d34b23472aa5cc91c5f073b92a268baea7aa197f446504431b05dec77ee6 +size 10220 diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts/1.webp b/game/characters/luna/poses/default/clothes/bottom/shorts/1.webp new file mode 100644 index 00000000..9defb7a4 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e3410fa3ec006458dcad3685fad511d7d46cefeaac856b50124a02a2ab44151 +size 1988 diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts/2.webp b/game/characters/luna/poses/default/clothes/bottom/shorts/2.webp new file mode 100644 index 00000000..4051f1ff --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts/2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:896a292a99a2d3734a5faa4b3f341bd02ab93a5f120881e8d477172e8fefce27 +size 7948 diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts/outline.webp b/game/characters/luna/poses/default/clothes/bottom/shorts/outline.webp new file mode 100644 index 00000000..c185abf2 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:626e12b87a4d7bbdb4ba57528e244796c420fac6142ffe4dbc04e7128e106ace +size 12902 diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts/skin.webp b/game/characters/luna/poses/default/clothes/bottom/shorts/skin.webp new file mode 100644 index 00000000..cbc8d6bd --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e31332ffd9bb9c0c2eeb6d886e1c5a7657251ff0199b0ab6934ca0b8e81e3f3 +size 2852 diff --git a/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/0.webp b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/0.webp new file mode 100644 index 00000000..cc17f550 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e444ae6fc5fac997a619a499ca6868b2ce8506138e55d3e3f302b6a45fbb5d8d +size 7358 diff --git a/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/1.webp b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/1.webp new file mode 100644 index 00000000..60ab3764 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:169182db72d68f7db4750aa308e5b0f502d44a90d911aca967d180ffdbd3ed6a +size 11434 diff --git a/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/2.webp b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/2.webp new file mode 100644 index 00000000..beda339d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f340bac016074051d19f57c2f30f22474e24e30c6e53a20f497cccd4e50b192b +size 2316 diff --git a/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/3.webp b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/3.webp new file mode 100644 index 00000000..931bb840 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/3.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:940e19632448c89d90372ed0043ae09a8d8e4e1247e41864c27463d6a841cd44 +size 628 diff --git a/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/outline.webp b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/outline.webp new file mode 100644 index 00000000..54fcdc36 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06774be9466d6430aca0346be2bd477547c172b9eea4eef62842d7b962e4722a +size 9108 diff --git a/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/skin.webp b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/skin.webp new file mode 100644 index 00000000..4865d36e --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/skirt_plaid/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b58640f84764065e4f83ffa7f0528307182782eb8fb834948e6b2be86a52a02 +size 5224 diff --git a/game/characters/luna/poses/default/clothes/earrings/ear_studs/0.webp b/game/characters/luna/poses/default/clothes/earrings/ear_studs/0.webp new file mode 100644 index 00000000..0ce284e6 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/earrings/ear_studs/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:190176595a63a1d7c293f41432f6c434f034d02df9e84d0ace9e33e5e021fe94 +size 582 diff --git a/game/characters/luna/poses/default/clothes/earrings/ear_studs/extra.webp b/game/characters/luna/poses/default/clothes/earrings/ear_studs/extra.webp new file mode 100644 index 00000000..d872859b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/earrings/ear_studs/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:431b0232b75c3e5689f486ef96d9cee0f75359358528d1196dbafb09f85cc348 +size 538 diff --git a/game/characters/luna/poses/default/clothes/earrings/ear_studs/outline.webp b/game/characters/luna/poses/default/clothes/earrings/ear_studs/outline.webp new file mode 100644 index 00000000..6dc896b1 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/earrings/ear_studs/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7d05ac68efaf18fcd31637022ce275987702d5fa1ed14cf610629ad73052af6 +size 578 diff --git a/game/characters/luna/poses/default/clothes/earrings/earring_moon/0.webp b/game/characters/luna/poses/default/clothes/earrings/earring_moon/0.webp new file mode 100644 index 00000000..b6d2dad3 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/earrings/earring_moon/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82cffaf1efbc0e1d76704add8a92fbec79a6127212e727edc5203c3000f148d2 +size 640 diff --git a/game/characters/luna/poses/default/clothes/earrings/earring_moon/1.webp b/game/characters/luna/poses/default/clothes/earrings/earring_moon/1.webp new file mode 100644 index 00000000..a66f19fc --- /dev/null +++ b/game/characters/luna/poses/default/clothes/earrings/earring_moon/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af264b3b4e78599f5d4c5e71afc76b6cd3797b8c90dfba2df3392a16a3dbfac6 +size 582 diff --git a/game/characters/luna/poses/default/clothes/earrings/earring_moon/2.webp b/game/characters/luna/poses/default/clothes/earrings/earring_moon/2.webp new file mode 100644 index 00000000..c0d823a4 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/earrings/earring_moon/2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:009d168fda5bf75cbb16ac73254fe61ea39b51a79b0442f42fe71d6dc42768c2 +size 604 diff --git a/game/characters/luna/poses/default/clothes/earrings/earring_moon/extra.webp b/game/characters/luna/poses/default/clothes/earrings/earring_moon/extra.webp new file mode 100644 index 00000000..38d8acb8 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/earrings/earring_moon/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e99e9a1d71f6b39ae36f8abb7ca5177432f994b1f58984e15c1f1ba9b7ec7084 +size 586 diff --git a/game/characters/luna/poses/default/clothes/earrings/earring_moon/outline.webp b/game/characters/luna/poses/default/clothes/earrings/earring_moon/outline.webp new file mode 100644 index 00000000..2752596c --- /dev/null +++ b/game/characters/luna/poses/default/clothes/earrings/earring_moon/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2b2c82218a5850964c07ad320b05cb5a08e0f863698667e0bdc9f0b79f2a7b1 +size 966 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0.webp deleted file mode 100644 index 18ca8b79..00000000 --- a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3a6b99fde887014df8fe288048b4f64488c0a8b634445c4e67a14282a3321fb5 -size 4370 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0_back.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0_back.webp new file mode 100644 index 00000000..deae2c7f --- /dev/null +++ b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94c60e48cdf99b12f60b48098800e5f6ab70e42f66c1d459e0f1406c05544599 +size 572 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0_zorder_150.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0_zorder_150.webp new file mode 100644 index 00000000..a0b99743 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/0_zorder_150.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdd8638406ecef703aa920a0518292ce360b7a3e767a6234094defce1586a184 +size 1534 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/1.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/1.webp deleted file mode 100644 index fadb437b..00000000 --- a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/1.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d89cb675f5d71ff33d3df76f319e46e7731af92c662a5c29e4fb94f74a9f9eb -size 3506 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/1_zorder_150.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/1_zorder_150.webp new file mode 100644 index 00000000..199a5cdc --- /dev/null +++ b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/1_zorder_150.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:989ad75c37671c8281cc021a756b7e724fa21a8ff77a162043ff3a117feebfbf +size 2622 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/extra.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/extra.webp deleted file mode 100644 index ddbeb936..00000000 --- a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/extra.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1c91d42f8f5feeb6bec3138a302cf2904021ce792fe73666f2c39a01aa544515 -size 4090 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/extra_zorder_150.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/extra_zorder_150.webp new file mode 100644 index 00000000..0c07f6dc --- /dev/null +++ b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/extra_zorder_150.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ed9a20fab44943a3b04cef2a8022b2b6bfd81b0d6cd315c962da7a595f20128 +size 4604 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline.webp deleted file mode 100644 index 8d45acda..00000000 --- a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38d3f87d6e24cef039dbc9dda1ca0d59aa5a9a5e8a3625d1cd4cd8c3453b19eb -size 4622 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_back.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_back.webp new file mode 100644 index 00000000..7d3727a4 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79eccd9cec3b045413797ffff096fd01edc1b62fdd1b71036399e73dece3cccb +size 570 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_zorder_150.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_zorder_150.webp new file mode 100644 index 00000000..d66f0836 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_zorder_150.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1494d57049415402b44a4873313fb68cbaaca58eed3d5c1b739e3ecce7e47b3d +size 3588 diff --git a/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/skin.webp b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/skin.webp new file mode 100644 index 00000000..d6d104a6 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/glasses/sunglasses_2/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2206baaa2fbe62cd36c8a804e13dbbe21d9cd4c5d042b7ea0eec66eed12550be +size 2318 diff --git a/game/characters/luna/poses/default/clothes/makeup/nail_polish/0.webp b/game/characters/luna/poses/default/clothes/makeup/nail_polish/0.webp new file mode 100644 index 00000000..63e484be --- /dev/null +++ b/game/characters/luna/poses/default/clothes/makeup/nail_polish/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6105669250710b98244f6c06c71ad2e8beb2ba8a7238d5c02c01d25f03a5d1f9 +size 1078 diff --git a/game/characters/luna/poses/default/clothes/makeup/nail_polish/extra.webp b/game/characters/luna/poses/default/clothes/makeup/nail_polish/extra.webp new file mode 100644 index 00000000..01e5c06e --- /dev/null +++ b/game/characters/luna/poses/default/clothes/makeup/nail_polish/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5650fa1cba634abe6137ed53cb22fd9f149d463df3b4f665e7b6ca8e6f50cded +size 818 diff --git a/game/characters/luna/poses/default/clothes/piercing/clit_stud/0.webp b/game/characters/luna/poses/default/clothes/piercing/clit_stud/0.webp new file mode 100644 index 00000000..8cecf4e0 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/clit_stud/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f513ba80523287929176be5b6199142e47831ed047b6d852742185428459ddce +size 548 diff --git a/game/characters/luna/poses/default/clothes/piercing/clit_stud/extra.webp b/game/characters/luna/poses/default/clothes/piercing/clit_stud/extra.webp new file mode 100644 index 00000000..849ce6d6 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/clit_stud/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2052870a885f531ad1eead759dc656b12fc0f6b48fdb5a88ee5a7e0e8cd30c06 +size 310 diff --git a/game/characters/luna/poses/default/clothes/piercing/clit_stud/outline.webp b/game/characters/luna/poses/default/clothes/piercing/clit_stud/outline.webp new file mode 100644 index 00000000..03c69f38 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/clit_stud/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c3e699c331a40d3c7397ed6c0007f529727e81e50678e7a9a4546ce3b3649c9 +size 554 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/0.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/0.webp new file mode 100644 index 00000000..52224191 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:193c486c3a3f0865c71cd8712a517c19b6cd567c2fdada4f1e738f776cd1d697 +size 608 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/extra.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/extra.webp new file mode 100644 index 00000000..77051792 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d531172c4dc58cdc50b11335a1de0f98b79715f466c6ae412abd5a14b39c20cf +size 536 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/outline.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/outline.webp new file mode 100644 index 00000000..04cf20d1 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51e5a8d855e020fcbc4797a41e53d91c794e457fb6a70dd76fe933502dc9b9a1 +size 648 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/0.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/0.webp new file mode 100644 index 00000000..e8784218 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da1b23ed86c95b3dc03dd6a391fc4724396f3997e33ebd2b53d6962358c2c5e2 +size 606 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/extra.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/extra.webp new file mode 100644 index 00000000..efb5a353 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f14bebd877e353388378ea809d4324e11c9551660699d483674aefd3dc03be08 +size 530 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/outline.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/outline.webp new file mode 100644 index 00000000..8a48c980 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da9894116e7c24069af49b5f7e19e4c922449f0362f690f6b593cc248b383e73 +size 646 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/0.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/0.webp new file mode 100644 index 00000000..810e618d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f693f83cfa0edae98cb81264e22b77eb7b0285101d73b602a39c616e11a1b613 +size 666 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/extra.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/extra.webp new file mode 100644 index 00000000..27d49694 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:181e1c72b1caeaf23fe412bcf31a31299e36175bbae9ba6fc5453e6b138850cf +size 538 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/outline.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/outline.webp new file mode 100644 index 00000000..6ef82c97 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e09feb2693a9feb8a04c287a7c3d51a9181847bb8c4871fa5be1f60317a67e2 +size 652 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/0.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/0.webp new file mode 100644 index 00000000..a03bd7bd --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93629f6caecf25dfd834d78ff7beadccf2f2dcb408a03ecf292796b8707a54e4 +size 606 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/extra.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/extra.webp new file mode 100644 index 00000000..9044c3e5 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d9395c87d710958d0ee32b28406e4eac738e866fed97863a22126dc18fed53b +size 544 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/outline.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/outline.webp new file mode 100644 index 00000000..217b9103 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dfa7036586ee8505e0fcae96ad66d2d3c98e35cd73f5ca84e2dd36aa1d7d970 +size 648 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/0.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/0.webp new file mode 100644 index 00000000..4ae2de8c --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38b33e906af52bb31290247a01c8718bd46af58468b6ce5d78ba91c883ec02d4 +size 608 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/extra.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/extra.webp new file mode 100644 index 00000000..85047541 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38f251610bff3e54fae7a9e52b3da2da48446dcfb73df006018f19316f33d7e9 +size 540 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/outline.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/outline.webp new file mode 100644 index 00000000..f1e90ede --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8383c521f4c9cb5ee30f37a53feb19fd442fbbe16b9e21a2fa514b2ea33cf077 +size 646 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/0.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/0.webp new file mode 100644 index 00000000..689b26ad --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:affe775e5764df7646678ac4bd58ead7897c9436512a28a26ea3a6f647d21369 +size 608 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/extra.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/extra.webp new file mode 100644 index 00000000..9479d241 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d74c93e071e637835a59d413f4eaa6dc15284ea7bdfab9e40733495a8a44318 +size 528 diff --git a/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/outline.webp b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/outline.webp new file mode 100644 index 00000000..ebc9cf73 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a13f8de41d1125a8e1e1748b76b71efb9db2bc24057ba6c5cebe9b961918ea27 +size 648 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/0.webp new file mode 100644 index 00000000..e7719e46 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ec45165d1f96996174fc9b0ca8e49315523b0cb36eb039cc5b8b874b6f4acb4 +size 554 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/extra.webp new file mode 100644 index 00000000..3b17a463 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e2d1c7a877b17d192c5a9b6c0437784bca9aa3f4f33e970b8f9003331f2bc4a +size 316 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/outline.webp new file mode 100644 index 00000000..cc35e727 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/angry/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33b7f1ea42c3961165275fd8cdd4d489b7026b069a346b415f75c6eda9137867 +size 530 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/0.webp new file mode 100644 index 00000000..38f70541 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6b80ddccb857556bd4128ca9b2cbbfdde92706e2ba9a68946d8f4d49edd760e +size 556 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/extra.webp new file mode 100644 index 00000000..0be92f77 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e5f2ab22ebe8b34e247eb5381b9adc5bdbbfffeed7edb3d107e6c03790d1a7a +size 310 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/outline.webp new file mode 100644 index 00000000..92908d3c --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:214a2ea8fdf69bf9d97303a253425e9d122e25ec35f0fc3f5b4ae3812e0fdda7 +size 530 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/0.webp new file mode 100644 index 00000000..8b53ed8b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67590c13f6e4ed766547b3c470a120da0dccd4477d891423f99465892ce7f51b +size 554 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/extra.webp new file mode 100644 index 00000000..48cb362e --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:730f16470e179e88c6e74c67b5547bd7b8772736a0e1fd433bbbb6739b1f4f72 +size 312 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/outline.webp new file mode 100644 index 00000000..54840307 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/base/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:459e7e41d25cdb6b7d0973de44db2410170c23a13b62195aaeec2d629979dde2 +size 530 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/0.webp new file mode 100644 index 00000000..7c725055 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13a0c2dc9add33297e2e00e3a422961e4b31f918f17b5d54288c49745b5ea2d6 +size 556 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/extra.webp new file mode 100644 index 00000000..6489d353 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea0d3f14a5b33b15901909b47cf4c7fa1f4f67a0b012a066805f85a10b0907f9 +size 316 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/outline.webp new file mode 100644 index 00000000..148535b8 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/clench/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4713695ca32af2fc2dc2e1d7d0798da42f3b3a7068264acd8d678ae40fab9c39 +size 528 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/0.webp new file mode 100644 index 00000000..998f01e9 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8d81d86456cc96dd99b10def7d14e0ac617bf21f45d3ff223f4020d8c186160 +size 558 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/extra.webp new file mode 100644 index 00000000..4448f09b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8d05ad92d80490790f8c5c9fd45aac6c7ae4b39ffbddb76f016b73bd9e27c1a +size 316 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/outline.webp new file mode 100644 index 00000000..89729ce0 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:551018470eee12b12ea8f55eadb7a8cbdda4f2e0d681d31714702786de50cb42 +size 528 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/0.webp new file mode 100644 index 00000000..d0ccb1de --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d2994e16e8eb8a5e46ea534d44a122542c63f2397265bf866024257188b81d0 +size 566 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/extra.webp new file mode 100644 index 00000000..06e0003b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d51752c0a35fd27f5157760a933c687ba45cfcd43ac814e6001b0b80664798c5 +size 320 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/outline.webp new file mode 100644 index 00000000..b324169d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ebb6095a746e6b37602064a237f246fb4f0c92ddbc80a5498c7f9bc73294089 +size 534 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/0.webp new file mode 100644 index 00000000..b0210100 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b69d366273c57340707975c6731178bf7bdb22509e8e274c92093ea745e14b4f +size 556 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/extra.webp new file mode 100644 index 00000000..a5f67c64 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e226f9af03c5dd1aaa202bc6c4a270a852ced7012449d5e8b7e9edc1b878770 +size 316 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/outline.webp new file mode 100644 index 00000000..1a0b1179 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/full/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dbc9a61fce604924b081fd43e293a86d490157d10131d88fc0a1bb1ec4c7b02 +size 530 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/0.webp new file mode 100644 index 00000000..1a764ba7 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b689aa714073e1e0b90d1fc9684d8780397155c5226ad368448ce46f4862a9bd +size 560 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/extra.webp new file mode 100644 index 00000000..17a682ee --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d92aed2d8a6b2df60e1f4ef796cfbb178c6073890946520209e6b352f9c208f +size 312 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/outline.webp new file mode 100644 index 00000000..cd05d9fe --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/grin/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:646f7fcf2653693886842d0fe12484156a0fedac37be74a5b5963d59747aa7b2 +size 528 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/0.webp new file mode 100644 index 00000000..4b254b78 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b6aa54903b3309815b9eb445749ab1c077e0516913914891fdeba25567f4fc8 +size 562 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/extra.webp new file mode 100644 index 00000000..2891a1b6 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08f55d6284ef9f4f67d6d1b26e5ffc8529e1ce83245cea1e3104599dfcff5f0e +size 314 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/outline.webp new file mode 100644 index 00000000..f3bdd153 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/mad/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b9132b6177fe0b45b4b02a15cb3e2fa25cf319a7f1caccba1c68681f6697802 +size 532 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/0.webp new file mode 100644 index 00000000..5f3bfc1c --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a2fb6ae149dad505d055c3255878f3338b2a8ef79b1b37032def2bc7f567e03 +size 558 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/extra.webp new file mode 100644 index 00000000..73b0c40d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f02ab4c3446c8d0c29da956b542452a7e48bf07f9d5637f3a9fe6a253c40c598 +size 314 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/outline.webp new file mode 100644 index 00000000..54840307 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/normal/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:459e7e41d25cdb6b7d0973de44db2410170c23a13b62195aaeec2d629979dde2 +size 530 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/0.webp new file mode 100644 index 00000000..c85bba2c --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b4b442ed12766c771a26f6d1965e964405e4ef739f164b22ce111dbf9c18ce2 +size 564 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/extra.webp new file mode 100644 index 00000000..840c190b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a233da012d773cafc662786dce93dc4f92beccdfc67888ad2d64ff5222c42a4 +size 310 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/outline.webp new file mode 100644 index 00000000..b5fa3721 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4740a927e47a634c05d1d0f35f28e8f1c77581a17b43736c442fb5305bd8baac +size 534 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/0.webp new file mode 100644 index 00000000..76cc6fca --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43cb80810cd8db7267d91a6082bbca77363644ce11cc1865425d5f40b8777171 +size 564 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/extra.webp new file mode 100644 index 00000000..3aba3b27 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b71f10136789894cf2407db6d1abc4edf32446dfeab47481eb2e90574778cf0 +size 312 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/outline.webp new file mode 100644 index 00000000..b5fa3721 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4740a927e47a634c05d1d0f35f28e8f1c77581a17b43736c442fb5305bd8baac +size 534 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/0.webp new file mode 100644 index 00000000..932361b5 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bccbd181a738508307763b897234164b3345f4c9e8ed521ab6a156246fc645ea +size 556 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/extra.webp new file mode 100644 index 00000000..7fc082d3 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7006e1320ffc144f83f9a556d6867d512d6632adc460f3976c3115b224c4905 +size 316 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/outline.webp new file mode 100644 index 00000000..1944cc83 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e03e644757e272395d3dc68d4f8e3ff638db6c00609df1322b37918b954aefe +size 528 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/0.webp new file mode 100644 index 00000000..8dbf12a3 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c289304b7778c9657c42b4befef04f21624c373865f2f07ea7c6b2199776b4a4 +size 564 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/extra.webp new file mode 100644 index 00000000..ccce5cb1 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2206b78185d37dc8906f14c5130f9ed48b8ff783f9c293307833562b9a1ec99c +size 312 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/outline.webp new file mode 100644 index 00000000..a0372ee7 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/scream/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0052a88f51d9df552fd50f06c8a05eeae1995f6109b2a221b8baa7eb140ea9e0 +size 530 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/0.webp new file mode 100644 index 00000000..62377df9 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e8c73ef75fd391a86aeaa4a72f0d7d5c533689935ccecb59f49d5793fec1e1f +size 560 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/extra.webp new file mode 100644 index 00000000..9178faa6 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:910f1598e700036dcc08bbdf0e2c57d2028faeb2ae8deaf3ceecbecbd107012c +size 312 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/outline.webp new file mode 100644 index 00000000..b6822261 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/shock/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f843091c6875308b3be52c33eab5a47588211870be639fe02c340f6ed35aa389 +size 532 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/0.webp new file mode 100644 index 00000000..3f48c2bb --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbc2c126e06bf2fb1262d97c24c1f8924597f466ef492884cd8dc63274bafbc8 +size 560 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/extra.webp new file mode 100644 index 00000000..d5db35d7 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff8abc409606701c49fb43dcbacce7d730b31cf2109e2dcc80d7103f76b13a87 +size 316 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/outline.webp new file mode 100644 index 00000000..93697086 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/silly/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c76d2b44db271ca028bbd7f69e05cd0b698b10cf6100be5bdd7c6140a45b2fb1 +size 528 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/0.webp new file mode 100644 index 00000000..503ece51 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ad685ce2a44098c1b272a16f955336062d93c7a92a98ad8f8990fafef0b7982 +size 552 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/extra.webp new file mode 100644 index 00000000..bd0d029a --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64f9bfd956959d87a89f52356691bbd4c7b5410d3cab3908de5e77745d7623e9 +size 318 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/outline.webp new file mode 100644 index 00000000..f8ed0606 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/smile/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d345b27ee3b028888285ab64b801a5908f773a9c447159417bd44ac103c8f1e +size 586 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/0.webp new file mode 100644 index 00000000..5c50f31e --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03ad341e99860eb0861ebe9194f3e2f49e7d81848302226811d0f123ba94b97b +size 560 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/extra.webp new file mode 100644 index 00000000..dce3a783 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e89291193c7786536cd7982d859ad740e770252978f51bc37b8b59ec80a25e2c +size 312 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/outline.webp new file mode 100644 index 00000000..3cf964b1 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/soft/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f41054551864150ae46ae322579a1e74c61e49c5b8e5d5466a7792284c1944c2 +size 532 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/0.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/0.webp new file mode 100644 index 00000000..7ab6236f --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dc57ab503d0da023d0bd8bd78d9227b5e19c18388caf77c4cfb77de2ab5daf4 +size 558 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/extra.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/extra.webp new file mode 100644 index 00000000..bb1dc75d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69b06a89ec5b9bf8245d164aee00e7454241c31fe676e77e8e4185ea9e625397 +size 300 diff --git a/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/outline.webp b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/outline.webp new file mode 100644 index 00000000..c08dcb98 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/mouth_stud/upset/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25d23142da94862af949a730c99c0750fd465fe42b07973b399738808f3b65b1 +size 584 diff --git a/game/characters/luna/poses/default/clothes/piercing/nipple_rings/0.webp b/game/characters/luna/poses/default/clothes/piercing/nipple_rings/0.webp new file mode 100644 index 00000000..75fef99f --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nipple_rings/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c4493813d67fe122916dbe24c92a95f22231805566ae7c9e689eadc0a73a773 +size 1000 diff --git a/game/characters/luna/poses/default/clothes/piercing/nipple_rings/extra.webp b/game/characters/luna/poses/default/clothes/piercing/nipple_rings/extra.webp new file mode 100644 index 00000000..e6dd2770 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nipple_rings/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af4d01b8f545de9a45bcad56101e36f2316a5a32a1e753b03d25d70acc05cb7e +size 692 diff --git a/game/characters/luna/poses/default/clothes/piercing/nipple_rings/outline.webp b/game/characters/luna/poses/default/clothes/piercing/nipple_rings/outline.webp new file mode 100644 index 00000000..ec337ff3 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nipple_rings/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5179911bb8c5de6ac762757501d6292f3458a9e17b7ef77102ac808674c64525 +size 1170 diff --git a/game/characters/luna/poses/default/clothes/piercing/nipple_studs/0.webp b/game/characters/luna/poses/default/clothes/piercing/nipple_studs/0.webp new file mode 100644 index 00000000..93e37c74 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nipple_studs/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ada8a792f0ae3424cf9a8f2521f36639bed220b90bacfc8c871fa79aea411d1 +size 638 diff --git a/game/characters/luna/poses/default/clothes/piercing/nipple_studs/extra.webp b/game/characters/luna/poses/default/clothes/piercing/nipple_studs/extra.webp new file mode 100644 index 00000000..0d1b9ff6 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nipple_studs/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:629bf5fbf356acc7847e4674d4432ec925e7d4b728192214e1fcd139daaddaba +size 608 diff --git a/game/characters/luna/poses/default/clothes/piercing/nipple_studs/outline.webp b/game/characters/luna/poses/default/clothes/piercing/nipple_studs/outline.webp new file mode 100644 index 00000000..d8d6eef4 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nipple_studs/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f90ef427e1f9fafc7d8c271fb452ac01ed89add5c6b06acc1e81440096a67e1 +size 672 diff --git a/game/characters/luna/poses/default/clothes/piercing/nose_ring/0.webp b/game/characters/luna/poses/default/clothes/piercing/nose_ring/0.webp new file mode 100644 index 00000000..af75bc5e --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nose_ring/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3581e0473a7c3de0fc7c0c887ea4293fad8c53c4648bb08f7523a6c95d842c4 +size 586 diff --git a/game/characters/luna/poses/default/clothes/piercing/nose_ring/extra.webp b/game/characters/luna/poses/default/clothes/piercing/nose_ring/extra.webp new file mode 100644 index 00000000..2b8d9865 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nose_ring/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67e069f2a18dad8d8c97cf6e7f2a9f1bb630e258dcc22e0fd5a3e8dc633c4d53 +size 588 diff --git a/game/characters/luna/poses/default/clothes/piercing/nose_ring/outline.webp b/game/characters/luna/poses/default/clothes/piercing/nose_ring/outline.webp new file mode 100644 index 00000000..39a6a15f --- /dev/null +++ b/game/characters/luna/poses/default/clothes/piercing/nose_ring/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97b61f0e753cb5580debb788d8de36fc4de3110efe10a5d7256cec9e0d807d76 +size 648 diff --git a/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/0.webp b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/0.webp new file mode 100644 index 00000000..3d9ab060 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:890538dfb444efeab1f4f34349c79b00b2a51086c251bcd8d9e510080161195f +size 3588 diff --git a/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/1.webp b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/1.webp new file mode 100644 index 00000000..28ecb349 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc0b0bbe45c153386f787403c9cd58e53a58617d3eba4836fc3f83a5347d3622 +size 6818 diff --git a/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/2.webp b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/2.webp new file mode 100644 index 00000000..4c8fc5cf --- /dev/null +++ b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f4382e1d38e38e9cfaf555febc2841ef8eef6cd0574417706071e8359423a27 +size 1804 diff --git a/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/3.webp b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/3.webp new file mode 100644 index 00000000..18021a72 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/3.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9bd9a3dba1a4a7edff730d4ac69d0556caa2fbe1603fc450ca2bbe66058cbf5 +size 1956 diff --git a/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/outline.webp b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/outline.webp new file mode 100644 index 00000000..117e44fc --- /dev/null +++ b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:983a81937f4ae461d4ad63e701acb462078f4810a14ad833b5b36b9b0ac556bf +size 8688 diff --git a/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/skin.webp b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/skin.webp new file mode 100644 index 00000000..f2d3fb15 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/stockings/leggings_bimbo/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c8d769426a17b85a7d763dc82ac345c2096813a5c3940f93054469fd00c540e +size 1822 diff --git a/game/characters/luna/poses/default/clothes/top/short_tanktop/0.webp b/game/characters/luna/poses/default/clothes/top/short_tanktop/0.webp new file mode 100644 index 00000000..d54b1b8b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/short_tanktop/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d61347432672effe0615e1631c3ffb53845b5136e885077b5232419a6a01e985 +size 9960 diff --git a/game/characters/luna/poses/default/clothes/top/short_tanktop/1.webp b/game/characters/luna/poses/default/clothes/top/short_tanktop/1.webp new file mode 100644 index 00000000..a18b8d05 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/short_tanktop/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13727c412b9249853b0145a566a181887f18f32fe29bd87178aef67173c7d6d7 +size 1600 diff --git a/game/characters/luna/poses/default/clothes/top/short_tanktop/outline.webp b/game/characters/luna/poses/default/clothes/top/short_tanktop/outline.webp new file mode 100644 index 00000000..8f4eddde --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/short_tanktop/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71eb77787cbf0058d4a9c912da663a8846141da0c9c6e13f185a7f3f812dd572 +size 10596 diff --git a/game/characters/luna/poses/default/clothes/top/short_tanktop/skin.webp b/game/characters/luna/poses/default/clothes/top/short_tanktop/skin.webp new file mode 100644 index 00000000..387aa56b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/short_tanktop/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e05ac50f55f00c032a4cd768e7464f2d92194affaf19bb35933784604bef070 +size 3744 diff --git a/game/characters/luna/poses/default/clothes/top/top_torn/0.webp b/game/characters/luna/poses/default/clothes/top/top_torn/0.webp new file mode 100644 index 00000000..e0950b1b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_torn/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9241ad13037a111ecee7d3ece28ab4201bf92014c3fd49dff0e127c3f43af2e5 +size 23700 diff --git a/game/characters/luna/poses/default/clothes/top/top_torn/1.webp b/game/characters/luna/poses/default/clothes/top/top_torn/1.webp new file mode 100644 index 00000000..6b8deac6 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_torn/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:260e3a9f3499d68cf28512ec40b096a75407cab702b7735e42fd2a7e2095c1f7 +size 894 diff --git a/game/characters/luna/poses/default/clothes/top/top_torn/outline.webp b/game/characters/luna/poses/default/clothes/top/top_torn/outline.webp new file mode 100644 index 00000000..097e8231 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_torn/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a6c1b6f5a6175a1664535b615d837c1327bc327ea7db95202513ba3a84f73a0 +size 22794 diff --git a/game/characters/luna/poses/default/clothes/top/top_torn/skin.webp b/game/characters/luna/poses/default/clothes/top/top_torn/skin.webp new file mode 100644 index 00000000..65e04cfd --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_torn/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6597e4393a97db5dd713d43682ba5cefd342ecab37bc25e21213fb94c4dd38cd +size 11218 diff --git a/game/scripts/characters/luna/wardrobe.rpy b/game/scripts/characters/luna/wardrobe.rpy index f548cd93..25523361 100644 --- a/game/scripts/characters/luna/wardrobe.rpy +++ b/game/scripts/characters/luna/wardrobe.rpy @@ -18,7 +18,7 @@ default lun_hair_base = DollCloth("luna", ("head", "hair"), "hair", "base", ["#e ####################### default lun_hair_wand = DollCloth("luna", ("head", "hair"), "hair", "wand", ["#ede0c3ff", "#bfa46bff", "#309087ff"], unlocked=True) -default lun_glasses_hearts = DollCloth("luna", ("head", "glasses"), "glasses", "sunglasses_2", ["#f078ffff", "#009effff"], unlocked=True) +default lun_glasses_hearts = DollCloth("luna", ("head", "glasses"), "glasses", "sunglasses_2", ["#6799C999", "#F395A9FF"], unlocked=True) default lun_glasses_spectrespecs = DollCloth("luna", ("head", "glasses"), "glasses", "spectrespecs", ["#e36682ff", "#3d6e8cff"], unlocked=True) default lun_accessory_pin_radish = DollCloth("luna", ("misc", "accessory"), "accessory", "pin_radish", ["#b61710ff", "#e8bebcff"], zorder=213, unlocked=True) default lun_accessory_hair_bug = DollCloth("luna", ("misc", "accessory"), "accessory", "hair_bug", ["#ffffffff"], unlocked = True, zorder=252) @@ -110,7 +110,7 @@ default lun_outfit_flight_attendant = DollOutfit([lun_hair_base, lun_top_flight_ ################### default lun_top_muggle_top = DollCloth("luna", ("upper body", "shirts"), "top", "muggle_top", ["#7f6d8cff", "#e783baff"]) -default lun_robe_muggle_jacket = DollCloth("luna", ("upper body", "robes"), "robe", "muggle_jacket", ["#f7bec4ff", "#863c4aff"], level=4) +default lun_robe_muggle_jacket = DollCloth("luna", ("upper body", "robes"), "robe", "muggle_jacket", ["#f7bec4ff", "#863c4aff"]) default lun_bottom_muggle_skirt = DollCloth("luna", ("lower body", "skirts"), "bottom", "muggle_skirt", ["#2b2b2bff", "#3d8ec2ff", "#53a996ff", "#f3f3f3ff", "#e29496ff", "#f5d284ff"]) default lun_stockings_muggle_knee_socks = DollCloth("luna", ("legwear", "stockings"), "stockings", "muggle_knee_socks", ["#025792ff", "#00767fff", "#000f2bff"]) @@ -173,6 +173,25 @@ default lun_top_nightie2 = DollCloth("luna", ("upper body", "shirts"), "top", "n default lun_outfit_nightie2 = DollOutfit([lun_hair_base, lun_top_nightie2], price=350, name="Nightie", desc="The perfect garment if you're tired of wearing a pyjamas.") +##################### +## Tank top Outfit ## +##################### + +default lun_top_short_tanktop = DollCloth("luna", ("upper body", "shirts"), "top", "short_tanktop", ["#86CB7CFF", "#3B6E34FF"]) +default lun_bottom_shorts = DollCloth("luna", ("lower body", "shorts"), "bottom", "shorts",["#86CB7Cff", "#3B6E34ff", "#FFFFFFFF"]) + +default lun_outfit_tanktop = DollOutfit([lun_hair_base, lun_panties_base1, lun_top_short_tanktop, lun_bottom_shorts], price=200, name="Short shorts Outfit", desc="If you're not short on cash, then these short shorts and tank top are a great summer gift.") + +################## +## Bimbo Outfit ## +################## + +default lun_top_torn = DollCloth("luna", ("upper body", "shirts"), "top", "top_torn", ["#FFFFFFFF", "#C3C9E5FF"], level=10) +default lun_skirt_plaid = DollCloth("luna", ("lower body", "skirts"), "bottom", "skirt_plaid", ["#B35155ff", "#523E5Eff", "#767986ff", "#C3C9E5ff"], level=6) +default lun_stockings_bimbo_leggings = DollCloth("luna", ("legwear", "stockings"), "stockings", "leggings_bimbo", ["#FFFFFFff", "#C2C8E499", "#B35155ff", "#523E5Eff"]) + +default lun_outfit_bimbo = DollOutfit([lun_hair_base, lun_top_torn, lun_skirt_plaid, lun_stockings_bimbo_leggings], price=350, name="Bimbo Outfit", desc="An outfit for someone that's either aware, or unaware that they're a bimbo.") + ########################### ## Police Officer Outfit ## #unlocked in not_so_great_escape mirror story ########################### @@ -229,6 +248,13 @@ default lun_accessory_wand_hand = DollCloth("luna", ("misc", "accessory"), "acce default lun_accessory_wand_breasts = DollCloth("luna", ("misc", "accessory"), "accessory", "wand_breasts", ["#ffffffff"], unlocked = True, zorder=213) default lun_accessory_wand_pussy = DollCloth("luna", ("misc", "accessory"), "accessory", "wand_pussy", ["#ffffffff"], unlocked = True, zorder=183) +############ +## Makeup ## +############ + +# Nails +default lun_makeup_nail_polish = DollCloth("luna", ("head", "makeup"), "makeup", "nail_polish", ["#FFAEB2ff"], unlocked=True) + ################ ## Pubic Hair ## ################ @@ -238,6 +264,20 @@ default lun_pubes_beaver = DollCloth("luna", ("lower undergarment", "pubes"), "p default lun_pubes_stuble = DollCloth("luna", ("lower undergarment", "pubes"), "pubes", "stuble", ["#9b8558ff"], unlocked=True) default lin_pubes_unshaved = DollCloth("luna", ("lower undergarment", "pubes"), "pubes", "unshaved", ["#9b8558ff"], unlocked=True) +############### +## Piercings ## +############### + +default lun_earring_moon = DollCloth("luna", ("head", "earrings"), "earrings", "earring_moon", ["#D2DFEEff", "#FFE973ff", "#BA6755ff"], unlocked=True) +default lun_ear_studs = DollCloth("luna", ("head", "earrings"), "earrings", "ear_studs", ["#F6C54Fff"], unlocked=True) + +default lun_piercing_eyebrow_ring = DollMakeup("luna", ("piercings & tattoos", "piercings"), "piercing", "eyebrow_ring", ["#CDDAE8ff"], unlocked=True, tracking="eyebrows") +default lun_piercing_nose_ring = DollCloth("luna", ("piercings & tattoos", "piercings"), "piercing", "nose_ring", ["#F8DC5Dff"], unlocked=True) +default lun_piercing_mouth_stud = DollMakeup("luna", ("piercings & tattoos", "piercings"), "piercing", "mouth_stud", ["#D2E0F0ff"], unlocked=True, tracking="mouth") +default lun_piercing_nipple_studs = DollCloth("luna", ("piercings & tattoos", "piercings"), "piercing", "nipple_studs", ["#D2DFEEff"], unlocked=True) +default lun_piercing_nipple_rings = DollCloth("luna", ("piercings & tattoos", "piercings"), "piercing", "nipple_rings", ["#D2DFEEff"], unlocked=True) +default lun_piercing_clit_stud = DollCloth("luna", ("piercings & tattoos", "piercings"), "piercing", "clit_stud", ["#B8C6D7ff"], unlocked=True) + ############# ## Tattoos ## ############# diff --git a/game/scripts/characters/luna/wardrobe_reactions.rpy b/game/scripts/characters/luna/wardrobe_reactions.rpy index 00d761a7..d340ec8d 100644 --- a/game/scripts/characters/luna/wardrobe_reactions.rpy +++ b/game/scripts/characters/luna/wardrobe_reactions.rpy @@ -559,6 +559,35 @@ label lun_reaction_equip_outfit(item): gen "*Err*... Sure!" ("base", xpos="far_left", ypos="head") lun "That's brilliant!" ("smile", "base", "base", "mid") lun "Let me put it on." ("grin", "base", "base", "mid") + + ##################### + ## Tank top Outfit ## + ##################### + elif item == lun_outfit_tanktop: #Req 7 (No Bra) + gen "I've got a summer themed outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "Oh! Let me see!" ("smile", "base", "base", "mid") + gen "Here you are..." ("base", xpos="far_left", ypos="head") + lun "Neat!" ("grin", "base", "base", "mid") + gen "So, you'll put it on?" ("base", xpos="far_left", ypos="head") + lun "Of course, [name_genie_luna]!" ("base", "base", "base", "mid") + + ################## + ## Bimbo Outfit ## + ################## + elif item == lun_outfit_bimbo: #Req 10 (top) + gen "I've got this cute outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "Oh... Thank you [name_genie_luna], I love it!" ("smile", "base", "base", "mid") + gen "You haven't even seen it yet." ("base", xpos="far_left", ypos="head") + lun "Oh... Right!" ("smile", "happyCl", "base", "mid") + gen "It's this one right here." ("base", xpos="far_left", ypos="head") + lun "I love it!" ("grin", "narrow", "base", "down") + gen "Do you really?" ("base", xpos="far_left", ypos="head") + lun "Of course! You've made this top yourself, right?" ("grin", "wink", "base", "mid") + gen "*Err*... What makes you think that?" ("base", xpos="far_left", ypos="head") + lun "Well, you've clearly cut some holes in it, I'm sure it doesn't come like that." ("base", "base", "base", "down") + lun "I appreciate the effort very much!" ("smile", "base", "base", "mid") + gen "(If it were anyone else, I would think it was sarcasm...)" ("base", xpos="far_left", ypos="head") + lun "Let me put it on." ("base", "base", "base", "mid") # TODO: Blacklist fallbacks have to be added. return @@ -714,12 +743,49 @@ label lun_reaction_equip_outfit_fail(item): lun "Well... It's a bit embarrassing actually..." ("angry", "narrow", "base", "R") lun "My latch got stuck on it..." ("disgust", "base", "base", "downL") gen "Your... latch?" ("base", xpos="far_left", ypos="head") - lun "Yes [name_genie_luna]..." ("angry", "base", "worried", "mid") + lun "Yes, [name_genie_luna]..." ("angry", "base", "worried", "mid") gen "Sounds more like artificial content gating to me..." ("base", xpos="far_left", ypos="head") lun "Sorry?" ("angry", "base", "raised", "mid") - gen "Don't worry... They know what I meant..." ("base", xpos="far_left", ypos="head") + gen "Don't worry... They'll know what I meant..." ("base", xpos="far_left", ypos="head") lun "*Hmm*..." ("normal", "base", "base", "R") + ##################### + ## Tank top Outfit ## + ##################### + elif item == lun_outfit_tanktop: #Req 7 (No Bra) + gen "I've got a summer themed outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "Oh! Let me see!" ("base", "base", "base", "mid") + gen "Here you are..." ("base", xpos="far_left", ypos="head") + lun "Neat!" ("grin", "base", "base", "mid") + gen "Since it's pretty hot you should probably wear it without your bra on." ("base", xpos="far_left", ypos="head") + lun "Take off my bra?" ("soft", "base", "base", "mid") + lun "Well that might be a problem..." ("upset", "base", "base", "down") + gen "Why's that?" ("base", xpos="far_left", ypos="head") + lun "Well... It's a bit embarrassing actually..." ("angry", "narrow", "base", "R") + lun "My latch got stuck on it..." ("disgust", "base", "base", "downL") + gen "Your... latch?" ("base", xpos="far_left", ypos="head") + lun "Yes, [name_genie_luna]..." ("angry", "base", "worried", "mid") + gen "Sounds more like artificial content gating to me..." ("base", xpos="far_left", ypos="head") + lun "Sorry?" ("angry", "base", "raised", "mid") + gen "Don't worry... They'll know what I meant..." ("base", xpos="far_left", ypos="head") + lun "*Hmm*..." ("normal", "base", "base", "R") + +################## +## Bimbo Outfit ## +################## + elif item == lun_outfit_bimbo: #Req 10 (top) + gen "I've got this cute outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "Acute?" ("open", "base", "raised", "mid") + gen "*Huh*?" ("base", xpos="far_left", ypos="head") + lun "How is it acute?" ("soft", "base", "raised", "mid") + gen "Not acute... It's a cute-looking outfit." ("base", xpos="far_left", ypos="head") + lun "Oh, right!" ("grin", "happyCl", "base", "mid") + gen "It's this one, right here..." ("base", xpos="far_left", ypos="head") + lun "But, sir! There are holes in it!" ("angry", "narrow", "base", "down") + gen "Yes, that's intent--" ("base", xpos="far_left", ypos="head") + lun "You better go ask for a refund!" ("clench", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + ################# ## Party Dress ## ################# @@ -751,7 +817,7 @@ label lun_reaction_equip_outfit_fail(item): ## Police Officer Outfit ## ########################### elif item == lun_outfit_police: #Req 7 (No Bra) - gen "Put on the police cosplay uniform will you?" ("base", xpos="far_left", ypos="head") + gen "Put on the police cosplay uniform, will you?" ("base", xpos="far_left", ypos="head") lun "Police?" ("soft", "base", "raised", "mid") gen "Yes?" ("base", xpos="far_left", ypos="head") lun "I'm not sure what that is..." ("upset", "narrow", "raised", "mid") diff --git a/game/scripts/shops/dress/chitchats.rpy b/game/scripts/shops/dress/chitchats.rpy index 53a6486f..dbaa664c 100644 --- a/game/scripts/shops/dress/chitchats.rpy +++ b/game/scripts/shops/dress/chitchats.rpy @@ -623,6 +623,29 @@ label purchase_outfit(item): maf "Just a little joke professor, I'm aware of what you meant." gen "Oh... I see... Good one!" ("base", xpos="far_left", ypos="head") maf "I'll get working on it as soon as possible." + elif item == lun_outfit_tanktop: + gen "I'm looking for a summer outfit... Have you got anything like that?" ("base", xpos="far_left", ypos="head") + maf "I'm able to make anything you like, sir... But you're going to have to be a bit more descriptive." + gen "Oh... Right..." ("base", xpos="far_left", ypos="head") + gen "How about a tank top, and some shorts?" ("base", xpos="far_left", ypos="head") + maf "Are you asking me for an opinion?" + gen "Tank top and shorts, it is!" ("base", xpos="far_left", ypos="head") + maf "Alright then..." + elif item == lun_outfit_bimbo: + gen "Could you make me something a bit... Bimbo-y?" ("base", xpos="far_left", ypos="head") + maf "Bimbo-y, sir?" + gen "You know..." ("base", xpos="far_left", ypos="head") + maf "I'm not sure I do, sir." + gen "Something like this... *scribbles*..." ("base", xpos="far_left", ypos="head") + play sound "sounds/scribble.ogg" + maf "Oh... Oh, I see..." + maf "And the holes..." + gen "Very much intentional." ("base", xpos="far_left", ypos="head") + maf "Right..." + maf "I must admit, it hurts me a bit to do something like this to fabric..." + maf "However, refusing would end my streak of completing any request that has been given to me." + maf "Alright then... I'll do it." + gen "Excellent!" ("base", xpos="far_left", ypos="head") # gen "Could you make me a Ravenclaw Cheerleader outfit?" ("base", xpos="far_left", ypos="head") # maf "You're not showing favouritism towards Ravenclaw's Quidditch team, are you?" # gen "I'm merely looking to see if it'd be worth to bring cheerleading to this country." ("base", xpos="far_left", ypos="head") From ebc865b7981dfffab3e10e152fdb04c38c977bb7 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 18 Jul 2023 16:17:35 +0100 Subject: [PATCH 002/249] Bug fix * Fixed stale images being displayed when threading is enabled and no image was called in a while --- game/scripts/doll/main.rpy | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/game/scripts/doll/main.rpy b/game/scripts/doll/main.rpy index 450eedfc..5a942049 100644 --- a/game/scripts/doll/main.rpy +++ b/game/scripts/doll/main.rpy @@ -155,25 +155,25 @@ init python: def _image(self, st, at): return self._sprite.get_with_default(Null()), None + def is_stale(self): + curr_hash = self.generate_hash() + stale = curr_hash != self._hash + self._hash = curr_hash + + if stale and settings.get("multithreading"): + self.build_image() + return stale + @property def image(self): + if not renpy.is_skipping() and self.is_stale(): + + if renpy.showing(get_character_tag(self.name), layer=self.layer): + self.show() + if settings.get("multithreading"): - - if not renpy.is_skipping() and self.is_stale(): - self.build_image() - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() - # elif renpy.in_rollback(): - # self.build_image() - return DynamicDisplayable(self._image) else: - if not renpy.is_skipping() and self.is_stale(): - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() - return self._build_image(self._hash) def equip(self, obj, remove_old=True): From 962cc2f6951edd9d4390955f0037b4fafbb6ebd8 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 18 Jul 2023 16:30:15 +0100 Subject: [PATCH 003/249] Bug fixes * Fixed outfit deletion tab not updating the list of items * Fixed Tonks' public requests menu crashing due to an omitted result type * Removed manual image rebuilding in wardrobe (superseded) --- game/scripts/characters/tonks/summon.rpy | 2 +- game/scripts/wardrobe/wardrobe.rpy | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/game/scripts/characters/tonks/summon.rpy b/game/scripts/characters/tonks/summon.rpy index 3148891f..1f5eb33f 100644 --- a/game/scripts/characters/tonks/summon.rpy +++ b/game/scripts/characters/tonks/summon.rpy @@ -126,7 +126,7 @@ label tonks_favor_menu: $ result = show_events_menu(tonks_requests) - if result == "disabled": + if result in ("disabled", "noncompliant"): "You haven't unlocked this request opportunity yet." jump .requests elif result == "exit": diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index 477517d9..728044dc 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -446,6 +446,7 @@ label wardrobe_menu(): if _confirmed: _choice[1].delete() + category_items = set_wardrobe_categories(current_category) renpy.notify("Outfit Deleted.") elif _choice[0] == "export": @@ -595,14 +596,10 @@ label wardrobe_menu(): renpy.music.play(last_track) DollThread.stop_all() - # set_wardrobe_categories.cache_clear() - char_active.build_image() enable_game_menu() renpy.return_statement() - $ char_active.build_image() - jump .after_init screen wardrobe_menu(xx, yy): From 316aea6a5a4d97dd0aa4add74358053c11ee525a Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 18 Jul 2023 17:01:17 +0100 Subject: [PATCH 004/249] Bug fixes and autosaves * Added autosave toggle * Fixed achievements being granted in replay scope --- game/scripts/gui/preferences.rpy | 1 + game/scripts/interface/achievements.rpy | 3 +++ 2 files changed, 4 insertions(+) diff --git a/game/scripts/gui/preferences.rpy b/game/scripts/gui/preferences.rpy index f1d4ec2d..0524024c 100644 --- a/game/scripts/gui/preferences.rpy +++ b/game/scripts/gui/preferences.rpy @@ -63,6 +63,7 @@ screen preferences_general(): textbutton _("Tooltips") action settings.Toggle("tooltip") textbutton _("System Cursor") action Preference("system cursor", "toggle") textbutton _("Automatic Updates") action settings.Toggle("updates") + textbutton _("Autosave") action ToggleField(store, "_autosave") default trans = config.intra_transition diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index 0aafce72..b90b29c7 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -83,6 +83,9 @@ init python: return self.achievements.get(id)[3] def unlock(self, id, silent=False): + if _in_replay: + return + if persistent.achievements[id][3] == False: self.achievements[id][3] = True persistent.achievements[id][3] = True From 699f68742f0e7a59121c2fb224de20ee187612b0 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 19 Jul 2023 16:39:24 +0100 Subject: [PATCH 005/249] Bug fixes * Fixed cardgame TypeError crash during random matches * Fixed mistakenly excluded ExampleMod from releases --- game/mods/.gitignore | 5 +++++ game/scripts/minigames/cardgame/__card_game_init__.rpy | 2 +- game/scripts/options.rpy | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 game/mods/.gitignore diff --git a/game/mods/.gitignore b/game/mods/.gitignore new file mode 100644 index 00000000..f1bcb3c7 --- /dev/null +++ b/game/mods/.gitignore @@ -0,0 +1,5 @@ +# Ignore everything in this directory +* +# Except this file and ExampleMod +!.gitignore +!ExampleMod/ diff --git a/game/scripts/minigames/cardgame/__card_game_init__.rpy b/game/scripts/minigames/cardgame/__card_game_init__.rpy index 6d859b81..69923e68 100644 --- a/game/scripts/minigames/cardgame/__card_game_init__.rpy +++ b/game/scripts/minigames/cardgame/__card_game_init__.rpy @@ -579,7 +579,7 @@ init python: while min > get_deck_score(new_deck) or max < get_deck_score(new_deck): replace_index = 0 - if new_deck < min: + if get_deck_score(new_deck) < min: replace_index = find_index_func(temp_pool, smalles_func) else: replace_index = find_index_func(temp_pool, gretest_func) diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index d934fc34..86d59851 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -167,7 +167,7 @@ init python: build.classify("icon.ico", "windows") build.classify("game/presplash_*.png", "renpy") build.classify("game/outfits/**", "all") - build.classify("game/mods/MyMod/**", "all") + build.classify("game/mods/ExampleMod/**", "all") build.classify("**.py", None) build.classify("**.txt", None) From 71c2c3fd8f8fe2bacefea362c567e57971c337ea Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 19 Jul 2023 17:49:51 +0100 Subject: [PATCH 006/249] Bug fix * Fixed mods warning for compatible mods due to old var reference --- game/scripts/gui/mods.rpy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/scripts/gui/mods.rpy b/game/scripts/gui/mods.rpy index 7a045e70..efb1cb1e 100644 --- a/game/scripts/gui/mods.rpy +++ b/game/scripts/gui/mods.rpy @@ -63,7 +63,7 @@ screen mods(): text "[name]": style "mods_text" size 16 - if not compat >= compatible_version: + if not compat >= mods_compatible: color "#ff8000" text "[version]": @@ -101,7 +101,7 @@ screen mods(): add logo xalign 0.5 size (320, 240) text "[name]\n[version]" offset (6, 6) - if not compat >= compatible_version: + if not compat >= mods_compatible: text "{color=#ff8000}[compat]{/color}" align (1.0, 1.0) offset (-6, -3) else: text "{color=#228B22}[compat]{/color}" align (1.0, 1.0) offset (-6, -3) From 6b8c9adb7f3a6cf639099036f6dd6de8086fade5 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 19 Jul 2023 22:11:55 +0100 Subject: [PATCH 007/249] Bug fixes * Fixed updater (AGAIN!!) * Disabled the 'server not responding' hint because it doesn't really match what's happening in the server code * Version bump --- game/scripts/gui/main_menu.rpy | 2 +- game/scripts/options.rpy | 2 +- game/scripts/utility/updater.rpy | 10 +++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/game/scripts/gui/main_menu.rpy b/game/scripts/gui/main_menu.rpy index 14190223..ec01c15a 100644 --- a/game/scripts/gui/main_menu.rpy +++ b/game/scripts/gui/main_menu.rpy @@ -255,7 +255,7 @@ screen navigation(title=None): if not title: if not renpy.mobile: - if version_float(UPDATE_VER) < version_float(): + if version_float(UPDATE_VER) > version_float(): textbutton "Install updates" action InstallUpdates() style_prefix "update_available" sensitive (not prerelease) else: textbutton "Check for updates" action CheckUpdates(300) sensitive (not prerelease) diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index 86d59851..f1fd1f74 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -38,7 +38,7 @@ define config.debug = config.developer or prerelease define config.console = True # Game version and naming -define config.version = "1.45.2" +define config.version = "1.45.3" define compatible_version = 1.451 define config.name = "Witch Trainer Silver" diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 14c1ed17..370be1ae 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -5,6 +5,10 @@ init python: UPDATE_VER = None UPDATE_HINT = "" + if config.developer: + persistent._update_version = {} + persistent._update_last_checked = {} + @renpy.pure class CheckUpdates(Action): def __init__(self, interval=3600*6, simulate=None, onetime=False, autostart=True, **kwargs): @@ -52,15 +56,15 @@ init python: UPDATE_VER = persistent._update_version.get(url, None) - if version_float(UPDATE_VER) < version_float(): + if version_float(UPDATE_VER) > version_float(): if not self.onetime: UPDATE_HINT = "New game version available!" renpy.restart_interaction() if self.autostart: renpy.invoke_in_new_context(updater.update, self.url, simulate=self.simulate, **self.kwargs) - elif not UPDATE_VER: - ui.timer(2.0, SetVariable("UPDATE_HINT", "Server is not responding.")) + # elif not UPDATE_VER: + # ui.timer(2.0, SetVariable("UPDATE_HINT", "Server is not responding.")) elif not self.onetime: ui.timer(2.0, SetVariable("UPDATE_HINT", "You are already up-to-date.")) From 148d2fcac5544266a43d17b7c4a066d3ebe00693 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Thu, 20 Jul 2023 22:11:17 +0100 Subject: [PATCH 008/249] Bug fixes * Fixed updater logo issues * Fixed modpath getting 'mods' subpath appended to it recursively with each clone --- game/scripts/doll/clothes.rpy | 3 ++- game/scripts/doll/clothes_dynamic.rpy | 3 ++- game/scripts/doll/makeup.rpy | 3 ++- game/scripts/options.rpy | 1 + game/scripts/utility/updater.rpy | 12 +++++++++++- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/game/scripts/doll/clothes.rpy b/game/scripts/doll/clothes.rpy index a2485cbb..58453dd6 100644 --- a/game/scripts/doll/clothes.rpy +++ b/game/scripts/doll/clothes.rpy @@ -383,7 +383,8 @@ init python: def clone(self): """Creates a clone of this cloth object. Since it requires a parent object it should be used internally only to avoid object depth issue.""" - return DollCloth(self.name, self.categories, self.type, self.id, [x for x in self.color] if self.color else None, self.zorder, self.unlocked, self.level, self.blacklist, self.modpath, self) + modpath = self.modpath.lstrip("mods/") + return DollCloth(self.name, self.categories, self.type, self.id, [x for x in self.color] if self.color else None, self.zorder, self.unlocked, self.level, self.blacklist, modpath, self) def is_modded(self): """Returns True if item comes from a mod.""" diff --git a/game/scripts/doll/clothes_dynamic.rpy b/game/scripts/doll/clothes_dynamic.rpy index ac13e3a0..2226ea53 100644 --- a/game/scripts/doll/clothes_dynamic.rpy +++ b/game/scripts/doll/clothes_dynamic.rpy @@ -183,4 +183,5 @@ init python: def clone(self): """Creates a clone of this cloth object. Since it requires a parent object it should be used internally only to avoid object depth issue.""" - return DollClothDynamic(self.name, self.categories, self.type, self.id, [x for x in self.color] if self.color else None, self.zorder, self.unlocked, self.level, self.blacklist, self.modpath, self._tracking, self) + modpath = self.modpath.lstrip("mods/") + return DollClothDynamic(self.name, self.categories, self.type, self.id, [x for x in self.color] if self.color else None, self.zorder, self.unlocked, self.level, self.blacklist, modpath, self._tracking, self) diff --git a/game/scripts/doll/makeup.rpy b/game/scripts/doll/makeup.rpy index 4c613b26..b93fd86e 100644 --- a/game/scripts/doll/makeup.rpy +++ b/game/scripts/doll/makeup.rpy @@ -62,4 +62,5 @@ init python: def clone(self): """Creates a clone of this cloth object. Since it requires a parent object it should be used internally only to avoid object depth issue.""" - return DollMakeup(self.name, self.categories, self.type, self.id, [x for x in self.color] if self.color else None, self.zorder, self.unlocked, self.level, self.blacklist, self.modpath, self, self.tracking) \ No newline at end of file + modpath = self.modpath.lstrip("mods/") + return DollMakeup(self.name, self.categories, self.type, self.id, [x for x in self.color] if self.color else None, self.zorder, self.unlocked, self.level, self.blacklist, modpath, self, self.tracking) diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index f1fd1f74..8a702ac7 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -168,6 +168,7 @@ init python: build.classify("game/presplash_*.png", "renpy") build.classify("game/outfits/**", "all") build.classify("game/mods/ExampleMod/**", "all") + build.classify("update/generic.webp", "pc mac") build.classify("**.py", None) build.classify("**.txt", None) diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 370be1ae..b00da8cc 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -156,6 +156,16 @@ init python: if ev.completed and not states.cho.ev.inspect_her_body.T2_E3_complete: states.cho.ev.inspect_her_body.T2_E3_complete = True + if current < 1.453: + for i in states.dolls: + doll = getattr(store, i) + + for j in doll.outfits: + + for k in j.group: + if k.modpath: + k.modpath = "mods/" + k.modpath.split("/")[-1] + if current > latest: raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest)) @@ -200,7 +210,7 @@ init python: with open(path, "rb") as f: data = f.read() else: - data = Null() + return Null() return Fixed(im.Data(data, path), Text(UPDATE_VER, size=96, align=(0.5, 0.8), color="#000000", outlines=[( 1, "#ffffff", 0, 0 )]), fit_first=True) From 4658a97b4aa2671f862aa6c8afdc0124fde02b3b Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 23 Jul 2023 17:40:03 +0100 Subject: [PATCH 009/249] Bug fixes and improvements * Improved skipping performance by delaying the call to render functions until after skipping ends * Fixed skipping not refreshing the doll image * Fixed skipping callback handler being affected by rollback * Refactored doll show method --- game/scripts/characters/astoria/common.rpy | 2 +- game/scripts/characters/cho/common.rpy | 2 +- game/scripts/characters/hermione/common.rpy | 2 +- game/scripts/characters/hooch/common.rpy | 2 +- game/scripts/characters/luna/common.rpy | 2 +- game/scripts/characters/susan/common.rpy | 2 +- game/scripts/characters/tonks/common.rpy | 2 +- game/scripts/doll/common.rpy | 7 +++- game/scripts/doll/main.rpy | 41 ++++++++------------- game/scripts/utility/skipping.rpy | 3 ++ 10 files changed, 31 insertions(+), 34 deletions(-) diff --git a/game/scripts/characters/astoria/common.rpy b/game/scripts/characters/astoria/common.rpy index 41f186d2..7165e474 100644 --- a/game/scripts/characters/astoria/common.rpy +++ b/game/scripts/characters/astoria/common.rpy @@ -38,7 +38,7 @@ init python: emote=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): def show(): - astoria.show() + astoria.show(force=True) if not renpy.in_rollback(): renpy.with_statement(trans or d2) diff --git a/game/scripts/characters/cho/common.rpy b/game/scripts/characters/cho/common.rpy index 91e78700..a77e10a9 100644 --- a/game/scripts/characters/cho/common.rpy +++ b/game/scripts/characters/cho/common.rpy @@ -36,7 +36,7 @@ init python in character: emote=None, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): def show(): - renpy.store.cho.show() + renpy.store.cho.show(force=True) if not renpy.in_rollback(): renpy.with_statement(trans or renpy.store.d2) diff --git a/game/scripts/characters/hermione/common.rpy b/game/scripts/characters/hermione/common.rpy index 98a4d180..0e0b2050 100644 --- a/game/scripts/characters/hermione/common.rpy +++ b/game/scripts/characters/hermione/common.rpy @@ -31,7 +31,7 @@ init python: emote=None, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): def show(): - hermione.show() + hermione.show(force=True) if not renpy.in_rollback(): renpy.with_statement(trans or d2) diff --git a/game/scripts/characters/hooch/common.rpy b/game/scripts/characters/hooch/common.rpy index ac765507..08c21fcf 100644 --- a/game/scripts/characters/hooch/common.rpy +++ b/game/scripts/characters/hooch/common.rpy @@ -22,7 +22,7 @@ init python: emote=None, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): def show(): - hooch.show() + hooch.show(force=True) if not renpy.in_rollback(): renpy.with_statement(trans or d2) diff --git a/game/scripts/characters/luna/common.rpy b/game/scripts/characters/luna/common.rpy index cc2c5353..f4ddc843 100644 --- a/game/scripts/characters/luna/common.rpy +++ b/game/scripts/characters/luna/common.rpy @@ -34,7 +34,7 @@ init python: emote=None, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): def show(): - luna.show() + luna.show(force=True) if not renpy.in_rollback(): renpy.with_statement(trans or d2) diff --git a/game/scripts/characters/susan/common.rpy b/game/scripts/characters/susan/common.rpy index 5c0a2a06..0cec9062 100644 --- a/game/scripts/characters/susan/common.rpy +++ b/game/scripts/characters/susan/common.rpy @@ -33,7 +33,7 @@ init python: emote=None, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): def show(): - susan.show() + susan.show(force=True) if not renpy.in_rollback(): renpy.with_statement(trans or d2) diff --git a/game/scripts/characters/tonks/common.rpy b/game/scripts/characters/tonks/common.rpy index c3b4ce38..92e6c766 100644 --- a/game/scripts/characters/tonks/common.rpy +++ b/game/scripts/characters/tonks/common.rpy @@ -44,7 +44,7 @@ init python: emote=None, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): def show(): - tonks.show() + tonks.show(force=True) if not renpy.in_rollback(): renpy.with_statement(trans or d2) diff --git a/game/scripts/doll/common.rpy b/game/scripts/doll/common.rpy index 8aaee2c6..a0bc9b0d 100644 --- a/game/scripts/doll/common.rpy +++ b/game/scripts/doll/common.rpy @@ -78,8 +78,11 @@ init -1 python: def DollRebuild(): for i in states.dolls: doll = getattr(store, i) - doll.build_image() + + if doll.is_stale() and not settings.get("multithreading"): + doll.show(ignore_skipping=True) + renpy.restart_interaction() config.after_load_callbacks.append(DollRebuild) - # end_skip_callbacks.append(DollRebuild) \ No newline at end of file + end_skip_callbacks.append(DollRebuild) diff --git a/game/scripts/doll/main.rpy b/game/scripts/doll/main.rpy index 5a942049..0d3885ca 100644 --- a/game/scripts/doll/main.rpy +++ b/game/scripts/doll/main.rpy @@ -88,10 +88,16 @@ init python: salt = str( [self.name, self.pose, str(self.body._hash), str(self.face._hash), str(self.cum._hash), clothes_hash] ) return hash(salt) - def show(self): + def show(self, force=False, ignore_skipping=False): if renpy.get_screen(("wardrobe", "animatedCG", "studio")) or renpy.showing("cg"): return + if renpy.is_skipping() and not ignore_skipping: + return + + if not force and not renpy.showing(get_character_tag(self.name), layer=self.layer): + return + base_transform = doll_transform(self.pos, self.zoom, self.xzoom) animation = self.animation @@ -167,9 +173,7 @@ init python: @property def image(self): if not renpy.is_skipping() and self.is_stale(): - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + self.show() if settings.get("multithreading"): return DynamicDisplayable(self._image) @@ -226,9 +230,7 @@ init python: update_chibi(self.name) self.cum.is_stale() self.is_stale() - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + self.show() def unequip(self, *args): """Takes argument(s) containing string cloth type(s) to unequip.""" @@ -285,9 +287,7 @@ init python: update_chibi(self.name) self.cum.is_stale() self.is_stale() - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + self.show() def get_equipped(self, slot): """Takes argument containing string cloth type. Returns equipped object for cloth type.""" @@ -338,9 +338,7 @@ init python: update_chibi(self.name) self.is_stale() - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + self.show() def wear(self, *args): """Takes argument(s) containing string cloth type(s) to temporarily displace (hide).""" @@ -376,9 +374,7 @@ init python: update_chibi(self.name) self.is_stale() - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + self.show() def is_equipped(self, *args): """Takes argument containing string cloth type. Returns True if slot is occupied, False otherwise.""" @@ -491,16 +487,12 @@ init python: i[0].is_stale() self.is_stale() - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + self.show() def set_cum(self, *args, **kwargs): """Takes keyword argument(s) containing string name(s) of cum layers to apply or None.""" self.cum.set_cum(*args, **kwargs) - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + self.show() def set_pose(self, pose): pose = "default" if pose is None else pose @@ -512,9 +504,8 @@ init python: for i in self.states.values(): if i[0]: i[0].is_stale() - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + self.is_stale() + self.show() def rebuild_blacklist(self): blacklist = [] diff --git a/game/scripts/utility/skipping.rpy b/game/scripts/utility/skipping.rpy index e1fe93e3..9308b7be 100644 --- a/game/scripts/utility/skipping.rpy +++ b/game/scripts/utility/skipping.rpy @@ -9,6 +9,9 @@ init -5 python: self.was_skipping = False def __call__(self): + if renpy.in_rollback(): + return + is_skipping = renpy.is_skipping() was_skipping = self.was_skipping From a343610eb3c842d90209107030d146d6ae0acdf7 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 26 Jul 2023 18:54:30 +0100 Subject: [PATCH 010/249] Bug fixes * Fixed layering issue when more than one layer contains a zorder modifier --- game/scripts/doll/bodypart.rpy | 2 +- game/scripts/doll/clothes.rpy | 4 ++-- game/scripts/doll/clothes_dynamic.rpy | 2 +- game/scripts/doll/cum.rpy | 2 +- game/scripts/doll/face.rpy | 2 +- game/scripts/doll/makeup.rpy | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/game/scripts/doll/bodypart.rpy b/game/scripts/doll/bodypart.rpy index f9d6b151..72fe706b 100644 --- a/game/scripts/doll/bodypart.rpy +++ b/game/scripts/doll/bodypart.rpy @@ -55,7 +55,7 @@ init 1 python: zorder_mod = modifiers.get(lmodifier) zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) - layers.setdefault("_".join([ltype, lmodifier]), [f, zorder]) + layers.setdefault("_".join([ltype, lmodifier, str(zorder)]), [f, zorder]) else: layers.setdefault(ltype, [f, zorder]) diff --git a/game/scripts/doll/clothes.rpy b/game/scripts/doll/clothes.rpy index 58453dd6..10fffc12 100644 --- a/game/scripts/doll/clothes.rpy +++ b/game/scripts/doll/clothes.rpy @@ -126,7 +126,7 @@ init python: zorder_mod = modifiers.get(lmodifier) zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) - layers.setdefault("_".join([ltype, lmodifier]), [f, zorder]) + layers.setdefault("_".join([ltype, lmodifier, str(zorder)]), [f, zorder]) else: layers.setdefault(ltype, [f, zorder]) @@ -152,7 +152,7 @@ init python: sprites = [] for identifier, (file, zorder) in layers.items(): - if ((n := identifier.rsplit("_", 1)[0]).isdigit()): + if ((n := identifier.split("_", 1)[0]).isdigit()): processor = processors["colored"] else: processor = processors.get(identifier, processors["default"]) diff --git a/game/scripts/doll/clothes_dynamic.rpy b/game/scripts/doll/clothes_dynamic.rpy index 2226ea53..dad5497d 100644 --- a/game/scripts/doll/clothes_dynamic.rpy +++ b/game/scripts/doll/clothes_dynamic.rpy @@ -136,7 +136,7 @@ init python: zorder_mod = modifiers.get(lmodifier) zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) - layers.setdefault("_".join([ltype, lmodifier]), [f, zorder]) + layers.setdefault("_".join([ltype, lmodifier, str(zorder)]), [f, zorder]) else: layers.setdefault(ltype, [f, zorder]) diff --git a/game/scripts/doll/cum.rpy b/game/scripts/doll/cum.rpy index 50b9ea5b..bb0eae7c 100644 --- a/game/scripts/doll/cum.rpy +++ b/game/scripts/doll/cum.rpy @@ -106,7 +106,7 @@ init python: zorder_mod = modifiers.get(lmodifier) zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) - layers.setdefault(" ".join([part, name, ltype, lmodifier]), [f, zorder]) + layers.setdefault(" ".join([part, name, ltype, lmodifier, str(zorder)]), [f, zorder]) else: layers.setdefault(" ".join([part, name, ltype]), [f, zorder]) diff --git a/game/scripts/doll/face.rpy b/game/scripts/doll/face.rpy index c319acb3..2bafc5c7 100644 --- a/game/scripts/doll/face.rpy +++ b/game/scripts/doll/face.rpy @@ -66,7 +66,7 @@ init python: zorder_mod = modifiers.get(lmodifier) zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) - layers.setdefault(" ".join([part, name, ltype, lmodifier]), [f, zorder]) + layers.setdefault(" ".join([part, name, ltype, lmodifier, str(zorder)]), [f, zorder]) else: layers.setdefault(" ".join([part, name, ltype]), [f, zorder]) diff --git a/game/scripts/doll/makeup.rpy b/game/scripts/doll/makeup.rpy index b93fd86e..83beb706 100644 --- a/game/scripts/doll/makeup.rpy +++ b/game/scripts/doll/makeup.rpy @@ -54,7 +54,7 @@ init python: zorder_mod = modifiers.get(lmodifier) zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) - layers.setdefault("_".join([ltype, lmodifier]), [f, zorder]) + layers.setdefault("_".join([ltype, lmodifier, str(zorder)]), [f, zorder]) else: layers.setdefault(ltype, [f, zorder]) From b0ae56b247afb71801c5ddb2fb50851a01f35a79 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 26 Jul 2023 22:50:01 +0100 Subject: [PATCH 011/249] Bug fix * Fixed puzzle generator outputting invalid combinations due to the lack of floor division --- game/scripts/minigames/puzzle.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/minigames/puzzle.rpy b/game/scripts/minigames/puzzle.rpy index 22e446fa..db7a1855 100644 --- a/game/scripts/minigames/puzzle.rpy +++ b/game/scripts/minigames/puzzle.rpy @@ -23,7 +23,7 @@ init python: if (grid % 2 == 1): is_solvable = (inversions % 2 == 0) else: - blank_row = grid - (puzzle.index(blank) / grid) + blank_row = grid - (puzzle.index(blank) // grid) is_solvable = (inversions % 2 != blank_row % 2) too_difficult = (inversions <= difficulty) From bf8f58ee10dd64fca623a5b09a0939c8991f988a Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Thu, 27 Jul 2023 00:52:08 +0100 Subject: [PATCH 012/249] Luna Outfits and model improvements * Added cumslut outfit * Added latex outfit * Added flasher outfit * Improved quality of the base model --- .../default/bodyparts/frame/default/skin.webp | 4 +- .../default/clothes/accessory/leash/0.webp | 3 + .../clothes/accessory/leash/extra.webp | 3 + .../clothes/accessory/leash/outline.webp | 3 + .../default/clothes/accessory/leash/skin.webp | 3 + .../clothes/accessory/onepiece_harness/0.webp | 3 + .../clothes/accessory/onepiece_harness/1.webp | 3 + .../accessory/onepiece_harness/outline.webp | 3 + .../accessory/onepiece_harness/skin.webp | 3 + .../clothes/bottom/shorts_latex/0.webp | 3 + .../clothes/bottom/shorts_latex/1.webp | 3 + .../clothes/bottom/shorts_latex/extra.webp | 3 + .../clothes/bottom/shorts_latex/outline.webp | 3 + .../clothes/bottom/trousers_latex/0.webp | 3 + .../clothes/bottom/trousers_latex/1.webp | 3 + .../clothes/bottom/trousers_latex/extra.webp | 3 + .../bottom/trousers_latex/outline.webp | 3 + .../default/clothes/neckwear/choker_1/0.webp | 3 + .../clothes/neckwear/choker_1/outline.webp | 3 + .../default/clothes/neckwear/collar/0.webp | 3 + .../default/clothes/neckwear/collar/1.webp | 3 + .../clothes/neckwear/collar/outline.webp | 3 + .../default/clothes/neckwear/collar_1/0.webp | 3 + .../clothes/neckwear/collar_1/extra.webp | 3 + .../clothes/neckwear/collar_1/outline.webp | 3 + .../clothes/neckwear/collar_1/skin.webp | 3 + .../clothes/panties/panties_cumslut/0.webp | 3 + .../clothes/panties/panties_cumslut/1.webp | 3 + .../panties/panties_cumslut/extra.webp | 3 + .../panties/panties_cumslut/outline.webp | 3 + .../clothes/panties/panties_cumslut/skin.webp | 3 + .../robe/coat_flasher/0_zorder_142.webp | 3 + .../robe/coat_flasher/0_zorder_152.webp | 3 + .../robe/coat_flasher/1_zorder_143.webp | 3 + .../robe/coat_flasher/1_zorder_153.webp | 3 + .../robe/coat_flasher/2_zorder_-1.webp | 3 + .../robe/coat_flasher/2_zorder_101.webp | 3 + .../clothes/robe/coat_flasher/extra.webp | 3 + .../robe/coat_flasher/outline_zorder_145.webp | 3 + .../robe/coat_flasher/outline_zorder_155.webp | 3 + .../clothes/robe/coat_flasher/skin.webp | 3 + .../default/clothes/top/top_cumslut/0.webp | 3 + .../default/clothes/top/top_cumslut/1.webp | 3 + .../clothes/top/top_cumslut/extra.webp | 3 + .../clothes/top/top_cumslut/outline.webp | 3 + .../default/clothes/top/top_cumslut/skin.webp | 3 + .../default/clothes/top/top_latex/0.webp | 3 + .../default/clothes/top/top_latex/1.webp | 3 + .../default/clothes/top/top_latex/extra.webp | 3 + .../clothes/top/top_latex/outline.webp | 3 + .../hermione/wardrobe_reactions.rpy | 1 - game/scripts/characters/luna/wardrobe.rpy | 32 ++++++ .../characters/luna/wardrobe_reactions.rpy | 105 +++++++++++++++++- game/scripts/shops/dress/chitchats.rpy | 35 ++++++ 54 files changed, 318 insertions(+), 6 deletions(-) create mode 100644 game/characters/luna/poses/default/clothes/accessory/leash/0.webp create mode 100644 game/characters/luna/poses/default/clothes/accessory/leash/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/accessory/leash/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/accessory/leash/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/accessory/onepiece_harness/0.webp create mode 100644 game/characters/luna/poses/default/clothes/accessory/onepiece_harness/1.webp create mode 100644 game/characters/luna/poses/default/clothes/accessory/onepiece_harness/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/accessory/onepiece_harness/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts_latex/0.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts_latex/1.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts_latex/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/shorts_latex/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/trousers_latex/0.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/trousers_latex/1.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/trousers_latex/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/bottom/trousers_latex/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/choker_1/0.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/choker_1/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/collar/0.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/collar/1.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/collar/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/collar_1/0.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/collar_1/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/collar_1/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/neckwear/collar_1/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/panties/panties_cumslut/0.webp create mode 100644 game/characters/luna/poses/default/clothes/panties/panties_cumslut/1.webp create mode 100644 game/characters/luna/poses/default/clothes/panties/panties_cumslut/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/panties/panties_cumslut/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/panties/panties_cumslut/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_142.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_152.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_143.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_153.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_145.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_155.webp create mode 100644 game/characters/luna/poses/default/clothes/robe/coat_flasher/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_cumslut/0.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_cumslut/1.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_cumslut/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_cumslut/outline.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_cumslut/skin.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_latex/0.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_latex/1.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_latex/extra.webp create mode 100644 game/characters/luna/poses/default/clothes/top/top_latex/outline.webp diff --git a/game/characters/luna/poses/default/bodyparts/frame/default/skin.webp b/game/characters/luna/poses/default/bodyparts/frame/default/skin.webp index 2b949fb2..4b7db640 100644 --- a/game/characters/luna/poses/default/bodyparts/frame/default/skin.webp +++ b/game/characters/luna/poses/default/bodyparts/frame/default/skin.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1f930f061a1f782b3a0b617ff68a91b08048d987d36d40cb2b1f018018d47e4 -size 158562 +oid sha256:bd6f623ed9c7dc216fb3dbdff65741a77fab38c66287527364894497a5761a93 +size 88904 diff --git a/game/characters/luna/poses/default/clothes/accessory/leash/0.webp b/game/characters/luna/poses/default/clothes/accessory/leash/0.webp new file mode 100644 index 00000000..db32f917 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/accessory/leash/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6510b81d917d56b2cbbda7129329077570c5e0ea6709aa7fcf575d87be5ebea +size 4862 diff --git a/game/characters/luna/poses/default/clothes/accessory/leash/extra.webp b/game/characters/luna/poses/default/clothes/accessory/leash/extra.webp new file mode 100644 index 00000000..ba11f980 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/accessory/leash/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5009cdd2852b6c84a9b26fb6915398ac85017b88cec143497df001b0e605bee +size 622 diff --git a/game/characters/luna/poses/default/clothes/accessory/leash/outline.webp b/game/characters/luna/poses/default/clothes/accessory/leash/outline.webp new file mode 100644 index 00000000..361ac0b1 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/accessory/leash/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4aed0ac4e72883237d22a5edfb53c23526b44e2e25dddddb1a1b6e860e9a732 +size 5860 diff --git a/game/characters/luna/poses/default/clothes/accessory/leash/skin.webp b/game/characters/luna/poses/default/clothes/accessory/leash/skin.webp new file mode 100644 index 00000000..8a56dbd4 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/accessory/leash/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9de5962e4bc89c10628c9584491f81ffc5b762a68842174a0bf4d270f7a2b478 +size 4492 diff --git a/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/0.webp b/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/0.webp new file mode 100644 index 00000000..a725a120 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e10b0ab5db0931aaaadf2cc990350593c09c7c2d3087189e6ccccdbec3677a25 +size 14428 diff --git a/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/1.webp b/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/1.webp new file mode 100644 index 00000000..894955da --- /dev/null +++ b/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5de97fca094f57f61aa28dd48425f284ebddf1f05ee9b6b2aa330bad8de03f3e +size 2274 diff --git a/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/outline.webp b/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/outline.webp new file mode 100644 index 00000000..ff7680b4 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34e367d6cbc93c953cbb5fbee007e6ef05dd1c5662b6bac670c349d1e10d138a +size 13060 diff --git a/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/skin.webp b/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/skin.webp new file mode 100644 index 00000000..9712695d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/accessory/onepiece_harness/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e012c5c66894972fea95b161c0e0122757a61d22f35f2cd1984c1e60cebf83b4 +size 10754 diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts_latex/0.webp b/game/characters/luna/poses/default/clothes/bottom/shorts_latex/0.webp new file mode 100644 index 00000000..3b6c8847 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts_latex/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3f68f682b99594db7474c1a9fb08f4a071b397afc31da2ea2739b8fd1fc9740 +size 8672 diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts_latex/1.webp b/game/characters/luna/poses/default/clothes/bottom/shorts_latex/1.webp new file mode 100644 index 00000000..85b4f3cd --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts_latex/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f925a33ec8df10aa8874edae437faf6c348db3162684e59da2fd5cfb715f8f70 +size 16654 diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts_latex/extra.webp b/game/characters/luna/poses/default/clothes/bottom/shorts_latex/extra.webp new file mode 100644 index 00000000..97451b32 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts_latex/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80cd447d1b9f124098ff94c673509afe5d3a0e5516f7c06376ee960f2a6d9d2c +size 4500 diff --git a/game/characters/luna/poses/default/clothes/bottom/shorts_latex/outline.webp b/game/characters/luna/poses/default/clothes/bottom/shorts_latex/outline.webp new file mode 100644 index 00000000..feee7c1b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/shorts_latex/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f3db0b543883008585e352e54d5b09b5d4b4bbe902b073b07cd6862136c9769 +size 12036 diff --git a/game/characters/luna/poses/default/clothes/bottom/trousers_latex/0.webp b/game/characters/luna/poses/default/clothes/bottom/trousers_latex/0.webp new file mode 100644 index 00000000..df5acdc3 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/trousers_latex/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2be2a0166056d16ca3277a6d6ad6b89acb6e0a621d819602568c19de2c32375 +size 11164 diff --git a/game/characters/luna/poses/default/clothes/bottom/trousers_latex/1.webp b/game/characters/luna/poses/default/clothes/bottom/trousers_latex/1.webp new file mode 100644 index 00000000..3ba55992 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/trousers_latex/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d40916d65174161dd246c5f5567776710fdafe6759634e94cffa05c7ba3b437c +size 29126 diff --git a/game/characters/luna/poses/default/clothes/bottom/trousers_latex/extra.webp b/game/characters/luna/poses/default/clothes/bottom/trousers_latex/extra.webp new file mode 100644 index 00000000..7d359281 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/trousers_latex/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21740c1ba177959b4862f95e288097dec352a98f7a654a4620486aed7ef35c0e +size 7482 diff --git a/game/characters/luna/poses/default/clothes/bottom/trousers_latex/outline.webp b/game/characters/luna/poses/default/clothes/bottom/trousers_latex/outline.webp new file mode 100644 index 00000000..017c580e --- /dev/null +++ b/game/characters/luna/poses/default/clothes/bottom/trousers_latex/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77205415b67f82db4c40038f168c763d80b698675b788cc044cd654a4a832f0d +size 17886 diff --git a/game/characters/luna/poses/default/clothes/neckwear/choker_1/0.webp b/game/characters/luna/poses/default/clothes/neckwear/choker_1/0.webp new file mode 100644 index 00000000..3bd9171b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/choker_1/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7eb953447463332c51e44744345cfb745148573d4187b08685e397845923ee15 +size 918 diff --git a/game/characters/luna/poses/default/clothes/neckwear/choker_1/outline.webp b/game/characters/luna/poses/default/clothes/neckwear/choker_1/outline.webp new file mode 100644 index 00000000..fd43a978 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/choker_1/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:379f06905ffda07678222cb3f0b2c91f3ae356ea7e8d1a6180523d9c3ce0ed47 +size 1470 diff --git a/game/characters/luna/poses/default/clothes/neckwear/collar/0.webp b/game/characters/luna/poses/default/clothes/neckwear/collar/0.webp new file mode 100644 index 00000000..b967dfc1 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/collar/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9f696302f312ae1da41f2c93e6d8af369413bee36ee8afe6f1dba8ae2f281b3 +size 2914 diff --git a/game/characters/luna/poses/default/clothes/neckwear/collar/1.webp b/game/characters/luna/poses/default/clothes/neckwear/collar/1.webp new file mode 100644 index 00000000..99a54ee7 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/collar/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad417da4dc030651ee18bb8e6e0626742cb348dabc1ad3c2277959ae794d9b43 +size 524 diff --git a/game/characters/luna/poses/default/clothes/neckwear/collar/outline.webp b/game/characters/luna/poses/default/clothes/neckwear/collar/outline.webp new file mode 100644 index 00000000..271e1a6a --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/collar/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f227c45f3d753ed1af8acc140acb32a7320835e5997f350f822837044d8f179 +size 2238 diff --git a/game/characters/luna/poses/default/clothes/neckwear/collar_1/0.webp b/game/characters/luna/poses/default/clothes/neckwear/collar_1/0.webp new file mode 100644 index 00000000..5e061a10 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/collar_1/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30bc11ad53874441b3602ef7a787d3b5a7415be2613dd6bc0c71ea9937a836cd +size 1332 diff --git a/game/characters/luna/poses/default/clothes/neckwear/collar_1/extra.webp b/game/characters/luna/poses/default/clothes/neckwear/collar_1/extra.webp new file mode 100644 index 00000000..ba11f980 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/collar_1/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5009cdd2852b6c84a9b26fb6915398ac85017b88cec143497df001b0e605bee +size 622 diff --git a/game/characters/luna/poses/default/clothes/neckwear/collar_1/outline.webp b/game/characters/luna/poses/default/clothes/neckwear/collar_1/outline.webp new file mode 100644 index 00000000..321d5bd4 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/collar_1/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa1f0097e6d60d5af22364fafec3b59354f27d4383e7164ab34620f987db4773 +size 1616 diff --git a/game/characters/luna/poses/default/clothes/neckwear/collar_1/skin.webp b/game/characters/luna/poses/default/clothes/neckwear/collar_1/skin.webp new file mode 100644 index 00000000..c0dfadca --- /dev/null +++ b/game/characters/luna/poses/default/clothes/neckwear/collar_1/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14dc400279aef4228277814cc38d4098ec51316f2f54635a66cf6ee8093a6e10 +size 1292 diff --git a/game/characters/luna/poses/default/clothes/panties/panties_cumslut/0.webp b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/0.webp new file mode 100644 index 00000000..8d80b1f7 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bac6e9459080c3e133b7179095272590a86bfbe8f0eead5c0a96c5ebf1c2946 +size 5512 diff --git a/game/characters/luna/poses/default/clothes/panties/panties_cumslut/1.webp b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/1.webp new file mode 100644 index 00000000..360af446 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea16754b8a1d6e0a578ad66a845fbe5e890dd6168f0462a3cc5367e0527042c8 +size 2988 diff --git a/game/characters/luna/poses/default/clothes/panties/panties_cumslut/extra.webp b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/extra.webp new file mode 100644 index 00000000..cf97ff2f --- /dev/null +++ b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b20377c37906b25345722cd502fa81125c8706d6cad946234fd5d034b52f2c60 +size 2734 diff --git a/game/characters/luna/poses/default/clothes/panties/panties_cumslut/outline.webp b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/outline.webp new file mode 100644 index 00000000..ce9678f3 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab2a9c7e0b63a9b0578902d98be9ea45ca59ddc3deb7efd8a659323ac1cf4626 +size 7632 diff --git a/game/characters/luna/poses/default/clothes/panties/panties_cumslut/skin.webp b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/skin.webp new file mode 100644 index 00000000..912ea235 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/panties/panties_cumslut/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:107692faf52c632804fe47b77539cf9f706287139333a51653554401c76a90bd +size 3152 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_142.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_142.webp new file mode 100644 index 00000000..b5aaf092 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_142.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49cee2dfb04456441a2dd92a00255555080529fb431dbeec32f7ca88c29225a7 +size 23574 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_152.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_152.webp new file mode 100644 index 00000000..db33ae09 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_152.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ccd5de3964dff9ff270fb6d7a0677a22553f4c7094958d5e5500d6eb797ab73 +size 29934 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_143.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_143.webp new file mode 100644 index 00000000..21ba8522 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_143.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b120b7af98df9148d13b950b46b40d9a8d989109b97f10cd02dcfe3f534315e4 +size 628 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_153.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_153.webp new file mode 100644 index 00000000..64fbb00d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_153.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a46d43809640437ed54a01de49586f2cc2a205b7cf638ff4a210f996e1ff662 +size 1092 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp new file mode 100644 index 00000000..1954c613 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea81b3d3118ff28aebbc2875aabcda0c4a44d091f36c9842ed6d77c00e0f8e76 +size 7384 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp new file mode 100644 index 00000000..69df38f0 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f76addc758f6144302af3fb24c25c95b339ce1d568336300155c3096c2ac61df +size 12458 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/extra.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/extra.webp new file mode 100644 index 00000000..a243bd66 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64c2d6d0db5adf1b5018831c3c5f0d0aeeb60612553e28332e188724d34fb067 +size 22716 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_145.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_145.webp new file mode 100644 index 00000000..c4afe69d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_145.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:636b4d2354cfd2f20fb59f441f6845c5e795088214a8ec048922ccea06931670 +size 17514 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_155.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_155.webp new file mode 100644 index 00000000..270066a4 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_155.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:639e37bc7330d90d2587e230fcb519dfa1c153d188fe465aa00cdc6c05f4da8a +size 22306 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/skin.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/skin.webp new file mode 100644 index 00000000..459127be --- /dev/null +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6b63a6a5d1c94c31bdfca08319011bb0a7180cebd816cd5a0cb2e43c5a7ab50 +size 5660 diff --git a/game/characters/luna/poses/default/clothes/top/top_cumslut/0.webp b/game/characters/luna/poses/default/clothes/top/top_cumslut/0.webp new file mode 100644 index 00000000..bfdb4f3d --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_cumslut/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:034e43ef8dee3dba6a18ca2c5a03ddadb0c1fe318d1ab6813f01096716506a58 +size 15250 diff --git a/game/characters/luna/poses/default/clothes/top/top_cumslut/1.webp b/game/characters/luna/poses/default/clothes/top/top_cumslut/1.webp new file mode 100644 index 00000000..b4ef7a6b --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_cumslut/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82fbcd61032df2928283b2d6f261fc1a72a35953dd09cb2053f76181ec8e89cf +size 2192 diff --git a/game/characters/luna/poses/default/clothes/top/top_cumslut/extra.webp b/game/characters/luna/poses/default/clothes/top/top_cumslut/extra.webp new file mode 100644 index 00000000..0e180e06 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_cumslut/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83713a0e25b76eccfe8537738388548fcf91c9ed97b9c2957689cf47054c5dcd +size 14514 diff --git a/game/characters/luna/poses/default/clothes/top/top_cumslut/outline.webp b/game/characters/luna/poses/default/clothes/top/top_cumslut/outline.webp new file mode 100644 index 00000000..57563f85 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_cumslut/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f84b6a2ab4949cc178547ec5203fc859f656c892ef31a554bc9b8bd6507ef54 +size 15136 diff --git a/game/characters/luna/poses/default/clothes/top/top_cumslut/skin.webp b/game/characters/luna/poses/default/clothes/top/top_cumslut/skin.webp new file mode 100644 index 00000000..4d456a7a --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_cumslut/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0c7448f5844da9b0aebefedd1b04a99b5ad3e2f9004f542907a0dab4689cf91 +size 6256 diff --git a/game/characters/luna/poses/default/clothes/top/top_latex/0.webp b/game/characters/luna/poses/default/clothes/top/top_latex/0.webp new file mode 100644 index 00000000..a32f4bea --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_latex/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46c02f0c1058a98836644ad8dd193bc8d9a3e177a20e0facddbf9b4d6ab40c9d +size 18088 diff --git a/game/characters/luna/poses/default/clothes/top/top_latex/1.webp b/game/characters/luna/poses/default/clothes/top/top_latex/1.webp new file mode 100644 index 00000000..fc1043bb --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_latex/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd9b9d82d8bad86893bd2b6175ca84c1aa2bd929ee60cf8d2029d953690250c6 +size 26436 diff --git a/game/characters/luna/poses/default/clothes/top/top_latex/extra.webp b/game/characters/luna/poses/default/clothes/top/top_latex/extra.webp new file mode 100644 index 00000000..c873d7cb --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_latex/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0a5c3c06e3a52f0cd50c401a010437e44158564a5f86419164eb8d3d9c2d5d7 +size 4684 diff --git a/game/characters/luna/poses/default/clothes/top/top_latex/outline.webp b/game/characters/luna/poses/default/clothes/top/top_latex/outline.webp new file mode 100644 index 00000000..e9e6b177 --- /dev/null +++ b/game/characters/luna/poses/default/clothes/top/top_latex/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:debbe3868552f398eaeba62eaa876748adfcf4756656398225542e211d8a3a0e +size 19224 diff --git a/game/scripts/characters/hermione/wardrobe_reactions.rpy b/game/scripts/characters/hermione/wardrobe_reactions.rpy index f5e19d54..bd3f8cae 100644 --- a/game/scripts/characters/hermione/wardrobe_reactions.rpy +++ b/game/scripts/characters/hermione/wardrobe_reactions.rpy @@ -833,7 +833,6 @@ label her_reaction_equip_outfit(item): her "Ouch!" hide screen blkfade - her @ cheeks blush "" ("angry", "squint", "base", "mid") ##################### ## Egyptian Outfit ## diff --git a/game/scripts/characters/luna/wardrobe.rpy b/game/scripts/characters/luna/wardrobe.rpy index 25523361..8b8172dd 100644 --- a/game/scripts/characters/luna/wardrobe.rpy +++ b/game/scripts/characters/luna/wardrobe.rpy @@ -192,6 +192,38 @@ default lun_stockings_bimbo_leggings = DollCloth("luna", ("legwear", "stockings" default lun_outfit_bimbo = DollOutfit([lun_hair_base, lun_top_torn, lun_skirt_plaid, lun_stockings_bimbo_leggings], price=350, name="Bimbo Outfit", desc="An outfit for someone that's either aware, or unaware that they're a bimbo.") +#################### +## Cumslut Outfit ## +#################### + +default lun_neckwear_choker_1 = DollCloth("luna", ("head", "neckwear"), "neckwear", "choker_1", ["#39373FFF"]) +default lun_top_cumslut = DollCloth("luna", ("upper body", "shirts"), "top", "top_cumslut", ["#39373FFF", "#473A63FF"], level=10) +default lun_panties_cumslut = DollCloth("luna", ("lower undergarment", "panties"), "panties", "panties_cumslut", ["#39373FFF", "#473A63FF"], level=10) + +default lun_outfit_cumslut = DollOutfit([lun_hair_base, lun_neckwear_choker_1, lun_top_cumslut, lun_panties_cumslut], price=350, name="Cumslut Outfit", desc="Shit's fire yo.") + +################## +## Latex Outfit ## +################## + +default lun_top_latex = DollCloth("luna", ("upper body", "shirts"), "top", "top_latex", ["#35373CFF", "#35373CFF"], level=10) +default lun_bottom_trousers_latex = DollCloth("luna", ("lower body", "trousers"), "bottom", "trousers_latex", ["#35373CFF", "#35373CFF"]) +default lun_bottom_shorts_latex = DollCloth("luna", ("lower body", "shorts"), "bottom", "shorts_latex",["#35373CFF", "#35373CFF"]) + +default lun_outfit_latex = DollOutfit([lun_hair_base, lun_top_latex, lun_bottom_trousers_latex], addons=[lun_bottom_shorts_latex], price=300, name="Latex Outfit", desc="Rubber up and show off your bouncy personality with this latex outfit!") + +#################### +## Flasher Outfit ## +#################### + +default lun_neckwear_collar = DollCloth("luna", ("head", "neckwear"), "neckwear", "collar", ["#565656", "#eaeaea"]) +default lun_neckwear_collar_1 = DollCloth("luna", ("head", "neckwear"), "neckwear", "collar_1", ["#F12E2EFF"]) +default lun_accessory_leash = DollCloth("luna", ("misc", "accessory"), "accessory", "leash", ["#F12E2EFF"], level=7, zorder=214) +default lun_accessory_onepiece_harness = DollCloth("luna", ("misc", "accessory"), "accessory", "onepiece_harness", ["#565656", "#eaeaea"], zorder=215, level=10) +default lun_robe_coat_flasher = DollCloth("luna", ("upper body", "robes"), "robe", "coat_flasher", ["#dba55f", "#fdd299", "#493a31"], level=7, zorder=145, blacklist=["top", "bottom", "gloves"]) + +default lun_outfit_flasher = DollOutfit([lun_hair_base, lun_accessory_leash, lun_accessory_onepiece_harness, lun_robe_coat_flasher], addons=[lun_neckwear_collar, lun_neckwear_collar_1], price=350, name="Flasher Outfit", desc="Show them what you got.") + ########################### ## Police Officer Outfit ## #unlocked in not_so_great_escape mirror story ########################### diff --git a/game/scripts/characters/luna/wardrobe_reactions.rpy b/game/scripts/characters/luna/wardrobe_reactions.rpy index d340ec8d..3fd9280c 100644 --- a/game/scripts/characters/luna/wardrobe_reactions.rpy +++ b/game/scripts/characters/luna/wardrobe_reactions.rpy @@ -588,6 +588,67 @@ label lun_reaction_equip_outfit(item): lun "I appreciate the effort very much!" ("smile", "base", "base", "mid") gen "(If it were anyone else, I would think it was sarcasm...)" ("base", xpos="far_left", ypos="head") lun "Let me put it on." ("base", "base", "base", "mid") + + #################### + ## Cumslut Outfit ## + #################### + elif item == lun_outfit_cumslut: #Req 10 (Top, panties) + gen "I've got this cool outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "Cool?" ("soft", "base", "raised", "mid") + gen "That's right... It's this one right here..." ("base", xpos="far_left", ypos="head") + lun "Oh..." ("open", "narrow", "base", "down") + gen "You don't like it?" ("base", xpos="far_left", ypos="head") + lun "No, of course I like it, sir... I was just a bit confused." ("base", "base", "base", "mid") + gen "Why's that?" ("base", xpos="far_left", ypos="head") + lun "You said it was cool, but it looks hot to me." ("soft", "base", "base", "mid") + gen "Isn't that the same thing?" ("base", xpos="far_left", ypos="head") + lun "*Huh*?" ("open", "base", "raised", "mid") + gen "Just put it on, will you?" ("base", xpos="far_left", ypos="head") + lun "Oh-- Okay then!" ("smile", "base", "base", "mid") + + ################## + ## Latex Outfit ## + ################## + elif item == lun_outfit_latex: #Req 10 (Top) + gen "I've got this latex outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "But, [name_genie_luna]! Won't that trap the wrackpurts?" ("angry", "base", "base", "mid") + gen "I've thought of that already. There are holes in certain areas, you see." ("base", xpos="far_left", ypos="head") + lun "Ooooh... That's brilliant!" ("smile", "base", "base", "mid") + lun "The tightness of the latex will make the wrackspurts move to the open areas!" ("grin", "closed", "base", "mid") + gen "They will?" ("base", xpos="far_left", ypos="head") + gen "I mean, yes! That's the plan!" ("base", xpos="far_left", ypos="head") + lun "I'll put it on right away!" ("base", "base", "base", "mid") + + show screen blkfade + with d5 + pause .8 + + lun "*Hmm*... It doesn't stretch that much, does it?" + lun "*Ngh*!!" + play sound "sounds/creaking02.ogg" + pause 1 + lun "Alright, there's one leg..." + play sound "sounds/creaking02.ogg" + pause 1 + lun "And the other..." + play sound "sounds/creaking01.ogg" + pause 2 + play sound "sounds/slap_04.ogg" + lun "Ouchie!" + + #################### + ## Flasher Outfit ## + #################### + elif item == lun_outfit_flasher: #Req 10 (Top) + gen "I've got this neat outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "Oh?" ("open", "base", "base", "mid") + gen "This one, right here." ("base", xpos="far_left", ypos="head") + lun "Looks very intricate." ("soft", "narrow", "base", "down") + gen "That's certainly one way to describe it." ("base", xpos="far_left", ypos="head") + gen "But it's not that complicated, just put your legs through here." ("base", xpos="far_left", ypos="head") + lun "Oh! That makes sense..." ("grin", "narrow", "base", "down") + lun "Alright, give me a moment to put it on..." ("base", "base", "base", "mid") + # TODO: Blacklist fallbacks have to be added. return @@ -770,9 +831,9 @@ label lun_reaction_equip_outfit_fail(item): gen "Don't worry... They'll know what I meant..." ("base", xpos="far_left", ypos="head") lun "*Hmm*..." ("normal", "base", "base", "R") -################## -## Bimbo Outfit ## -################## + ################## + ## Bimbo Outfit ## + ################## elif item == lun_outfit_bimbo: #Req 10 (top) gen "I've got this cute outfit for you to wear." ("base", xpos="far_left", ypos="head") lun "Acute?" ("open", "base", "raised", "mid") @@ -786,6 +847,44 @@ label lun_reaction_equip_outfit_fail(item): lun "You better go ask for a refund!" ("clench", "base", "base", "mid") gen "..." ("base", xpos="far_left", ypos="head") + #################### + ## Cumslut Outfit ## + #################### + elif item == lun_outfit_cumslut: #Req 10 (Top, panties) + gen "I've got this cool outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "Cool?" ("soft", "base", "raised", "mid") + gen "That's right... It's this one, right here..." ("base", xpos="far_left", ypos="head") + lun "But, [name_genie_luna]... This outfit has flames on it." ("angry", "narrow", "base", "down") + gen "So?" ("base", xpos="far_left", ypos="head") + lun "I thought you said it was cool?" ("soft", "base", "raised", "mid") + gen "What do you--" ("base", xpos="far_left", ypos="head") + lun "Or, do you mean it's cool because it's airy?" ("open", "base", "raised", "mid") + lun "There appears to be some holes in it." ("open", "base", "base", "down") + gen "(This is giving me a headache...)" ("base", xpos="far_left", ypos="head") + + ################## + ## Latex Outfit ## + ################## + elif item == lun_outfit_latex: #Req 10 (Top) + gen "I've got this latex outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "Latex?" ("soft", "base", "raised", "mid") + gen "That's right... It's this one right here." ("base", xpos="far_left", ypos="head") + lun "But... There are holes in it... What about the Wrackspurts?" ("angry", "base", "low", "mid") + gen "*Err*..." ("base", xpos="far_left", ypos="head") + lun "*Phew*... Disaster, successfully avoided." ("base", "closed", "base", "mid") + + #################### + ## Flasher Outfit ## + #################### + elif item == lun_outfit_flasher: #Req 10 (Top) + gen "I've got this neat outfit for you to wear." ("base", xpos="far_left", ypos="head") + lun "An outfit?" ("open", "base", "base", "mid") + gen "That's right... This one right here." ("base", xpos="far_left", ypos="head") + lun "Oh... That's... Very interesting..." ("soft", "narrow", "base", "down") + gen "Go on... Put it on, will you?" ("base", xpos="far_left", ypos="head") + lun "(How do you even wear this thing?)" ("disgust", "narrow", "base", "down") + lun "*Ehm*... Maybe some other time..." ("annoyed", "base", "base", "mid") + ################# ## Party Dress ## ################# diff --git a/game/scripts/shops/dress/chitchats.rpy b/game/scripts/shops/dress/chitchats.rpy index dbaa664c..10b4cb14 100644 --- a/game/scripts/shops/dress/chitchats.rpy +++ b/game/scripts/shops/dress/chitchats.rpy @@ -646,6 +646,41 @@ label purchase_outfit(item): maf "However, refusing would end my streak of completing any request that has been given to me." maf "Alright then... I'll do it." gen "Excellent!" ("base", xpos="far_left", ypos="head") + elif item == lun_outfit_cumslut: + gen "I've got this idea for an outfit, that I can't get out of my mind." ("base", xpos="far_left", ypos="head") + maf "Right... Could you describe it for me?" + gen "It would look like this... *scribbles*..." ("base", xpos="far_left", ypos="head") + play sound "sounds/scribble.ogg" + maf "Merlin's beard... Where do you get these ideas from?" + gen "Is it that bad?" ("base", xpos="far_left", ypos="head") + maf "No, this is brilliant." + gen "Truly?" ("base", xpos="far_left", ypos="head") + maf "Of course! I'll start on it at once!" + gen "Oh! Okay then!" ("base", xpos="far_left", ypos="head") + elif item == lun_outfit_latex: + gen "I need something snappy, and make it tight!" ("base", xpos="far_left", ypos="head") + gen "Wait... I meant that I need something tight... And make it snappy!" ("base", xpos="far_left", ypos="head") + maf "I'm afraid you're going to have to be a little bit more specific, sir." + gen "A latex suit please." ("base", xpos="far_left", ypos="head") + maf "Right... Would you like a one-piece or a two-piece?" + gen "Definitely a two-piece!" ("base", xpos="far_left", ypos="head") + maf "Any other requirements?" + gen "*Hmm*... I'm not sure..." ("base", xpos="far_left", ypos="head") + gen "Oh! Some holes for the chest to poke through!" ("base", xpos="far_left", ypos="head") + gen "For comfort, of course..." ("base", xpos="far_left", ypos="head") + maf "Certainly..." + maf "I shall have it ready for you shortly." + elif item == lun_outfit_flasher: + gen "I'm looking to acquire something... Kinky." ("base", xpos="far_left", ypos="head") + maf "Kinky, sir?" + gen "Do you know what a flasher is?" ("base", xpos="far_left", ypos="head") + maf "Of course... The first ever flasher was a witch, after all." + gen "Really?" ("base", xpos="far_left", ypos="head") + maf "Most certainly... Do they not teach this in school anymore?" + gen "*Err*..." ("base", xpos="far_left", ypos="head") + gen "So, would you be able to make an outfit like that?" ("base", xpos="far_left", ypos="head") + maf "Absolutely." + gen "Excellent." ("base", xpos="far_left", ypos="head") # gen "Could you make me a Ravenclaw Cheerleader outfit?" ("base", xpos="far_left", ypos="head") # maf "You're not showing favouritism towards Ravenclaw's Quidditch team, are you?" # gen "I'm merely looking to see if it'd be worth to bring cheerleading to this country." ("base", xpos="far_left", ypos="head") From 34c356b29b41f757520ad9201484dd59814aa8e5 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Thu, 27 Jul 2023 00:54:34 +0100 Subject: [PATCH 013/249] Update whitespace --- game/images.whitespace | 799 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 700 insertions(+), 99 deletions(-) diff --git a/game/images.whitespace b/game/images.whitespace index cb33a1f0..cc222521 100644 --- a/game/images.whitespace +++ b/game/images.whitespace @@ -282,27 +282,27 @@ characters/cho/chibis/fly_move/cc_sweater.webp:189,119,91,105 characters/cho/chibis/fly_move/cc_top.webp:189,116,78,93 characters/cho/chibis/fly_move/cc_trousers.webp:205,185,92,86 characters/cho/poses/broom/bodyparts/frame/default/skin.webp:19,283,974,895 -characters/cho/poses/broom/clothes/accessory/goggles/0.webp:714,268,124,38 -characters/cho/poses/broom/clothes/accessory/goggles/1.webp:713,258,134,59 -characters/cho/poses/broom/clothes/accessory/goggles/extra.webp:715,250,181,109 -characters/cho/poses/broom/clothes/accessory/goggles/outline.webp:711,249,186,116 -characters/cho/poses/broom/clothes/accessory/goggles_face/0.webp:719,339,108,36 -characters/cho/poses/broom/clothes/accessory/goggles_face/1.webp:720,331,115,53 -characters/cho/poses/broom/clothes/accessory/goggles_face/extra.webp:720,324,145,68 -characters/cho/poses/broom/clothes/accessory/goggles_face/outline.webp:718,322,145,71 +characters/cho/poses/broom/clothes/accessory/goggles/0.webp:375,140,65,19 +characters/cho/poses/broom/clothes/accessory/goggles/1.webp:375,135,70,31 +characters/cho/poses/broom/clothes/accessory/goggles/extra.webp:376,131,95,57 +characters/cho/poses/broom/clothes/accessory/goggles/outline.webp:374,130,97,61 +characters/cho/poses/broom/clothes/accessory/goggles_face/0.webp:378,178,56,18 +characters/cho/poses/broom/clothes/accessory/goggles_face/1.webp:378,174,60,27 +characters/cho/poses/broom/clothes/accessory/goggles_face/extra.webp:378,170,76,35 +characters/cho/poses/broom/clothes/accessory/goggles_face/outline.webp:377,169,76,37 characters/cho/poses/broom/clothes/accessory/panties_in_hand/0.webp:39,508,116,197 characters/cho/poses/broom/clothes/accessory/panties_in_hand/outline.webp:37,506,122,203 characters/cho/poses/broom/clothes/accessory/protectors1/extra.webp:80,459,644,728 characters/cho/poses/broom/clothes/accessory/protectors2/extra.webp:80,459,644,728 characters/cho/poses/broom/clothes/accessory/snitch_in_hand/extra.webp:140,300,242,260 characters/cho/poses/broom/clothes/bottom/pants_long_2/0.webp:300,670,367,395 -characters/cho/poses/broom/clothes/bottom/pants_long_2/1.webp:0,0,1,1 +characters/cho/poses/broom/clothes/bottom/pants_long_2/1.webp:0,0,1010,1010 characters/cho/poses/broom/clothes/bottom/pants_long_2/outline.webp:298,668,371,400 characters/cho/poses/broom/clothes/bottom/pants_short_4/0.webp:344,670,321,243 -characters/cho/poses/broom/clothes/bottom/pants_short_4/1.webp:0,0,1,1 +characters/cho/poses/broom/clothes/bottom/pants_short_4/1.webp:0,0,1010,1010 characters/cho/poses/broom/clothes/bottom/pants_short_4/outline.webp:295,667,374,310 characters/cho/poses/broom/clothes/bottom/school_skirt_1/0.webp:448,715,250,226 -characters/cho/poses/broom/clothes/bottom/school_skirt_1/1.webp:0,0,1,1 +characters/cho/poses/broom/clothes/bottom/school_skirt_1/1.webp:0,0,1010,1010 characters/cho/poses/broom/clothes/bottom/school_skirt_1/outline.webp:442,711,257,233 characters/cho/poses/broom/clothes/bottom/school_skirt_1/skin.webp:427,772,167,103 characters/cho/poses/broom/clothes/bottom/school_skirt_2/0.webp:449,676,229,156 @@ -314,19 +314,19 @@ characters/cho/poses/broom/clothes/bottom/school_skirt_3/1.webp:485,732,7,12 characters/cho/poses/broom/clothes/bottom/school_skirt_3/outline.webp:450,675,224,140 characters/cho/poses/broom/clothes/bottom/school_skirt_3/skin.webp:469,769,193,46 characters/cho/poses/broom/clothes/bottom/school_skirt_4/0.webp:474,692,182,74 -characters/cho/poses/broom/clothes/bottom/school_skirt_4/1.webp:0,0,1,1 +characters/cho/poses/broom/clothes/bottom/school_skirt_4/1.webp:0,0,1010,1010 characters/cho/poses/broom/clothes/bottom/school_skirt_4/outline.webp:466,691,191,77 characters/cho/poses/broom/clothes/bottom/school_skirt_4/skin.webp:455,721,190,57 characters/cho/poses/broom/clothes/bottom/skirt_short_1/0.webp:459,693,223,103 characters/cho/poses/broom/clothes/bottom/skirt_short_1/outline.webp:452,690,232,107 characters/cho/poses/broom/clothes/bottom/skirt_short_1/skin.webp:440,765,225,37 -characters/cho/poses/broom/clothes/bra/basic_bra_1/0.webp:0,0,1,1 -characters/cho/poses/broom/clothes/bra/basic_bra_1/1.webp:0,0,1,1 -characters/cho/poses/broom/clothes/bra/basic_bra_1/outline.webp:0,0,1,1 +characters/cho/poses/broom/clothes/bra/basic_bra_1/0.webp:0,0,1010,1010 +characters/cho/poses/broom/clothes/bra/basic_bra_1/1.webp:0,0,1010,1010 +characters/cho/poses/broom/clothes/bra/basic_bra_1/outline.webp:0,0,1010,1010 characters/cho/poses/broom/clothes/bra/sport_bra_1/0.webp:368,461,164,194 characters/cho/poses/broom/clothes/bra/sport_bra_1/outline.webp:367,460,168,198 -characters/cho/poses/broom/clothes/gloves/quidditch/0.webp:0,0,1,1 -characters/cho/poses/broom/clothes/gloves/quidditch/outline.webp:0,0,1,1 +characters/cho/poses/broom/clothes/gloves/quidditch/0.webp:0,0,1010,1010 +characters/cho/poses/broom/clothes/gloves/quidditch/outline.webp:0,0,1010,1010 characters/cho/poses/broom/clothes/hair/ponytail/0.webp:261,272,266,240 characters/cho/poses/broom/clothes/hair/ponytail/1.webp:289,287,232,220 characters/cho/poses/broom/clothes/hair/ponytail/outline.webp:261,272,266,241 @@ -339,11 +339,11 @@ characters/cho/poses/broom/clothes/headgear/goggles/1.webp:274,287,134,65 characters/cho/poses/broom/clothes/headgear/goggles/extra.webp:276,279,184,98 characters/cho/poses/broom/clothes/headgear/goggles/outline.webp:271,277,190,105 characters/cho/poses/broom/clothes/panties/basic_panties_1/0.webp:490,703,172,97 -characters/cho/poses/broom/clothes/panties/basic_panties_1/1.webp:0,0,1,1 +characters/cho/poses/broom/clothes/panties/basic_panties_1/1.webp:0,0,1010,1010 characters/cho/poses/broom/clothes/panties/basic_panties_1/outline.webp:487,698,188,112 characters/cho/poses/broom/clothes/panties/basic_panties_1/skin.webp:503,701,160,104 -characters/cho/poses/broom/clothes/panties/sport_panties_1/0.webp:488,701,179,133 -characters/cho/poses/broom/clothes/panties/sport_panties_1/outline.webp:485,698,184,142 +characters/cho/poses/broom/clothes/panties/sport_panties_2/0.webp:488,701,179,133 +characters/cho/poses/broom/clothes/panties/sport_panties_2/outline.webp:485,698,184,142 characters/cho/poses/broom/clothes/robe/robe_quidditch_1/0.webp:292,460,550,500 characters/cho/poses/broom/clothes/robe/robe_quidditch_1/1.webp:384,460,453,500 characters/cho/poses/broom/clothes/robe/robe_quidditch_1/extra.webp:468,709,380,261 @@ -438,18 +438,18 @@ characters/cho/poses/broom/face/pupils/mid/expression.webp:317,378,70,24 characters/cho/poses/broom/face/pupils/up/expression.webp:314,375,70,23 characters/cho/poses/default/bodyparts/frame/default/skin.webp:456,332,269,868 characters/cho/poses/default/chibi/stand/bodyparts/frame/default/skin.webp:190,123,225,648 -characters/cho/poses/default/chibi/stand/clothes/bottom/default/overlay.webp:231,478,141,181 -characters/cho/poses/default/chibi/stand/clothes/bottom/school_skirt_1/0.webp:231,478,141,181 -characters/cho/poses/default/chibi/stand/clothes/bra/basic_bra_1/0.webp:259,343,110,108 -characters/cho/poses/default/chibi/stand/clothes/bra/default/overlay.webp:259,343,110,108 -characters/cho/poses/default/chibi/stand/clothes/footwear/default/overlay.webp:246,660,105,112 -characters/cho/poses/default/chibi/stand/clothes/panties/basic_panties_1/0.webp:267,490,87,65 -characters/cho/poses/default/chibi/stand/clothes/panties/default/overlay.webp:267,490,87,65 -characters/cho/poses/default/chibi/stand/clothes/robe/robe_school_1/0.webp:176,327,210,377 -characters/cho/poses/default/chibi/stand/clothes/robe/robe_school_1/0_back.webp:191,297,289,339 -characters/cho/poses/default/chibi/stand/clothes/stockings/house/outline.webp:248,559,111,212 -characters/cho/poses/default/chibi/stand/clothes/top/default/overlay.webp:219,325,153,197 -characters/cho/poses/default/chibi/stand/clothes/top/top_school_1/outline.webp:219,325,153,197 +characters/cho/poses/default/chibi/stand/clothes/bottom/default/overlay.webp:388,804,237,304 +characters/cho/poses/default/chibi/stand/clothes/bottom/school_skirt_1/0.webp:388,804,237,304 +characters/cho/poses/default/chibi/stand/clothes/bra/basic_bra_1/0.webp:435,577,185,181 +characters/cho/poses/default/chibi/stand/clothes/bra/default/overlay.webp:435,577,185,181 +characters/cho/poses/default/chibi/stand/clothes/footwear/default/overlay.webp:414,1111,176,188 +characters/cho/poses/default/chibi/stand/clothes/panties/basic_panties_1/0.webp:449,824,146,109 +characters/cho/poses/default/chibi/stand/clothes/panties/default/overlay.webp:449,824,146,109 +characters/cho/poses/default/chibi/stand/clothes/robe/robe_school_1/0.webp:296,550,353,634 +characters/cho/poses/default/chibi/stand/clothes/robe/robe_school_1/0_back.webp:321,499,486,570 +characters/cho/poses/default/chibi/stand/clothes/stockings/house/outline.webp:417,940,186,356 +characters/cho/poses/default/chibi/stand/clothes/top/default/overlay.webp:368,547,257,331 +characters/cho/poses/default/chibi/stand/clothes/top/top_school_1/outline.webp:368,547,257,331 characters/cho/poses/default/chibi/walk/bodyparts/frame/default/skin.webp:185,123,2025,1449 characters/cho/poses/default/clothes/accessory/body_wrap/0.webp:487,715,165,124 characters/cho/poses/default/clothes/accessory/body_wrap/outline.webp:485,713,168,128 @@ -465,11 +465,15 @@ characters/cho/poses/default/clothes/accessory/panties_in_hand/outline.webp:37,5 characters/cho/poses/default/clothes/accessory/suspenders/0.webp:478,562,175,324 characters/cho/poses/default/clothes/accessory/suspenders/1.webp:504,885,75,10 characters/cho/poses/default/clothes/accessory/suspenders/outline.webp:473,557,182,342 -characters/cho/poses/default/clothes/accessory/suspenders/suspenders_1.webp:473,557,182,342 characters/cho/poses/default/clothes/bottom/j_school_skirt_1/0.webp:415,782,351,356 characters/cho/poses/default/clothes/bottom/j_school_skirt_1/armfix.webp:653,843,72,246 characters/cho/poses/default/clothes/bottom/j_school_skirt_1/outline.webp:414,778,354,353 characters/cho/poses/default/clothes/bottom/j_school_skirt_1/skin.webp:504,790,159,354 +characters/cho/poses/default/clothes/bottom/jeans_long_1/0.webp:458,832,236,368 +characters/cho/poses/default/clothes/bottom/jeans_long_1/1.webp:530,852,11,11 +characters/cho/poses/default/clothes/bottom/jeans_long_1/armfix.webp:653,843,72,246 +characters/cho/poses/default/clothes/bottom/jeans_long_1/extra.webp:460,853,76,170 +characters/cho/poses/default/clothes/bottom/jeans_long_1/outline.webp:456,830,240,370 characters/cho/poses/default/clothes/bottom/pants_long_1/0.webp:457,871,243,329 characters/cho/poses/default/clothes/bottom/pants_long_1/armfix.webp:653,843,72,246 characters/cho/poses/default/clothes/bottom/pants_long_1/outline.webp:454,870,247,330 @@ -524,6 +528,11 @@ characters/cho/poses/default/clothes/bottom/school_skirt_4/0.webp:452,779,240,19 characters/cho/poses/default/clothes/bottom/school_skirt_4/1.webp:584,809,12,25 characters/cho/poses/default/clothes/bottom/school_skirt_4/armfix.webp:653,843,72,246 characters/cho/poses/default/clothes/bottom/school_skirt_4/outline.webp:453,778,240,160 +characters/cho/poses/default/clothes/bottom/skirt_chun_li/0.webp:465,820,247,304 +characters/cho/poses/default/clothes/bottom/skirt_chun_li/1.webp:461,817,253,310 +characters/cho/poses/default/clothes/bottom/skirt_chun_li/armfix.webp:653,843,72,246 +characters/cho/poses/default/clothes/bottom/skirt_chun_li/extra.webp:492,825,113,259 +characters/cho/poses/default/clothes/bottom/skirt_chun_li/outline.webp:458,815,261,314 characters/cho/poses/default/clothes/bottom/skirt_short_1/0.webp:443,894,276,117 characters/cho/poses/default/clothes/bottom/skirt_short_1/armfix.webp:653,843,72,246 characters/cho/poses/default/clothes/bottom/skirt_short_1/outline.webp:441,891,280,122 @@ -562,10 +571,15 @@ characters/cho/poses/default/clothes/bra/lace_bra_2/1.webp:498,687,157,62 characters/cho/poses/default/clothes/bra/lace_bra_2/2.webp:499,692,155,58 characters/cho/poses/default/clothes/bra/lace_bra_2/3.webp:535,677,29,28 characters/cho/poses/default/clothes/bra/lace_bra_2/outline.webp:463,561,193,191 +characters/cho/poses/default/clothes/bra/padding_bra_1/0.webp:468,641,180,79 +characters/cho/poses/default/clothes/bra/padding_bra_1/outline.webp:467,640,182,81 characters/cho/poses/default/clothes/bra/sport_bra_1/0.webp:467,556,189,198 characters/cho/poses/default/clothes/bra/sport_bra_1/extra.webp:469,573,166,124 characters/cho/poses/default/clothes/bra/sport_bra_1/outline.webp:466,555,192,200 characters/cho/poses/default/clothes/bra/sport_bra_1/skin.webp:504,567,149,187 +characters/cho/poses/default/clothes/bra/sporty_bikini_top_1/0.webp:468,555,187,192 +characters/cho/poses/default/clothes/bra/sporty_bikini_top_1/outline.webp:466,554,189,195 +characters/cho/poses/default/clothes/bra/sporty_bikini_top_1/skin.webp:499,566,149,184 characters/cho/poses/default/clothes/earrings/basic/0.webp:613,472,11,12 characters/cho/poses/default/clothes/earrings/basic/outline.webp:563,441,106,91 characters/cho/poses/default/clothes/earrings/feather/0.webp:616,481,15,61 @@ -593,10 +607,10 @@ characters/cho/poses/default/clothes/glasses/goggles/1.webp:481,340,134,59 characters/cho/poses/default/clothes/glasses/goggles/extra.webp:483,332,181,109 characters/cho/poses/default/clothes/glasses/goggles/outline.webp:479,331,186,116 characters/cho/poses/default/clothes/glasses/goggles/skin.webp:494,364,142,55 -characters/cho/poses/default/clothes/glasses/goggles_face/0.webp:719,339,108,36 -characters/cho/poses/default/clothes/glasses/goggles_face/1.webp:720,331,115,53 -characters/cho/poses/default/clothes/glasses/goggles_face/extra.webp:720,324,145,68 -characters/cho/poses/default/clothes/glasses/goggles_face/outline.webp:718,322,145,71 +characters/cho/poses/default/clothes/glasses/goggles_face/0.webp:378,178,56,18 +characters/cho/poses/default/clothes/glasses/goggles_face/1.webp:378,174,60,27 +characters/cho/poses/default/clothes/glasses/goggles_face/extra.webp:378,170,76,35 +characters/cho/poses/default/clothes/glasses/goggles_face/outline.webp:377,169,76,37 characters/cho/poses/default/clothes/glasses/goggles_face/skin.webp:494,364,142,55 characters/cho/poses/default/clothes/gloves/quidditch/0.webp:693,907,7,42 characters/cho/poses/default/clothes/gloves/quidditch/0_front.webp:693,907,7,42 @@ -608,9 +622,12 @@ characters/cho/poses/default/clothes/hair/pigtails/1.webp:436,310,280,245 characters/cho/poses/default/clothes/hair/pigtails/2.webp:472,364,210,42 characters/cho/poses/default/clothes/hair/pigtails/outline.webp:432,309,284,207 characters/cho/poses/default/clothes/hair/pigtails/skin.webp:492,369,92,53 -characters/cho/poses/default/clothes/hair/ponytail/0.webp:459,321,253,256 -characters/cho/poses/default/clothes/hair/ponytail/1.webp:489,347,217,228 -characters/cho/poses/default/clothes/hair/ponytail/outline.webp:458,321,255,256 +characters/cho/poses/default/clothes/hair/ponytail/0.webp:459,321,198,167 +characters/cho/poses/default/clothes/hair/ponytail/0_back.webp:614,336,98,241 +characters/cho/poses/default/clothes/hair/ponytail/1.webp:489,353,131,77 +characters/cho/poses/default/clothes/hair/ponytail/1_back.webp:627,347,79,228 +characters/cho/poses/default/clothes/hair/ponytail/outline.webp:458,321,200,168 +characters/cho/poses/default/clothes/hair/ponytail/outline_back.webp:614,336,99,241 characters/cho/poses/default/clothes/hair/ponytail/skin.webp:494,389,137,55 characters/cho/poses/default/clothes/hair/smurfette/0.webp:447,314,317,229 characters/cho/poses/default/clothes/hair/smurfette/0_back.webp:428,414,336,252 @@ -702,6 +719,11 @@ characters/cho/poses/default/clothes/panties/lace_panties_1/1.webp:465,848,205,1 characters/cho/poses/default/clothes/panties/lace_panties_1/2.webp:535,889,13,11 characters/cho/poses/default/clothes/panties/lace_panties_1/outline.webp:463,847,208,112 characters/cho/poses/default/clothes/panties/lace_panties_1/skin.webp:468,856,183,89 +characters/cho/poses/default/clothes/panties/sheer_panties_1/0.webp:500,875,93,84 +characters/cho/poses/default/clothes/panties/sheer_panties_1/outline.webp:479,841,177,120 +characters/cho/poses/default/clothes/panties/sheer_panties_2/0.webp:472,822,191,108 +characters/cho/poses/default/clothes/panties/sheer_panties_2/1.webp:477,834,179,124 +characters/cho/poses/default/clothes/panties/sheer_panties_2/outline.webp:469,819,198,140 characters/cho/poses/default/clothes/panties/sport_panties_1/0.webp:457,825,237,166 characters/cho/poses/default/clothes/panties/sport_panties_1/armfix.webp:653,843,72,246 characters/cho/poses/default/clothes/panties/sport_panties_1/extra.webp:458,850,180,135 @@ -711,6 +733,9 @@ characters/cho/poses/default/clothes/panties/sport_panties_2/0.webp:458,864,231, characters/cho/poses/default/clothes/panties/sport_panties_2/extra.webp:459,872,267,260 characters/cho/poses/default/clothes/panties/sport_panties_2/outline.webp:458,860,232,99 characters/cho/poses/default/clothes/panties/sport_panties_2/skin.webp:473,868,207,87 +characters/cho/poses/default/clothes/panties/sporty_bikini_bottom_1/0.webp:456,821,232,137 +characters/cho/poses/default/clothes/panties/sporty_bikini_bottom_1/outline.webp:455,821,233,139 +characters/cho/poses/default/clothes/panties/sporty_bikini_bottom_1/skin.webp:460,855,222,93 characters/cho/poses/default/clothes/piercing/breast_barbell/0.webp:474,656,137,6 characters/cho/poses/default/clothes/piercing/breast_barbell/outline.webp:472,655,141,9 characters/cho/poses/default/clothes/piercing/stud/0.webp:546,938,6,6 @@ -814,7 +839,7 @@ characters/cho/poses/default/clothes/stockings/toon_socks/skin.webp:505,1120,165 characters/cho/poses/default/clothes/tattoo/arrows_tattoo/0.webp:481,862,161,113 characters/cho/poses/default/clothes/tattoo/arrows_tattoo/outline.webp:480,860,164,117 characters/cho/poses/default/clothes/tattoo/barcode_tattoo/0.webp:552,594,30,20 -characters/cho/poses/default/clothes/tattoo/bitemark_tattoo/0.webp:0,0,1,1 +characters/cho/poses/default/clothes/tattoo/bitemark_tattoo/0.webp:0,0,1010,1010 characters/cho/poses/default/clothes/tattoo/bitemark_tattoo/outline.webp:567,625,69,70 characters/cho/poses/default/clothes/tattoo/breasts_slut/0.webp:570,668,62,28 characters/cho/poses/default/clothes/tattoo/chun_li_dragon/0.webp:656,571,65,459 @@ -838,11 +863,6 @@ characters/cho/poses/default/clothes/top/bunny_top_2/0.webp:468,648,170,281 characters/cho/poses/default/clothes/top/bunny_top_2/extra.webp:467,646,171,311 characters/cho/poses/default/clothes/top/bunny_top_2/outline.webp:465,646,175,312 characters/cho/poses/default/clothes/top/bunny_top_2/skin.webp:483,649,151,286 -characters/cho/poses/default/clothes/top/chun_li_dress/0.webp:465,534,247,590 -characters/cho/poses/default/clothes/top/chun_li_dress/1.webp:461,530,253,597 -characters/cho/poses/default/clothes/top/chun_li_dress/armfix.webp:653,843,72,246 -characters/cho/poses/default/clothes/top/chun_li_dress/extra.webp:492,572,172,512 -characters/cho/poses/default/clothes/top/chun_li_dress/outline.webp:458,527,261,602 characters/cho/poses/default/clothes/top/dress_1/0.webp:445,529,270,671 characters/cho/poses/default/clothes/top/dress_1/1.webp:461,531,250,186 characters/cho/poses/default/clothes/top/dress_1/armfix.webp:653,843,72,246 @@ -853,11 +873,18 @@ characters/cho/poses/default/clothes/top/dress_2/0.webp:457,525,244,466 characters/cho/poses/default/clothes/top/dress_2/1.webp:527,595,60,52 characters/cho/poses/default/clothes/top/dress_2/extra.webp:469,543,210,438 characters/cho/poses/default/clothes/top/dress_2/outline.webp:455,521,250,471 +characters/cho/poses/default/clothes/top/dress_club/0.webp:452,559,245,411 +characters/cho/poses/default/clothes/top/dress_club/armfix.webp:653,843,72,246 +characters/cho/poses/default/clothes/top/dress_club/outline.webp:449,558,250,414 characters/cho/poses/default/clothes/top/police/0.webp:468,539,265,226 characters/cho/poses/default/clothes/top/police/1.webp:546,639,18,117 characters/cho/poses/default/clothes/top/police/armfix.webp:653,843,72,246 characters/cho/poses/default/clothes/top/police/extra.webp:635,611,8,23 characters/cho/poses/default/clothes/top/police/outline.webp:467,538,267,228 +characters/cho/poses/default/clothes/top/sheer_nightie_1/0.webp:466,597,189,250 +characters/cho/poses/default/clothes/top/sheer_nightie_1/1.webp:492,604,54,44 +characters/cho/poses/default/clothes/top/sheer_nightie_1/outline.webp:464,550,192,300 +characters/cho/poses/default/clothes/top/sheer_nightie_1/skin.webp:492,607,54,43 characters/cho/poses/default/clothes/top/smurfette/0.webp:419,559,316,519 characters/cho/poses/default/clothes/top/smurfette/1.webp:442,899,267,106 characters/cho/poses/default/clothes/top/smurfette/armfix.webp:653,843,72,246 @@ -867,6 +894,14 @@ characters/cho/poses/default/clothes/top/toon_shirt/0.webp:467,563,190,213 characters/cho/poses/default/clothes/top/toon_shirt/extra.webp:510,637,68,63 characters/cho/poses/default/clothes/top/toon_shirt/outline.webp:466,560,194,219 characters/cho/poses/default/clothes/top/toon_shirt/skin.webp:504,563,159,218 +characters/cho/poses/default/clothes/top/top_chun_li/0.webp:468,534,196,193 +characters/cho/poses/default/clothes/top/top_chun_li/1.webp:472,530,195,171 +characters/cho/poses/default/clothes/top/top_chun_li/extra.webp:503,572,161,128 +characters/cho/poses/default/clothes/top/top_chun_li/outline.webp:467,527,204,231 +characters/cho/poses/default/clothes/top/top_hoodie_1/0.webp:459,537,275,333 +characters/cho/poses/default/clothes/top/top_hoodie_1/1.webp:507,591,104,150 +characters/cho/poses/default/clothes/top/top_hoodie_1/outline.webp:457,535,279,337 +characters/cho/poses/default/clothes/top/top_hoodie_1/skin.webp:480,577,238,296 characters/cho/poses/default/clothes/top/top_j_school_1/0.webp:436,576,286,361 characters/cho/poses/default/clothes/top/top_j_school_1/0_back.webp:650,866,39,41 characters/cho/poses/default/clothes/top/top_j_school_1/1.webp:519,637,60,78 @@ -952,6 +987,9 @@ characters/cho/poses/default/clothes/top/top_virgin_killer/0.webp:467,559,255,39 characters/cho/poses/default/clothes/top/top_virgin_killer/1.webp:462,816,217,87 characters/cho/poses/default/clothes/top/top_virgin_killer/outline.webp:460,556,264,404 characters/cho/poses/default/clothes/top/top_virgin_killer/skin.webp:469,575,240,272 +characters/cho/poses/default/clothes/top/top_woolly_sweater_1/0.webp:462,552,282,362 +characters/cho/poses/default/clothes/top/top_woolly_sweater_1/outline.webp:460,552,286,362 +characters/cho/poses/default/clothes/top/top_woolly_sweater_1/skin.webp:477,862,236,57 characters/cho/poses/default/cum/body/heavy/cum.webp:509,438,134,417 characters/cho/poses/default/cum/body/heavy/skin.webp:514,472,114,384 characters/cho/poses/default/cum/body/light/cum.webp:509,552,119,271 @@ -1039,6 +1077,117 @@ characters/cho/poses/default/face/tears/tears_1.webp:524,374,94,26 characters/cho/poses/default/face/tears/tears_2.webp:514,374,122,54 characters/cho/poses/default/face/tears/tears_3.webp:524,376,116,112 characters/cho/poses/default/face/tears/tears_4.webp:524,380,110,94 +characters/cho/poses/wand/bodyparts/frame/default/skin.webp:148,331,577,869 +characters/cho/poses/wand/chibi/stand/bodyparts/frame/default/skin.webp:190,123,225,648 +characters/cho/poses/wand/chibi/stand/clothes/bottom/default/overlay.webp:388,804,237,304 +characters/cho/poses/wand/chibi/stand/clothes/bottom/school_skirt_1/0.webp:388,804,237,304 +characters/cho/poses/wand/chibi/stand/clothes/bra/basic_bra_1/0.webp:435,577,185,181 +characters/cho/poses/wand/chibi/stand/clothes/bra/default/overlay.webp:435,577,185,181 +characters/cho/poses/wand/chibi/stand/clothes/footwear/default/overlay.webp:414,1111,176,188 +characters/cho/poses/wand/chibi/stand/clothes/panties/basic_panties_1/0.webp:449,824,146,109 +characters/cho/poses/wand/chibi/stand/clothes/panties/default/overlay.webp:449,824,146,109 +characters/cho/poses/wand/chibi/stand/clothes/robe/robe_school_1/0.webp:296,550,353,634 +characters/cho/poses/wand/chibi/stand/clothes/robe/robe_school_1/0_back.webp:321,499,486,570 +characters/cho/poses/wand/chibi/stand/clothes/stockings/house/outline.webp:417,940,186,356 +characters/cho/poses/wand/chibi/stand/clothes/top/default/overlay.webp:368,547,257,331 +characters/cho/poses/wand/chibi/stand/clothes/top/top_school_1/outline.webp:368,547,257,331 +characters/cho/poses/wand/chibi/walk/bodyparts/frame/default/skin.webp:185,123,2025,1449 +characters/cho/poses/wand/clothes/hair/pigtails/0.webp:436,310,280,198 +characters/cho/poses/wand/clothes/hair/pigtails/1.webp:436,310,280,245 +characters/cho/poses/wand/clothes/hair/pigtails/2.webp:472,364,210,42 +characters/cho/poses/wand/clothes/hair/pigtails/outline.webp:432,309,284,207 +characters/cho/poses/wand/clothes/hair/pigtails/skin.webp:492,369,92,53 +characters/cho/poses/wand/clothes/hair/ponytail/0.webp:459,321,198,167 +characters/cho/poses/wand/clothes/hair/ponytail/0_back.webp:614,336,98,241 +characters/cho/poses/wand/clothes/hair/ponytail/1.webp:489,353,131,77 +characters/cho/poses/wand/clothes/hair/ponytail/1_back.webp:627,347,79,228 +characters/cho/poses/wand/clothes/hair/ponytail/outline.webp:458,321,200,168 +characters/cho/poses/wand/clothes/hair/ponytail/outline_back.webp:614,336,99,241 +characters/cho/poses/wand/clothes/hair/ponytail/skin.webp:494,389,137,55 +characters/cho/poses/wand/clothes/hair/smurfette/0.webp:447,314,317,229 +characters/cho/poses/wand/clothes/hair/smurfette/0_back.webp:428,414,336,252 +characters/cho/poses/wand/clothes/hair/smurfette/1.webp:442,325,315,218 +characters/cho/poses/wand/clothes/hair/smurfette/1_back.webp:430,337,327,280 +characters/cho/poses/wand/clothes/hair/smurfette/outline.webp:425,313,340,355 +characters/cho/poses/wand/clothes/hair/smurfette/outline_back.webp:425,345,339,322 +characters/cho/poses/wand/clothes/hair/smurfette/skin.webp:496,406,116,21 +characters/cho/poses/wand/clothes/pubes/arrow/0.webp:529,893,30,41 +characters/cho/poses/wand/clothes/pubes/arrow/outline.webp:529,895,30,37 +characters/cho/poses/wand/clothes/pubes/beaver/0.webp:524,887,48,71 +characters/cho/poses/wand/clothes/pubes/beaver/outline.webp:526,891,45,75 +characters/cho/poses/wand/clothes/pubes/heart/0.webp:537,906,17,18 +characters/cho/poses/wand/clothes/pubes/heart/1.webp:537,906,17,17 +characters/cho/poses/wand/clothes/pubes/heart/extra.webp:538,907,14,15 +characters/cho/poses/wand/clothes/pubes/heart/outline.webp:535,902,21,25 +characters/cho/poses/wand/clothes/pubes/stuble/0.webp:524,909,49,32 +characters/cho/poses/wand/clothes/pubes/thick/0.webp:518,907,59,49 +characters/cho/poses/wand/clothes/pubes/thick/1.webp:518,907,59,48 +characters/cho/poses/wand/clothes/pubes/thick/extra.webp:520,908,55,48 +characters/cho/poses/wand/clothes/pubes/thick/outline.webp:516,905,65,54 +characters/cho/poses/wand/clothes/pubes/unshaved/0.webp:526,909,42,47 +characters/cho/poses/wand/emote/angry.webp:576,379,45,43 +characters/cho/poses/wand/emote/confused.webp:419,248,129,101 +characters/cho/poses/wand/emote/happy.webp:420,229,123,146 +characters/cho/poses/wand/emote/hearts.webp:377,219,175,146 +characters/cho/poses/wand/emote/shocked.webp:407,222,136,128 +characters/cho/poses/wand/emote/sweat.webp:572,360,42,67 +characters/cho/poses/wand/face/cheeks/blush/expression.webp:499,441,108,49 +characters/cho/poses/wand/face/cheeks/heavy_blush/expression.webp:499,441,108,49 +characters/cho/poses/wand/face/eyebrows/angry/expression.webp:493,415,103,18 +characters/cho/poses/wand/face/eyebrows/angry/skin.webp:496,416,110,27 +characters/cho/poses/wand/face/eyebrows/base/expression.webp:492,415,110,14 +characters/cho/poses/wand/face/eyebrows/base/skin.webp:496,418,102,25 +characters/cho/poses/wand/face/eyebrows/raised/expression.webp:485,402,113,28 +characters/cho/poses/wand/face/eyebrows/raised/skin.webp:496,418,102,25 +characters/cho/poses/wand/face/eyebrows/worried/expression.webp:492,414,109,17 +characters/cho/poses/wand/face/eyebrows/worried/skin.webp:496,416,101,27 +characters/cho/poses/wand/face/eyes/base/expression.webp:498,424,99,25 +characters/cho/poses/wand/face/eyes/base/eyemask.webp:504,428,85,19 +characters/cho/poses/wand/face/eyes/base/skin.webp:498,436,99,14 +characters/cho/poses/wand/face/eyes/closed/expression.webp:496,425,101,25 +characters/cho/poses/wand/face/eyes/closed/skin.webp:498,436,99,14 +characters/cho/poses/wand/face/eyes/happyCl/expression.webp:497,426,102,20 +characters/cho/poses/wand/face/eyes/happyCl/skin.webp:498,436,99,11 +characters/cho/poses/wand/face/eyes/narrow/expression.webp:498,424,99,25 +characters/cho/poses/wand/face/eyes/narrow/eyemask.webp:504,431,85,16 +characters/cho/poses/wand/face/eyes/narrow/skin.webp:498,436,99,14 +characters/cho/poses/wand/face/eyes/wide/expression.webp:496,420,102,30 +characters/cho/poses/wand/face/eyes/wide/eyemask.webp:502,424,89,24 +characters/cho/poses/wand/face/eyes/wide/skin.webp:498,436,99,14 +characters/cho/poses/wand/face/eyes/wink/expression.webp:497,424,100,25 +characters/cho/poses/wand/face/eyes/wink/eyemask.webp:558,428,31,18 +characters/cho/poses/wand/face/eyes/wink/skin.webp:498,436,99,14 +characters/cho/poses/wand/face/mouth/angry/expression.webp:527,482,48,25 +characters/cho/poses/wand/face/mouth/annoyed/expression.webp:523,484,30,21 +characters/cho/poses/wand/face/mouth/base/expression.webp:526,487,41,15 +characters/cho/poses/wand/face/mouth/clench/expression.webp:526,479,51,28 +characters/cho/poses/wand/face/mouth/crooked_smile/expression.webp:524,481,50,30 +characters/cho/poses/wand/face/mouth/disgust/expression.webp:525,489,48,21 +characters/cho/poses/wand/face/mouth/grin/expression.webp:522,481,52,32 +characters/cho/poses/wand/face/mouth/horny/expression.webp:527,487,43,15 +characters/cho/poses/wand/face/mouth/mad/expression.webp:528,487,43,23 +characters/cho/poses/wand/face/mouth/normal/expression.webp:526,487,34,15 +characters/cho/poses/wand/face/mouth/open/expression.webp:531,485,30,29 +characters/cho/poses/wand/face/mouth/open_tongue/expression.webp:531,485,30,29 +characters/cho/poses/wand/face/mouth/open_wide_tongue/expression.webp:506,482,93,60 +characters/cho/poses/wand/face/mouth/quiver/expression.webp:525,487,41,17 +characters/cho/poses/wand/face/mouth/scream/expression.webp:506,482,93,53 +characters/cho/poses/wand/face/mouth/silly/expression.webp:525,485,41,28 +characters/cho/poses/wand/face/mouth/smile/expression.webp:526,486,42,20 +characters/cho/poses/wand/face/mouth/soft/expression.webp:529,486,31,22 +characters/cho/poses/wand/face/mouth/upset/expression.webp:528,489,31,17 +characters/cho/poses/wand/face/pupils/L/expression.webp:505,428,71,18 +characters/cho/poses/wand/face/pupils/R/expression.webp:515,428,73,18 +characters/cho/poses/wand/face/pupils/ahegao/expression.webp:513,421,62,18 +characters/cho/poses/wand/face/pupils/down/expression.webp:511,435,68,18 +characters/cho/poses/wand/face/pupils/downR/expression.webp:513,433,74,18 +characters/cho/poses/wand/face/pupils/mid/expression.webp:512,428,70,17 +characters/cho/poses/wand/face/pupils/stare/expression.webp:506,426,75,21 +characters/cho/poses/wand/face/pupils/up/expression.webp:509,424,70,17 +characters/cho/poses/wand/face/tears/tears_1.webp:524,374,94,26 +characters/cho/poses/wand/face/tears/tears_2.webp:514,374,122,54 +characters/cho/poses/wand/face/tears/tears_3.webp:524,376,116,112 +characters/cho/poses/wand/face/tears/tears_4.webp:524,380,110,94 characters/emotes/01.webp:614,227,125,126 characters/emotes/02.webp:323,87,164,208 characters/emotes/03.webp:289,209,174,144 @@ -2135,26 +2284,26 @@ characters/hermione/poses/default/clothes/bottom/school_skirt_1/mask.webp:0,0,10 characters/hermione/poses/default/clothes/bottom/school_skirt_1/outline.webp:445,766,264,398 characters/hermione/poses/default/clothes/bottom/school_skirt_2/0.webp:441,767,264,262 characters/hermione/poses/default/clothes/bottom/school_skirt_2/1.webp:582,798,12,24 -characters/hermione/poses/default/clothes/bottom/school_skirt_2/lift_skirt/0.webp:782,1416,640,475 -characters/hermione/poses/default/clothes/bottom/school_skirt_2/lift_skirt/1.webp:1158,1585,22,48 -characters/hermione/poses/default/clothes/bottom/school_skirt_2/lift_skirt/outline.webp:777,1416,651,479 -characters/hermione/poses/default/clothes/bottom/school_skirt_2/lift_skirt/skin.webp:913,1617,452,267 +characters/hermione/poses/default/clothes/bottom/school_skirt_2/lift_skirt/0.webp:391,708,320,237 +characters/hermione/poses/default/clothes/bottom/school_skirt_2/lift_skirt/1.webp:579,792,11,24 +characters/hermione/poses/default/clothes/bottom/school_skirt_2/lift_skirt/outline.webp:388,708,325,239 +characters/hermione/poses/default/clothes/bottom/school_skirt_2/lift_skirt/skin.webp:456,808,226,133 characters/hermione/poses/default/clothes/bottom/school_skirt_2/mask.webp:0,0,1010,1200 characters/hermione/poses/default/clothes/bottom/school_skirt_2/outline.webp:439,766,268,264 characters/hermione/poses/default/clothes/bottom/school_skirt_3/0.webp:446,767,251,199 characters/hermione/poses/default/clothes/bottom/school_skirt_3/1.webp:582,798,12,24 -characters/hermione/poses/default/clothes/bottom/school_skirt_3/lift_skirt/0.webp:782,1416,640,475 -characters/hermione/poses/default/clothes/bottom/school_skirt_3/lift_skirt/1.webp:1158,1585,22,48 -characters/hermione/poses/default/clothes/bottom/school_skirt_3/lift_skirt/outline.webp:777,1416,651,479 -characters/hermione/poses/default/clothes/bottom/school_skirt_3/lift_skirt/skin.webp:913,1617,452,267 +characters/hermione/poses/default/clothes/bottom/school_skirt_3/lift_skirt/0.webp:391,708,320,237 +characters/hermione/poses/default/clothes/bottom/school_skirt_3/lift_skirt/1.webp:579,792,11,24 +characters/hermione/poses/default/clothes/bottom/school_skirt_3/lift_skirt/outline.webp:388,708,325,239 +characters/hermione/poses/default/clothes/bottom/school_skirt_3/lift_skirt/skin.webp:456,808,226,133 characters/hermione/poses/default/clothes/bottom/school_skirt_3/mask.webp:0,0,1010,1200 characters/hermione/poses/default/clothes/bottom/school_skirt_3/outline.webp:444,766,255,190 characters/hermione/poses/default/clothes/bottom/school_skirt_4/0.webp:453,767,236,199 characters/hermione/poses/default/clothes/bottom/school_skirt_4/1.webp:582,798,12,24 -characters/hermione/poses/default/clothes/bottom/school_skirt_4/lift_skirt/0.webp:782,1416,640,475 -characters/hermione/poses/default/clothes/bottom/school_skirt_4/lift_skirt/1.webp:1158,1585,22,48 -characters/hermione/poses/default/clothes/bottom/school_skirt_4/lift_skirt/outline.webp:777,1416,651,479 -characters/hermione/poses/default/clothes/bottom/school_skirt_4/lift_skirt/skin.webp:913,1617,452,267 +characters/hermione/poses/default/clothes/bottom/school_skirt_4/lift_skirt/0.webp:391,708,320,237 +characters/hermione/poses/default/clothes/bottom/school_skirt_4/lift_skirt/1.webp:579,792,11,24 +characters/hermione/poses/default/clothes/bottom/school_skirt_4/lift_skirt/outline.webp:388,708,325,239 +characters/hermione/poses/default/clothes/bottom/school_skirt_4/lift_skirt/skin.webp:456,808,226,133 characters/hermione/poses/default/clothes/bottom/school_skirt_4/mask.webp:0,0,1010,1200 characters/hermione/poses/default/clothes/bottom/school_skirt_4/outline.webp:450,766,240,160 characters/hermione/poses/default/clothes/bottom/tifa_skirt/0.webp:452,826,240,127 @@ -3528,21 +3677,29 @@ characters/luna/chibis/walk/walk_topless_03.webp:12,2,188,342 characters/luna/chibis/walk/walk_topless_04.webp:20,2,180,342 characters/luna/chibis/walk/walk_topless_05.webp:20,2,180,340 characters/luna/chibis/walk/walk_topless_06.webp:20,2,180,342 -characters/luna/poses/default/bodyparts/frame/default/skin.webp:292,290,605,910 +characters/luna/poses/default/bodyparts/frame/default/skin.webp:292,289,605,911 characters/luna/poses/default/clothes/accessory/bracelets/0.webp:373,611,38,57 characters/luna/poses/default/clothes/accessory/bracelets/1.webp:381,648,43,31 characters/luna/poses/default/clothes/accessory/bracelets/2.webp:374,636,38,58 characters/luna/poses/default/clothes/accessory/bracelets/outline.webp:373,610,51,85 characters/luna/poses/default/clothes/accessory/bracelets/skin.webp:385,647,37,48 -characters/luna/poses/default/clothes/accessory/hair_bug/0.webp:0,0,1,1 +characters/luna/poses/default/clothes/accessory/hair_bug/0.webp:0,0,1010,1010 characters/luna/poses/default/clothes/accessory/hair_bug/outline.webp:688,352,80,77 characters/luna/poses/default/clothes/accessory/harley_quinn_strap/0.webp:538,969,127,107 characters/luna/poses/default/clothes/accessory/harley_quinn_strap/outline.webp:536,968,129,108 +characters/luna/poses/default/clothes/accessory/leash/0.webp:316,482,344,189 +characters/luna/poses/default/clothes/accessory/leash/extra.webp:581,490,28,12 +characters/luna/poses/default/clothes/accessory/leash/outline.webp:314,480,349,194 +characters/luna/poses/default/clothes/accessory/leash/skin.webp:317,481,342,190 characters/luna/poses/default/clothes/accessory/lionhead/outline_back.webp:448,140,389,681 characters/luna/poses/default/clothes/accessory/lionhead/outline_zorder_252.webp:324,220,474,975 characters/luna/poses/default/clothes/accessory/mistletoe/0.webp:515,862,44,37 characters/luna/poses/default/clothes/accessory/mistletoe/extra.webp:515,874,42,38 characters/luna/poses/default/clothes/accessory/mistletoe/outline.webp:514,861,46,53 +characters/luna/poses/default/clothes/accessory/onepiece_harness/0.webp:492,476,175,453 +characters/luna/poses/default/clothes/accessory/onepiece_harness/1.webp:492,497,133,354 +characters/luna/poses/default/clothes/accessory/onepiece_harness/outline.webp:491,474,178,463 +characters/luna/poses/default/clothes/accessory/onepiece_harness/skin.webp:491,479,171,455 characters/luna/poses/default/clothes/accessory/pin_radish/0.webp:588,606,38,34 characters/luna/poses/default/clothes/accessory/pin_radish/1.webp:594,606,32,23 characters/luna/poses/default/clothes/accessory/pin_radish/extra.webp:591,622,23,15 @@ -3557,13 +3714,13 @@ characters/luna/poses/default/clothes/accessory/police_belt/skin.webp:446,780,20 characters/luna/poses/default/clothes/accessory/police_cuffs/0.webp:445,780,69,101 characters/luna/poses/default/clothes/accessory/police_cuffs/outline.webp:443,779,72,103 characters/luna/poses/default/clothes/accessory/police_cuffs/skin.webp:454,781,65,103 -characters/luna/poses/default/clothes/accessory/wand_breasts/0.webp:0,0,1,1 +characters/luna/poses/default/clothes/accessory/wand_breasts/0.webp:0,0,1010,1010 characters/luna/poses/default/clothes/accessory/wand_breasts/outline.webp:528,495,74,279 -characters/luna/poses/default/clothes/accessory/wand_hand/0.webp:0,0,1,1 +characters/luna/poses/default/clothes/accessory/wand_hand/0.webp:0,0,1010,1010 characters/luna/poses/default/clothes/accessory/wand_hand/outline.webp:716,580,212,128 -characters/luna/poses/default/clothes/accessory/wand_mouth/0.webp:0,0,1,1 +characters/luna/poses/default/clothes/accessory/wand_mouth/0.webp:0,0,1010,1010 characters/luna/poses/default/clothes/accessory/wand_mouth/outline.webp:482,426,235,54 -characters/luna/poses/default/clothes/accessory/wand_pussy/0.webp:0,0,1,1 +characters/luna/poses/default/clothes/accessory/wand_pussy/0.webp:0,0,1010,1010 characters/luna/poses/default/clothes/accessory/wand_pussy/outline.webp:497,911,236,51 characters/luna/poses/default/clothes/bottom/casual_jeans/0.webp:449,798,256,402 characters/luna/poses/default/clothes/bottom/casual_jeans/outline.webp:447,795,258,405 @@ -3590,33 +3747,52 @@ characters/luna/poses/default/clothes/bottom/school_skirt_1/mask.webp:0,0,1010,1 characters/luna/poses/default/clothes/bottom/school_skirt_1/outline.webp:440,764,281,398 characters/luna/poses/default/clothes/bottom/school_skirt_2/0.webp:436,764,280,262 characters/luna/poses/default/clothes/bottom/school_skirt_2/1.webp:583,794,13,25 -characters/luna/poses/default/clothes/bottom/school_skirt_2/lift_skirt/0.webp:782,1416,640,475 -characters/luna/poses/default/clothes/bottom/school_skirt_2/lift_skirt/1.webp:1158,1585,22,48 -characters/luna/poses/default/clothes/bottom/school_skirt_2/lift_skirt/outline.webp:777,1416,651,479 -characters/luna/poses/default/clothes/bottom/school_skirt_2/lift_skirt/skin.webp:913,1617,452,267 +characters/luna/poses/default/clothes/bottom/school_skirt_2/lift_skirt/0.webp:391,708,320,237 +characters/luna/poses/default/clothes/bottom/school_skirt_2/lift_skirt/1.webp:579,792,11,24 +characters/luna/poses/default/clothes/bottom/school_skirt_2/lift_skirt/outline.webp:388,708,325,239 +characters/luna/poses/default/clothes/bottom/school_skirt_2/lift_skirt/skin.webp:456,808,226,133 characters/luna/poses/default/clothes/bottom/school_skirt_2/mask.webp:0,0,1010,1200 characters/luna/poses/default/clothes/bottom/school_skirt_2/outline.webp:434,764,284,264 characters/luna/poses/default/clothes/bottom/school_skirt_3/0.webp:441,764,266,188 characters/luna/poses/default/clothes/bottom/school_skirt_3/1.webp:583,794,13,25 -characters/luna/poses/default/clothes/bottom/school_skirt_3/lift_skirt/0.webp:782,1416,640,475 -characters/luna/poses/default/clothes/bottom/school_skirt_3/lift_skirt/1.webp:1158,1585,22,48 -characters/luna/poses/default/clothes/bottom/school_skirt_3/lift_skirt/outline.webp:777,1416,651,479 -characters/luna/poses/default/clothes/bottom/school_skirt_3/lift_skirt/skin.webp:913,1617,452,267 +characters/luna/poses/default/clothes/bottom/school_skirt_3/lift_skirt/0.webp:391,708,320,237 +characters/luna/poses/default/clothes/bottom/school_skirt_3/lift_skirt/1.webp:579,792,11,24 +characters/luna/poses/default/clothes/bottom/school_skirt_3/lift_skirt/outline.webp:388,708,325,239 +characters/luna/poses/default/clothes/bottom/school_skirt_3/lift_skirt/skin.webp:456,808,226,133 characters/luna/poses/default/clothes/bottom/school_skirt_3/mask.webp:0,0,1010,1200 characters/luna/poses/default/clothes/bottom/school_skirt_3/outline.webp:438,764,270,189 characters/luna/poses/default/clothes/bottom/school_skirt_4/0.webp:447,764,251,168 characters/luna/poses/default/clothes/bottom/school_skirt_4/1.webp:583,794,13,25 -characters/luna/poses/default/clothes/bottom/school_skirt_4/lift_skirt/0.webp:782,1416,640,475 -characters/luna/poses/default/clothes/bottom/school_skirt_4/lift_skirt/1.webp:1158,1585,22,48 -characters/luna/poses/default/clothes/bottom/school_skirt_4/lift_skirt/outline.webp:777,1416,651,479 -characters/luna/poses/default/clothes/bottom/school_skirt_4/lift_skirt/skin.webp:913,1617,452,267 +characters/luna/poses/default/clothes/bottom/school_skirt_4/lift_skirt/0.webp:391,708,320,237 +characters/luna/poses/default/clothes/bottom/school_skirt_4/lift_skirt/1.webp:579,792,11,24 +characters/luna/poses/default/clothes/bottom/school_skirt_4/lift_skirt/outline.webp:388,708,325,239 +characters/luna/poses/default/clothes/bottom/school_skirt_4/lift_skirt/skin.webp:456,808,226,133 characters/luna/poses/default/clothes/bottom/school_skirt_4/mask.webp:0,0,1010,1200 characters/luna/poses/default/clothes/bottom/school_skirt_4/outline.webp:445,764,255,159 +characters/luna/poses/default/clothes/bottom/shorts/0.webp:447,798,255,164 +characters/luna/poses/default/clothes/bottom/shorts/1.webp:471,822,229,112 +characters/luna/poses/default/clothes/bottom/shorts/2.webp:447,782,256,180 +characters/luna/poses/default/clothes/bottom/shorts/outline.webp:446,781,258,184 +characters/luna/poses/default/clothes/bottom/shorts/skin.webp:455,777,234,195 +characters/luna/poses/default/clothes/bottom/shorts_latex/0.webp:453,784,248,416 +characters/luna/poses/default/clothes/bottom/shorts_latex/1.webp:453,786,220,409 +characters/luna/poses/default/clothes/bottom/shorts_latex/extra.webp:453,786,193,336 +characters/luna/poses/default/clothes/bottom/shorts_latex/outline.webp:450,781,253,419 +characters/luna/poses/default/clothes/bottom/skirt_plaid/0.webp:443,802,270,123 +characters/luna/poses/default/clothes/bottom/skirt_plaid/1.webp:447,803,262,133 +characters/luna/poses/default/clothes/bottom/skirt_plaid/2.webp:483,779,170,44 +characters/luna/poses/default/clothes/bottom/skirt_plaid/3.webp:538,803,12,13 +characters/luna/poses/default/clothes/bottom/skirt_plaid/outline.webp:440,776,275,151 +characters/luna/poses/default/clothes/bottom/skirt_plaid/skin.webp:449,766,270,170 characters/luna/poses/default/clothes/bottom/summer_shorts/0.webp:448,829,255,127 characters/luna/poses/default/clothes/bottom/summer_shorts/1.webp:448,914,255,42 characters/luna/poses/default/clothes/bottom/summer_shorts/2.webp:532,865,13,11 characters/luna/poses/default/clothes/bottom/summer_shorts/outline.webp:447,827,257,131 characters/luna/poses/default/clothes/bottom/summer_shorts/skin.webp:456,832,234,126 +characters/luna/poses/default/clothes/bottom/trousers_latex/0.webp:453,784,248,416 +characters/luna/poses/default/clothes/bottom/trousers_latex/1.webp:453,786,209,414 +characters/luna/poses/default/clothes/bottom/trousers_latex/extra.webp:453,786,193,395 +characters/luna/poses/default/clothes/bottom/trousers_latex/outline.webp:450,781,253,419 characters/luna/poses/default/clothes/bra/basic_bra_1/0.webp:450,509,225,203 characters/luna/poses/default/clothes/bra/basic_bra_1/1.webp:465,603,177,87 characters/luna/poses/default/clothes/bra/basic_bra_1/2.webp:519,664,38,35 @@ -3639,14 +3815,25 @@ characters/luna/poses/default/clothes/bra/lace_bra_1/skin.webp:461,612,202,101 characters/luna/poses/default/clothes/earrings/bauble_earring/0.webp:632,429,45,45 characters/luna/poses/default/clothes/earrings/bauble_earring/extra.webp:632,424,46,50 characters/luna/poses/default/clothes/earrings/bauble_earring/outline.webp:631,412,47,63 +characters/luna/poses/default/clothes/earrings/ear_studs/0.webp:667,376,6,13 +characters/luna/poses/default/clothes/earrings/ear_studs/extra.webp:667,376,5,12 +characters/luna/poses/default/clothes/earrings/ear_studs/outline.webp:666,375,8,15 +characters/luna/poses/default/clothes/earrings/earring_moon/0.webp:647,434,14,18 +characters/luna/poses/default/clothes/earrings/earring_moon/1.webp:647,436,15,21 +characters/luna/poses/default/clothes/earrings/earring_moon/2.webp:652,412,4,23 +characters/luna/poses/default/clothes/earrings/earring_moon/extra.webp:647,433,10,18 +characters/luna/poses/default/clothes/earrings/earring_moon/outline.webp:646,411,17,47 characters/luna/poses/default/clothes/glasses/spectrespecs/0.webp:493,345,153,66 characters/luna/poses/default/clothes/glasses/spectrespecs/1.webp:493,348,152,62 characters/luna/poses/default/clothes/glasses/spectrespecs/extra.webp:507,347,125,40 characters/luna/poses/default/clothes/glasses/spectrespecs/outline.webp:492,344,155,68 -characters/luna/poses/default/clothes/glasses/sunglasses_2/0.webp:500,359,129,50 -characters/luna/poses/default/clothes/glasses/sunglasses_2/1.webp:507,362,116,44 -characters/luna/poses/default/clothes/glasses/sunglasses_2/extra.webp:499,359,124,44 -characters/luna/poses/default/clothes/glasses/sunglasses_2/outline.webp:499,358,130,52 +characters/luna/poses/default/clothes/glasses/sunglasses_2/0_back.webp:511,371,9,8 +characters/luna/poses/default/clothes/glasses/sunglasses_2/0_zorder_150.webp:511,355,118,50 +characters/luna/poses/default/clothes/glasses/sunglasses_2/1_zorder_150.webp:508,351,172,58 +characters/luna/poses/default/clothes/glasses/sunglasses_2/extra_zorder_150.webp:508,351,144,54 +characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_back.webp:509,368,12,12 +characters/luna/poses/default/clothes/glasses/sunglasses_2/outline_zorder_150.webp:507,351,174,59 +characters/luna/poses/default/clothes/glasses/sunglasses_2/skin.webp:518,354,120,57 characters/luna/poses/default/clothes/gloves/harley_quinn/0.webp:292,582,597,81 characters/luna/poses/default/clothes/gloves/harley_quinn/extra.webp:293,583,553,53 characters/luna/poses/default/clothes/gloves/harley_quinn/outline.webp:292,581,599,82 @@ -3685,9 +3872,20 @@ characters/luna/poses/default/clothes/headgear/bunny_hat_1/default/1.webp:458,12 characters/luna/poses/default/clothes/headgear/bunny_hat_1/default/outline.webp:456,142,313,160 characters/luna/poses/default/clothes/headgear/flight_attendant/default/0.webp:565,225,127,74 characters/luna/poses/default/clothes/headgear/flight_attendant/default/outline.webp:564,224,130,76 -characters/luna/poses/default/clothes/neckwear/chocolate_frog/0.webp:0,0,1,1 +characters/luna/poses/default/clothes/makeup/nail_polish/0.webp:326,583,551,40 +characters/luna/poses/default/clothes/makeup/nail_polish/extra.webp:327,583,550,38 +characters/luna/poses/default/clothes/neckwear/chocolate_frog/0.webp:0,0,1010,1010 characters/luna/poses/default/clothes/neckwear/chocolate_frog/outline.webp:553,484,106,100 characters/luna/poses/default/clothes/neckwear/chocolate_frog/skin.webp:557,496,100,90 +characters/luna/poses/default/clothes/neckwear/choker_1/0.webp:585,475,68,24 +characters/luna/poses/default/clothes/neckwear/choker_1/outline.webp:523,474,132,71 +characters/luna/poses/default/clothes/neckwear/collar/0.webp:579,476,88,38 +characters/luna/poses/default/clothes/neckwear/collar/1.webp:612,497,13,5 +characters/luna/poses/default/clothes/neckwear/collar/outline.webp:577,474,92,42 +characters/luna/poses/default/clothes/neckwear/collar_1/0.webp:584,482,76,27 +characters/luna/poses/default/clothes/neckwear/collar_1/extra.webp:581,490,28,12 +characters/luna/poses/default/clothes/neckwear/collar_1/outline.webp:578,480,85,30 +characters/luna/poses/default/clothes/neckwear/collar_1/skin.webp:589,481,70,32 characters/luna/poses/default/clothes/neckwear/cork/0.webp:554,574,30,37 characters/luna/poses/default/clothes/neckwear/cork/1.webp:567,497,96,79 characters/luna/poses/default/clothes/neckwear/cork/outline.webp:552,494,113,119 @@ -3727,12 +3925,114 @@ characters/luna/poses/default/clothes/panties/lace_panties_2/0.webp:469,825,210, characters/luna/poses/default/clothes/panties/lace_panties_2/1.webp:508,871,91,62 characters/luna/poses/default/clothes/panties/lace_panties_2/2.webp:493,862,113,25 characters/luna/poses/default/clothes/panties/lace_panties_2/outline.webp:468,823,212,114 +characters/luna/poses/default/clothes/panties/panties_cumslut/0.webp:490,772,165,139 +characters/luna/poses/default/clothes/panties/panties_cumslut/1.webp:501,753,130,35 +characters/luna/poses/default/clothes/panties/panties_cumslut/extra.webp:510,827,72,56 +characters/luna/poses/default/clothes/panties/panties_cumslut/outline.webp:487,750,173,186 +characters/luna/poses/default/clothes/panties/panties_cumslut/skin.webp:521,820,126,104 +characters/luna/poses/default/clothes/piercing/clit_stud/0.webp:546,923,5,5 +characters/luna/poses/default/clothes/piercing/clit_stud/extra.webp:547,923,3,4 +characters/luna/poses/default/clothes/piercing/clit_stud/outline.webp:546,922,7,7 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/0.webp:605,350,13,13 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/extra.webp:608,350,6,4 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/angry/outline.webp:605,349,13,14 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/0.webp:605,347,13,13 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/extra.webp:607,348,7,3 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/annoyed/outline.webp:605,346,13,14 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/0.webp:605,348,12,13 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/extra.webp:607,348,7,4 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/base/outline.webp:604,347,14,14 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/0.webp:604,355,13,13 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/extra.webp:606,355,8,5 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/low/outline.webp:604,354,13,14 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/0.webp:605,341,13,14 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/extra.webp:608,342,7,4 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/raised/outline.webp:605,340,13,15 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/0.webp:604,360,13,13 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/extra.webp:607,360,6,4 +characters/luna/poses/default/clothes/piercing/eyebrow_ring/worried/outline.webp:604,359,13,14 +characters/luna/poses/default/clothes/piercing/mouth_stud/angry/0.webp:562,457,7,6 +characters/luna/poses/default/clothes/piercing/mouth_stud/angry/extra.webp:562,457,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/angry/outline.webp:561,456,8,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/0.webp:547,449,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/extra.webp:548,450,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/annoyed/outline.webp:546,448,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/base/0.webp:557,453,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/base/extra.webp:558,454,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/base/outline.webp:556,452,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/clench/0.webp:561,462,7,6 +characters/luna/poses/default/clothes/piercing/mouth_stud/clench/extra.webp:561,462,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/clench/outline.webp:560,461,8,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/0.webp:566,458,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/extra.webp:566,459,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/crooked_smile/outline.webp:565,457,8,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/0.webp:570,463,8,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/extra.webp:571,464,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/disgust/outline.webp:570,462,8,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/full/0.webp:560,453,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/full/extra.webp:561,454,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/full/outline.webp:559,452,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/grin/0.webp:559,456,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/grin/extra.webp:560,457,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/grin/outline.webp:558,455,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/mad/0.webp:562,463,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/mad/extra.webp:562,464,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/mad/outline.webp:561,462,8,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/normal/0.webp:557,453,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/normal/extra.webp:558,454,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/normal/outline.webp:556,452,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/open/0.webp:565,463,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/open/extra.webp:566,464,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/open/outline.webp:564,462,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/0.webp:565,463,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/extra.webp:566,464,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/open_tongue/outline.webp:564,462,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/0.webp:567,480,7,6 +characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/extra.webp:568,480,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/open_wide_tongue/outline.webp:566,479,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/scream/0.webp:564,478,8,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/scream/extra.webp:566,479,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/scream/outline.webp:564,477,8,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/shock/0.webp:563,469,8,6 +characters/luna/poses/default/clothes/piercing/mouth_stud/shock/extra.webp:564,469,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/shock/outline.webp:563,468,8,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/silly/0.webp:564,462,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/silly/extra.webp:565,463,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/silly/outline.webp:563,461,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/smile/0.webp:567,465,7,6 +characters/luna/poses/default/clothes/piercing/mouth_stud/smile/extra.webp:567,465,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/smile/outline.webp:566,464,8,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/soft/0.webp:559,459,7,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/soft/extra.webp:560,460,4,4 +characters/luna/poses/default/clothes/piercing/mouth_stud/soft/outline.webp:558,458,9,8 +characters/luna/poses/default/clothes/piercing/mouth_stud/upset/0.webp:554,452,8,7 +characters/luna/poses/default/clothes/piercing/mouth_stud/upset/extra.webp:556,453,3,3 +characters/luna/poses/default/clothes/piercing/mouth_stud/upset/outline.webp:554,451,8,8 +characters/luna/poses/default/clothes/piercing/nipple_rings/0.webp:449,642,153,36 +characters/luna/poses/default/clothes/piercing/nipple_rings/extra.webp:451,652,147,28 +characters/luna/poses/default/clothes/piercing/nipple_rings/outline.webp:448,641,155,37 +characters/luna/poses/default/clothes/piercing/nipple_studs/0.webp:455,641,147,25 +characters/luna/poses/default/clothes/piercing/nipple_studs/extra.webp:454,641,146,23 +characters/luna/poses/default/clothes/piercing/nipple_studs/outline.webp:453,640,150,27 +characters/luna/poses/default/clothes/piercing/nose_ring/0.webp:542,419,17,10 +characters/luna/poses/default/clothes/piercing/nose_ring/extra.webp:546,422,9,8 +characters/luna/poses/default/clothes/piercing/nose_ring/outline.webp:542,418,18,12 characters/luna/poses/default/clothes/pubes/arrow/0.webp:525,872,39,51 characters/luna/poses/default/clothes/pubes/arrow/outline.webp:525,874,34,44 characters/luna/poses/default/clothes/pubes/beaver/0.webp:514,853,64,88 characters/luna/poses/default/clothes/pubes/beaver/outline.webp:516,857,58,87 characters/luna/poses/default/clothes/pubes/stuble/0.webp:524,894,49,32 characters/luna/poses/default/clothes/pubes/unshaved/0.webp:526,891,42,41 +characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_142.webp:340,466,367,734 +characters/luna/poses/default/clothes/robe/coat_flasher/0_zorder_152.webp:632,487,207,713 +characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_143.webp:366,691,13,15 +characters/luna/poses/default/clothes/robe/coat_flasher/1_zorder_153.webp:671,606,145,98 +characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp:596,714,127,486 +characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp:420,654,102,546 +characters/luna/poses/default/clothes/robe/coat_flasher/extra.webp:415,633,311,567 +characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_145.webp:337,465,372,735 +characters/luna/poses/default/clothes/robe/coat_flasher/outline_zorder_155.webp:629,482,212,718 +characters/luna/poses/default/clothes/robe/coat_flasher/skin.webp:453,456,213,227 characters/luna/poses/default/clothes/robe/harley_quinn/0.webp:397,453,391,349 characters/luna/poses/default/clothes/robe/harley_quinn/1.webp:460,452,172,349 characters/luna/poses/default/clothes/robe/harley_quinn/2.webp:463,474,196,315 @@ -3774,6 +4074,12 @@ characters/luna/poses/default/clothes/robe/robe_school_4/outline.webp:439,565,35 characters/luna/poses/default/clothes/robe/robe_school_4/outline_back.webp:392,673,366,527 characters/luna/poses/default/clothes/stockings/harley_quinn/0.webp:454,770,242,430 characters/luna/poses/default/clothes/stockings/harley_quinn/outline.webp:450,767,251,433 +characters/luna/poses/default/clothes/stockings/leggings_bimbo/0.webp:462,969,211,87 +characters/luna/poses/default/clothes/stockings/leggings_bimbo/1.webp:473,1013,178,187 +characters/luna/poses/default/clothes/stockings/leggings_bimbo/2.webp:470,1002,183,52 +characters/luna/poses/default/clothes/stockings/leggings_bimbo/3.webp:474,1004,182,52 +characters/luna/poses/default/clothes/stockings/leggings_bimbo/outline.webp:460,966,215,234 +characters/luna/poses/default/clothes/stockings/leggings_bimbo/skin.webp:471,971,191,47 characters/luna/poses/default/clothes/stockings/muggle_knee_socks/0.webp:490,1058,157,142 characters/luna/poses/default/clothes/stockings/muggle_knee_socks/1.webp:479,1037,161,58 characters/luna/poses/default/clothes/stockings/muggle_knee_socks/2.webp:469,1006,193,62 @@ -3852,6 +4158,10 @@ characters/luna/poses/default/clothes/top/police_shirt/0.webp:448,481,285,345 characters/luna/poses/default/clothes/top/police_shirt/1.webp:513,633,34,133 characters/luna/poses/default/clothes/top/police_shirt/outline.webp:447,480,286,291 characters/luna/poses/default/clothes/top/police_shirt/skin.webp:502,531,125,246 +characters/luna/poses/default/clothes/top/short_tanktop/0.webp:449,510,243,238 +characters/luna/poses/default/clothes/top/short_tanktop/1.webp:478,608,151,123 +characters/luna/poses/default/clothes/top/short_tanktop/outline.webp:447,506,249,245 +characters/luna/poses/default/clothes/top/short_tanktop/skin.webp:504,525,189,228 characters/luna/poses/default/clothes/top/summer_top_1/0.webp:450,512,235,250 characters/luna/poses/default/clothes/top/summer_top_1/outline.webp:449,510,237,254 characters/luna/poses/default/clothes/top/summer_top_1/skin.webp:500,517,191,251 @@ -3863,6 +4173,15 @@ characters/luna/poses/default/clothes/top/swimsuit_1/1.webp:521,511,158,191 characters/luna/poses/default/clothes/top/swimsuit_1/extra.webp:447,595,213,338 characters/luna/poses/default/clothes/top/swimsuit_1/outline.webp:447,509,233,426 characters/luna/poses/default/clothes/top/swimsuit_1/skin.webp:474,525,202,344 +characters/luna/poses/default/clothes/top/top_cumslut/0.webp:450,497,300,249 +characters/luna/poses/default/clothes/top/top_cumslut/1.webp:570,497,102,37 +characters/luna/poses/default/clothes/top/top_cumslut/extra.webp:494,580,145,70 +characters/luna/poses/default/clothes/top/top_cumslut/outline.webp:446,494,305,254 +characters/luna/poses/default/clothes/top/top_cumslut/skin.webp:502,524,189,229 +characters/luna/poses/default/clothes/top/top_latex/0.webp:394,484,392,306 +characters/luna/poses/default/clothes/top/top_latex/1.webp:394,502,391,287 +characters/luna/poses/default/clothes/top/top_latex/extra.webp:420,519,328,231 +characters/luna/poses/default/clothes/top/top_latex/outline.webp:392,477,396,316 characters/luna/poses/default/clothes/top/top_school_1/0.webp:501,461,244,205 characters/luna/poses/default/clothes/top/top_school_1/0_front.webp:614,461,54,103 characters/luna/poses/default/clothes/top/top_school_1/1.webp:447,507,257,348 @@ -3925,6 +4244,10 @@ characters/luna/poses/default/clothes/top/top_school_vest/2.webp:469,503,236,352 characters/luna/poses/default/clothes/top/top_school_vest/extra.webp:447,527,223,314 characters/luna/poses/default/clothes/top/top_school_vest/outline.webp:445,500,262,356 characters/luna/poses/default/clothes/top/top_school_vest/skin.webp:534,532,60,140 +characters/luna/poses/default/clothes/top/top_torn/0.webp:432,476,313,317 +characters/luna/poses/default/clothes/top/top_torn/1.webp:474,528,86,164 +characters/luna/poses/default/clothes/top/top_torn/outline.webp:429,470,318,326 +characters/luna/poses/default/clothes/top/top_torn/skin.webp:438,508,304,274 characters/luna/poses/default/cum/body/heavy/cum.webp:458,472,255,320 characters/luna/poses/default/cum/body/light/cum.webp:532,510,181,282 characters/luna/poses/default/cum/breasts/heavy/cum.webp:448,538,194,169 @@ -4290,7 +4613,7 @@ characters/susan/poses/default/clothes/bottom/school_skirt_4/1.webp:619,858,11,2 characters/susan/poses/default/clothes/bottom/school_skirt_4/extra.webp:621,859,5,17 characters/susan/poses/default/clothes/bottom/school_skirt_4/outline.webp:452,817,271,145 characters/susan/poses/default/clothes/bottom/school_skirt_4/skin.webp:459,829,242,135 -characters/susan/poses/default/clothes/bra/base/0.webp:0,0,1,1 +characters/susan/poses/default/clothes/bra/base/0.webp:0,0,1010,1010 characters/susan/poses/default/clothes/bra/base/mask.webp:0,0,1010,1200 characters/susan/poses/default/clothes/bra/base/outline.webp:417,515,281,248 characters/susan/poses/default/clothes/bra/base/skin.webp:416,571,284,241 @@ -4343,7 +4666,7 @@ characters/susan/poses/default/clothes/panties/basic_panties_1/1.webp:459,836,25 characters/susan/poses/default/clothes/panties/basic_panties_1/2.webp:533,877,29,18 characters/susan/poses/default/clothes/panties/basic_panties_1/outline.webp:456,834,260,138 characters/susan/poses/default/clothes/panties/basic_panties_1/skin.webp:462,840,236,119 -characters/susan/poses/default/clothes/panties/lace/0.webp:0,0,1,1 +characters/susan/poses/default/clothes/panties/lace/0.webp:0,0,1010,1010 characters/susan/poses/default/clothes/panties/lace/outline.webp:448,884,270,172 characters/susan/poses/default/clothes/panties/lace_panties_1/0.webp:462,839,253,77 characters/susan/poses/default/clothes/panties/lace_panties_1/1.webp:515,889,85,80 @@ -5235,10 +5558,10 @@ characters/tonks/poses/default/face/mouth/normal/skin.webp:549,452,36,19 characters/tonks/poses/default/face/mouth/open/expression.webp:544,444,36,34 characters/tonks/poses/default/face/mouth/open/skin.webp:550,466,28,14 characters/tonks/poses/default/face/mouth/open_wide/expression.webp:525,441,107,57 -characters/tonks/poses/default/face/mouth/open_wide_tongue/expression.webp:525,441,107,87 -characters/tonks/poses/default/face/mouth/open_wide_tongue2/expression.webp:514,441,118,77 -characters/tonks/poses/default/face/mouth/open_wide_tongue2_cum/expression.webp:514,441,118,77 -characters/tonks/poses/default/face/mouth/open_wide_tongue_cum/expression.webp:525,441,107,87 +characters/tonks/poses/default/face/mouth/open_wide_tongue/expression_zorder_500.webp:525,441,107,87 +characters/tonks/poses/default/face/mouth/open_wide_tongue2/expression_zorder_500.webp:514,441,118,77 +characters/tonks/poses/default/face/mouth/open_wide_tongue2_cum/expression_zorder_500.webp:514,441,118,77 +characters/tonks/poses/default/face/mouth/open_wide_tongue_cum/expression_zorder_500.webp:525,441,107,87 characters/tonks/poses/default/face/mouth/scream/expression.webp:540,443,49,36 characters/tonks/poses/default/face/mouth/scream/skin.webp:549,468,37,13 characters/tonks/poses/default/face/mouth/silly/expression.webp:542,441,47,35 @@ -5442,9 +5765,269 @@ images/CG/cho_bj_desk/mask.webp:928,0,3392,2400 images/CG/cho_bj_desk/mask_idle.webp:0,0,4320,2400 images/CG/cho_bj_desk/overlay.webp:0,0,4320,2400 images/CG/cho_bj_desk/overlay_idle.webp:0,0,4320,2400 +images/CG/cho_facefuck/cho_facefuck_background.webp:0,0,4320,2400 +images/CG/cho_facefuck/cho_facefuck_cho_arms_deep.webp:1237,1398,2045,710 +images/CG/cho_facefuck/cho_facefuck_cho_arms_down.webp:1210,1344,2093,759 +images/CG/cho_facefuck/cho_facefuck_cho_arms_mid.webp:1199,1334,2096,777 +images/CG/cho_facefuck/cho_facefuck_cho_arms_up.webp:1210,1301,2082,804 +images/CG/cho_facefuck/cho_facefuck_cho_blush_choking_deep.webp:1579,1166,1194,1078 +images/CG/cho_facefuck/cho_facefuck_cho_blush_choking_down.webp:1579,1006,1194,1078 +images/CG/cho_facefuck/cho_facefuck_cho_blush_choking_mid.webp:1573,918,1207,1078 +images/CG/cho_facefuck/cho_facefuck_cho_blush_choking_up.webp:1579,846,1194,1078 +images/CG/cho_facefuck/cho_facefuck_cho_blush_heavy_deep.webp:1527,1370,1263,623 +images/CG/cho_facefuck/cho_facefuck_cho_blush_heavy_down.webp:1527,1210,1263,623 +images/CG/cho_facefuck/cho_facefuck_cho_blush_heavy_mid.webp:1520,1121,1277,623 +images/CG/cho_facefuck/cho_facefuck_cho_blush_heavy_up.webp:1527,1050,1263,623 +images/CG/cho_facefuck/cho_facefuck_cho_body_deep.webp:1310,1218,1651,1160 +images/CG/cho_facefuck/cho_facefuck_cho_body_down.webp:1315,1008,1632,1366 +images/CG/cho_facefuck/cho_facefuck_cho_body_mid.webp:1305,988,1658,1359 +images/CG/cho_facefuck/cho_facefuck_cho_body_up.webp:1315,944,1632,1366 +images/CG/cho_facefuck/cho_facefuck_cho_cheekbulge_deep.webp:1692,1845,916,292 +images/CG/cho_facefuck/cho_facefuck_cho_cheekbulge_down.webp:1692,1685,916,292 +images/CG/cho_facefuck/cho_facefuck_cho_cheekbulge_mid.webp:1691,1599,916,292 +images/CG/cho_facefuck/cho_facefuck_cho_cheekbulge_up.webp:1689,1517,916,292 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_angry_deep.webp:1654,1271,982,198 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_angry_down.webp:1654,1111,982,198 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_angry_mid.webp:1648,1024,991,197 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_angry_up.webp:1654,951,982,198 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_low_deep.webp:1653,1351,958,82 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_low_down.webp:1653,1191,958,82 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_low_mid.webp:1647,1103,968,82 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_low_up.webp:1653,1031,958,82 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_raised_deep.webp:1666,1309,947,151 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_raised_down.webp:1666,1149,947,151 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_raised_mid.webp:1661,1060,955,151 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_raised_up.webp:1666,989,947,151 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_worried_deep.webp:1652,1251,983,203 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_worried_down.webp:1652,1091,983,203 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_worried_mid.webp:1646,1004,993,203 +images/CG/cho_facefuck/cho_facefuck_cho_eyebrows_worried_up.webp:1652,931,983,203 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_ahegao_deep.webp:1685,1442,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_ahegao_down.webp:1685,1282,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_ahegao_mid.webp:1679,1194,908,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_ahegao_up.webp:1685,1122,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_down_deep.webp:1685,1442,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_down_down.webp:1685,1282,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_down_mid.webp:1679,1194,908,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_down_up.webp:1685,1122,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_left_deep.webp:1685,1442,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_left_down.webp:1685,1282,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_left_mid.webp:1679,1194,908,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_left_up.webp:1685,1122,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_ahegao_deep.webp:1685,1464,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_ahegao_down.webp:1685,1304,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_ahegao_mid.webp:1679,1215,908,156 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_ahegao_up.webp:1685,1144,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_down_deep.webp:1685,1464,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_down_down.webp:1685,1304,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_down_mid.webp:1679,1215,908,156 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_down_up.webp:1685,1144,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_left_deep.webp:1685,1464,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_left_down.webp:1685,1304,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_left_mid.webp:1679,1215,908,156 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_left_up.webp:1685,1144,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_right_deep.webp:1685,1464,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_right_down.webp:1685,1304,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_right_mid.webp:1679,1215,908,156 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_right_up.webp:1685,1144,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_stare_deep.webp:1685,1464,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_stare_down.webp:1685,1304,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_stare_mid.webp:1679,1215,908,156 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_stare_up.webp:1685,1144,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_up_deep.webp:1685,1464,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_up_down.webp:1685,1304,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_up_mid.webp:1679,1215,908,156 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_narrow_up_up.webp:1685,1144,898,155 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_right_deep.webp:1685,1442,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_right_down.webp:1685,1282,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_right_mid.webp:1679,1194,908,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_right_up.webp:1685,1122,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_shut_deep.webp:1669,1462,936,128 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_shut_down.webp:1669,1302,936,128 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_shut_mid.webp:1663,1215,946,127 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_shut_up.webp:1669,1142,936,128 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_stare_deep.webp:1685,1442,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_stare_down.webp:1685,1282,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_stare_mid.webp:1679,1194,908,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_stare_up.webp:1685,1122,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_up_deep.webp:1685,1442,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_up_down.webp:1685,1282,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_up_mid.webp:1679,1194,908,192 +images/CG/cho_facefuck/cho_facefuck_cho_eyes_up_up.webp:1685,1122,898,192 +images/CG/cho_facefuck/cho_facefuck_cho_hair_deep.webp:1162,508,1798,1214 +images/CG/cho_facefuck/cho_facefuck_cho_hair_down.webp:1162,348,1798,1214 +images/CG/cho_facefuck/cho_facefuck_cho_hair_mid.webp:1154,266,1810,1206 +images/CG/cho_facefuck/cho_facefuck_cho_hair_up.webp:1162,188,1798,1214 +images/CG/cho_facefuck/cho_facefuck_cho_head_deep.webp:1460,357,1379,1953 +images/CG/cho_facefuck/cho_facefuck_cho_head_down.webp:1460,197,1379,1953 +images/CG/cho_facefuck/cho_facefuck_cho_head_mid.webp:1456,116,1386,1948 +images/CG/cho_facefuck/cho_facefuck_cho_head_up.webp:1460,37,1379,1953 +images/CG/cho_facefuck/cho_facefuck_cho_mouth_bubbles_deep.webp:1985,1994,274,103 +images/CG/cho_facefuck/cho_facefuck_cho_mouth_bubbles_down.webp:1985,1831,274,103 +images/CG/cho_facefuck/cho_facefuck_cho_mouth_bubbles_mid.webp:1985,1745,274,103 +images/CG/cho_facefuck/cho_facefuck_cho_mouth_bubbles_up.webp:1985,1673,274,103 +images/CG/cho_facefuck/cho_facefuck_cho_shadow_deep.webp:1660,1356,2660,1044 +images/CG/cho_facefuck/cho_facefuck_cho_shadow_down.webp:1660,1249,2660,1151 +images/CG/cho_facefuck/cho_facefuck_cho_shadow_mid.webp:1660,1140,2660,1260 +images/CG/cho_facefuck/cho_facefuck_cho_shadow_up.webp:1660,1027,2660,1373 +images/CG/cho_facefuck/cho_facefuck_cho_shirt_deep.webp:1290,1284,1693,999 +images/CG/cho_facefuck/cho_facefuck_cho_shirt_down.webp:1298,1092,1669,1172 +images/CG/cho_facefuck/cho_facefuck_cho_shirt_mid.webp:1288,1071,1695,1167 +images/CG/cho_facefuck/cho_facefuck_cho_shirt_up.webp:1298,1028,1669,1172 +images/CG/cho_facefuck/cho_facefuck_cho_spit_face_deep.webp:2293,1636,290,299 +images/CG/cho_facefuck/cho_facefuck_cho_spit_face_down.webp:2293,1476,290,299 +images/CG/cho_facefuck/cho_facefuck_cho_spit_face_mid.webp:2295,1388,294,300 +images/CG/cho_facefuck/cho_facefuck_cho_spit_face_up.webp:2293,1316,290,299 +images/CG/cho_facefuck/cho_facefuck_cho_spit_mouth_deep.webp:1927,2056,414,190 +images/CG/cho_facefuck/cho_facefuck_cho_spit_mouth_down.webp:1927,1896,414,190 +images/CG/cho_facefuck/cho_facefuck_cho_spit_mouth_mid.webp:1925,1808,420,191 +images/CG/cho_facefuck/cho_facefuck_cho_spit_mouth_up.webp:1927,1736,414,190 +images/CG/cho_facefuck/cho_facefuck_cho_tears_deep.webp:1662,1514,916,395 +images/CG/cho_facefuck/cho_facefuck_cho_tears_down.webp:1664,1355,916,395 +images/CG/cho_facefuck/cho_facefuck_cho_tears_mid.webp:1664,1266,916,395 +images/CG/cho_facefuck/cho_facefuck_cho_tears_up.webp:1666,1195,916,395 +images/CG/cho_facefuck/cho_facefuck_effects_speedlines.webp:918,1660,2412,740 +images/CG/cho_facefuck/cho_facefuck_genie_body_deep.webp:615,1823,3177,577 +images/CG/cho_facefuck/cho_facefuck_genie_body_down.webp:648,1835,3119,565 +images/CG/cho_facefuck/cho_facefuck_genie_body_mid.webp:654,1841,3104,559 +images/CG/cho_facefuck/cho_facefuck_genie_body_up.webp:648,1835,3119,565 +images/CG/cho_facefuck/cho_facefuck_genie_cum_cumshot2_deep.webp:1943,1823,378,396 +images/CG/cho_facefuck/cho_facefuck_genie_cum_cumshot_deep.webp:1943,1823,378,396 +images/CG/cho_facefuck/cho_facefuck_genie_cum_throatpie_deep.webp:1930,1823,398,340 +images/CG/cho_facefuck/cho_facefuck_genie_cum_throatpie_down.webp:1930,1665,398,340 +images/CG/cho_facefuck/cho_facefuck_genie_cum_throatpie_mid.webp:1930,1575,398,354 +images/CG/cho_facefuck/cho_facefuck_genie_cum_throatpie_up.webp:1932,1503,393,424 +images/CG/cho_facefuck/cho_facefuck_genie_hands_deep.webp:843,390,2640,784 +images/CG/cho_facefuck/cho_facefuck_genie_hands_down.webp:871,206,2647,788 +images/CG/cho_facefuck/cho_facefuck_genie_hands_mid.webp:871,98,2647,788 +images/CG/cho_facefuck/cho_facefuck_genie_hands_up.webp:871,46,2647,788 +images/CG/cho_facefuck/cho_facefuck_genie_penis_deep.webp:1800,2000,1715,400 +images/CG/cho_facefuck/cho_facefuck_genie_penis_down.webp:1810,1835,1686,565 +images/CG/cho_facefuck/cho_facefuck_genie_penis_mid.webp:1836,1752,724,648 +images/CG/cho_facefuck/cho_facefuck_genie_penis_up.webp:1810,1677,1686,723 +images/CG/cho_handjob/cho_handjob_background.webp:0,0,4320,2400 +images/CG/cho_handjob/cho_handjob_bubble.webp:2041,94,2176,1156 +images/CG/cho_handjob/cho_handjob_bubble_mask.webp:2608,94,1609,1156 +images/CG/cho_handjob/cho_handjob_cho_bending_shirt.webp:1207,997,1846,1185 +images/CG/cho_handjob/cho_handjob_cho_bending_shirt_open.webp:1207,997,1847,1185 +images/CG/cho_handjob/cho_handjob_cho_bending_skirt.webp:2131,1657,1172,743 +images/CG/cho_handjob/cho_handjob_cho_body_bending.webp:0,0,3269,2400 +images/CG/cho_handjob/cho_handjob_cho_body_idle.webp:451,0,2626,2400 +images/CG/cho_handjob/cho_handjob_cho_body_idle2.webp:451,0,2142,2400 +images/CG/cho_handjob/cho_handjob_cho_body_stroke_down.webp:451,0,2138,2400 +images/CG/cho_handjob/cho_handjob_cho_body_stroke_idle.webp:451,0,2169,2400 +images/CG/cho_handjob/cho_handjob_cho_body_stroke_up.webp:451,0,2169,2400 +images/CG/cho_handjob/cho_handjob_cho_hair_fringe.webp:1138,1,953,630 +images/CG/cho_handjob/cho_handjob_cho_hand_wet_stroke_down.webp:1904,2211,321,189 +images/CG/cho_handjob/cho_handjob_cho_idle2_shirt.webp:985,683,1471,1421 +images/CG/cho_handjob/cho_handjob_cho_idle2_shirt_open.webp:985,683,1471,1421 +images/CG/cho_handjob/cho_handjob_cho_idle2_skirt.webp:1561,1645,875,755 +images/CG/cho_handjob/cho_handjob_cho_idle_shirt.webp:985,683,1472,1421 +images/CG/cho_handjob/cho_handjob_cho_idle_shirt_open.webp:985,683,1472,1421 +images/CG/cho_handjob/cho_handjob_cho_idle_skirt.webp:1561,1645,875,755 +images/CG/cho_handjob/cho_handjob_cho_skirt_fix.webp:2101,1645,78,81 +images/CG/cho_handjob/cho_handjob_cho_spit.webp:2195,1704,66,464 +images/CG/cho_handjob/cho_handjob_cho_stroke_down_shirt.webp:985,683,1472,1421 +images/CG/cho_handjob/cho_handjob_cho_stroke_down_shirt_open.webp:985,683,1472,1421 +images/CG/cho_handjob/cho_handjob_cho_stroke_down_skirt.webp:1561,1645,875,755 +images/CG/cho_handjob/cho_handjob_cho_stroke_idle_shirt.webp:985,683,1475,1421 +images/CG/cho_handjob/cho_handjob_cho_stroke_idle_shirt_open.webp:985,683,1475,1421 +images/CG/cho_handjob/cho_handjob_cho_stroke_idle_skirt.webp:1561,1645,875,755 +images/CG/cho_handjob/cho_handjob_cho_stroke_up_shirt.webp:985,683,1475,1421 +images/CG/cho_handjob/cho_handjob_cho_stroke_up_shirt_open.webp:985,683,1475,1421 +images/CG/cho_handjob/cho_handjob_cho_stroke_up_skirt.webp:1561,1645,875,755 +images/CG/cho_handjob/cho_handjob_cum_after.webp:2343,1546,1277,658 +images/CG/cho_handjob/cho_handjob_cum_cumshot.webp:2341,1384,1077,753 +images/CG/cho_handjob/cho_handjob_cum_precum.webp:2361,2090,30,26 +images/CG/cho_handjob/cho_handjob_effects_spitting.webp:2195,1704,66,464 +images/CG/cho_handjob/cho_handjob_eyebrows_angry.webp:1358,362,405,68 +images/CG/cho_handjob/cho_handjob_eyebrows_base.webp:1362,355,398,84 +images/CG/cho_handjob/cho_handjob_eyebrows_raised.webp:1359,337,408,86 +images/CG/cho_handjob/cho_handjob_eyebrows_sad.webp:1370,376,395,50 +images/CG/cho_handjob/cho_handjob_eyebrows_worried.webp:1364,356,402,74 +images/CG/cho_handjob/cho_handjob_eyes_closed.webp:1397,450,382,60 +images/CG/cho_handjob/cho_handjob_eyes_open_down.webp:1394,419,393,100 +images/CG/cho_handjob/cho_handjob_eyes_open_forward.webp:1394,419,393,100 +images/CG/cho_handjob/cho_handjob_eyes_open_left.webp:1394,419,393,100 +images/CG/cho_handjob/cho_handjob_eyes_open_narrow_down.webp:1394,436,393,75 +images/CG/cho_handjob/cho_handjob_eyes_open_narrow_forward.webp:1394,436,393,75 +images/CG/cho_handjob/cho_handjob_eyes_open_narrow_left.webp:1394,436,393,75 +images/CG/cho_handjob/cho_handjob_eyes_open_narrow_right.webp:1394,436,393,75 +images/CG/cho_handjob/cho_handjob_eyes_open_right.webp:1394,419,393,100 +images/CG/cho_handjob/cho_handjob_eyes_open_wide_down.webp:1394,412,393,117 +images/CG/cho_handjob/cho_handjob_eyes_open_wide_forward.webp:1394,412,393,117 +images/CG/cho_handjob/cho_handjob_eyes_open_wide_left.webp:1394,412,393,117 +images/CG/cho_handjob/cho_handjob_eyes_open_wide_right.webp:1394,412,393,117 +images/CG/cho_handjob/cho_handjob_eyes_shut.webp:1396,443,394,61 +images/CG/cho_handjob/cho_handjob_genie_robed.webp:0,0,2025,2400 +images/CG/cho_handjob/cho_handjob_genie_unrobed.webp:0,0,2025,2400 +images/CG/cho_handjob/cho_handjob_hand_stroke_down.webp:1899,1980,421,420 +images/CG/cho_handjob/cho_handjob_hand_stroke_down_wet.webp:1904,2211,321,189 +images/CG/cho_handjob/cho_handjob_hand_stroke_idle.webp:1969,1985,352,415 +images/CG/cho_handjob/cho_handjob_hand_stroke_idle_wet.webp:1971,2171,308,229 +images/CG/cho_handjob/cho_handjob_hand_stroke_up.webp:1969,1984,372,416 +images/CG/cho_handjob/cho_handjob_hand_stroke_up_wet.webp:1971,2169,195,193 +images/CG/cho_handjob/cho_handjob_mouth_angry.webp:1516,658,158,88 +images/CG/cho_handjob/cho_handjob_mouth_annoyed.webp:1558,646,117,71 +images/CG/cho_handjob/cho_handjob_mouth_base.webp:1516,671,161,63 +images/CG/cho_handjob/cho_handjob_mouth_lipbite.webp:1518,660,140,82 +images/CG/cho_handjob/cho_handjob_mouth_neutral.webp:1517,671,146,63 +images/CG/cho_handjob/cho_handjob_mouth_open.webp:1527,666,133,91 +images/CG/cho_handjob/cho_handjob_mouth_smile.webp:1518,666,160,79 +images/CG/cho_handjob/cho_handjob_mouth_upset.webp:1525,659,153,73 +images/CG/cho_handjob/cho_handjob_penis_hard.webp:1833,2082,552,318 +images/CG/cho_handjob/cho_handjob_penis_hard_spit_on_shaft.webp:1833,2081,552,319 +images/CG/cho_handjob/cho_handjob_penis_hard_spit_on_tip.webp:1833,2076,556,324 +images/CG/cho_handjob/cho_handjob_penis_soft.webp:1833,2223,212,177 +images/CG/cho_handjob/cho_handjob_speedlines_1.webp:1888,2045,381,310 +images/CG/cho_handjob/cho_handjob_speedlines_2.webp:1904,2070,380,307 +images/CG/cho_handjob/cho_handjob_speedlines_3.webp:1876,2023,464,377 images/CG/cho_hufflepuff/background.webp:0,0,4320,2400 images/CG/cho_hufflepuff/cho.webp:410,135,2197,2261 images/CG/cho_hufflepuff/clouds.webp:0,0,4320,2090 +images/CG/cho_masturbate/cho_masturbate_lockers_background.webp:0,0,4320,2400 +images/CG/cho_masturbate/cho_masturbate_lockers_blush_heavy.webp:2566,482,417,175 +images/CG/cho_masturbate/cho_masturbate_lockers_cho_body_fingering_down.webp:1025,29,2651,2295 +images/CG/cho_masturbate/cho_masturbate_lockers_cho_body_fingering_up.webp:1025,29,2651,2295 +images/CG/cho_masturbate/cho_masturbate_lockers_cho_body_idle.webp:1025,364,2651,1960 +images/CG/cho_masturbate/cho_masturbate_lockers_cho_body_sucking.webp:1025,29,2651,2295 +images/CG/cho_masturbate/cho_masturbate_lockers_cum_cumshot.webp:1333,381,1282,672 +images/CG/cho_masturbate/cho_masturbate_lockers_cum_head.webp:2431,181,423,810 +images/CG/cho_masturbate/cho_masturbate_lockers_cum_mouth_ahegao.webp:2714,635,68,122 +images/CG/cho_masturbate/cho_masturbate_lockers_cum_mouth_base.webp:2681,681,114,21 +images/CG/cho_masturbate/cho_masturbate_lockers_cum_stomach.webp:2075,1134,796,422 +images/CG/cho_masturbate/cho_masturbate_lockers_cum_torso.webp:1912,852,911,603 +images/CG/cho_masturbate/cho_masturbate_lockers_effects_hand_move.webp:2272,1524,194,254 +images/CG/cho_masturbate/cho_masturbate_lockers_effects_shaking.webp:1022,49,2825,2351 +images/CG/cho_masturbate/cho_masturbate_lockers_effects_very_wet.webp:2323,1771,68,153 +images/CG/cho_masturbate/cho_masturbate_lockers_effects_wet.webp:2349,1771,21,63 +images/CG/cho_masturbate/cho_masturbate_lockers_eyebrows_base.webp:2565,432,304,49 +images/CG/cho_masturbate/cho_masturbate_lockers_eyebrows_mad.webp:2562,417,315,69 +images/CG/cho_masturbate/cho_masturbate_lockers_eyebrows_raised.webp:2565,407,318,65 +images/CG/cho_masturbate/cho_masturbate_lockers_eyebrows_sad.webp:2566,440,303,40 +images/CG/cho_masturbate/cho_masturbate_lockers_eyebrows_worried.webp:2564,428,306,52 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_down.webp:2573,479,314,76 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_forward.webp:2573,479,314,76 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_left.webp:2573,479,314,76 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_looking_at_viewer.webp:2573,479,314,76 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_narrow_ahegao.webp:2573,492,313,55 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_narrow_down.webp:2573,492,313,55 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_narrow_forward.webp:2573,492,313,55 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_narrow_left.webp:2573,492,313,55 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_narrow_looking_at_viewer.webp:2573,492,313,55 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_narrow_right.webp:2573,492,313,55 +images/CG/cho_masturbate/cho_masturbate_lockers_eyes_right.webp:2573,479,314,76 +images/CG/cho_masturbate/cho_masturbate_lockers_hair.webp:2391,29,835,727 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_ahegao.webp:2685,653,96,91 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_angry.webp:2678,656,114,69 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_annoyed.webp:2707,647,83,56 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_base.webp:2678,668,117,48 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_lipbite.webp:2678,661,107,63 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_neutral.webp:2679,668,106,48 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_open.webp:2687,664,97,69 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_smile.webp:2679,664,116,61 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_sucking.webp:2692,663,75,84 +images/CG/cho_masturbate/cho_masturbate_lockers_mouth_upset.webp:2684,659,113,54 images/CG/cho_quidditch/background.webp:0,0,3840,2880 images/CG/cho_quidditch/overlay.webp:0,0,3840,2880 images/CG/cho_quidditch/pose1/body.webp:1151,830,1692,1552 @@ -5490,6 +6073,13 @@ images/CG/cho_quidditch2/slide/lines.webp:0,104,1080,390 images/CG/cho_quidditch2/snitch_0.webp:30,19,323,70 images/CG/cho_quidditch2/snitch_1.webp:14,49,323,69 images/CG/cho_quidditch2/squirt.webp:0,0,218,361 +images/CG/cho_quidditch_outro/cho_quidditch_outro_bedroom_background.webp:0,0,4320,2400 +images/CG/cho_quidditch_outro/cho_quidditch_outro_bedroom_potion.webp:2540,911,633,484 +images/CG/cho_quidditch_outro/cho_quidditch_outro_pitch_background.webp:0,0,4320,2400 +images/CG/cho_quidditch_outro/cho_quidditch_outro_pitch_overlay.webp:599,0,2876,2400 +images/CG/cho_quidditch_outro/cho_quidditch_outro_pitch_snape_angry.webp:1744,1023,562,588 +images/CG/cho_quidditch_outro/cho_quidditch_outro_pitch_snape_smile.webp:1744,1023,562,588 +images/CG/cho_quidditch_outro/cho_quidditch_outro_pitch_snape_talk.webp:1744,1023,562,588 images/CG/cho_sex/background.webp:0,0,4320,2400 images/CG/cho_sex/blob.webp:0,0,11,10 images/CG/cho_sex/down/blink.webp:1567,582,1123,1431 @@ -5534,6 +6124,17 @@ images/CG/cho_sex/up_taste/cum_outside_stage3.webp:2037,747,272,999 images/CG/cho_sex/up_taste/genie.webp:632,1492,2998,908 images/CG/cho_sex/up_taste/penis.webp:2126,1534,218,283 images/CG/cho_sex/up_taste/penis_inside.webp:2107,1517,237,300 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_cho_blush_heavy.webp:1468,306,747,310 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_cho_body_idle.webp:1166,269,1643,1634 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_cho_eyes_wide_down.webp:1986,414,152,101 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_cho_eyes_wide_look_at_tits.webp:1986,414,152,101 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_cho_mouth_lip_bite.webp:2053,556,62,41 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_cho_mouth_open.webp:2052,562,333,156 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_hands.webp:632,586,2227,1491 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_tonks_blush_heavy.webp:881,705,621,353 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_tonks_body.webp:0,215,3840,1859 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_tonks_eyes_open_mid.webp:0,770,3840,1133 +images/CG/cho_strip/personal/t3_e3/cho_staring/cho_strip_personal_t3_e3_cho_staring_tonks_mouth_smile.webp:1103,1016,224,98 images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_background.webp:0,0,3840,2160 images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_desk_cum_post.webp:1514,1231,853,929 images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_desk_cum_spurt.webp:1702,1203,425,957 @@ -5843,10 +6444,10 @@ images/CG/her_potions/public/expand_breasts/her_potions_public_expand_breasts_a1 images/CG/her_potions/public/expand_breasts/her_potions_public_expand_breasts_a2.webp:0,0,4320,2400 images/CG/her_potions/public/expand_breasts/her_potions_public_expand_breasts_b1.webp:0,0,4320,2400 images/CG/her_potions/public/expand_breasts/her_potions_public_expand_breasts_b2.webp:0,0,4320,2400 -images/CG/her_sex/personal/bent_over/clothes/her_sex_personal_bent_over_outfit_fix_shirt.webp:516,1614,675,417 -images/CG/her_sex/personal/bent_over/clothes/her_sex_personal_bent_over_outfit_shirt.webp:516,1484,901,554 -images/CG/her_sex/personal/bent_over/clothes/her_sex_personal_bent_over_outfit_skirt.webp:1043,1387,640,538 -images/CG/her_sex/personal/bent_over/clothes/her_sex_personal_bent_over_outfit_stockings.webp:1363,1745,290,143 +images/CG/her_sex/personal/bent_over/clothes/her_sex_personal_bent_over_outfit_fix_shirt.webp:208,652,272,168 +images/CG/her_sex/personal/bent_over/clothes/her_sex_personal_bent_over_outfit_shirt.webp:208,599,364,223 +images/CG/her_sex/personal/bent_over/clothes/her_sex_personal_bent_over_outfit_skirt.webp:421,560,258,217 +images/CG/her_sex/personal/bent_over/clothes/her_sex_personal_bent_over_outfit_stockings.webp:550,704,117,57 images/CG/her_sex/personal/bent_over/cum/ass/her_sex_personal_bent_over_cum_ass_heavy.webp:1191,1407,285,239 images/CG/her_sex/personal/bent_over/cum/ass/her_sex_personal_bent_over_cum_ass_light.webp:1228,1410,139,155 images/CG/her_sex/personal/bent_over/cum/ass/her_sex_personal_bent_over_cum_ass_shirt_heavy.webp:1191,1425,181,106 @@ -5929,8 +6530,8 @@ images/CG/her_sex/personal/her_sex_personal_background.webp:0,0,2500,2550 images/CG/her_sex/personal/her_sex_personal_background_clutter.webp:1155,1423,743,774 images/CG/her_sex/personal/her_sex_personal_overlay_day.webp:0,0,2500,2550 images/CG/her_sex/personal/her_sex_personal_overlay_night.webp:0,0,2500,2550 -images/CG/her_sex/personal/lean_back/clothes/her_sex_personal_lean_back_outfit_shirt.webp:850,897,629,781 -images/CG/her_sex/personal/lean_back/clothes/her_sex_personal_lean_back_outfit_skirt.webp:980,1387,575,494 +images/CG/her_sex/personal/lean_back/clothes/her_sex_personal_lean_back_outfit_shirt.webp:343,362,254,315 +images/CG/her_sex/personal/lean_back/clothes/her_sex_personal_lean_back_outfit_skirt.webp:395,560,232,199 images/CG/her_sex/personal/lean_back/expressions/cheeks/her_sex_personal_lean_back_cheeks_blush.webp:1029,703,222,144 images/CG/her_sex/personal/lean_back/expressions/eyebrows/her_sex_personal_lean_back_eyebrows_angry.webp:1023,674,189,94 images/CG/her_sex/personal/lean_back/expressions/eyebrows/her_sex_personal_lean_back_eyebrows_annoyed.webp:1023,668,189,94 @@ -6000,8 +6601,8 @@ images/CG/her_sex/personal/lean_back/her_sex_personal_lean_back_body.webp:848,57 images/CG/her_sex/personal/lean_back/her_sex_personal_lean_back_breastfix.webp:828,996,258,463 images/CG/her_sex/personal/lean_back/her_sex_personal_lean_back_hair_normal.webp:819,531,796,715 images/CG/her_sex/personal/lean_back/her_sex_personal_lean_back_hair_pulled.webp:819,470,771,737 -images/CG/her_sex/personal/lean_forward/clothes/her_sex_personal_lean_forward_outfit_shirt.webp:815,911,586,772 -images/CG/her_sex/personal/lean_forward/clothes/her_sex_personal_lean_forward_outfit_skirt.webp:983,1399,569,482 +images/CG/her_sex/personal/lean_forward/clothes/her_sex_personal_lean_forward_outfit_shirt.webp:329,368,236,311 +images/CG/her_sex/personal/lean_forward/clothes/her_sex_personal_lean_forward_outfit_skirt.webp:397,565,229,194 images/CG/her_sex/personal/lean_forward/expressions/cheeks/her_sex_personal_lean_forward_cheeks_blush.webp:944,728,222,157 images/CG/her_sex/personal/lean_forward/expressions/eyebrows/her_sex_personal_lean_forward_eyebrows_angry.webp:940,702,182,107 images/CG/her_sex/personal/lean_forward/expressions/eyebrows/her_sex_personal_lean_forward_eyebrows_annoyed.webp:939,696,182,107 @@ -7790,7 +8391,7 @@ interface/wardrobe/icons/sweaters.webp:3,3,84,86 interface/wardrobe/icons/tattoos.webp:0,8,90,75 interface/wardrobe/icons/trousers.webp:20,0,50,90 interface/warning.webp:0,0,448,64 -mods/MyMod/characters/hermione/poses/default/clothes/hair/ponytail/0.webp:489,262,223,248 -mods/MyMod/characters/hermione/poses/default/clothes/hair/ponytail/1.webp:491,263,221,247 -mods/MyMod/characters/hermione/poses/default/clothes/hair/ponytail/outline.webp:488,261,226,251 -mods/MyMod/logo.webp:0,0,320,240 +mods/ExampleMod/characters/hermione/poses/default/clothes/hair/ponytail/0.webp:489,262,223,248 +mods/ExampleMod/characters/hermione/poses/default/clothes/hair/ponytail/1.webp:491,263,221,247 +mods/ExampleMod/characters/hermione/poses/default/clothes/hair/ponytail/outline.webp:488,261,226,251 +mods/ExampleMod/logo.webp:0,0,320,240 From 22ce846d81d6e6164402c07a524e7b149505a868 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Thu, 27 Jul 2023 00:56:37 +0100 Subject: [PATCH 014/249] Expand matrixes support for body layers --- game/scripts/doll/body.rpy | 12 ++++++------ game/scripts/doll/clothes.rpy | 2 +- game/scripts/doll/cum.rpy | 2 +- game/scripts/doll/face.rpy | 2 +- game/scripts/doll/main.rpy | 5 ++++- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/game/scripts/doll/body.rpy b/game/scripts/doll/body.rpy index 0a47b670..07c509c4 100644 --- a/game/scripts/doll/body.rpy +++ b/game/scripts/doll/body.rpy @@ -12,17 +12,17 @@ init python: def __init__(self, obj): self.char = obj - self.hue = HueMatrix(0) + self.matrix = IdentityMatrix() self.zorder = 0 self._hash = None - def set_hue(self, hue): - self.hue = HueMatrix(hue) + def set_matrix(self, matrix): + self.matrix = matrix self.is_stale() def generate_hash(self): bodyparts_hash = str([x[0]._hash for x in self.char.states.values() if istype(x[0], DollBodypart) and x[2]]) - salt = str( [self.char.name, self.char.pose, str(self.hue.__hash__()), bodyparts_hash]) + salt = str( [self.char.name, self.char.pose, str(self.matrix.__hash__()), bodyparts_hash]) return hash(salt) @functools.cache @@ -38,7 +38,7 @@ init python: @functools.cache def build_image(self, hash, matrix=None): if matrix is None: - matrix = self.hue + matrix = self.matrix processors = { "default": lambda file: Transform(Image(file), matrixcolor=matrix), @@ -59,7 +59,7 @@ init python: if not renpy.is_skipping() and self.is_stale(): hash = self._hash - sprites = self.build_image(hash, self.hue) + sprites = self.build_image(hash, self.matrix) sprites.sort(key=itemgetter(2)) sprites = [x[1] for x in sprites] diff --git a/game/scripts/doll/clothes.rpy b/game/scripts/doll/clothes.rpy index 10fffc12..dbb34a79 100644 --- a/game/scripts/doll/clothes.rpy +++ b/game/scripts/doll/clothes.rpy @@ -138,7 +138,7 @@ init python: # as a bridge to enable colourable clothing for chibis, double-check the changes before submitting them. if matrix is None: - matrix = self.char.body.hue + matrix = self.char.body.matrix processors = { "skin": lambda file, _: Transform(file, maxsize=maxsize, matrixcolor=matrix), diff --git a/game/scripts/doll/cum.rpy b/game/scripts/doll/cum.rpy index bb0eae7c..5e1c1561 100644 --- a/game/scripts/doll/cum.rpy +++ b/game/scripts/doll/cum.rpy @@ -115,7 +115,7 @@ init python: @functools.cache def build_image(self, hash, subpath="", matrix=None): if matrix is None: - matrix = self.char.body.hue + matrix = self.char.body.matrix processors = { "skin": lambda file: Transform(file, matrixcolor=matrix), diff --git a/game/scripts/doll/face.rpy b/game/scripts/doll/face.rpy index 2bafc5c7..ee86294c 100644 --- a/game/scripts/doll/face.rpy +++ b/game/scripts/doll/face.rpy @@ -78,7 +78,7 @@ init python: eyemask = next((layers.pop(k, None) for k in layers if "eyemask" in k), [None])[0] if matrix is None: - matrix = self.char.body.hue + matrix = self.char.body.matrix processors = { "skin": lambda file: Transform(file, matrixcolor=matrix), diff --git a/game/scripts/doll/main.rpy b/game/scripts/doll/main.rpy index 0d3885ca..80f33566 100644 --- a/game/scripts/doll/main.rpy +++ b/game/scripts/doll/main.rpy @@ -480,7 +480,10 @@ init python: def set_body_hue(self, arg): """Takes integer between 0 - 359, rotates the character body colour by given amount.""" - self.body.set_hue(arg) + self.set_body_matrix(HueMatrix(arg)) + + def set_body_matrix(self, arg): + self.body.set_matrix(arg) for i in self.states.values(): if i[0]: From 7e768adddf91193dd866f3cbca381d5f871f2c2b Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Fri, 8 Sep 2023 20:40:46 +0100 Subject: [PATCH 015/249] Bug fix Fixed flipped parameters in Bodyparts class init code, causing issues with mods --- game/scripts/doll/bodypart.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/doll/bodypart.rpy b/game/scripts/doll/bodypart.rpy index f9d6b151..241cad0d 100644 --- a/game/scripts/doll/bodypart.rpy +++ b/game/scripts/doll/bodypart.rpy @@ -9,7 +9,7 @@ init 1 python: } def __init__(self, name, categories, type, id, zorder=None, unlocked=False, level=0, blacklist=[], parent=None, modpath=None): - super().__init__(name, categories, type, id, None, zorder, unlocked, level, blacklist, parent, modpath) + super().__init__(name, categories, type, id, None, zorder, unlocked, level, blacklist, modpath, parent) def __repr__(self): return f"DollBodypart(name={self.name}, categories={self.categories}, type={self.type}, id={self.id}, color={self.color}, zorder={self.zorder}, unlocked={self.unlocked}, level={self.level}, blacklist={self.blacklist}, parent={self.parent}, modpath={self.modpath or None})" From 86bbceac9116f1c57b5980b6827a53a6040a703d Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Mon, 18 Sep 2023 12:24:42 +0200 Subject: [PATCH 016/249] Writing and fixes * Added and posed Tier 4 Luna Chit-Chats. * Added and posed Luna Gift-Chats. * Fixed some missing colour on "flasher" outfit. * Minor writing fixes. --- .../robe/coat_flasher/2_zorder_-1.webp | 4 +- .../robe/coat_flasher/2_zorder_101.webp | 4 +- .../events/favors/inspect_her_body_tier3.rpy | 2 +- .../events/potions/polyjuice_luna.rpy | 2 +- game/scripts/characters/luna/chitchats.rpy | 52 +++++- .../luna/events/favors/inspect_her_body.rpy | 16 +- .../luna/events/favors/masturbate_for_me.rpy | 9 +- .../luna/events/favors/talk_to_me.rpy | 4 +- game/scripts/characters/luna/events/intro.rpy | 19 +- .../luna/events/spectrespecs/spectrespecs.rpy | 2 +- game/scripts/characters/luna/gifts.rpy | 167 ++++++++++++++---- game/scripts/characters/luna/summon.rpy | 9 +- .../characters/luna/wardrobe_reactions.rpy | 32 ++-- 13 files changed, 223 insertions(+), 99 deletions(-) diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp index 1954c613..b2d55eef 100644 --- a/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_-1.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea81b3d3118ff28aebbc2875aabcda0c4a44d091f36c9842ed6d77c00e0f8e76 -size 7384 +oid sha256:8ae9e532806f99164a717cd70bdb71d4ad6e9d3c949c5d232c36dd54f9b3d2b0 +size 7498 diff --git a/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp b/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp index 69df38f0..899ad8a1 100644 --- a/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp +++ b/game/characters/luna/poses/default/clothes/robe/coat_flasher/2_zorder_101.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f76addc758f6144302af3fb24c25c95b339ce1d568336300155c3096c2ac61df -size 12458 +oid sha256:9c46809f20e082a32a7edbbde25978d6387c1e38c7ca970f3f1905b0196a3e4c +size 13042 diff --git a/game/scripts/characters/cho/events/favors/inspect_her_body_tier3.rpy b/game/scripts/characters/cho/events/favors/inspect_her_body_tier3.rpy index 7ca34f4b..bd591b34 100644 --- a/game/scripts/characters/cho/events/favors/inspect_her_body_tier3.rpy +++ b/game/scripts/characters/cho/events/favors/inspect_her_body_tier3.rpy @@ -510,7 +510,7 @@ label cc_pf_strip_T3_intro_E2: cho @ cheeks blush "..." ("normal", "narrow", "worried", "L") cho @ cheeks heavy_blush "I don't think they're big enough." ("open", "narrow", "worried", "downR") # sad cho @ cheeks heavy_blush "" ("normal", "narrow", "worried", "down") - ton @ hair angry "Big enough for what? Impress some idiot?" ("open", "narrow", "annoyed", "L") + ton @ hair angry "Big enough for what? Impressing some idiot?" ("open", "narrow", "annoyed", "L") ton "No offence, Professor." ("soft", "narrow", "base", "mid") gen "None taken..." ("base", xpos="far_left", ypos="head") ton "You don't need large breasts. Especially not if you want to have a career in Quidditch." ("open", "base", "base", "L") diff --git a/game/scripts/characters/hermione/events/potions/polyjuice_luna.rpy b/game/scripts/characters/hermione/events/potions/polyjuice_luna.rpy index 36280049..50fc73aa 100644 --- a/game/scripts/characters/hermione/events/potions/polyjuice_luna.rpy +++ b/game/scripts/characters/hermione/events/potions/polyjuice_luna.rpy @@ -576,7 +576,7 @@ label her_potion_luna_give: lun "Yes?" ("soft", "base", "raised", "mid") gen "What if you bump into her?" ("base", xpos="far_left", ypos="head") lun "Oh I wouldn't worry about that, [name_genie_hermione]..." ("grin", "narrow", "base", "R") - lun "She will probably think I'm some kind of wrackspurts-induced hallucination or something." ("open", "closed", "base", "mid") + lun "She will probably think I'm some kind of wrackspurt-induced hallucination or something." ("open", "closed", "base", "mid") gen "True." ("base", xpos="far_left", ypos="head") gen "Off you go then." ("base", xpos="far_left", ypos="head") lun "Good day, [name_genie_hermione]." ("base", "base", "base", "mid") diff --git a/game/scripts/characters/luna/chitchats.rpy b/game/scripts/characters/luna/chitchats.rpy index 26ad1325..614003df 100644 --- a/game/scripts/characters/luna/chitchats.rpy +++ b/game/scripts/characters/luna/chitchats.rpy @@ -53,11 +53,11 @@ label luna_chitchat: block: lun "[name_genie_luna]...{w=0.4} There's something I've been meaning to ask you." ("open", "closed", "base", "mid") lun "Could we avoid putting up so many mistletoes during the holiday celebrations?" ("soft", "base", "base", "mid") - lun "It would highly decrease the risk of a Nargle infestation." ("open", "base", "base", "mid") + lun "It would highly decrease the risk of a nargle infestation." ("open", "base", "base", "mid") block: lun "Why are there no school trips at Hogwarts?" ("open", "base", "raised", "mid") - lun "I'd love to take one to Sweden and look for the Crumple-Horned Snorkack." ("grin", "base", "base", "mid") + lun "I'd love to take one to Sweden and look for the crumple-horned snorkack." ("grin", "base", "base", "mid") block: lun "[name_genie_luna], you really need to do something about Peeves." ("annoyed", "base", "base", "R") @@ -155,14 +155,50 @@ label luna_chitchat: block: lun "How come you're so skilled at unhooking a woman's bra, [name_genie_luna]?" ("open", "base", "base", "down") - lun "Wait, what am I saying...{w=0.4} Of course the great Albus Dumbledore can do it with ease..." ("angry", "wide", "base", "mid") + lun "Wait, what am I saying...{w=0.4} Of course the great Albus Dumbledore can do it with ease..." ("angry", "wide", "base", "mid") - # elif states.lun.tier == 4: + elif states.lun.tier == 4: - # lun "My fingers just aren't big enough to get rid of these spurts properly." - # lun "I hope well be able to find even more ways to get rid of them." + random: + block: + lun "My fingers just aren't enough to get rid of these spurts properly." ("open", "narrow", "base", "downR") + lun "I hope we'll be able to find even more ways to get rid of them." ("soft", "narrow", "base", "mid") - # lun "I can't believe how slippery it got down there when you had me touch myself." - # lun "A bunch of slimy buggers is what they are!" + block: + lun "I can't believe how slippery it got down there when you had me touch myself." ("angry", "narrow", "base", "down") + lun "Such a slimy bunch of buggers!" ("angry", "base", "base", "mid") + + block: + lun "I can't wait to see what kind of method you've got in store for me next!" ("grin", "base", "base", "mid") + lun "If only my other classes could be this fun." ("grin", "narrow", "base", "mid") + + block: + lun "Master baiter, master baiter, I could never hate her!" ("smile", "closed", "base", "mid") + lun "Sorry [name_genie_luna]... I think peeves' chanting may have got to me." ("soft", "base", "base", "stare") + + block: + lun "I've noticed that I'm quite ticklish under my feet." ("soft", "base", "base", "down") + lun "Hold on... I wonder if wrackspurts are also affected by gravity..." ("mad", "base", "base", "mid") + + block: + lun "I never once thought that a finger would be able to fit inside me so easily." ("soft", "base", "raised", "down") + lun "I mean... I hadn't even considered putting a finger inside me before..." ("angry", "closed", "base", "mid") + + block: + lun "I've got a feeling... That tonight's gonna be a good night... That tonight's gonna be a go-ood night..." ("smile", "closed", "base", "mid") + lun "Oh, sorry [name_genie_luna]... We've been listening to this classical muggle song during our muggle studies, and I can't get it out of my head." ("angry", "wink", "base", "mid") + + block: + lun "It's a bit embarrassing to say..." ("soft", "narrow", "base", "downR") + lun "But I think I may have wet the bed last night." ("open", "narrow", "base", "downR") + lun "It appears I've gained the ability to expel the wrackspurts in my sleep..." ("angry", "base", "base", "mid") + + block: + lun "I feel quite comfortable being naked." ("open", "closed", "base", "mid") + lun "Of course, there's always the risk of wrackspurts getting inside, but at least I don't have to worry about my underwear getting wet." ("grin", "base", "base", "mid") + + block: + lun "I wonder if you'd be able to brew some sort of smell strengthening potion..." ("soft", "base", "base", "R") + lun "That way we could locate wrackspurts by the smell..." ("soft", "base", "base", "R") return diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index 994925a9..e2bd6b7a 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -114,9 +114,9 @@ label ll_pf_inspect_T2_E1_intro: nar "Focusing your attention on the girl's breasts, you feel your cock harden more and more with each stroke..." - lun "Great! So, what do I have to do to get the Wrackspurts out of them?" ("smile", "base", "base", "mid") + lun "Great! So, what do I have to do to get the wrackspurts out of them?" ("smile", "base", "base", "mid") gen "*Mmm*...{w=0.4} The what, sorry?" ("base", xpos="far_left", ypos="head") - lun "The Wrackspurts, [name_genie_luna]..." ("open", "base", "raised", "mid") + lun "The wrackspurts, [name_genie_luna]..." ("open", "base", "raised", "mid") gen "*Ah*...{w=0.4} Those bloody things." ("base", xpos="far_left", ypos="head") gen "Let's see..." ("base", xpos="far_left", ypos="head") gen "Tell...{w=0.4} *Ngh*...{w=0.4} Tell me a bit about them..." ("base", xpos="far_left", ypos="head") @@ -212,8 +212,8 @@ label ll_pf_inspect_T2_E1_intro: nar "Luna turns back around, and as you get a full view of her front, you feel yourself getting close to the edge." lun @ cheeks blush "So that's how you came up with the idea of rubbing your penis, [name_genie_luna]!" ("grin", "wink", "base", "mid", trans=dissolve) - lun @ cheeks blush "To bait the Wrackspurts to one spot!" ("crooked_smile", "base", "base", "mid") - lun @ cheeks blush "Since your penis is a sensitive area, rubbing it gets the Wrackspurts all excited..." ("smile", "closed", "base", "mid") + lun @ cheeks blush "To bait the wrackspurts to one spot!" ("crooked_smile", "base", "base", "mid") + lun @ cheeks blush "Since your penis is a sensitive area, rubbing it gets the wrackspurts all excited..." ("smile", "closed", "base", "mid") nar "*Fap* *Fap* *Fap*..." @@ -756,7 +756,7 @@ label ll_pf_inspect_T2_E3_intro: elif luna.is_worn("bottom"): nar "Noticing Luna's ever-increasing excitement, you put your hands on either side of her hips, and pull the fabric down swiftly..." elif luna.is_worn("panties"): - nar "You oggle Luna's choice of underwear, before swiftly pulling them down right to her ankles..." + nar "You ogle at Luna's underwear, before swiftly pulling them down right to her ankles..." lun @ cheeks blush "" ("clench", "narrow", "base", "downR") $ luna.strip("clothes") @@ -928,10 +928,10 @@ label ll_pf_inspect_T2_E3_intro: with d5 lun "[name_genie_luna], that was incredible!" ("base", "narrow", "base", "mid") - lun "Did you see how many Wrackspurts I expelled?" ("crooked_smile", "base", "raised", "mid") + lun "Did you see how many wrackspurts I expelled?" ("crooked_smile", "base", "raised", "mid") gen "Very impressive indeed." ("base", xpos="far_left", ypos="head") lun "I can't believe we finally did it!" ("crooked_smile", "happyCl", "base", "mid") - lun "Finally, a foolproof way of expelling Wrackspurts from other areas than your brain!" ("crooked_smile", "narrow", "base", "mid") + lun "Finally, a foolproof way of expelling wrackspurts from other areas than your brain!" ("crooked_smile", "narrow", "base", "mid") gen "Quite the discovery! I'm sure we'll be able to help a lot of backed up people." ("grin", xpos="far_left", ypos="head") lun "Yes!" ("grin", "base", "base", "mid") lun "So, what next? We've solved it now, right?" ("grin", "base", "raised", "mid") @@ -943,7 +943,7 @@ label ll_pf_inspect_T2_E3_intro: gen "No!" ("angry", xpos="far_left", ypos="head") gen "I need to watch--{w=0.2} *Err*...{w=0.4} Instruct you, so you can alleviate yourself properly and safely." ("base", xpos="far_left", ypos="head") lun "Oh, of course [name_genie_luna]!" ("mad", "base", "base", "mid") - lun "Hopefully the Wrackspurts will leave me alone until then..." ("angry", "narrow", "base", "downL") #blush looking down + lun "Hopefully the wrackspurts will leave me alone until then..." ("angry", "narrow", "base", "downL") #blush looking down gen "Hopefully..." ("base", xpos="far_left", ypos="head") gen "(Although I doubt it.)" ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy index ba8c53ea..7b820ef6 100644 --- a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy +++ b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy @@ -619,7 +619,7 @@ label ll_pf_masturbate_T3_E3_intro: lun @ cheeks blush "*Ah*... {heart} Yes..." ("grin", "narrow", "base", "up") gen "By the great desert sands! You're sopping wet!" lun @ cheeks blush "I'm sorry [name_genie_luna]... I just...{w=0.3} Need this really bad...{heart}" ("mad", "happyCl", "base", "stare") - lun @ cheeks blush "These Wrackspurts...{w=0.4} *Ah*..." ("upset", "happyCl", "base", "mid") + lun @ cheeks blush "These wrackspurts...{w=0.4} *Ah*..." ("upset", "happyCl", "base", "mid") lun @ cheeks blush "They've been very tiresome..." ("angry", "narrow", "base", "up") nar "Without being prompted, Luna pushes a finger inside her and starts fingering herself." @@ -790,7 +790,7 @@ label ll_pf_masturbate_T3_E3_intro: gen "(Hold on...)" ("grin", xpos="far_left", ypos="head") lun "*Huh*? Did you have a revelation, [name_genie_hermione]?" ("grin", "base", "raised", "mid") gen "You've just given me a great idea!" ("grin", xpos="far_left", ypos="head") - lun "Oooh! What is it? Is it a new method of dealing with the Wrackspurts?" ("crooked_smile", "base", "base", "mid") + lun "Oooh! What is it? Is it a new method of dealing with the wrackspurts?" ("crooked_smile", "base", "base", "mid") gen "Why yes indeed, [name_luna_genie]!" ("base", xpos="far_left", ypos="head") lun "Marvellous!" ("smile", "happyCl", "base", "mid") gen "Although it might be a hard one, so I hope you're ready to take it on, [name_luna_genie]." ("base", xpos="far_left", ypos="head") @@ -820,6 +820,9 @@ label ll_pf_masturbate_T3_E4_repeat: #Luna chibi walks to desk call lun_walk("desk", "base") + show screen blkfade + with d3 + $ luna.set_face(mouth="base", eyes="base", eyebrows="base", pupils="mid") stop weather fadeout 4 @@ -1057,7 +1060,7 @@ label ll_pf_masturbate_T3_E4_repeat: lun "Yes?" ("base", "base", "raised", "mid") gen "(No wonder she didn't look phased by taking her clothes off...)" ("base", xpos="far_left", ypos="head") gen "How very progressive..." ("base", xpos="far_left", ypos="head") - lun "That way, there are fewer places for the Nargles to hide." ("grin", "base", "base", "mid") + lun "That way, there are fewer places for the nargles to hide." ("grin", "base", "base", "mid") gen "I see..." ("grin", xpos="far_left", ypos="head") gen "(Just smile and nod...)" ("grin", xpos="far_left", ypos="head") gen "Well then... I'll let you know when our next session will be [name_luna_genie]." ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index 10c3180d..2f9e5080 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -433,7 +433,7 @@ label ll_pf_talk_T1_E3_intro: lun "You've done it!" ("smile", "narrow", "base", "mid") gen "I was just scratching--" ("angry", xpos="far_left", ypos="head") gen "Sorry, what did you say?" ("angry", xpos="far_left", ypos="head") - lun "You expelled the Wrackspurts!" ("grin", "happyCl", "base", "mid") + lun "You expelled the wrackspurts!" ("grin", "happyCl", "base", "mid") gen "I did?" ("base", xpos="far_left", ypos="head") lun "And through your penis no less!" ("grin", "base", "base", "downL") lun "You're a genius!" ("grin", "base", "base", "mid") @@ -590,7 +590,7 @@ label ll_pf_talk_T1_E4_repeat: nar "You keep stroking your shaft as Luna watches your every move." nar "Stroking it faster and faster, you feel yourself getting closer and closer to the edge by the second." - lun @ cheeks blush "It's pulsating! How many Wrackspurts do you have in there?" ("disgust", "base", "base", "downL") + lun @ cheeks blush "It's pulsating! How many wrackspurts do you have in there?" ("disgust", "base", "base", "downL") gen "It's...{w=0.4} Filled to the brim!" ("angry", xpos="far_left", ypos="head") lun @ cheeks blush "Do you need me to get Madam Pomfrey?" ("mad", "base", "base", "mid") gen "*Ah*...{w=0.4} Who?" ("angry", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/luna/events/intro.rpy b/game/scripts/characters/luna/events/intro.rpy index 2bd5f951..720e67d6 100644 --- a/game/scripts/characters/luna/events/intro.rpy +++ b/game/scripts/characters/luna/events/intro.rpy @@ -127,7 +127,7 @@ label luna_intro_E1: "-Oral examination-": $ d_flag_01 = True gen "So... What's your name?" ("base", xpos="far_left", ypos="head") - lun "...{w=0.8}Wrackspurts..." ("open", "closed", "low", "mid") + lun "...{w=0.8} Wrackspurts..." ("open", "closed", "low", "mid") gen "Charming..." ("base", xpos="far_left", ypos="head") gen "(I suppose that is a plausible name in this world...)" ("base", xpos="far_left", ypos="head") $ name_luna_genie = "Miss Backspurts?" @@ -137,7 +137,7 @@ label luna_intro_E1: $ mouse_slap() lun "No!" ("angry", "happyCl", "low", "mid") gen "..." ("angry", xpos="far_left", ypos="head") - lun "The Nargles..." ("open", "happyCl", "low", "mid") + lun "The nargles..." ("open", "happyCl", "low", "mid") gen "The what now?" ("base", xpos="far_left", ypos="head") lun "*Inaudible mumbling*..." ("upset", "closed", "low", "mid") gen "*Hmm*..." ("base", xpos="far_left", ypos="head") @@ -493,7 +493,7 @@ label luna_intro_E2: #Luna knocks on door stop music fadeout 1.0 play sound "sounds/knocking.ogg" - "*knock-knock-knock*" + "*Knock-knock-knock*" gen "Who is it?" ("base", xpos="far_left", ypos="head") lun "Luna." @@ -551,7 +551,7 @@ label luna_intro_E2: lun "*Hmm*..." ("soft", "narrow", "raised", "downL") if states.gen.masturbating: - nar "*fap-fap-fap*!" + nar "*Fap-fap-fap*!" gen "(Look at the tits on this girl, such a lovely profile!)" ("angry", xpos="far_left", ypos="head") gen "(And that lush blonde hair! I'd love to wrap it around my dick!)" ("grin", xpos="far_left", ypos="head") else: @@ -570,7 +570,7 @@ label luna_intro_E2: if states.gen.masturbating: gen "(Whatever. As long as I can beat my meat in peace.)" ("grin", xpos="far_left", ypos="head") - nar "*fap-fap-fap*" + nar "*Fap-fap-fap*" call lun_walk("desk", "base") pause 0.25 @@ -602,7 +602,7 @@ label luna_intro_E2: lun "There's such a strange aura in here..." gen "(Yes! It's the aura of me going crazy for you, you fucking slut!)" - nar "{size=+3}*{b}fap{/b}-fap-{b}fap{/b}*{/size}" + nar "{size=+3}*{b}Fap{/b}-fap-{b}fap{/b}*{/size}" else: lun "There's such a strange aura in here..." lun "It's like a big hollow tree..." @@ -647,7 +647,7 @@ label luna_intro_E2: gen "There's more where that came from." ("grin", xpos="far_left", ypos="head") lun "So you can see {i}them{/i} too, Professor?" ("angry", "wide", "base", "mid") gen "See what?" ("base", xpos="far_left", ypos="head") - lun "*sigh* Just as expected." ("upset", "narrow", "base", "down") + lun "*Sigh* Just as expected." ("upset", "narrow", "base", "down") lun "You could see them if you had one of these." ("grin", "base", "base", "mid") else: gen "I can't see anything." ("base", xpos="far_left", ypos="head") @@ -694,7 +694,7 @@ label luna_intro_E2: gen "What are you seeing in this room exactly?" ("base", xpos="far_left", ypos="head") lun "Wrackspurts, sir, and lots of them too!" ("soft", "narrow", "base", "mid") gen "Brackspurts?" ("base", xpos="far_left", ypos="head") - lun "Wrackspurt sir..." ("open", "base", "base", "L") + lun "Wrackspurts, sir..." ("open", "base", "base", "L") gen "I see...{w=0.2} *Err*, I mean I don't." ("base", xpos="far_left", ypos="head") gen "(Is she making all this shit up, or am I supposed to know about these things?)" ("base", xpos="far_left", ypos="head") gen "Well, I can't say I've ever come across these whackspurs you speak of." ("base", xpos="far_left", ypos="head") @@ -706,8 +706,7 @@ label luna_intro_E2: gen "Now I must say that's quite bold for a student to just waltz into their headmasters office and shill their--" ("base", xpos="far_left", ypos="head") lun "Oh... No sir!" ("mad", "narrow", "base", "downL") lun "I'm just worried that we might have an infestation on our hands and--" ("angry", "closed", "base", "mid") - lun "..." ("angry", "narrow", "base", "down") - #Luna eyes down + lun "..." ("angry", "narrow", "base", "down") #Luna looks down pause .5 nar "Luna gives you an uncomfortable look and then turns her gaze to the floor." gen "An infestation?" ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/luna/events/spectrespecs/spectrespecs.rpy b/game/scripts/characters/luna/events/spectrespecs/spectrespecs.rpy index 997a3820..14d901bd 100644 --- a/game/scripts/characters/luna/events/spectrespecs/spectrespecs.rpy +++ b/game/scripts/characters/luna/events/spectrespecs/spectrespecs.rpy @@ -206,7 +206,7 @@ label spectrespecs_E4: gen "(What the--)" ("angry", xpos="far_left", ypos="head") gen "What are you doing, Miss Lovegood?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "It's the Wrackspurts, sir..." ("clench", "narrow", "base", "down") + lun @ cheeks blush "It's the wrackspurts, sir..." ("clench", "narrow", "base", "down") gen "What?" ("base", xpos="far_left", ypos="head") lun @ cheeks blush "They've been bothering me for months..." ("mad", "narrow", "base", "down") diff --git a/game/scripts/characters/luna/gifts.rpy b/game/scripts/characters/luna/gifts.rpy index bc316cee..f02fe736 100644 --- a/game/scripts/characters/luna/gifts.rpy +++ b/game/scripts/characters/luna/gifts.rpy @@ -8,100 +8,189 @@ label give_lun_gift(gift_item): $ states.lun.gifted = True if gift_item == lollipop_ITEM: - lun "A lollipop?" + lun "A lollipop?" ("open", "base", "base", "down") call give_gift("You give the lollipop to Luna...", gift_item) - lun "My father always believed that you should always have something sugary around in case any baby unicorns come to visit." - lun "Thank you, [name_genie_luna]." + lun "My father says that you should always have something sugary around in case a baby unicorn comes to visit." ("grin", "base", "base", "mid") + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") elif gift_item == chocolate_ITEM: - lun "Chocolate?" + lun "Chocolate?" ("grin", "base", "base", "down") call give_gift("You give the chocolate to Luna...", gift_item) - lun "*Aaah*, I heard these helps with dementia... Or was it Dementors?" + lun "I heard that eating chocolate helps with dementia...{w=0.4} Or was it dementors?" ("soft", "narrow", "base", "mid") elif gift_item == plush_owl_ITEM: - lun "A plush owl?" - call give_gift("You give the owl plushie to Luna...", gift_item) - lun "I love owls... Always had a few around me growing up, delivering the newspaper my father publishes." + lun "A plush owl?" ("open", "base", "base", "down") + call give_gift("You give the stuffed owl to Luna...", gift_item) + lun "I love owls... Growing up, there were always a few of them around, delivering my father's newspaper." ("grin", "base", "base", "mid") elif gift_item == butterbeer_ITEM: - lun "Butterbeer?" + lun "Butterbeer?" ("open", "base", "base", "mid") + lun "I could use the cork for another necklace!" ("grin", "base", "base", "mid") call give_gift("You give the bottle to Luna...", gift_item) - lun "How did you know? I didn't wear my cork necklace today." - lun "Thank you, [name_genie_luna]." + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") elif gift_item == science_mag_ITEM: - lun "Magical creatures weekly?" - call give_gift("You give an assortment of educational magazines to Luna...", gift_item) - lun "Thestrals and their link with death..." - lun "Interesting..." + lun "Magical creatures weekly?" ("open", "narrow", "base", "down") + lun "My daddy says that this publication refuses to recognize the existence of the Crumple-horned Snorkack..." ("annoyed", "narrow", "annoyed", "mid") + lun "Sorry [name_genie_luna], but I'll have to refuse." ("open", "closed", "base", "mid") elif gift_item == girls_mag_ITEM: - call give_gift("You give the girls magazine to Luna...",gift_item) - #Add text + lun "Girlz weekly?" ("soft", "base", "raised", "down") + lun "This must be one of those magazines my daddy warned me about!" ("angry", "base", "base", "down") + lun "[name_genie_luna]!" ("angry", "base", "base", "mid") + lun "They're corporate shills who prioritize selling their own products over advocating for the use of essential oils!" ("angry", "base", "base", "mid") + lun "That's what my daddy told me, anyway." ("grin", "closed", "base", "mid") elif gift_item == adult_mag_ITEM: - call give_gift("You give the adult magazine to Luna...",gift_item) - #Add text + lun "This isn't \"The Quibbler\"..." ("open", "base", "worried", "down") + lun "[name_genie_luna], you shouldn't be helping my daddy's competition!" ("angry", "base", "worried", "mid") + lun "Please, issue a refund!" ("open", "base", "worried", "mid") elif gift_item == porn_mag_ITEM: - call give_gift("You give the porn magazine to Luna...",gift_item) - #Add text + lun "This isn't \"The Quibbler\"..." ("annoyed", "base", "base", "down") + lun "[name_genie_luna], you shouldn't be helping my daddy's competition!" ("angry", "base", "annoyed", "mid") + lun "Please, issue a refund!" ("angry", "base", "base", "mid") elif gift_item == krum_poster_ITEM: - call give_gift("You give the poster to Luna...",gift_item) - #Add text + lun "Viktor Krum..." ("soft", "base", "raised", "down") + lun "Who is that, again?" ("open", "base", "raised", "mid") + lun "I'm uncertain if it's such a good idea to put this up on my wall, just in case the other girls ask me about it." ("upset", "base", "base", "down") + lun "I appreciate the thought though, [name_genie_luna]." ("base", "base", "base", "mid") elif gift_item == sexy_lingerie_ITEM: + lun "I've seen a couple of the other girls wearing these!" ("soft", "base", "base", "down") call give_gift("You give the lingerie to Luna...",gift_item) - #Add text + lun "Thank you, [name_genie_luna]!" ("base", "base", "base", "mid") elif gift_item == sexy_stockings_ITEM : + lun "Very unique! I like it!" ("grin", "base", "base", "down") call give_gift("You give the stockings to Luna...",gift_item) - #Add text + lun "Thank you, [name_genie_luna]!" ("base", "base", "base", "mid") elif gift_item == pink_condoms_ITEM: + lun "Condoms?!" ("mad", "wide", "base", "mid") + lun "... I never knew they sold those rubbery creatures." ("angry", "base", "base", "stare") + lun "Yes, we shall study them thoroughly!" ("base", "base", "base", "mid") call give_gift("You give the condoms to Luna...",gift_item) - #Add text + lun "Thank you [name_genie_luna]." ("grin", "base", "base", "mid") elif gift_item == vibrator_ITEM: + lun "A back-massager!" ("grin", "base", "base", "down") call give_gift("You give the vibrator to Luna...",gift_item) - #Add text + lun "Thank you, [name_genie_luna]!" ("grin", "base", "base", "mid") elif gift_item == anal_lube_ITEM: + lun "Lube?" ("soft", "base", "raised", "down") + lun "Will this help me get rid of the wrackspurts?" ("open", "base", "raised", "mid") call give_gift("You give the anal lube to Luna...",gift_item) - #Add text + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") elif gift_item == ballgag_and_cuffs_ITEM: + lun "What is this?" ("soft", "base", "raised", "down") + lun "Does this go in your mouth?" ("open", "base", "raised", "down") + lun "But, [name_genie_luna]... How am I supposed to talk if I wear this?" ("annoyed", "narrow", "base", "mid") call give_gift("You give the handcuffs to Luna...",gift_item) - #Add text + lun "Thank you, I suppose..." ("soft", "base", "base", "downR") elif gift_item == anal_plugs_ITEM: - call give_gift("You give the anal plugs to Luna...",gift_item) - #Add text + if states.lun.tier <= 1: + lun "Anal... plugs?" ("soft", "narrow", "raised", "down") + lun "I don't understand..." ("annoyed", "base", "base", "mid") + elif states.lun.tier == 2: + lun "Anal plugs..." ("soft", "base", "base", "down") + lun "Are these supposed to help with the wrackspurts?" ("open", "base", "annoyed", "mid") + call give_gift("You give the anal plugs to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") + elif states.lun.tier == 3: + lun "Anal plugs..." ("open", "base", "base", "down") + lun "Yes, I should probably use one of these to assist with redirecting the wrackspurts to a single area..." ("grin", "base", "base", "down") + call give_gift("You give the anal plugs to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") + else: + lun "*Mmm*... Anal plugs... I bet these will feel good..." ("grin", "narrow", "base", "down") + lun "I mean, I bet these will help me deal with the wrackspurts!" ("angry", "base", "base", "mid") + call give_gift("You give the anal plugs to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") elif gift_item == testral_strapon_ITEM: - call give_gift("You give the strap-on to Luna...",gift_item) - #Add text + if states.lun.tier <= 1: + lun "A unicorn horn!" ("smile", "wide", "base", "down") + call give_gift("You give the strap-on to Luna...",gift_item) + lun "I love it!" ("grin", "wide", "base", "mid") + elif states.lun.tier == 2: + lun "This is some sort of phallus, isn't it?" ("soft", "base", "base", "down") + lun "Very peculiar..." ("soft", "base", "base", "down") + lun "I shall study it for our research." ("open", "closed", "base", "mid") + call give_gift("You give the strap-on to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") + elif states.lun.tier == 3: + lun "A penis!" ("grin", "base", "base", "down") + lun "But, what are the straps for?" ("open", "base", "base", "down") + lun "*Hmm*... I'll have to study it..." ("soft", "base", "base", "down") + call give_gift("You give the strap-on to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") + elif states.lun.tier == 4: + lun "So, if I wore this... I'll have my own penis?" ("open", "base", "base", "down") + lun "But, [name_genie_luna], I don't think I'll be able to funnel the wrackspurts through this..." ("angry", "base", "base", "mid") + lun "There's no hole!" ("angry", "narrow", "base", "mid") + else: + lun "*Hmm*... You're supposed to put your legs through these holes, right?" ("open", "base", "base", "down") + lun "But [name_genie_luna], this would cover up my lady parts!" ("angry", "base", "base", "mid") + lun "Wait...{w=0.4} You're testing me! Did I pass?" ("angry", "narrow", "base", "mid") elif gift_item == broom_2000_ITEM: - call give_gift("You give the broom to Luna...",gift_item) - #Add text + if states.lun.tier <= 1: + lun "A broom?" ("open", "base", "raised", "down") + lun "Hold on, there's an attachment on this seat..." ("angry", "base", "low", "down") + lun "Oh, it's an art piece!" ("grin", "base", "base", "down") + call give_gift("You give the broom to Luna...",gift_item) + lun "Thank you, [name_genie_luna]!" ("base", "base", "base", "mid") + elif states.lun.tier == 2: + lun "A broom, with an attached penis?" ("open", "base", "raised", "down") + lun "Oh! You want me to study it, even when I'm flying?" ("grin", "base", "base", "mid") + lun "Wait... That can't be it..." ("angry", "base", "base", "mid") + call give_gift("You give the broom to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") + elif states.lun.tier == 3: + lun "A broom with a penis attached to it?" ("soft", "base", "base", "down") + lun "I never knew brooms could grow penises..." ("soft", "base", "raised", "mid") + lun "You learn something new every day..." ("grin", "base", "base", "mid") + call give_gift("You give the broom to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") + elif states.lun.tier == 4: + lun "A broom with a penis on it... Or is that two penises?" ("soft", "base", "raised", "down") + lun "How very strange..." ("open", "narrow", "base", "down") + lun "I shall study it." ("base", "base", "base", "mid") + call give_gift("You give the broom to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("grin", "base", "base", "mid") + else: + lun "A penis broom?" ("soft", "base", "raised", "down") + lun "Or is it a broom penis, perhaps?" ("open", "narrow", "base", "down") + lun "Very interesting..." ("base", "base", "base", "mid") + call give_gift("You give the broom to Luna...",gift_item) + lun "Thank you, [name_genie_luna]." ("grin", "base", "base", "mid") elif gift_item == sexdoll_ITEM: + lun "A doll?" ("open", "base", "base", "down") + lun "It says Joanne on it." ("soft", "narrow", "raised", "down") + lun "Well, hello there Joanne." ("grin", "base", "base", "down") call give_gift("You give the doll to Luna...",gift_item) - #Add text + lun "I'm sure we're going to be great friends..." ("smile", "base", "base", "down") elif gift_item == anal_beads_ITEM: + lun "Such a lovely necklace!" ("grin", "narrow", "base", "down") call give_gift("You give the anal beads to Luna...",gift_item) - #Add text + lun "Thank you, [name_genie_luna]." ("grin", "base", "base", "mid") elif gift_item == wine_ITEM: + lun "Wine... How lovely!" ("grin", "base", "base", "down") call give_gift("You give the wine to Luna...", gift_item) - #Add text + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") elif gift_item == firewhisky_ITEM: + lun "Firewhisky... How lovely!" ("grin", "base", "base", "down") call give_gift("You give the firewhisky to Luna...", gift_item) - #Add text + lun "Thank you, [name_genie_luna]" ("base", "base", "base", "mid") lun "" (xpos="base",ypos="base") hide luna_main diff --git a/game/scripts/characters/luna/summon.rpy b/game/scripts/characters/luna/summon.rpy index 5229db0a..2d1b3094 100644 --- a/game/scripts/characters/luna/summon.rpy +++ b/game/scripts/characters/luna/summon.rpy @@ -55,14 +55,11 @@ label summon_luna: nar "You haven't unlocked this feature yet." jump luna_requests - "-Give Item-" (icon="interface/icons/small/gift.webp"): - $ TBA_message() + "-Give Item-" (icon="interface/icons/small/gift.webp") if states.lun.favors_unlocked: + hide luna_main with d1 + call gift_menu jump luna_requests - # hide luna_main with d1 - # call gift_menu - # jump luna_requests - # Dismiss "-Dismiss her-": stop music fadeout 3.0 diff --git a/game/scripts/characters/luna/wardrobe_reactions.rpy b/game/scripts/characters/luna/wardrobe_reactions.rpy index 3fd9280c..0ca23527 100644 --- a/game/scripts/characters/luna/wardrobe_reactions.rpy +++ b/game/scripts/characters/luna/wardrobe_reactions.rpy @@ -28,10 +28,10 @@ define lun_responses = { label lun_reaction_category_fail(category): if category == "upper undergarment": - lun "Is this part of our Wrackspurt research [name_genie_luna]?" ("open", "base", "raised", "mid") + lun "Is this part of our wrackspurt research [name_genie_luna]?" ("open", "base", "raised", "mid") gen "*Err*... I just thought maybe you could... Never mind..." ("base", xpos="far_left", ypos="head") elif category == "lower undergarment": - lun "Is this part of our Wrackspurt research [name_genie_luna]?" ("soft", "base", "base", "mid") + lun "Is this part of our wrackspurt research [name_genie_luna]?" ("soft", "base", "base", "mid") gen "*Err*... I just thought maybe you could... Never mind..." ("base", xpos="far_left", ypos="head") elif category == "piercings & tattoos": @@ -77,7 +77,7 @@ label lun_reaction_touch(what): elif states.lun.tier == 3: random: lun "Is my head another one of those sensitive areas you spoke about?" ("open", "base", "raised", "mid") - lun "I don't think there's anywhere for me to release the Wrackspurts from up there, but thank you anyway..." ("base", "narrow", "base", "mid") + lun "I don't think there's anywhere for me to release the wrackspurts from up there, but thank you anyway..." ("base", "narrow", "base", "mid") lun "Are you sure this technique is working [name_genie_luna]?" ("annoyed", "base", "raised", "mid") elif states.lun.tier == 2: random: @@ -94,7 +94,7 @@ label lun_reaction_touch(what): else: #Tier 1 random: lun "I think I lost a pencil up there, let me know if you find it." ("soft", "base", "base", "up") - lun "I already checked for Nargles this morning but I suppose you can't be too careful..." ("base", "base", "base", "down") + lun "I already checked for nargles this morning but I suppose you can't be too careful..." ("base", "base", "base", "down") block: lun "Thank you [name_genie_luna]." ("grin", "closed", "base", "mid") @@ -118,7 +118,7 @@ label lun_reaction_touch(what): random: lun @ cheeks blush "Come... Come out already..." ("soft", "closed", "base", "mid") block: - lun @ cheeks blush "*Mmm*... How come I don't really see any of the Wrackspurts coming out from here?" ("disgust", "narrow", "base", "mid") + lun @ cheeks blush "*Mmm*... How come I don't really see any of the wrackspurts coming out from here?" ("disgust", "narrow", "base", "mid") gen "*Err*..." ("base", xpos="far_left", ypos="head") lun @ cheeks blush "It feels really good so why aren't any of them coming out?" ("annoyed", "base", "base", "mid") block: @@ -154,13 +154,13 @@ label lun_reaction_touch(what): if states.lun.tier == 5: random: lun @ cheeks blush "*Ah*... S-so good... How did I ever live without this?" ("normal", "closed", "base", "mid") - lun @ cheeks blush "*Mmm*... Nasty... Wrackspurts..." ("base", "closed", "base", "mid") + lun @ cheeks blush "*Mmm*... Nasty... wrackspurts..." ("base", "closed", "base", "mid") lun @ cheeks blush "Please... Help me get rid of them again..." ("crooked_smile", "narrow", "base", "mid") elif states.lun.tier == 4: random: lun @ cheeks blush "Whoa... I didn't think just using your mouth could produce such a strong response." ("open", "wide", "base", "mid") lun @ cheeks blush "*Ah*... It's almost like a ripple of water... Except running through my body..." ("soft", "closed", "base", "mid") - lun @ cheeks blush "*Mmm*... Those nasty Wrackspurts... I can feel them getting agitated already..." ("grin", "narrow", "base", "downR") + lun @ cheeks blush "*Mmm*... Those nasty wrackspurts... I can feel them getting agitated already..." ("grin", "narrow", "base", "downR") elif states.lun.tier == 3: random: lun @ cheeks blush "*Ohhhh*... This is going to be my new happy memory when I have to summon a patronus!" ("base", "narrow", "base", "down") @@ -220,7 +220,7 @@ label lun_reaction_equip_fail(item): lun "*Hmm*..." ("annoyed", "base", "base", "mid") gen "What?" ("base", xpos="far_left", ypos="head") lun "There's a weird aura surrounding this piece of garment." ("open", "closed", "base", "mid") - lun "It seems to be affecting the Wrackspurts, as if they're multiplying!" ("disgust", "base", "base", "mid") + lun "It seems to be affecting the wrackspurts, as if they're multiplying!" ("disgust", "base", "base", "mid") if states.lun.level < 4: lun "I'm sorry [name_genie_luna] but I can't wear that... Not until we find a way of dealing with them." ("open", "closed", "base", "mid") else: @@ -376,10 +376,10 @@ label lun_reaction_equip_outfit(item): elif item == lun_outfit_lace1: #Req 7 (bra, panties) gen "Put on this lace lingerie for me will you?" ("base", xpos="far_left", ypos="head") lun "These are pretty..." ("soft", "base", "base", "down") - lun "But don't you think the Nargles would try to hide in them?" ("angry", "base", "base", "mid") + lun "But don't you think the nargles would try to hide in them?" ("angry", "base", "base", "mid") gen "*Err*... Don't you mean the spurts?" ("base", xpos="far_left", ypos="head") - lun "No [name_genie_luna]...{w=0.4} Nargles loves anything with roses on them..." ("soft", "narrow", "base", "mid") - lun "Although now that you mention it, Nargles and Wrackspurts don't like each other so perhaps it's a good time to test that theory." ("grin", "base", "base", "mid") + lun "No [name_genie_luna]...{w=0.4} nargles loves anything with roses on them..." ("soft", "narrow", "base", "mid") + lun "Although now that you mention it, nargles and wrackspurts don't like each other so perhaps it's a good time to test that theory." ("grin", "base", "base", "mid") ######################## ## Rave Bikini Outfit ## @@ -674,7 +674,7 @@ label lun_reaction_equip_outfit_fail(item): gen "Why not?" ("base", xpos="far_left", ypos="head") lun "If I stood here for too long without a bra, then I don't doubt they'd get to me!" ("angry", "closed", "worried", "mid") gen "Who?" ("base", xpos="far_left", ypos="head") - lun "The Wrackspurts!" ("angry", "wink", "base", "mid") + lun "The wrackspurts!" ("angry", "wink", "base", "mid") gen "Oh..." ("base", xpos="far_left", ypos="head") gen "(Maybe I could convince her once she's more confident about dealing with the spurts...)" ("base", xpos="far_left", ypos="head") @@ -706,7 +706,7 @@ label lun_reaction_equip_outfit_fail(item): gen "And skip the underwear." ("base", xpos="far_left", ypos="head") if states.lun.level < 4: lun "But [name_genie_luna]!" ("angry", "wide", "base", "mid") - lun "What about the Wrackspurts?" ("clench", "wink", "base", "mid") + lun "What about the wrackspurts?" ("clench", "wink", "base", "mid") gen "What do you mean, what about the spurts?" ("base", xpos="far_left", ypos="head") lun "They'll be able to get in there if I'm not wearing any underwear!" ("clench", "base", "base", "mid") gen "Really?" ("base", xpos="far_left", ypos="head") @@ -743,7 +743,7 @@ label lun_reaction_equip_outfit_fail(item): lun "But [name_genie_luna]!" ("mad", "base", "base", "down") lun "These got roses on them!" ("angry", "narrow", "base", "down") gen "So?" ("base", xpos="far_left", ypos="head") - lun "The Nargles would surely try and hide in them if I put this on!" ("clench", "happyCl", "base", "mid") + lun "The nargles would surely try and hide in them if I put this on!" ("clench", "happyCl", "base", "mid") gen "(How many of these made up things does she believe in?)" ("base", xpos="far_left", ypos="head") ######################## @@ -869,7 +869,7 @@ label lun_reaction_equip_outfit_fail(item): gen "I've got this latex outfit for you to wear." ("base", xpos="far_left", ypos="head") lun "Latex?" ("soft", "base", "raised", "mid") gen "That's right... It's this one right here." ("base", xpos="far_left", ypos="head") - lun "But... There are holes in it... What about the Wrackspurts?" ("angry", "base", "low", "mid") + lun "But... There are holes in it... What about the wrackspurts?" ("angry", "base", "low", "mid") gen "*Err*..." ("base", xpos="far_left", ypos="head") lun "*Phew*... Disaster, successfully avoided." ("base", "closed", "base", "mid") @@ -994,7 +994,7 @@ label lun_reaction_blacklist(item): lun "It seems no bra can fit in this garment." ("open", "base", "base", "down") if "panties" in item.blacklist and luna.is_worn("panties"): - lun "The Wrackspurts would have a feast as I would not be able to wear panties with this." ("upset", "narrow", "base", "down") + lun "The wrackspurts would have a feast as I would not be able to wear panties with this." ("upset", "narrow", "base", "down") gen "Trust me, I know what I'm doing." ("base", xpos="far_left", ypos="head") lun "If you say so [name_genie_luna]." ("base", "base", "base", "mid") From fb14f83e21017d6f384db14ce2f67c61499dd043 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 11 Oct 2023 15:43:08 +0200 Subject: [PATCH 017/249] Fixes and improvements * Added tier checks to Hermione chit-chats. * Fixed issue when picking Hermione's "Mudblood" nickname where no dialogue would play if you haven't fucked her. * Minor writing fixes. --- .../scripts/characters/hermione/chitchats.rpy | 579 +++++++++--------- .../events/requests/flash_your_tits.rpy | 2 +- game/scripts/characters/hermione/talk.rpy | 161 +++-- 3 files changed, 372 insertions(+), 370 deletions(-) diff --git a/game/scripts/characters/hermione/chitchats.rpy b/game/scripts/characters/hermione/chitchats.rpy index da1a7464..cfc3b758 100644 --- a/game/scripts/characters/hermione/chitchats.rpy +++ b/game/scripts/characters/hermione/chitchats.rpy @@ -7,7 +7,7 @@ label hermione_chitchat: $ states.her.chatted = True ### Tier 1 ### - if states.her.level >= 0 and states.her.level <= 3: + if states.her.tier == 1: random: block: her "Maybe, if I work harder, I could squeeze a few more classes into my schedule..." ("open", "closed", "angry", "mid") @@ -59,126 +59,127 @@ label hermione_chitchat: her "" ("normal", "base", "base", "mid") ### Tier 2 Low ### - if states.her.level >= 4 and states.her.level <= 6: - random: - block: - her "I read somewhere that a full moon often makes it easier to concentrate at a task at hand..." ("open", "closed", "angry", "mid") - her "" ("normal", "base", "base", "mid") + if states.her.tier == 2: + if states.her.level <= 6: + random: + block: + her "I read somewhere that a full moon often makes it easier to concentrate at a task at hand..." ("open", "closed", "angry", "mid") + her "" ("normal", "base", "base", "mid") - block: - her "I love nothing more than to curl up by a fireplace during a rainstorm with a good book..." ("base", "base", "base", "mid") - her "" ("base", "base", "base", "mid") + block: + her "I love nothing more than to curl up by a fireplace during a rainstorm with a good book..." ("base", "base", "base", "mid") + her "" ("base", "base", "base", "mid") - block: - her "A peculiar rumour concerning professor Snape has been circulating in the school lately..." ("open", "base", "worried", "R") - her "No, I probably shouldn't..." ("soft", "base", "base", "mid") - her "" ("normal", "base", "base", "mid") + block: + her "A peculiar rumour concerning professor Snape has been circulating in the school lately..." ("open", "base", "worried", "R") + her "No, I probably shouldn't..." ("soft", "base", "base", "mid") + her "" ("normal", "base", "base", "mid") - block if states.her.status.show_bra or states.her.status.show_panties: - her "Despite the questionable nature of the favours you have been buying from me lately, [name_genie_hermione]..." ("open", "closed", "angry", "mid") - her "I am grateful to you for your help..." ("open", "closed", "angry", "mid") - her "Gryffindor needs those points now more than ever..." ("annoyed", "squint", "angry", "mid") - her "" ("normal", "base", "base", "mid") + block if states.her.status.show_bra or states.her.status.show_panties: + her "Despite the questionable nature of the favours you have been buying from me lately, [name_genie_hermione]..." ("open", "closed", "angry", "mid") + her "I am grateful to you for your help..." ("open", "closed", "angry", "mid") + her "Gryffindor needs those points now more than ever..." ("annoyed", "squint", "angry", "mid") + her "" ("normal", "base", "base", "mid") - block: - her "Quidditch being so popular is simply beyond me..." ("open", "closed", "angry", "mid") - her "I mean, the game doesn't make any sense..." ("open", "closed", "angry", "mid") - her "" ("normal", "base", "base", "mid") + block: + her "Quidditch being so popular is simply beyond me..." ("open", "closed", "angry", "mid") + her "I mean, the game doesn't make any sense..." ("open", "closed", "angry", "mid") + her "" ("normal", "base", "base", "mid") - block: - her "The \"Men's Rights Movement\" is steadily gaining popularity." ("open", "closed", "angry", "mid") - her "It's very fulfilling to know that I am helping to improve our society." ("open", "closed", "angry", "mid") - her "" ("normal", "base", "base", "mid") + block: + her "The \"Men's Rights Movement\" is steadily gaining popularity." ("open", "closed", "angry", "mid") + her "It's very fulfilling to know that I am helping to improve our society." ("open", "closed", "angry", "mid") + her "" ("normal", "base", "base", "mid") - block: - her "The Hogwarts school library is considered to be quite extensive..." ("open", "closed", "angry", "mid") - her "Still... I'd like it to be bigger." ("open", "squint", "base", "mid") - her "" ("normal", "base", "base", "mid") + block: + her "The Hogwarts school library is considered to be quite extensive..." ("open", "closed", "angry", "mid") + her "Still... I'd like it to be bigger." ("open", "squint", "base", "mid") + her "" ("normal", "base", "base", "mid") - block: - her "As one of the top students in this school, I have a reputation to keep..." ("open", "base", "worried", "R") - her "People look up to me..." ("open", "base", "worried", "R") - her "... So, your discretion is very appreciated, [name_genie_hermione]." ("open", "base", "base", "mid") - her "" ("annoyed", "base", "worried", "R") + block: + her "As one of the top students in this school, I have a reputation to keep..." ("open", "base", "worried", "R") + her "People look up to me..." ("open", "base", "worried", "R") + her "... So, your discretion is very appreciated, [name_genie_hermione]." ("open", "base", "base", "mid") + her "" ("annoyed", "base", "worried", "R") - block if states.her.status.show_bra or states.her.status.show_panties: - her "That favour I sold you the other day, [name_genie_hermione]..." ("open", "base", "worried", "mid") - her "......." ("normal", "happyCl", "worried", "mid") - her "I only agreed to it because the needs of my house always come first." ("open", "narrow", "worried", "down") - her "I just wanted you to know that, [name_genie_hermione]..." ("upset", "closed", "base", "mid") + block if states.her.status.show_bra or states.her.status.show_panties: + her "That favour I sold you the other day, [name_genie_hermione]..." ("open", "base", "worried", "mid") + her "......." ("normal", "happyCl", "worried", "mid") + her "I only agreed to it because the needs of my house always come first." ("open", "narrow", "worried", "down") + her "I just wanted you to know that, [name_genie_hermione]..." ("upset", "closed", "base", "mid") - block: - her "My favourite subject?" ("open", "base", "base", "mid") - her "*Hmm*..." ("soft", "base", "base", "R") - her "I suppose that would be \"charms\"..." ("open", "base", "base", "mid") - her "Or \"transfiguration\" perhaps..." ("open", "base", "base", "mid") - her "Although I do enjoy \"arithmancy\"..." ("open", "base", "base", "mid") - her "" ("soft", "base", "base", "mid") + block: + her "My favourite subject?" ("open", "base", "base", "mid") + her "*Hmm*..." ("soft", "base", "base", "R") + her "I suppose that would be \"charms\"..." ("open", "base", "base", "mid") + her "Or \"transfiguration\" perhaps..." ("open", "base", "base", "mid") + her "Although I do enjoy \"arithmancy\"..." ("open", "base", "base", "mid") + her "" ("soft", "base", "base", "mid") - block if not hermione.is_worn("top", "bottom"): - her "Yes, standing in-front of your headmaster without a top or bottoms is completely normal..." ("open", "closed", "base", "mid") - her "I suppose you are helping me..." ("open", "base", "base", "mid") + block if not hermione.is_worn("top", "bottom"): + her "Yes, standing in-front of your headmaster without a top or bottoms is completely normal..." ("open", "closed", "base", "mid") + her "I suppose you are helping me..." ("open", "base", "base", "mid") - ### Tier 2 High ### - if states.her.level >= 7 and states.her.level <= 9: - random: - her "I dislike the entire house of Slytherin with all my heart, [name_genie_hermione]." ("angry", "base", "angry", "mid") + ### Tier 2 High ### + else: + random: + her "I dislike the entire house of Slytherin with all my heart, [name_genie_hermione]." ("angry", "base", "angry", "mid") - block if states.her.status.show_panties: - her "Do you remember when you asked me to show you my panties for the first time, [name_genie_hermione]?" ("open", "closed", "angry", "mid") - her "I was so furious with you then..." ("open", "closed", "angry", "mid") - her "Now I see that I was just being selfish..." ("annoyed", "squint", "angry", "mid") - her "After all, the honour of my house is at stake here..." ("annoyed", "squint", "angry", "mid") - her "And that shall be my one and only concern!" ("normal", "squint", "angry", "mid") + block if states.her.status.show_panties: + her "Do you remember when you asked me to show you my panties for the first time, [name_genie_hermione]?" ("open", "closed", "angry", "mid") + her "I was so furious with you then..." ("open", "closed", "angry", "mid") + her "Now I see that I was just being selfish..." ("annoyed", "squint", "angry", "mid") + her "After all, the honour of my house is at stake here..." ("annoyed", "squint", "angry", "mid") + her "And that shall be my one and only concern!" ("normal", "squint", "angry", "mid") - block: - her "The rate at which the Slytherin house has been gaining points lately is simply ridiculous." ("open", "closed", "angry", "mid") - her "I think professor Snape might be behind it." ("angry", "base", "angry", "mid") - her "You should look into this, [name_genie_hermione]." ("open", "closed", "angry", "mid") - her "" ("normal", "base", "base", "mid") + block: + her "The rate at which the Slytherin house has been gaining points lately is simply ridiculous." ("open", "closed", "angry", "mid") + her "I think professor Snape might be behind it." ("angry", "base", "angry", "mid") + her "You should look into this, [name_genie_hermione]." ("open", "closed", "angry", "mid") + her "" ("normal", "base", "base", "mid") - block: - her "Ashwinder eggs, rose thorns, moonstone..." ("open", "base", "worried", "R") - her "*Huh*? Am I thinking out loud again?" ("open", "base", "worried", "mid") - her "I apologise..." ("grin", "happyCl", "worried", "mid",emote="sweat") - her "It's just that we have another test soon..." ("soft", "base", "base", "R") + block: + her "Ashwinder eggs, rose thorns, moonstone..." ("open", "base", "worried", "R") + her "*Huh*? Am I thinking out loud again?" ("open", "base", "worried", "mid") + her "I apologise..." ("grin", "happyCl", "worried", "mid",emote="sweat") + her "It's just that we have another test soon..." ("soft", "base", "base", "R") - block: - her "Hogwarts has really become a second home to me lately..." ("open", "closed", "base", "mid") - her "I don't even miss my parents nearly as much anymore..." ("annoyed", "narrow", "worried", "down") - her "Come to think of it, I don't miss them at all..." ("angry", "wide", "base", "stare") - her "I'm an awful daughter..." ("angry", "narrow", "base", "down") + block: + her "Hogwarts has really become a second home to me lately..." ("open", "closed", "base", "mid") + her "I don't even miss my parents nearly as much anymore..." ("annoyed", "narrow", "worried", "down") + her "Come to think of it, I don't miss them at all..." ("angry", "wide", "base", "stare") + her "I'm an awful daughter..." ("angry", "narrow", "base", "down") - block: - her "*Yawn*! I read about this technique that supposedly allows you to cut your sleep time in half..." ("annoyed", "narrow", "annoyed", "up") - her "I don't think it's working though... *Yawn*!" ("annoyed", "narrow", "worried", "down") + block: + her "*Yawn*! I read about this technique that supposedly allows you to cut your sleep time in half..." ("annoyed", "narrow", "annoyed", "up") + her "I don't think it's working though... *Yawn*!" ("annoyed", "narrow", "worried", "down") - block: - her "Even after I graduate from Hogwarts, I plan to keep on working hard." ("open", "closed", "angry", "mid") - her "If I give it my all, I can make this world a better place, I know it!" ("open", "base", "base", "mid") - her "" ("normal", "base", "base", "mid") + block: + her "Even after I graduate from Hogwarts, I plan to keep on working hard." ("open", "closed", "angry", "mid") + her "If I give it my all, I can make this world a better place, I know it!" ("open", "base", "base", "mid") + her "" ("normal", "base", "base", "mid") - block: - her "Somehow I have the feeling that this year will become a pivotal turning point in my life..." ("open", "base", "worried", "mid") - her "" ("soft", "base", "base", "R") + block: + her "Somehow I have the feeling that this year will become a pivotal turning point in my life..." ("open", "base", "worried", "mid") + her "" ("soft", "base", "base", "R") - block: - her "Some of the less travelled school corridors are not very well lit, and rather dusty..." ("open", "closed", "angry", "mid") - her "Please take care of this, [name_genie_hermione]..." ("open", "closed", "angry", "mid") - her "" ("normal", "base", "base", "mid") + block: + her "Some of the less travelled school corridors are not very well lit, and rather dusty..." ("open", "closed", "angry", "mid") + her "Please take care of this, [name_genie_hermione]..." ("open", "closed", "angry", "mid") + her "" ("normal", "base", "base", "mid") - block: - her "I've read about this thing called a \"Time-Turner\"." ("open", "base", "base", "mid") - her "It allows the user to control the flow of time..." ("open", "base", "base", "mid") - her "Having a device like that would do wonders for my schedule..." ("open", "closed", "base", "mid") - her "" ("annoyed", "squint", "base", "mid") + block: + her "I've read about this thing called a \"Time-Turner\"." ("open", "base", "base", "mid") + her "It allows the user to control the flow of time..." ("open", "base", "base", "mid") + her "Having a device like that would do wonders for my schedule..." ("open", "closed", "base", "mid") + her "" ("annoyed", "squint", "base", "mid") - block if not hermione.is_worn("top", "bottom"): - her "Is it just me, or is it a bit chilly in here?" ("open", "closed", "base", "mid") - her "It must be due to my current state of undress..." ("open", "base", "base", "mid") + block if not hermione.is_worn("top", "bottom"): + her "Is it just me, or is it a bit chilly in here?" ("open", "closed", "base", "mid") + her "It must be due to my current state of undress..." ("open", "base", "base", "mid") ### Tier 3 ### - if states.her.level >= 10 and states.her.level <= 12: + if states.her.tier == 3: random: block: her "My \"men's rights movement\" has been losing its popularity lately..." ("open", "base", "worried", "mid") @@ -239,118 +240,119 @@ label hermione_chitchat: her "No, you'll still have to pay me for that." ("open", "base", "base", "mid") ### Tier 4 Low ### - if states.her.level >= 13 and states.her.level <= 15: - random: - her "What will it be today, [name_genie_hermione]?" ("annoyed", "narrow", "annoyed", "mid") + if states.her.tier == 4: + if states.her.level <= 15: + random: + her "What will it be today, [name_genie_hermione]?" ("annoyed", "narrow", "annoyed", "mid") - block: - her "[name_genie_hermione], with all due respect..." ("normal", "squint", "angry", "mid") - her "Professor Snape's debauchery is getting out of hand!" ("normal", "squint", "angry", "mid") - her "You must do something, [name_genie_hermione]." ("open", "base", "worried", "mid") - her "" ("normal", "base", "base", "mid") + block: + her "[name_genie_hermione], with all due respect..." ("normal", "squint", "angry", "mid") + her "Professor Snape's debauchery is getting out of hand!" ("normal", "squint", "angry", "mid") + her "You must do something, [name_genie_hermione]." ("open", "base", "worried", "mid") + her "" ("normal", "base", "base", "mid") - #block: - #her "I am willing to go to great lengths to insure the superiority of my house..." ("open", "closed", "angry", "mid") - #her "But that does not mean that I take pleasure in selling myself out to you in exchange for house points, [name_genie_hermione]." ("open", "closed", "angry", "mid") - #her "{size=-4}(Like some sort of prostitute-witch...){/size}" ("angry", "narrow", "base", "down") + #block: + #her "I am willing to go to great lengths to insure the superiority of my house..." ("open", "closed", "angry", "mid") + #her "But that does not mean that I take pleasure in selling myself out to you in exchange for house points, [name_genie_hermione]." ("open", "closed", "angry", "mid") + #her "{size=-4}(Like some sort of prostitute-witch...){/size}" ("angry", "narrow", "base", "down") - block: - her "Lately I have not been studying nearly as much as I used to..." ("open", "base", "worried", "mid") - her "Am I losing my motivation?" ("open", "base", "worried", "R") - her "" ("soft", "base", "base", "R") + block: + her "Lately I have not been studying nearly as much as I used to..." ("open", "base", "worried", "mid") + her "Am I losing my motivation?" ("open", "base", "worried", "R") + her "" ("soft", "base", "base", "R") - block: - her "My least favourite subject?" ("open", "squint", "base", "mid") - her "Divination." ("annoyed", "squint", "angry", "mid") + block: + her "My least favourite subject?" ("open", "squint", "base", "mid") + her "Divination." ("annoyed", "squint", "angry", "mid") - block: - her "My father used to say that \"magic is just science we don't understand yet\"." ("open", "base", "base", "mid") - her "He couldn't be more wrong, of course..." ("open", "base", "worried", "R") - her "" ("soft", "base", "base", "R") + block: + her "My father used to say that \"magic is just science we don't understand yet\"." ("open", "base", "base", "mid") + her "He couldn't be more wrong, of course..." ("open", "base", "worried", "R") + her "" ("soft", "base", "base", "R") - block: - her "Despite everything..." ("open", "closed", "angry", "mid") - her "I am thankful that you keep on buying favours from me, [name_genie_hermione]..." ("open", "base", "worried", "R") - her "" ("soft", "base", "base", "R") + block: + her "Despite everything..." ("open", "closed", "angry", "mid") + her "I am thankful that you keep on buying favours from me, [name_genie_hermione]..." ("open", "base", "worried", "R") + her "" ("soft", "base", "base", "R") - block if game.weather in {"snow", "blizzard"}: - her "It's quite cold outside today, isn't it?" ("open", "base", "base", "mid") - her "" ("soft", "base", "base", "mid") + block if game.weather in {"snow", "blizzard"}: + her "It's quite cold outside today, isn't it?" ("open", "base", "base", "mid") + her "" ("soft", "base", "base", "mid") - #block: - #her "The \"Autumn Ball\" will be soon..." ("open", "base", "base", "mid") - #her "" ("soft", "base", "base", "mid") + #block: + #her "The \"Autumn Ball\" will be soon..." ("open", "base", "base", "mid") + #her "" ("soft", "base", "base", "mid") - block: - her "People hardly show up for my \"men's rights movement\" meetings anymore..." ("open", "base", "worried", "R") - her "" ("soft", "base", "base", "R") + block: + her "People hardly show up for my \"men's rights movement\" meetings anymore..." ("open", "base", "worried", "R") + her "" ("soft", "base", "base", "R") - block if states.her.ev.dance_for_me.snape_invited: - her "Do you believe we have learned enough, or will you be inviting Professor Snape again in the future?" ("annoyed", "base", "base", "R") + block if states.her.ev.dance_for_me.snape_invited: + her "Do you believe we have learned enough, or will you be inviting Professor Snape again in the future?" ("annoyed", "base", "base", "R") - ### Tier 4 High ### - if states.her.level >= 16 and states.her.level <= 18: - random: - block if hermione.is_any_worn("top", "bra"): - her "Would you like me to show you my breasts today, [name_genie_hermione]?" ("open", "narrow", "worried", "down") - her "Yes... I would willingly expose myself to you, professor..." ("base", "narrow", "base", "up") - her "That's how selfless I am!" ("annoyed", "narrow", "annoyed", "mid") + ### Tier 4 High ### + else: + random: + block if hermione.is_any_worn("top", "bra"): + her "Would you like me to show you my breasts today, [name_genie_hermione]?" ("open", "narrow", "worried", "down") + her "Yes... I would willingly expose myself to you, professor..." ("base", "narrow", "base", "up") + her "That's how selfless I am!" ("annoyed", "narrow", "annoyed", "mid") - block if states.her.status.cumshot: - her "I can't help but feel bad for the house elves who do my laundry..." ("open", "base", "base", "mid") - her "I mean, all those dreadful semen stains..." ("open", "narrow", "worried", "down") - her "" ("angry", "narrow", "base", "down") + block if states.her.status.cumshot: + her "I can't help but feel bad for the house elves who do my laundry..." ("open", "base", "base", "mid") + her "I mean, all those dreadful semen stains..." ("open", "narrow", "worried", "down") + her "" ("angry", "narrow", "base", "down") - block: - her "It doesn't matter how many times you ask me this, [name_genie_hermione]..." ("open", "base", "base", "mid") - her "The answer shall remain the same..." ("open", "base", "base", "mid") - her "I have nothing but resentment for the Slytherins!" ("angry", "base", "angry", "mid") - her "" ("annoyed", "narrow", "angry", "R") + block: + her "It doesn't matter how many times you ask me this, [name_genie_hermione]..." ("open", "base", "base", "mid") + her "The answer shall remain the same..." ("open", "base", "base", "mid") + her "I have nothing but resentment for the Slytherins!" ("angry", "base", "angry", "mid") + her "" ("annoyed", "narrow", "angry", "R") - block: - her "I've been thinking about all the favours I've sold you over these last months, [name_genie_hermione]..." ("open", "base", "base", "mid") - her "Even though I do feel a little bit embarrassed..." ("open", "narrow", "worried", "down") - her "I also feel very proud of myself." ("upset", "closed", "base", "mid") + block: + her "I've been thinking about all the favours I've sold you over these last months, [name_genie_hermione]..." ("open", "base", "base", "mid") + her "Even though I do feel a little bit embarrassed..." ("open", "narrow", "worried", "down") + her "I also feel very proud of myself." ("upset", "closed", "base", "mid") - block: - her "I still dedicate a lot of my time to studying..." ("open", "base", "base", "mid") - her "But not nearly as much of it as I used to..." ("open", "base", "base", "mid") - her "" ("soft", "base", "base", "R") + block: + her "I still dedicate a lot of my time to studying..." ("open", "base", "base", "mid") + her "But not nearly as much of it as I used to..." ("open", "base", "base", "mid") + her "" ("soft", "base", "base", "R") - block: - her "Gryffindor shall get the house cup this year!" ("open", "closed", "angry", "mid") - her "{size=-4}(Even if it should cost me my dignity...){/size}" ("angry", "narrow", "base", "down") - her "" ("upset", "closed", "base", "mid") + block: + her "Gryffindor shall get the house cup this year!" ("open", "closed", "angry", "mid") + her "{size=-4}(Even if it should cost me my dignity...){/size}" ("angry", "narrow", "base", "down") + her "" ("upset", "closed", "base", "mid") - block: - her "I don't mind autumn, spring, or summer..." ("open", "base", "base", "mid") - her "But my favourite season is winter." ("open", "closed", "base", "mid") - her "" ("soft", "base", "base", "mid") + block: + her "I don't mind autumn, spring, or summer..." ("open", "base", "base", "mid") + her "But my favourite season is winter." ("open", "closed", "base", "mid") + her "" ("soft", "base", "base", "mid") - block: - her "I used to look down on girls who spend too much of their time, worrying about the way they look..." ("open", "base", "base", "mid") - her "But I was wrong to do so..." ("open", "base", "base", "mid") - her "I am starting to understand how important it really is for a girl to look pretty." ("open", "base", "base", "mid") - her "..............." ("annoyed", "base", "worried", "R") - her "I've been on a diet lately..." ("angry", "wink", "base", "mid") - her "" ("angry", "happyCl", "worried", "mid",emote="sweat") - her "" ("normal", "happyCl", "worried", "mid") + block: + her "I used to look down on girls who spend too much of their time, worrying about the way they look..." ("open", "base", "base", "mid") + her "But I was wrong to do so..." ("open", "base", "base", "mid") + her "I am starting to understand how important it really is for a girl to look pretty." ("open", "base", "base", "mid") + her "..............." ("annoyed", "base", "worried", "R") + her "I've been on a diet lately..." ("angry", "wink", "base", "mid") + her "" ("angry", "happyCl", "worried", "mid",emote="sweat") + her "" ("normal", "happyCl", "worried", "mid") - block: - her "I've been feeling rather confident around the boys lately..." ("open", "base", "base", "mid") - her "I believe I have you to thank for that, [name_genie_hermione]." ("base", "base", "base", "mid") + block: + her "I've been feeling rather confident around the boys lately..." ("open", "base", "base", "mid") + her "I believe I have you to thank for that, [name_genie_hermione]." ("base", "base", "base", "mid") - block if not hermione.is_any_worn("clothes"): - her "Will I get any extra points for being naked inside your office, [name_genie_hermione]?" ("open", "base", "base", "mid") - her "An additional ten points added to my next favour is enough." ("open", "closed", "base", "mid") - her "" ("base", "narrow", "base", "mid_soft") + block if not hermione.is_any_worn("clothes"): + her "Will I get any extra points for being naked inside your office, [name_genie_hermione]?" ("open", "base", "base", "mid") + her "An additional ten points added to my next favour is enough." ("open", "closed", "base", "mid") + her "" ("base", "narrow", "base", "mid_soft") - block if states.her.ev.dance_for_me.snape_invited: - her "Do you believe we have learned enough, or will you be inviting Professor Snape again in the future?" ("annoyed", "base", "base", "R") + block if states.her.ev.dance_for_me.snape_invited: + her "Do you believe we have learned enough, or will you be inviting Professor Snape again in the future?" ("annoyed", "base", "base", "R") ### Tier 5 ### - if states.her.level >= 19 and states.her.level <= 21: + if states.her.tier == 5: random: her "I am doing well... Thank you for asking." ("base", "base", "base", "mid") @@ -406,131 +408,132 @@ label hermione_chitchat: her "" ("base", "narrow", "base", "mid_soft") ### Tier 6 Low ### - if states.her.level == 22: - random: - block if not states.her.ev.yule_ball.complete: - her "I wonder what everyone are going to wear for the ball..." ("base", "base", "base", "mid") + if states.her.tier == 6: + if states.her.level == 22: + random: + block if not states.her.ev.yule_ball.complete: + her "I wonder what everyone are going to wear for the ball..." ("base", "base", "base", "mid") - block: - her @ cheeks blush "Do you have any adult magazines you don't need, [name_genie_hermione]?" ("open", "base", "base", "R") - her @ cheeks blush "" ("base", "base", "base", "R") + block: + her @ cheeks blush "Do you have any adult magazines you don't need, [name_genie_hermione]?" ("open", "base", "base", "R") + her @ cheeks blush "" ("base", "base", "base", "R") - block: - her "If you need anything, [name_genie_hermione... Just ask, okay?" ("open", "base", "base", "mid") - her "" ("base", "base", "base", "mid") + block: + her "If you need anything, [name_genie_hermione... Just ask, okay?" ("open", "base", "base", "mid") + her "" ("base", "base", "base", "mid") - #block: - #her "It's been getting so cold lately..." ("open", "base", "base", "mid") - #her "I hope it's going to start snowing soon..." ("base", "base", "base", "mid") + #block: + #her "It's been getting so cold lately..." ("open", "base", "base", "mid") + #her "I hope it's going to start snowing soon..." ("base", "base", "base", "mid") - block if not states.cho.tier >= 4: - her "Jump and scream for the Gryffindor team!" ("open", "closed", "base", "mid") - her "So daring and bold, sporting red and gold!" ("smile", "happyCl", "base", "mid",emote="happy") - her "" ("base", "base", "base", "mid") + block if not states.cho.tier >= 4: + her "Jump and scream for the Gryffindor team!" ("open", "closed", "base", "mid") + her "So daring and bold, sporting red and gold!" ("smile", "happyCl", "base", "mid",emote="happy") + her "" ("base", "base", "base", "mid") - block if not states.her.ev.yule_ball.complete: - her "I hope the ball goes smoothly..." ("open", "base", "worried", "R") - her "" ("soft", "base", "base", "R") + block if not states.her.ev.yule_ball.complete: + her "I hope the ball goes smoothly..." ("open", "base", "worried", "R") + her "" ("soft", "base", "base", "R") - block: - her "Considering the nature of the favours you keep buying from me, [name_genie_hermione].." ("open", "closed", "base", "mid") - her "I've had to shower a lot more frequently than I used to..." ("open", "base", "worried", "mid") + block: + her "Considering the nature of the favours you keep buying from me, [name_genie_hermione].." ("open", "closed", "base", "mid") + her "I've had to shower a lot more frequently than I used to..." ("open", "base", "worried", "mid") - block: - her "[name_genie_hermione], could you put your penis in my mouth?" ("angry", "base", "base", "mid") - her "[name_genie_hermione], I am begging you..." ("open_wide_tongue", "narrow", "annoyed", "up") - her "Fifty-five points, please!" ("smile", "base", "angry", "mid") - her "" ("angry", "wink", "base", "mid") + block: + her "[name_genie_hermione], could you put your penis in my mouth?" ("angry", "base", "base", "mid") + her "[name_genie_hermione], I am begging you..." ("open_wide_tongue", "narrow", "annoyed", "up") + her "Fifty-five points, please!" ("smile", "base", "angry", "mid") + her "" ("angry", "wink", "base", "mid") - block: - her "I have read this one article about the positive effects of semen on a woman's skin..." ("open", "closed", "base", "mid") - her "I wonder where their information is coming from..." ("base", "narrow", "base", "mid_soft") - her "Did the magazine conduct research of some sort?" ("angry", "wink", "base", "mid") - her "" ("base", "narrow", "base", "mid_soft") + block: + her "I have read this one article about the positive effects of semen on a woman's skin..." ("open", "closed", "base", "mid") + her "I wonder where their information is coming from..." ("base", "narrow", "base", "mid_soft") + her "Did the magazine conduct research of some sort?" ("angry", "wink", "base", "mid") + her "" ("base", "narrow", "base", "mid_soft") - block: - her "It goes like this..." ("open", "closed", "base", "mid") - her "First Gryffindor, then Ravenclaw, then Hufflepuff..." ("open", "closed", "base", "mid") - her @ cheeks blush "Slytherin is not even on the list!" ("open", "narrow", "annoyed", "mid") - her "" ("upset", "closed", "base", "mid") + block: + her "It goes like this..." ("open", "closed", "base", "mid") + her "First Gryffindor, then Ravenclaw, then Hufflepuff..." ("open", "closed", "base", "mid") + her @ cheeks blush "Slytherin is not even on the list!" ("open", "narrow", "annoyed", "mid") + her "" ("upset", "closed", "base", "mid") - ### Tier 6 High ### - if states.her.level >= 23: - random: - block: - her @ cheeks blush "If you ever need some \"assistance\", [name_genie_hermione]... Please let me know." ("open_wide_tongue", "base", "base", "R") - her @ cheeks blush "" ("base", "base", "base", "R") + ### Tier 6 High ### + else: + random: + block: + her @ cheeks blush "If you ever need some \"assistance\", [name_genie_hermione]... Please let me know." ("open_wide_tongue", "base", "base", "R") + her @ cheeks blush "" ("base", "base", "base", "R") - block if states.her.status.public_sex: - her "I am sorry to bother you with this, [name_genie_hermione]..." ("open", "base", "base", "mid") - her "But do you have any condoms?" ("open", "base", "base", "mid") - her "Sadly, the ones I've bought are already gone..." ("annoyed", "happyCl", "worried", "mid",emote="sweat") - her "" ("base", "base", "base", "R") + block if states.her.status.public_sex: + her "I am sorry to bother you with this, [name_genie_hermione]..." ("open", "base", "base", "mid") + her "But do you have any condoms?" ("open", "base", "base", "mid") + her "Sadly, the ones I've bought are already gone..." ("annoyed", "happyCl", "worried", "mid",emote="sweat") + her "" ("base", "base", "base", "R") - block if game.weather in {"rain", "storm", "overcast"}: - her "It certainly is chilly outside..." ("open", "base", "base", "mid") - her "I hope it's going to start snowing soon..." ("base", "base", "base", "mid") - her "You will let me wear a coat at least, right?" ("angry", "happyCl", "worried", "mid",emote="sweat") - her "" ("base", "narrow", "base", "mid_soft") + block if game.weather in {"rain", "storm", "overcast"}: + her "It certainly is chilly outside..." ("open", "base", "base", "mid") + her "I hope it's going to start snowing soon..." ("base", "base", "base", "mid") + her "You will let me wear a coat at least, right?" ("angry", "happyCl", "worried", "mid",emote="sweat") + her "" ("base", "narrow", "base", "mid_soft") - block if not states.cho.tier >= 4: - her "Jump and scream for the Gryffindor team!" ("open", "closed", "base", "mid") - her "So daring and bold, sporting red and gold!" ("smile", "happyCl", "base", "mid",emote="happy") - her "" ("base", "base", "base", "mid") + block if not states.cho.tier >= 4: + her "Jump and scream for the Gryffindor team!" ("open", "closed", "base", "mid") + her "So daring and bold, sporting red and gold!" ("smile", "happyCl", "base", "mid",emote="happy") + her "" ("base", "base", "base", "mid") - block: - her "[name_genie_hermione], I have a favour to ask..." ("base", "base", "worried", "mid") - her "Could you help me with one of my dresses later, [name_genie_hermione]?" ("base", "base", "base", "R") - her @ cheeks blush "I could use some of your... insight." ("soft", "narrow", "base", "mid_soft") - her "" ("base", "narrow", "base", "mid_soft") + block: + her "[name_genie_hermione], I have a favour to ask..." ("base", "base", "worried", "mid") + her "Could you help me with one of my dresses later, [name_genie_hermione]?" ("base", "base", "base", "R") + her @ cheeks blush "I could use some of your... insight." ("soft", "narrow", "base", "mid_soft") + her "" ("base", "narrow", "base", "mid_soft") - block: - her "I can't believe I was such a prude before." ("angry", "base", "worried", "mid") - her "Meeting you was the best thing that ever happened to me, [name_genie_hermione]." ("smile", "narrow", "base", "mid_soft") - her "" ("base", "narrow", "base", "mid_soft") + block: + her "I can't believe I was such a prude before." ("angry", "base", "worried", "mid") + her "Meeting you was the best thing that ever happened to me, [name_genie_hermione]." ("smile", "narrow", "base", "mid_soft") + her "" ("base", "narrow", "base", "mid_soft") - block: - her "Considering the nature of the favours you keep buying from me, [name_genie_hermione]..." ("open", "closed", "base", "mid") - her "I've had to shower way more than I used to..." ("open", "base", "worried", "mid") - her "(Although, I kind of enjoy the smell...)" ("soft", "narrow", "annoyed", "up") + block: + her "Considering the nature of the favours you keep buying from me, [name_genie_hermione]..." ("open", "closed", "base", "mid") + her "I've had to shower way more than I used to..." ("open", "base", "worried", "mid") + her "(Although, I kind of enjoy the smell...)" ("soft", "narrow", "annoyed", "up") - block: - her "[name_genie_hermione], could you put your penis in my mouth?" ("angry", "base", "base", "mid") - her "[name_genie_hermione], I am begging you..." ("open_wide_tongue", "narrow", "annoyed", "up") - her "Fifty-five points, please!" ("smile", "base", "angry", "mid") - her "(Although I wouldn't mind doing it for free...)" ("smile", "narrow", "annoyed", "up") + block: + her "[name_genie_hermione], could you put your penis in my mouth?" ("angry", "base", "base", "mid") + her "[name_genie_hermione], I am begging you..." ("open_wide_tongue", "narrow", "annoyed", "up") + her "Fifty-five points, please!" ("smile", "base", "angry", "mid") + her "(Although I wouldn't mind doing it for free...)" ("smile", "narrow", "annoyed", "up") - block: - her "There was this one article... I'm not sure if I told you." ("open", "closed", "base", "mid") - her "It was about the positive effects of semen on a woman's skin." ("open", "closed", "base", "mid") - her "And it actually works!" ("smile", "narrow", "base", "mid_soft") - her "My skin definitely is getting softer." ("smile", "closed", "base", "mid") - her "" ("base", "narrow", "base", "mid_soft") + block: + her "There was this one article... I'm not sure if I told you." ("open", "closed", "base", "mid") + her "It was about the positive effects of semen on a woman's skin." ("open", "closed", "base", "mid") + her "And it actually works!" ("smile", "narrow", "base", "mid_soft") + her "My skin definitely is getting softer." ("smile", "closed", "base", "mid") + her "" ("base", "narrow", "base", "mid_soft") - block: - her "It goes like this..." ("open", "closed", "base", "mid") - her "First Gryffindor, then Ravenclaw, then Hufflepuff..." ("open", "closed", "base", "mid") - her @ cheeks blush "And Slytherin is not even on the list!" ("open", "narrow", "annoyed", "mid") - her "" ("upset", "closed", "base", "mid") + block: + her "It goes like this..." ("open", "closed", "base", "mid") + her "First Gryffindor, then Ravenclaw, then Hufflepuff..." ("open", "closed", "base", "mid") + her @ cheeks blush "And Slytherin is not even on the list!" ("open", "narrow", "annoyed", "mid") + her "" ("upset", "closed", "base", "mid") - block if not hermione.is_any_worn("clothes"): - her "You know, being naked isn't that bad..." ("open", "closed", "base", "mid") - her "Putting on clothes is just a waste of time, anyway..." ("open", "closed", "base", "mid") - her "" ("base", "narrow", "base", "mid_soft") + block if not hermione.is_any_worn("clothes"): + her "You know, being naked isn't that bad..." ("open", "closed", "base", "mid") + her "Putting on clothes is just a waste of time, anyway..." ("open", "closed", "base", "mid") + her "" ("base", "narrow", "base", "mid_soft") - block if states.her.status.creampie: - her @ cheeks blush "I know what you said before, [name_genie_hermione]... But, are you certain that there is no way for you to get me pregnant?" ("open", "base", "base", "mid") - her @ cheeks blush "Or is there still a chance it may happen?" ("soft", "base", "base", "R") + block if states.her.status.creampie: + her @ cheeks blush "I know what you said before, [name_genie_hermione]... But, are you certain that there is no way for you to get me pregnant?" ("open", "base", "base", "mid") + her @ cheeks blush "Or is there still a chance it may happen?" ("soft", "base", "base", "R") - block if states.her.status.anal: - her "[name_genie_hermione]... If you're planning on doing \"that\" again... Please use plenty of lube..." ("open", "base", "base", "mid") + block if states.her.status.anal: + her "[name_genie_hermione]... If you're planning on doing \"that\" again... Please use plenty of lube..." ("open", "base", "base", "mid") - block if states.her.ev.yule_ball.complete: - her "Thank you again for providing me with a dress for the ball." ("open", "base", "base", "mid") - her "I had a wonderful time..." ("base", "base", "base", "mid") + block if states.her.ev.yule_ball.complete: + her "Thank you again for providing me with a dress for the ball." ("open", "base", "base", "mid") + her "I had a wonderful time..." ("base", "base", "base", "mid") - block if states.her.ev.potions.breast_expand_drank: - her "You don't happen to have any more of that breast expansion potion, [name_genie_hermione]?" ("open", "base", "base", "mid") - her "I've noticed some correlations between your grades and your chest size, so I thought I'd give it a shot during our next exam..." ("open", "base", "base", "mid") + block if states.her.ev.potions.breast_expand_drank: + her "You don't happen to have any more of that breast expansion potion, [name_genie_hermione]?" ("open", "base", "base", "mid") + her "I've noticed some correlations between your grades and your chest size, so I thought I'd give it a shot during our next exam..." ("open", "base", "base", "mid") return diff --git a/game/scripts/characters/hermione/events/requests/flash_your_tits.rpy b/game/scripts/characters/hermione/events/requests/flash_your_tits.rpy index 381e9c7a..9bcae561 100644 --- a/game/scripts/characters/hermione/events/requests/flash_your_tits.rpy +++ b/game/scripts/characters/hermione/events/requests/flash_your_tits.rpy @@ -429,7 +429,7 @@ label hg_pr_flash_T4_E3: her "Instead, as I was outside in one of the courtyards..." her "... I just pulled my shirt up and pressed my bare chest against the window of a nearby classroom..." ("angry", "narrow", "base", "down") her "I stood there like that for several seconds..." - her "To make sure that at least someone would see them from the outside..." + her "To make sure that at least someone would see them.." her "I hope this still counts, [name_genie_hermione]..." ("angry", "base", "base", "mid") gen "*Hmm*..." ("base", xpos="far_left", ypos="head") gen "How many students would you estimate, being behind that window?" ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/hermione/talk.rpy b/game/scripts/characters/hermione/talk.rpy index dace750b..c3a552a6 100644 --- a/game/scripts/characters/hermione/talk.rpy +++ b/game/scripts/characters/hermione/talk.rpy @@ -171,7 +171,7 @@ label hermione_talk: jump hermione_change_fail "-Mudblood-": $ temp_name = "Mudblood" - if states.her.level >= 22: + if states.her.level >= 22 and states.her.status.sex: jump hermione_change else: jump hermione_change_fail @@ -218,7 +218,7 @@ label hermione_change: elif temp_name == "Girl": if states.her.level >=1 and states.her.level < 3: her "This girl thing again?" ("annoyed", "happy", "base", "mid") - her "*sigh*..." ("soft", "happy", "base", "R") + her "*Sigh*..." ("soft", "happy", "base", "R") elif states.her.level >=3: her "Fine... I don't mind." ("soft", "base", "base", "R") elif temp_name == "Nerd": @@ -228,7 +228,7 @@ label hermione_change: her "Like what exactly?" ("normal", "narrow", "base", "mid_soft") gen "Nothing to worry about, things will work out..." ("base", xpos="far_left", ypos="head") gen "Nerd..." ("grin", xpos="far_left", ypos="head") - her "*tsk* ..." ("soft", "narrow", "base", "R_soft") + her "*Tsk* ..." ("soft", "narrow", "base", "R_soft") her "" ("normal", "narrow", "base", "R_soft") elif states.her.level >= 5 and states.her.level < 19: her "I can be a bit nerdy sometimes I suppose..." ("angry", "happyCl", "base", "mid", emote="sweat") @@ -431,84 +431,83 @@ label hermione_change: gen "But where's the fun in that?" ("base", xpos="far_left", ypos="head") her @ cheeks blush "Why do I even bother... *sigh*" ("soft", "narrow", "base", "R_soft") elif temp_name == "Mudblood": - if states.her.level >= 21 and states.her.status.sex: - her "A{w=0.5}...{w=0.5} {size=+6}{b}{cps=20}mud{w=0.5}blood{/cps}{/b}?!{/size}" ("shock", "wide", "base", "stare") - her "Did I hear you right, [name_genie_hermione]?!" ("normal", "wide", "base", "mid") - menu: - "-Confirm-": - pass - "-!!!{b}ABORT ABORT ABORT{/b}!!!-{#LINT_IGNORE}": - gen "What? Of course not!" ("angry", xpos="far_left", ypos="head") - gen "I said..." ("base", xpos="far_left", ypos="head") - gen "(I have to think fast)" ("angry", xpos="far_left", ypos="head") - menu: - "-Mass flood-": - gen "I said mass flood!" ("angry", xpos="far_left", ypos="head") - her "Mass flood?" ("soft", "base", "base", "mid") - gen "Are you deaf or something?" ("base", xpos="far_left", ypos="head") - if game.weather == "rain": - her "I was pretty sure you said--" ("open", "base", "base", "mid") - her "" ("normal", "base", "base", "R") - gen "Look outside the window, it's raining is it not?" ("base", xpos="far_left", ypos="head") - her "I{w=0.5}...{w=0.5} Yes, you are right [name_genie_hermione]." ("normal", "closed", "base", "mid") - gen "Of course I am." ("base", xpos="far_left", ypos="head") - her "So what did you want to talk about?" ("base", "base", "base", "mid") - else: - her "[name_genie_hermione], but it's not raining..." ("normal", "closed", "base", "mid") - her @ cheeks blush "" ("disgust", "narrow", "base", "down") - gen "Last time I had my dick in you, it felt like a mass flood." ("grin", xpos="far_left", ypos="head") - her @ cheeks blush "[name_genie_hermione]..." ("disgust", "closed", "base", "mid") - gen "What? It's true, I swear!" ("grin", xpos="far_left", ypos="head") - her @ cheeks blush "..." ("soft", "narrow", "worried", "down") - "-Mad stud-": - gen "I said mad stud!" ("angry", xpos="far_left", ypos="head") - her "Mad stud?" ("soft", "base", "base", "mid") - gen "My dick, your ass, bud." ("grin", xpos="far_left", ypos="head") - her @ cheeks blush "Really..." ("disgust", "narrow", "base", "mid_soft") - her @ cheeks blush "You can be so childish sometimes, [name_genie_hermione]..." ("annoyed", "narrow", "base", "R_soft") - jump hermione_talk - her "Why would you even suggest calling me such a thing..." ("scream", "squint", "angry", "mid") - her @ tears soft "It's like the most offensive thing you could call someone like..." ("shock", "squint", "angry", "mid") - her @ tears soft_blink "Like..." ("open", "happyCl", "worried", "mid") - her @ tears mascara_crying "Someone like..." ("open", "narrow", "worried", "down") - her @ tears mascara_soft "Me..." ("disgust", "narrow", "worried", "down") - her @ tears mascara "" ("disgust", "happyCl", "worried", "mid") - menu: - "-Try to calm her down-": - her @ tears mascara "" ("disgust", "narrow", "worried", "mid_soft") - gen "Now, now, there's no need to cry." ("base", xpos="far_left", ypos="head") - gen "Do you know why I call you these things, Miss Granger?" ("base", xpos="far_left", ypos="head") - her @ tears mascara "... No?" ("disgust", "narrow", "worried", "mid_soft") - gen "It's so that you'll come to know that words are just words, and they only hurt if you let them." ("base", xpos="far_left", ypos="head") - her @ tears mascara "..." ("normal", "narrow", "worried", "mid_soft") - gen "Once you truly understand that nothing will hold you back." ("base", xpos="far_left", ypos="head") - gen "And you'll be at your utmost potential." ("grin", xpos="far_left", ypos="head") - her @ tears mascara "You really think so?" ("open", "narrow", "worried", "mid_soft") - her @ tears mascara "" ("normal", "narrow", "worried", "mid_soft") - gen "Yes, in fact I do." ("base", xpos="far_left", ypos="head") - her @ tears mascara "Thank you, [name_genie_hermione]." ("normal", "closed", "base", "mid") - her @ tears mascara "I can do it, I know I can." ("base", "narrow", "worried", "mid_soft") - "-Tell her she deserves it-": - gen "You deserve to be called a slut, a whore and a mudblood... Just look at you." ("angry", xpos="far_left", ypos="head") - her @ tears mascara_soft_blink "..." ("scream", "happyCl", "worried", "mid") - her @ tears mascara_soft "" ("disgust", "happyCl", "worried", "mid") - gen "You walk into my office and sell your body for the sole reason that it will make Gryffindor happy to win the house cup." ("angry", xpos="far_left", ypos="head") - her @ tears mascara_soft_blink "..." ("open", "happyCl", "worried", "mid") - her @ tears mascara_soft "" ("disgust", "happyCl", "worried", "mid") - gen "Bending over onto my desk and let yourself be taken like a some common harlot..." ("angry", xpos="far_left", ypos="head") - her @ tears mascara_soft "I..." ("disgust", "narrow", "worried", "mid_soft") - gen "Letting your headmaster thrust himself upon you, and taking my load like your life depended on it..." ("angry", xpos="far_left", ypos="head") - her @ tears mascara_soft "..." ("normal", "happyCl", "worried", "mid") - her @ tears mascara "" ("normal", "narrow", "worried", "mid_soft") - gen "I bet you don't even care about the points anymore..." ("base", xpos="far_left", ypos="head") - her @ tears mascara "I..." ("normal", "narrow", "worried", "down") - her @ tears mascara "" ("normal", "narrow", "annoyed", "up") - gen "You are nothing more than a whore..." ("base", xpos="far_left", ypos="head") - her @ tears mascara "" ("annoyed", "narrow", "annoyed", "up") - gen "{size=+4}{b}MY{/b}{/size} whore!" ("grin", xpos="far_left", ypos="head") - her @ tears mascara "" ("disgust", "narrow", "base", "up") - gen "And I {b}will{/b} call you however I want!" ("base", xpos="far_left", ypos="head") - her @ tears mascara "...." ("angry", "narrow", "base", "up") + her "A{w=0.5}...{w=0.5} {size=+6}{b}{cps=20}mud{w=0.5}blood{/cps}{/b}?!{/size}" ("shock", "wide", "base", "stare") + her "Did I hear you right, [name_genie_hermione]?!" ("normal", "wide", "base", "mid") + menu: + "-Confirm-": + pass + "-!!!{b}ABORT ABORT ABORT{/b}!!!-{#LINT_IGNORE}": + gen "What? Of course not!" ("angry", xpos="far_left", ypos="head") + gen "I said..." ("base", xpos="far_left", ypos="head") + gen "(I have to think fast)" ("angry", xpos="far_left", ypos="head") + menu: + "-Mass flood-": + gen "I said mass flood!" ("angry", xpos="far_left", ypos="head") + her "Mass flood?" ("soft", "base", "base", "mid") + gen "Are you deaf or something?" ("base", xpos="far_left", ypos="head") + if game.weather == "rain": + her "I was pretty sure you said--" ("open", "base", "base", "mid") + her "" ("normal", "base", "base", "R") + gen "Look outside the window, it's raining is it not?" ("base", xpos="far_left", ypos="head") + her "I{w=0.5}...{w=0.5} Yes, you are right [name_genie_hermione]." ("normal", "closed", "base", "mid") + gen "Of course I am." ("base", xpos="far_left", ypos="head") + her "So what did you want to talk about?" ("base", "base", "base", "mid") + else: + her "[name_genie_hermione], but it's not raining..." ("normal", "closed", "base", "mid") + her @ cheeks blush "" ("disgust", "narrow", "base", "down") + gen "Last time I had my dick in you, it felt like a mass flood." ("grin", xpos="far_left", ypos="head") + her @ cheeks blush "[name_genie_hermione]..." ("disgust", "closed", "base", "mid") + gen "What? It's true, I swear!" ("grin", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("soft", "narrow", "worried", "down") + "-Mad stud-": + gen "I said mad stud!" ("angry", xpos="far_left", ypos="head") + her "Mad stud?" ("soft", "base", "base", "mid") + gen "My dick, your ass, bud." ("grin", xpos="far_left", ypos="head") + her @ cheeks blush "Really..." ("disgust", "narrow", "base", "mid_soft") + her @ cheeks blush "You can be so childish sometimes, [name_genie_hermione]..." ("annoyed", "narrow", "base", "R_soft") + jump hermione_talk + her "Why would you even suggest calling me such a thing..." ("scream", "squint", "angry", "mid") + her @ tears soft "It's like the most offensive thing you could call someone like..." ("shock", "squint", "angry", "mid") + her @ tears soft_blink "Like..." ("open", "happyCl", "worried", "mid") + her @ tears mascara_crying "Someone like..." ("open", "narrow", "worried", "down") + her @ tears mascara_soft "Me..." ("disgust", "narrow", "worried", "down") + her @ tears mascara "" ("disgust", "happyCl", "worried", "mid") + menu: + "-Try to calm her down-": + her @ tears mascara "" ("disgust", "narrow", "worried", "mid_soft") + gen "Now, now, there's no need to cry." ("base", xpos="far_left", ypos="head") + gen "Do you know why I call you these things, Miss Granger?" ("base", xpos="far_left", ypos="head") + her @ tears mascara "... No?" ("disgust", "narrow", "worried", "mid_soft") + gen "It's so that you'll come to know that words are just words, and they only hurt if you let them." ("base", xpos="far_left", ypos="head") + her @ tears mascara "..." ("normal", "narrow", "worried", "mid_soft") + gen "Once you truly understand that nothing will hold you back." ("base", xpos="far_left", ypos="head") + gen "And you'll be at your utmost potential." ("grin", xpos="far_left", ypos="head") + her @ tears mascara "You really think so?" ("open", "narrow", "worried", "mid_soft") + her @ tears mascara "" ("normal", "narrow", "worried", "mid_soft") + gen "Yes, in fact I do." ("base", xpos="far_left", ypos="head") + her @ tears mascara "Thank you, [name_genie_hermione]." ("normal", "closed", "base", "mid") + her @ tears mascara "I can do it, I know I can." ("base", "narrow", "worried", "mid_soft") + "-Tell her she deserves it-": + gen "You deserve to be called a slut, a whore and a mudblood... Just look at you." ("angry", xpos="far_left", ypos="head") + her @ tears mascara_soft_blink "..." ("scream", "happyCl", "worried", "mid") + her @ tears mascara_soft "" ("disgust", "happyCl", "worried", "mid") + gen "You walk into my office and sell your body for the sole reason that it will make Gryffindor happy to win the house cup." ("angry", xpos="far_left", ypos="head") + her @ tears mascara_soft_blink "..." ("open", "happyCl", "worried", "mid") + her @ tears mascara_soft "" ("disgust", "happyCl", "worried", "mid") + gen "Bending over onto my desk and let yourself be taken like a some common harlot..." ("angry", xpos="far_left", ypos="head") + her @ tears mascara_soft "I..." ("disgust", "narrow", "worried", "mid_soft") + gen "Letting your headmaster thrust himself upon you, and taking my load like your life depended on it..." ("angry", xpos="far_left", ypos="head") + her @ tears mascara_soft "..." ("normal", "happyCl", "worried", "mid") + her @ tears mascara "" ("normal", "narrow", "worried", "mid_soft") + gen "I bet you don't even care about the points anymore..." ("base", xpos="far_left", ypos="head") + her @ tears mascara "I..." ("normal", "narrow", "worried", "down") + her @ tears mascara "" ("normal", "narrow", "annoyed", "up") + gen "You are nothing more than a whore..." ("base", xpos="far_left", ypos="head") + her @ tears mascara "" ("annoyed", "narrow", "annoyed", "up") + gen "{size=+4}{b}MY{/b}{/size} whore!" ("grin", xpos="far_left", ypos="head") + her @ tears mascara "" ("disgust", "narrow", "base", "up") + gen "And I {b}will{/b} call you however I want!" ("base", xpos="far_left", ypos="head") + her @ tears mascara "...." ("angry", "narrow", "base", "up") else: #Custom/fallback her "That's a bit odd... But sure, you can call me that." ("soft", "squint", "base", "mid") From 1d6be6a490094b05b3615ac2336de6ea65b4ca0a Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Sun, 15 Oct 2023 21:04:38 +0200 Subject: [PATCH 018/249] Bugfix * Fixed issue where Hermione's outfit would revert when picking "naked" option during sex. --- .../characters/hermione/events/favors/lets_have_sex.rpy | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy b/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy index 9e2b6a9e..cab7612a 100644 --- a/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy +++ b/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy @@ -255,6 +255,8 @@ label hg_pf_sex_T6_intro_E1: hide hermione_main with fade + $ her_outfit_last.save() + if hermione.is_any_worn("clothes"): play sound "sounds/cloth_sound3.ogg" $ hermione.strip("clothes") @@ -325,6 +327,8 @@ label hg_pf_sex_T6_intro_E2: hide hermione_main with fade + $ her_outfit_last.save() + if hermione.is_any_worn("clothes"): play sound "sounds/cloth_sound3.ogg" $ hermione.strip("clothes") @@ -390,6 +394,8 @@ label hg_pf_sex_T6_intro_E3: hide hermione_main with fade + $ her_outfit_last.save() + if hermione.is_any_worn("clothes"): play sound "sounds/cloth_sound3.ogg" $ hermione.strip("clothes") @@ -462,6 +468,8 @@ label hg_pf_sex_T6_E3: # repeats hide hermione_main with fade + $ her_outfit_last.save() + if hermione.is_any_worn("clothes"): play sound "sounds/cloth_sound3.ogg" $ hermione.strip("clothes") From 6fbf369d3eb94ce2bb040dba402d92d9e439d36d Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 18 Oct 2023 12:48:35 +0100 Subject: [PATCH 019/249] Bug fix * Fixed sorting of numbered doll layers starting with double digits --- game/scripts/doll/clothes.rpy | 4 ++-- game/scripts/utility/common_functions.rpy | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/game/scripts/doll/clothes.rpy b/game/scripts/doll/clothes.rpy index 58453dd6..16be4c1f 100644 --- a/game/scripts/doll/clothes.rpy +++ b/game/scripts/doll/clothes.rpy @@ -69,7 +69,7 @@ init python: salt = str( [self.name, self.char.pose, self.type, self.id, str(self.color), str(self.char.body._hash)] ) return hash(salt) - @functools.cache + @functools.cache # <- TODO: Reevaluate if this function should allow multiple caches (aside from different subpaths) def get_layers(self, hash, subpath=""): path = posixpath.join(self.modpath, "characters", self.name, "poses", self.char.pose, subpath, "clothes", self.type, self.id) @@ -130,7 +130,7 @@ init python: else: layers.setdefault(ltype, [f, zorder]) - return layers + return dict(sorted(layers.items(), key=lambda x: (extract_number(x[0]), x[0]))) @functools.cache def build_image(self, hash, subpath="", matrix=None, maxsize=(1010, 1200)): diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index 20eefb75..cfe66436 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -224,4 +224,10 @@ init python early: return len(self._callable()) def execute_callbacks(callbacks): - for callback in callbacks: callback() \ No newline at end of file + for callback in callbacks: callback() + + def extract_number(key): + match = re.match(r'^(\d+)', key) + if match: + return int(match.group(1)) + return float('inf') # Return a large number for non-numeric keys From 13608b6cfaa29dba462a4cd86183054790c4e94a Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sat, 28 Oct 2023 18:49:42 +0100 Subject: [PATCH 020/249] Bug fixes * Fixed missing 'whore collar' unlock method call * Fixed gallery not working correctly by extending call_replay funcionality by adding support for nested stores --- .../hermione/events/items/collars.rpy | 1 + game/scripts/interface/topbar.rpy | 4 +- game/scripts/utility/engine.rpy | 67 +++++++++++++++++++ 3 files changed, 70 insertions(+), 2 deletions(-) diff --git a/game/scripts/characters/hermione/events/items/collars.rpy b/game/scripts/characters/hermione/events/items/collars.rpy index fcd53c17..8a0323ee 100644 --- a/game/scripts/characters/hermione/events/items/collars.rpy +++ b/game/scripts/characters/hermione/events/items/collars.rpy @@ -652,6 +652,7 @@ label whore_scene: #(locked behind public reputation and last sex event) with d3 if not her_neckwear_whore_collar.unlocked: + $ her_neckwear_whore_collar.unlock() gen "Well then... Seeing as how you said thank you... I have a present for you." ("base", xpos="far_left", ypos="head") her @ cheeks blush "A present?" ("soft", "wink", "worried", "mid_soft", trans=d3) gen "Yes, it's a lovely piece of jewellery to commemorate your self-acceptance." ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/interface/topbar.rpy b/game/scripts/interface/topbar.rpy index 4f4edb81..484b06e4 100644 --- a/game/scripts/interface/topbar.rpy +++ b/game/scripts/interface/topbar.rpy @@ -248,9 +248,9 @@ screen ui_menu(): label scene_gallery: menu: "-Watch Ball Ending 1-" if persistent.ending_01: - $ renpy.call_replay("ball_ending_E2", { "states.her.ev.yule_ball.variant": "personal" }) + $ renpy.call_replay("ball_ending_E2", scope={ "states.her.ev.yule_ball.variant": "personal" }) "-Watch Ball Ending 2-" if persistent.ending_02: - $ renpy.call_replay("ball_ending_E2", { "states.her.ev.yule_ball.variant": "public" }) + $ renpy.call_replay("ball_ending_E2", scope={ "states.her.ev.yule_ball.variant": "public" }) "-Never mind-": pass jump main_room_menu diff --git a/game/scripts/utility/engine.rpy b/game/scripts/utility/engine.rpy index ed22e322..d02a4e4a 100644 --- a/game/scripts/utility/engine.rpy +++ b/game/scripts/utility/engine.rpy @@ -336,3 +336,70 @@ init -100 python: expression = expression() return true if expression else false + + # Adds support for nested stores for replay scope + def _call_replay(label, scope={}): + renpy.display.focus.clear_focus() + + renpy.game.log.complete() + + old_log = renpy.game.log + renpy.game.log = renpy.python.RollbackLog() + + sb = renpy.python.StoreBackup() + renpy.python.clean_stores() + + context = renpy.execution.Context(True) + renpy.game.contexts.append(context) + + if renpy.display.interface is not None: + renpy.display.interface.enter_context() + + # This has to be here, to ensure the scope stuff works. + renpy.exports.execute_default_statement() + + for k, v in renpy.config.replay_scope.items(): + stores = k.split(".") + current_obj = renpy.store + + for store in stores[:-1]: + current_obj = getattr(current_obj, store) + + setattr(current_obj, stores[-1], v) + + for k, v in scope.items(): + stores = k.split(".") + current_obj = renpy.store + + for store in stores[:-1]: + current_obj = getattr(current_obj, store) + + setattr(current_obj, stores[-1], v) + + renpy.store._in_replay = label + + try: + + context.goto_label("_start_replay") + renpy.execution.run_context(False) + + except renpy.game.EndReplay: + pass + + finally: + + context.pop_all_dynamic() + + renpy.game.contexts.pop() + renpy.game.log = old_log + sb.restore() + + if renpy.game.interface and renpy.game.interface.restart_interaction and renpy.game.contexts: + renpy.game.contexts[-1].scene_lists.focused = None + + renpy.config.skipping = None + + if renpy.config.after_replay_callback: + renpy.config.after_replay_callback() + + renpy.call_replay = _call_replay From c55be2cb68c12581c0dd0b6c7008446c4c0b2f20 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 30 Oct 2023 13:03:43 +0000 Subject: [PATCH 021/249] Luna T4 Fellatio Events * Initial implementation for Luna's Tier 4 fellatio events --- .../characters/luna/events/favors/suck_it.rpy | 1143 +++++++++++++++++ 1 file changed, 1143 insertions(+) create mode 100644 game/scripts/characters/luna/events/favors/suck_it.rpy diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy new file mode 100644 index 00000000..5db980c2 --- /dev/null +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -0,0 +1,1143 @@ +#TODO Add some minor writing to go along with Loafy's CG additions when necessary during posing, such as HJ and licking tip of dick +#TODO Add character state flags (BJ/swallow, cum on body etc, uncomment flags in var file) +#TODO Add event checks for the existing writing variants once the other T4 Luna events are added +#TODO Add unlock for "cumslut" Luna nickname at end of first event (silent unlock) + +label ll_pf_blowjob: + + if not _events_completed_any: + gen "{size=-4}(*Hmm*... I wonder if I should ask Luna to suck me off...){/size}" ("base", xpos="far_left", ypos="head") + menu: + "\"(Yes, let's do it!)\"": + pass + + "\"(Not right now.)\"": + $ _event.cancel() + jump luna_favor_menu + + # Start Event + call hide_characters + hide screen bld1 + show screen blkfade + with d5 + pause 1 + + $ lun_outfit_last.save() #Save Luna clothing + $ luna.equip(lun_outfit_default) #Equip Luna Default clothing + + hide screen blkfade + with d5 + + return + +label ll_pf_blowjob_end: + + # Setup + stop music fadeout 2.0 + call hide_characters + + call gen_chibi("sit_behind_desk") + + # Reset Luna clothing. + $ luna.equip(lun_outfit_last) + + if states.lun.tier == 4: + if states.lun.level < 16: + $ states.lun.level += 1 + + jump end_luna_event + +label ll_pf_blowjob_T4_E1_intro: + + call ll_pf_blowjob + + gen "I think it's about time we try a new technique to deal with those wankspurs." ("base", xpos="far_left", ypos="head") + lun "This is the idea that you had, after I've told you about Professor Trelawney reading me my future?" ("base", "base", "base", "mid") + gen "That's--" ("base", xpos="far_left", ypos="head") + lun "\"I will soon find something new within me, that will propel me forward on the path towards my destiny!\"" ("base", "base", "base", "mid") + lun "That's what she said!" ("base", "base", "base", "mid") + lun "Oh my goodness, I can hardly wait!" ("base", "base", "base", "mid") + lun "These sessions have been so much fun." ("base", "base", "base", "mid") + gen "Calm down, [name_luna_genie]..." ("base", xpos="far_left", ypos="head") + gen "This research is very serious business." ("base", xpos="far_left", ypos="head") + gen "So for this to succeed, I'll need you to focus and perform at your very best." ("base", xpos="far_left", ypos="head") + lun "Can do, [name_genie_luna]!" ("base", "base", "base", "mid") + gen "Now... If you've calmed--" ("base", xpos="far_left", ypos="head") + lun "So, I am to put something new inside of me?" ("base", "base", "base", "mid") + gen "...{w} Well... New for you at least, but I'd say in terms of age, it's probably the oldest thing in here." ("base", xpos="far_left", ypos="head") + lun "Wow!" ("base", "base", "base", "mid") + nar "Luna's eyes begins darting around your office." ("base", "base", "base", "mid") + gen "*Err*...{w=0.4} What are you doing?" ("base", xpos="far_left", ypos="head") + lun "Oh, I'm just looking around to see if I can spot what it might be." ("base", "base", "base", "mid") + lun "You said it was very old, so it must be some kind of ancient, magical artifact, right?" ("base", "base", "base", "mid") + gen "That's not--{w=0.4} This isn't a setup for a game of hide and seek." ("angry", xpos="far_left", ypos="head") + gen "If you could just shut your mouth for a moment, I'll tell you!" ("angry", xpos="far_left", ypos="head") + lun "..." ("base", "base", "base", "mid") + gen "*Sigh*..." ("base", xpos="far_left", ypos="head") + gen "(I'm beginning to feel as if these tales I'm spinning are only self-serving at this point...)" ("base", xpos="far_left", ypos="head") + gen "*Ahem*... So... My theory..." ("base", xpos="far_left", ypos="head") + gen "It involves sucking those nasty things out." ("base", xpos="far_left", ypos="head") + lun "..." ("base", "base", "base", "mid") #Wide eyed + gen "I suppose it's a bit out there, I was afraid you might not be up for it." ("base", xpos="far_left", ypos="head") + lun "..." ("base", "base", "base", "mid") #He did tell her to shut her mouth + gen "..." ("base", xpos="far_left", ypos="head") + gen "You--{w} You can talk now." ("base", xpos="far_left", ypos="head") + lun "Sucking them out?!" ("base", "base", "base", "mid") + lun "That's brilliant!" ("base", "base", "base", "mid") + gen "...{w} It is?" ("angry", xpos="far_left", ypos="head") + lun "Yes!" ("base", "base", "base", "mid") + lun "What better way is there to get them all in one place than applying suction?" ("base", "base", "base", "mid") + gen "That's what I thought!" ("grin", xpos="far_left", ypos="head") + lun "But how on earth are you supposed to suck them out of me?!" ("base", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + lun "Oh, don't tell me!" ("base", "base", "base", "mid") + lun "You're going to put a wand inside of me and \"accio\" them out!" ("base", "base", "base", "mid") + gen "(What the fuck.)" + gen "While I appreciate your input, I think an easier approach is you, sucking them out of me..." ("base", xpos="far_left", ypos="head") + lun "..." ("base", "base", "base", "mid") + gen "Out of my cock." ("base", xpos="far_left", ypos="head") + + #TODO if you've not played label ll_pf_talk_T4_E1_repeat: + #lun "..." ("base", "base", "base", "mid") + #gen "*Sigh*... My Penis... [name_luna_genie]." ("base", xpos="far_left", ypos="head") + + lun "Using \"Accio\"?" ("base", "base", "base", "mid") + gen "Using your mouth..." ("base", xpos="far_left", ypos="head") + lun "Oh!" ("base", "base", "base", "mid") + gen "I mean, if it's not too much to ask... I wouldn't want to--" ("base", xpos="far_left", ypos="head") + lun "I'll do it!" ("base", "base", "base", "mid") + gen "Great!" ("base", xpos="far_left", ypos="head") + gen "Then let's begin, shall we?" ("base", xpos="far_left", ypos="head") + lun "Yay!" ("base", "base", "base", "mid") + + #Luna quickly walks up towards the desk, fades to black + call lun_walk("desk", "base", speed=1.75) + show screen blkfade + with d5 + + if luna.is_any_worn("clothes"): + $ _wearing_clothes = True + $ luna.strip("clothes") + nar "Luna hurriedly makes her way around your desk, strips down and then crawls underneath..." + else: + nar "Luna hurriedly makes her way around your desk and crawls underneath..." + gen "*Err*... It's probably not the best idea to go under my--" + + #Fade to Luna BJ under desk CG + + gen "Desk..." + lun "My goodness...{w=0.4} I've never seen so much..." + lun "There's more magic down here than under my Wiggentree!" + gen "Wait..." + gen "Magic?" + lun "Yes!" + lun "Why I never thought the wrackspurts would draw out this much magical essence..." + lun "Can you not feel it, [name_genie_luna]?" + lun "It's so heavy in the air... It's almost infused into the wood..." + lun "You can almost taste it..." + nar "Luna takes a deep breath of air under your soiled desk..." + lun "Wow..." + gen "Are you sure you're okay down there? I haven't cleaned it since...{w=0.5} well...{w=0.5} Ever..." + lun "I'm...{w=0.3} Great..." + nar "Luna takes another deep breath..." + gen "(She's got to be faking this... No one could be this oblivious...)" + gen "(Still, better not look a gift horse in the mouth...)" + + nar "While the naive blonde sits under your desk, you decide it's finally time for her to get to work." + + menu: + "-Pull your cock out-": + + nar "You swiftly pull out your hardening cock from underneath your robes." + + lun "..." + lun "{size=-5}Wow...{/size}" + gen "Now, as I said... This technique requires you to suck those nasty little critters out of the affected area..." + gen "And as you know... For me, that's right here." + lun "*Mmm*..." + gen "Just try and make me feel as good as possible, and I'm sure those nasty little buggers will come..." + lun "Out?" + gen "Yeah, out, that's it..." + gen "Begin when you're ready, [name_luna_genie]." + lun "Okay..." + nar "Luna stares at your cock excitedly as she readies herself to take the head into her mouth." + lun "Suck until they come..." + + #Luna puts dick in mouth + + gen "*Ngh*!" + lun "*Hmm*?" + gen "I'm good, you just started me--{w=0.4} I mean, them!" + gen "Now, I'll need you to--" + + "-Tell her to take it out-": + gen "I'm a little tired..." + gen "So why don't you assist me by pulling out the \"affected area\"..." + lun "Of course, [name_genie_luna]." + nar "Luna takes a deep breath and then withdraws your hardening cock." + lun "(It's so big...)" + gen "You may proceed with the treatment, [name_luna_genie]." + lun "How am I supposed to--" + lun "I mean... Is there any particular way that I should suck on it?" + gen "*Hmm*... Perhaps sucking isn't the right phrase to describe it..." ( + gen "The goal is to lure them out, so just try and make the area feel good first and foremost." + lun "Okay then..." + nar "Luna stares at your cock excitedly as she readies herself to take the head into her mouth." + lun "I'll make you feel as good as possible to lure them out..." + gen "That's--" + + #Luna puts dick in mouth + + gen "*Ngh*!" + lun "*Hmm*?" + gen "We're good, I think you must have startled them!" + gen "Now, why don't you try and move--" + + "-Shove it in there!-": + + gen "Open wide!" + nar "You quickly pull out your cock, and slip it into the girl's warm mouth." + lun "*Mff*!!!" + gen "Sorry, I just couldn't wait any longer." + lun "*Mhm*." + gen "Glad you understand, now, why don't you start by--" + + nar "Luna begins sucking in earnest, moving her tongue along the underside of your sensitive cock." + gen "By the gods, girl!" + lun "*Gmph*?" + lun "*Ish shomhing whon*?" + nar "Luna somehow manages to form her muffled question without even slowing her pace." + gen "N-no, of course not...{w=0.3} You're doing great..." + lun "*Hi ahm*?" + gen "Yes..." + lun "*Schan khoo!* *Slurp*" + nar "In an attempt at responding to your praise, Luna's tongue moves along the underside of your cock once again, and a sudden rush of pleasure runs through your body." + gen "*Argh*..." + + #Luna tries harder + + gen "Would you please slow down [name_luna_genie]!" + + #Takes cock out + + lun "*Pwah*..." + lun "Was I not doing a good job, [name_genie_luna]?" + gen "No, you were doing great, you were just going a little too--" + lun "I knew I was hurting you!" + lun "Should we try inserting my wand to draw them out instead?" + gen "What?! That sounds awful!" + lun "But wasn't I doing it wrong?" + gen "Of course not!" + lun "Why did you ask me to slow down then?" + gen "I didn't! It must have been those nasty Wrinklespores!" + gen "They made me say it so you'd leave them alone!" + lun "Those tricksy little--" + lun "Don't worry, [name_genie_luna], I'll get them out in no time!" + + nar "With that, Luna resumes her rapid assault of your cock." + + gen "*Ngh*!" + gen "G-good work [name_luna_genie]..." + gen "I-- I think I can feel them coming... Get ready!" + + gen "That's...{w=0.3} It...{w=0.3} Take all of my cum, you cumslut!" + + #Luna pulls out to speak and takes a facial + + lun "Your wha--" + + gen "*AAAAH*!" + + #Genie cums + + lun "Whoa!" + lun "Wow, you really managed to cover me in them, [name_genie_luna]!" + gen "*Ah*... Well... That's sort of part of the job--" + lun "Oh, I'm so pleased I managed to get so many out at once!" + nar "Luna looks up at you happily as your cum slowly begins sliding down her face." + gen "*Ahem*... Perhaps it'd be best if you got out from under the desk now." + lun "Of course, [name_genie_luna]." + + #Blackfade + #Hide CG + + nar "Luna crawls out and happily starts skipping to the front of your desk, then spinning around, she flicks some of the remains of your deed of her face onto the stone floor." + + #Fade to Office + + #Todo Add Cum to Luna face + + call play_sound("giggle") + pause .8 + + lun "I can't believe how fun this was!" ("base", "base", "base", "mid") + gen "Glad you enjoyed it." ("base", xpos="far_left", ypos="head") + lun "Just let me know when you need my assistance again." ("base", "base", "base", "mid") + gen "I most certainly will--" ("base", xpos="far_left", ypos="head") + + call play_sound("giggle") + pause .8 + + #Luna turns around + + gen "-- [name_luna_genie]." ("base", xpos="far_left", ypos="head") + gen "Aren't you forgetting something?" ("base", xpos="far_left", ypos="head") + + #Luna turns back + + lun "*Ehm*... Probably... I'm not the best when it comes to remembering things." ("base", "base", "base", "mid") + gen "Don't you think you should clean yourself off a little, before heading to your dorm?" ("base", xpos="far_left", ypos="head") + lun "Oh, don't worry [name_genie_luna], I'm not going to my dorm, I'm going to the library." ("base", "base", "base", "mid") + gen "That's doesn't--" ("base", xpos="far_left", ypos="head") + lun "Oh, wait! I {i}did{/i} forget something!" ("base", "base", "base", "mid") + gen "... Right?" ("base", xpos="far_left", ypos="head") + lun "You called me a cumslut." ("base", "base", "base", "mid") + gen "*Err*... I did? You sure I didn't say... *Err*... thumb cut?!" ("angry", xpos="far_left", ypos="head") + lun "No, I'm sure you said cumslut! When I was getting rid of the wrackspurts!" ("base", "base", "base", "mid") + gen "Oh..." ("base", "base", "base", "mid") + lun "So, am I one?! What does it mean?!" ("base", "base", "base", "mid") + gen "*Err*... I guess you-- It means that you enjoy making someone cum!" ("base", xpos="far_left", ypos="head") + lun "Cum..." ("base", "base", "base", "mid") + lun "Is that also what you call the magical essence that is released?" ("base", "base", "base", "mid") + gen "Sure is... I figured why not have a singular word for both the substance, and the action." ("base", xpos="far_left", ypos="head") + lun "I like it!" ("base", "base", "base", "mid") + gen "And since you appeared to be enjoying it, I figured that cumslut would be an appropriate title for you." + lun "Oooh... I see!" ("base", "base", "base", "mid") + lun "Well I did enjoy it, so I guess I am a cumslut, [name_genie_luna]!" + gen "Indeed you are!" ("grin", xpos="far_left", ypos="head") + lun "Well, I better let everyone know my new title!" ("base", "base", "base", "mid") + + #TODO if you've done public T3 events (once public are written and added) + #gen "Sure, why not..." ("grin", xpos="far_left", ypos="head") + #gen "I'm sure they'll be happy to know that you enjoy helping out." ("grin", xpos="far_left", ypos="head") + #lun "Great!" ("base", "base", "base", "mid") + #else: + + gen "Oh, *Err*... I don't think that's such a good idea."("base", xpos="far_left", ypos="head") + lun "*Aww*... Why not?" ("base", "base", "base", "mid") + gen "Because... I'm your patient now, that's it!" ("grin", xpos="far_left", ypos="head") + gen "Patient confidentiality and all that." ("grin", xpos="far_left", ypos="head") + lun "I see! I think I've heard about that!" ("base", "base", "base", "mid") + lun "Well then, at least you know that I'm a cumslut now!" ("base", "base", "base", "mid") + gen "Yep! Thanks [name_luna_genie]." ("grin", xpos="far_left", ypos="head") + lun "No problem [name_genie_luna]!" ("base", "base", "base", "mid") + lun "Well, I better get going...{w=0.4} Too-da-loo!" + + call lun_walk(action="leave") + + gen "*Heh-heh*..." ("grin", xpos="far_left", ypos="head") + if _wearing_clothes: + gen "(Wait... Wasn't she wearing something when she arrived?)" ("angry", xpos="far_left", ypos="head") + gen "(And, she didn't even clean herself!)" ("angry", xpos="far_left", ypos="head") + else: + gen "(Wait, she didn't clean herself!)" ("angry", xpos="far_left", ypos="head") + + $ _wearing_clothes = False + + #TODO Add unlock requirement for "cumslut" Luna nickname where you have to finish this event to use it + #TODO event end (check how other favours do it for Luna since they are a bit different) + + jump ll_pf_blowjob_end + +label ll_pf_blowjob_T4_E2_intro: + + call ll_pf_blowjob + + gen "I've got another theory that I'd like us to try today, [name_luna_genie]." ("base", xpos="far_left", ypos="head") + lun "Oh, are we already finished with testing the sucking technique?" ("base", "base", "base", "mid") + gen "Heavens no!" ("base", xpos="far_left", ypos="head") + gen "I'll need you to do it at least two more times as to not break the format." ("base", xpos="far_left", ypos="head") + lun "The format?" ("base", "base", "base", "mid") + gen "Since we've already done a lot of progress in terms of extracting. It is now time to explore the more important matter of disposing." ("base", xpos="far_left", ypos="head") + lun "Ooooh...{w=0.4} Good idea, [name_genie_luna]!" ("base", "base", "base", "mid") + lun "Although...{w=0.4} Well, are you certain I am the most suitable person to help with this?" ("base", "base", "base", "mid") + gen "Most certainly, [name_luna_genie]." ("base", xpos="far_left", ypos="head") + lun "I see..." ("base", "base", "base", "mid") + lun "Well, in that case, why don't we try using \"scourgify\" on them?" ("base", "base", "base", "mid") + gen "Scurvy-what?" ("base", xpos="far_left", ypos="head") + lun "The scouring charm!" ("base", "base", "base", "mid") + lun "Professor Snape used it to wash the mouth of one of my classmates, when they let out a swear during class." ("base", "base", "base", "mid") + lun "If you use the charm on the wrackspurts as soon as they come out, it should clean them up in no time!" ("base", "base", "base", "mid") + gen "Well, I do think--" ("base", xpos="far_left", ypos="head") + lun "And if that doesn't work, we could try the drought charm!" ("base", "base", "base", "mid") + lun "They'd get all dried out, and the only thing that'd remain is a flaky crust on my face!" ("base", "base", "base", "mid") + gen "...{w} Or you could just swallow them." ("base", xpos="far_left", ypos="head") + lun "Swallow--" ("base", "base", "base", "mid") + lun "You believe that wrackspurts are unable to survive in someone's stomach, [name_genie_luna]?" + gen "Sure... Let's go with that." ("base", xpos="far_left", ypos="head") + lun "Wow, your brilliance astounds me yet again, [name_genie_luna]." ("base", "base", "base", "mid") + gen "So, are you up for it? Some women don't like to--" ("base", xpos="far_left", ypos="head") + lun "Why of course, [name_genie_luna]!" ("base", "base", "base", "mid") + lun "No trouble at all!" ("base", "base", "base", "mid") + lun "Can I hide under your desk again?" ("base", "base", "base", "mid") + gen "You don't have to, I could just turn the chair around." ("base", xpos="far_left", ypos="head") + lun "Oh no, I want to..." ("base", "base", "base", "mid") + lun "I've always been rather fond of small spaces..." ("base", "base", "base", "mid") + lun "When I was a little girl, I used to hide in the roots of a huge {i}Wiggentree{/i} near our home..." ("base", "base", "base", "mid") + lun "I've never felt as safe as I did when I was under the roots of that tree..." ("base", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + gen "Then feel free to crawl under the desk if you must..." ("base", xpos="far_left", ypos="head") + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") + + #Luna quickly walks up towards the desk, fades to black + call lun_walk("desk", "base", speed=1.75) + show screen blkfade + with d5 + + if luna.is_any_worn("clothes"): + $ _wearing_clothes = True + $ luna.strip("clothes") + nar "Luna quickly makes her way around your desk, strips, and then crawls underneath." + else: + nar "Luna quickly makes her way around your desk, and crawls underneath." + + #Fade to CG + + lun "*Ah*... There's that familiar scent..." + gen "..." + lun "I think I could get used to doing this..." + gen "I don't doubt it." + lun "It's like brushing your teeth, you know." + gen "What?" + gen "You better not get your teeth anywhere near it." + + #giggles + call play_sound("giggle") + #Luna smiles + pause 1 + + lun "Not like that, silly..." + lun "What I meant, is that this is becoming more of a habit, like brushing your teeth." + gen "Right..." + lun "Although I must say..." + + #Luna pulls genies trousers down so his cock pops out + + lun "This is a lot more fun than brushing my teeth..." + gen "If you say--" + + #Luna starts sucking + #TODO sucking image loop/speedlines and sound + #TODO sucking sound loop/speedlines and sound + + gen "*Ngh*!" + gen "Eager today, are we?" + lun "*Mhm*..." + + nar "Luna, not even hesitating, starts bobbing her head happily down your shaft, the thought of swallowing your cum being the only thing occupying her mind." + + gen "Excellent work, [name_luna_genie]..." + lun "*Glae U Ike Eet*" + + nar "Looking down at the girl, you can't help but appreciate her commitment, as her pace didn't change one bit when she answered you." + + gen "Now I'm going to need you to--{w=0.4} Relax your throat...{w=0.4} We wouldn't want any of them to escape..." + + gen "You...{w=0.4} You think you could do that?" + lun "...{w=0.8} *Mhm*..." + + nar "You feel Luna's throat muscles relax slightly as she prepares herself to take your load down her throat." + + gen "*Ah*... Yes, that's it, [name_luna_genie]... Just like that." + + nar "Luna continues bobbing her head up and down your shaft happily, your cock now reaching all the way down towards the back of her throat..." + + gen "(Bloody hell... How is this girl... so good at this?)" + lun "(*Hmm*...)" + lun "(Looks like he's really enjoying it when I push my head down...)" + + #Luna moves down and keeps her head there + + gen "What are you--" + + nar "With her head firmly down your shaft, Luna begins moving her tongue, the lack of oxygen barely even phasing her." + + gen "Girl... Don't forget you need to--" + + #Luna moves again + + nar "Not letting you finish your sentence, Luna starts bobbing her head again." + nar "Taken aback by how effortlessly your cock slides along the girl's lips and down her throat, you can't help but let out a groan of pleasure." + + gen "*Aaah*..." + + nar "Feeling yourself getting closer to the edge, you tense up your pelvis muscles. Luna still sucking your cock fervently keeps her pace steady as she eagerly anticipates your load." + + gen "By the great desert--{w=0.3} Get ready, girl!" + gen "*Nnngh*...{w=0.5} AAHH!!!!" + + nar "With a sudden rush of pleasure running down your shaft you let out a loud groan as wave after wave of semen shoots down the girls throat." + + #Bobbing stops and Genie cums down her throat + + play sound "sounds/gulp.ogg" + pause .4 + play sound "sounds/gulp.ogg" + pause .6 + play sound "sounds/gulp.ogg" + pause .4 + + #Luna pulls out + + lun "*Ah*...{w=0.3 }*Ah*...{w=0.3 }*Ah*..." + lun "All...{w=0.3 }*Ah*...{w=0.3} All gone [name_genie_luna]..." + gen "Very--{w=0.4} Very, impressive, [name_luna_genie]." + gen "Those Wickerspatters barely stood a chance..." + lun "I...{w=0.4} I'm glad..." + lun "..." + gen "..." + gen "[name_luna_genie]?" + lun "Yes, [name_genie_luna]?" + gen "You can come out from under the desk now..." + lun "Oh... Right..." + + #Black fade + #Hide CG + #Office screen Fade + + lun "Those nasty wrackspurts were giving you a lot of trouble, weren't they [name_genie_luna]?" ("base", "base", "base", "mid") + lun "Swallowing them all sure proved itself quite difficult..." ("base", "base", "base", "mid") + gen "You sure could've fooled me..." ("base", xpos="far_left", ypos="head") + lun "Do you think we've managed to dispose all of them, [name_genie_luna]?" ("base", "base", "base", "mid") + gen "What?" ("base", xpos="far_left", ypos="head") + lun "Since I swallowed them... Does that mean I won't be required to help rid you of them anymore?" ("base", "base", "base", "mid") + gen "I'm sure there's more where they came from..." ("base", xpos="far_left", ypos="head") + lun "Oh... Well, that's good." ("base", "base", "base", "mid") + lun "I mean--" ("base", "base", "base", "mid") + gen "Now, if you don't mind..." ("base", xpos="far_left", ypos="head") + gen "This encounter with those...{w=0.4} Things... Has left me rather exhausted..." ("base", xpos="far_left", ypos="head") + lun "Oh... Okay..." ("base", "base", "base", "mid") + + if _wearing_clothes: + play sound "sounds/cloth_sound3.ogg" + $ luna.wear("all") + pause .8 + + if game.daytime: + lun "Well, I best be off to divination class..." ("base", "base", "base", "mid") + else: + lun "I better head off to bed then." ("base", "base", "base", "mid") + + lun "Oh, before I go... There's something I wanted to ask you... If that's alright?" ("base", "base", "base", "mid") + gen "Sure thing." ("base", xpos="far_left", ypos="head") + lun "I was thinking about that prediction Professor Trelawney performed on me." ("base", "base", "base", "mid") + gen "Right?" ("base", xpos="far_left", ypos="head") + lun "How could something be a true prediction, if hearing it is what allows it to become true?" + gen "What?" ("base", xpos="far_left", ypos="head") + lun "I told you the details of the prediction, and from that, you came up with an idea that fit my description of it." ("base", "base", "base", "mid") + lun "Doesn't that make the prediction more of a self-fulfilling prophecy, and not an actual prophecy?" ("base", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + gen "(The way this girl's mind figures these things out, truly is unpredictable.)" + gen "So, what you're saying is that fortune telling is just psychological manipulation, where the subject is lead down a path where they themselves allow it to become a reality?" ("base", xpos="far_left", ypos="head") + lun "*Huh*?" ("base", "base", "base", "mid") + gen "Or that predictions are based on past knowledge, and even if you had not told me, it is something that I would've naturally come up with either way?" ("base", xpos="far_left", ypos="head") + lun "*Ehm*..." ("base", "base", "base", "mid") + gen "You've not been telling her about our research, have you?" ("base", xpos="far_left", ypos="head") + lun "Oh--{w=0.4} Of course not!" ("base", "base", "base", "mid") + lun "The only way she'd know is if she was somehow able to read my mind!" ("base", "base", "base", "mid") + gen "I see... So, highly improbable." ("base", xpos="far_left", ypos="head") + gen "Either way, while I'm always up for figuring out on how this universe works, I believe there's more important things to prioritise." + lun "..." ("base", "base", "base", "mid") + gen "Such as this dick getting sucked on a regular basis." ("base", xpos="far_left", ypos="head") + lun "Oh, of course [name_genie_luna]!" ("base", "base", "base", "mid") + lun "Let me know if you need any help with those wrackspurts again and I'll be here sucking it before you know it!" ("base", "base", "base", "mid") + gen "You'll be the first to know." ("base", xpos="far_left", ypos="head") + if game.daytime: + lun "Thank you, [name_genie_luna]! Have a nice day!" ("base", "base", "base", "mid") + else: + lun "Thank you, [name_genie_luna]! Have a nice evening!" ("base", "base", "base", "mid") + + call lun_walk(action="leave") + + gen "..." ("base", "base", "base", "mid") + gen "(Did she just say \"thank you\"?)" + + $ _wearing_clothes = False + + jump ll_pf_blowjob_end + +label ll_pf_blowjob_T4_E3_intro: + + call ll_pf_blowjob + + gen "[name_luna_genie], care to help me me with--" ("base", xpos="far_left", ypos="head") + lun "Of course [name_genie_luna]! Today is Sunday, after all!" ("base", "base", "base", "mid") + #Luna walks closer to desk + gen "I didn't even tell you what--" ("base", xpos="far_left", ypos="head") + gen "Wait... It's Sunday?" ("base", xpos="far_left", ypos="head") + gen "(I thought weekends didn't exist in this universe...)" ("base", xpos="far_left", ypos="head") + lun "Yes! It's Mister Sun's happy day!" ("base", "base", "base", "mid") + menu: + "-Enough with the nonsense-" + gen "And here I thought my calendar said {i}Suckday{/i} on it." ("base", xpos="far_left", ypos="head") + lun "*Huh*?" ("base", "base", "base", "mid") + gen "That's why I called you here, to suck those spurts out for me." ("base", xpos="far_left", ypos="head") + + #giggles + call play_sound("giggle") + pause 1 + + lun "Oh, you're so silly sometimes [name_genie_luna]." ("base", "base", "base", "mid") + gen "I'm a hundred percent serious." ("base", xpos="far_left", ypos="head") + lun "Oh, okay! Sorry, I don't always know when someone is joking..." ("base", "base", "base", "mid") + gen "So... Since it's Suckday today, you think you could help me?" ("base", xpos="far_left", ypos="head") + lun "Of course!" ("base", "base", "base", "mid") + "-Let her talk-" + gen "Right..." ("base", xpos="far_left", ypos="head") + if game.daytime: + if game.weather == "clear": #Sunny + lun "Can't you tell how happy mister Sun is?" ("base", "base", "base", "mid") + gen "Looks like the same burning ball of fire to me." ("base", xpos="far_left", ypos="head") + lun "[name_genie_luna], don't look directly at it!" ("base", "base", "base", "mid") + gen "Whops." ("base", xpos="far_left", ypos="head") + gen "(Mortals and their weak retinas...)" ("base", xpos="far_left", ypos="head") + gen "(Wait, did she actually give me some useful advice--)" ("angry", xpos="far_left", ypos="head") + lun "The sun is very shy, and he doesn't like it when you look directly at it." ("base", "base", "base", "mid") + gen "(Nevermind...)" ("base", xpos="far_left", ypos="head") + lun "Sundays are the time for celebration!" ("base", "base", "base", "mid") + gen "Really?" ("base", xpos="far_left", ypos="head") + lun "Yes!" ("base", "base", "base", "mid") + else: #cloudy/rain/snow + gen "Are you sure?" ("base", xpos="far_left", ypos="head") + lun "Of course! Can't you tell how happy mister Sun is?" ("base", "base", "base", "mid") + gen "Well, I can't really see it right now..." ("base", xpos="far_left", ypos="head") + lun "Oh..." ("base", "base", "base", "mid") + lun "Well, maybe he's just being shy..." ("base", "base", "base", "mid") + gen "Shy?" ("base", xpos="far_left", ypos="head") + lun "Yes... Daddy told me that you're not supposed to look directly at it." ("base", "base", "base", "mid") + gen "I see..." ("base", xpos="far_left", ypos="head") + lun "Even if he's hiding today, that doesn't mean we shouldn't celebrate him." ("base", "base", "base", "mid") + gen "Right... So, what does the sun bring to cause celebration?" ("base", xpos="far_left", ypos="head") + lun "Well..." ("base", "base", "base", "mid") + else: + lun "The whole day is a cause for celebration, [name_genie_luna]." ("base", "base", "base", "mid") + lun "Sunday is the day where you celebrate the limited time we have on this earth." ("base", "base", "base", "mid") + gen "*Huh*?" ("base", xpos="far_left", ypos="head") + gen "Is there some sort of alien abduction scheduled that I wasn't aware of?" ("base", xpos="far_left", ypos="head") + + #giggles + call play_sound("giggle") + pause 1 + + lun "Good one, [name_genie_luna]!" ("base", "base", "base", "mid") + gen "(So, she doesn't believe in aliens... The irony...)" ("base", xpos="far_left", ypos="head") + + lun "The movement of the sun is meant to remind us to spend our time on this earth to the fullest." ("base", "base", "base", "mid") + gen "*Hmm*... Well I can't say that I can relate to that very much." ("base", xpos="far_left", ypos="head") + lun "It also marks the end of the weekend and makes you look forward to getting back to work or school the next day." ("base", "base", "base", "mid") + gen "Ah, yes. Now that sure is very relatable..." ("base", xpos="far_left", ypos="head") + lun "The sun itself should also be appreciated as it has given us life itself." ("base", "base", "base", "mid") + lun "I mean, I wouldn't be standing here if it wasn't for the sun." ("base", "base", "base", "mid") + gen "Then let's not waste the day any further!" ("base", xpos="far_left", ypos="head") + gen "If I'm to live life to the fullest then I'll require your help again, [name_luna_genie]." ("base", xpos="far_left", ypos="head") + lun "Again, [name_genie_luna]?" ("base", "base", "base", "mid") + gen "The Spurts have been quite lively today... Must be because it's Sunday and all that." ("base", xpos="far_left", ypos="head") + lun "Oh, I see!" ("base", "base", "base", "mid") + gen "So, do you think you could help me again?" ("base", xpos="far_left", ypos="head") + lun "Certainly [name_genie_luna], I'll be happy to!" ("base", "base", "base", "mid") + gen "Praise the sun!" ("grin", xpos="far_left", ypos="head") + + lun "My mouth is here for you, whenever you need it, [name_genie_luna]." ("base", "base", "base", "mid") + gen "Well that's--" ("base", xpos="far_left", ypos="head") + lun "Any time!" ("base", "base", "base", "mid") + gen "Greatly appreciated--" ("base", xpos="far_left", ypos="head") + lun "Even if I'm asleep!" ("base", "base", "base", "mid") + gen "..." ("angry", xpos="far_left", ypos="head") + lun "So, just wake me up whenever you need it!" ("base", "base", "base", "mid") + gen "(Phew...)" ("base", xpos="far_left", ypos="head") + lun "Using my mouth to make you feel better is so much fun!" ("base", "base", "base", "mid") + gen "Fun, you say?" ("base", xpos="far_left", ypos="head") + lun "I mean... Ridding you of the wrackspurts is my top priority!" ("base", "base", "base", "mid") + gen "*He-heh*." ("grin", xpos="far_left", ypos="head") + lun "" ("base", "base", "base", "mid") #smiles + pause .8 + gen "Well then, I better not stay in the way of your fun [name_luna_genie]..." ("base", xpos="far_left", ypos="head") + lun "" ("base", "base", "base", "mid") #blush + gen "Why don't you--" ("base", xpos="far_left", ypos="head") + lun "Certainly, [name_genie_luna]!!" ("base", "base", "base", "mid") + + #Luna quickly walks up towards the desk, fades to black + call lun_walk("desk", "base", speed=1.75) + show screen blkfade + with d5 + + if luna.is_any_worn("clothes"): + $ _wearing_clothes = True + $ luna.strip("clothes") + + gen "Under the desk again, [name_luna_genie]?" + lun "I like it down here..." + gen "Very well..." + + hide screen blkfade + with d5 + #CG, Genie's dick is tucked in + + #Luna untucks genie's dick + gen "Steady girl... There's no need to rush." + lun "*Mmm*...{w=0.4} Hello there mister penis..." + gen "(Somehow I'm feeling like a third wheel, even though it's only the two of us...)" + + show screen blkfade + with d5 + + nar "Over the next hour, Luna remains kneeling beneath your desk, relentlessly assaulting your cock as if her life depended on it." + + #CG + #Luna sucking + #Fade back + + hide screen blkfade + with d5 + + gen "I--{w=0.2} I think this is it!" + lun "*Mmm*..." + gen "Get ready to--" + + nar "Before you can finish your sentence, Luna thrusts her head forward, forcing your cock down her throat." + + gen "Holy mommy of--" + gen "Here they come!" + + nar "You grab the edge of your seat to steady yourself as your balls begin to contract, releasing one of the largest loads of your life." + + lun "!!!" + gen "By the--" + + #Bobbing stops and Genie cums down her throat + + play sound "sounds/gulp.ogg" + pause .4 + play sound "sounds/gulp.ogg" + pause .6 + play sound "sounds/gulp.ogg" + + nar "Your cock continues to fire shot after shot down her throat and into her stomach." + nar "The sheer force of your orgasm causes white dots to scatter across your vision." + + #TODO fade to white + pause 1 + + show screen blkfade + with d5 + + nar "In the afterglow of your enormous climax, all you hear for a while is the sounds of Luna breathing heavily underneath your desk." + + hide screen blkfade + with d5 + + lun "*Ah*...{w=0.4} Thank you, [name_genie_luna]..." + gen "*Huh*?" + lun "You were the only person who took me seriously about the wrackspurts problem..." + lun "And you've been so nice and patient and have taught me so many things..." + lun "And this cum..." + lun "It's so good! It's as if it's made of pure magic!" + lun "I can't get enough of it!" + lun "Thank you, thank you, thank you!" + lun "You're the best genie ever!" + + #Luna sucking loop + nar "With that, Luna resumes sucking on your cock, shamelessly slobbering over every inch of it..." + + gen "*Ugh*... I'm glad you're enjoying yourself." + gen "And indeed, I {i}am{/i} the best genie ever..." + + play sound "sounds/scratch.wav" + + gen "Wait...{w=0.5} Did you just say {b}GENIE{/b}?!" + + #Luna stops sucking + lun "*Slrp-pop*!" + lun "*Mhmmm*? I mean you are a genie, aren't you?" + gen "Well, yes..." + gen "But how did you know? Don't tell me the cloaking thingy had a experiation date..." + lun "Oh, don't worry [name_genie_luna]... I can only see your true form when I'm wearing my spectrespecs!" + gen "Those glasses? So, you're saying you've known this whole time?" + lun "Well, I wasn't a hundred percent sure you were a genie until I tasted this..." + lun "I doubt any other creature could produce something this tasty..." + lun "Not even a unicorn..." + gen "So... You don't mind that I'm a genie?" + lun "Nope! Not unless it bothers you..." + gen "As long as you keep sucking like that, you can think I'm the prince of Persia..." + gen "Just don't expect any wishes." + lun "Oh... Why not?" + gen "You have to rub my lamp to get wishes and I'm pretty sure that thing is all the way back in Agrabah." + lun "*Awww*... Rubbing this doesn't count?" + + nar "Luna gives your cock a playful few strokes." + + gen "I wish..." + gen "..." + lun "Oh well... I guess this will have to do then." + lun "Speaking of..." + + nar "Luna starts eyeing up your cock again." + + gen "Steady on, girl... Don't you think you've had enough for one day?" + lun "*Aww*... Already? But there's still so much magic..." + lun "{heart}{heart}{heart}" #heart eyes + lun "Can't we keep going? Surely there must be some wrackspurts left in you..." + gen "(Oh right... Those things...)" + gen "Perhaps it's time we moved onto another method..." + lun "You've come up with another method already?" + gen "I believe so..." + gen "Am I making the right assumption that the spurs haven't stopped bothering you whilst you've been helping me, [name_luna_genie]?" + lun "Oh... I mean... I suppose not... But I'll manage, as long as it helps with your research!" + gen "*Hmm*... I appreaciate the sentiment, but that isn't good enough I'm afraid..." + lun "[name_genie_luna]?" + gen "I will not allow a world where the comfort of one is only achievable thanks to the suffering of another." + lun "*Ehm*..." + gen "Therefor the only real solution is one where we're able to physically stimulate each other to rid ourselves of the sprats at the same time." + lun "At the same time!?" + gen "That's right, [name_luna_genie]... If we can achieve physical stimulation and release between both participants simultaniously then--" + lun "Can we try it now? Pleaaaase!" + gen "*Ugh*...{w=0.4} I appreciate the enthusiasm [name_luna_genie], but I think I need a bit of a nap first..." + lun "Oh... Okay then, Mister Genie!" + gen "Just \"Genie\" is fine." ("base", xpos="far_left", ypos="head") + gen "Although, try to avoid calling me that in front of anyone else... It will be our little secret." + lun "Okie dokie, [name_genie_luna], Enjoy your nap!" + + show screen blkfade + with d5 + #Office screen + #Genie nickname becomes available for Luna (adding writing along with) + + if _wearing_clothes: + $ luna.wear("all") + + hide screen blkfade + with d5 + + #Luna leaves + call lun_walk(action="leave") + + $ _wearing_clothes = False + + call ll_pf_blowjob_end + +label ll_pf_blowjob_T4_E4_repeat: + + #Genie asks for another blowjob before they move on to the next step + + call ll_pf_blowjob + + gen "Before we proceed to test out my new theory, what do you say about that spacious head of yours taking a trip downstairs?" ("base", xpos="far_left", ypos="head") + lun "Downstairs?" ("base", "base", "base", "mid") + gen "Downstairs, and down my shaft!" ("base", xpos="far_left", ypos="head") + lun "Your shaft? Are you talking about your wizard tower?" ("base", "base", "base", "mid") + gen "Tower, mast, shaft, whatever you want to call it." ("base", xpos="far_left", ypos="head") + lun "But, I just got here, are you sure you don't need me for anything?" ("base", "base", "base", "mid") + gen "What do you--{w=0.2} I'm asking you to suck my dick again, [name_luna_genie]!" ("base", xpos="far_left", ypos="head") + lun "Oh! Of course, [name_genie_luna]! Why didn't you say so?" ("base", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + lun "Either way... There's no need to to ask!" ("base", "base", "base", "mid") + lun "As I said before..." ("base", "base", "base", "mid") + lun "My mouth is here for you, whenever you need it!" ("base", "base", "base", "mid") + gen "Oh right... You did say that." ("base", xpos="far_left", ypos="head") + gen "I've gotten so used to requiring more convincing than that, so I forgot who I was talking to." ("base", xpos="far_left", ypos="head") + lun "I'm {i}the{/i} cumslut aren't I? I'm always pleased to be of assistance!" ("base", "base", "base", "mid") # Genie told Luna it just means "a person who enjoys helping people cum". + gen "You certainly are {i}a{/i} cumslut... Now, assume the pleasing position!" ("base", xpos="far_left", ypos="head") + lun "Yes, [name_genie_luna]!" ("base", "base", "base", "mid") + + #Luna quickly walks up towards the desk, fades to black + call lun_walk("desk", "base", speed=1.75) + show screen blkfade + with d5 + + if luna.is_any_worn("clothes"): + $ _wearing_clothes = True + $ luna.strip("clothes") + + #CG Luna talking pose + + hide screen blkfade + with d5 + + lun "*Sniff* *Sniff*." + gen "Enjoying yourself down there?" + lun "Oh yes, very much..." + lun "I think this might even have become my new safe space." + gen "Really? What makes you say that?" + lun "Why, I used to have another safe space that I'd go to whenever I needed to think." + lun "It was this magical broom closet on the seventh floor... You know, the one opposite the tapestry of Barnabas the Barmy." #Room of requirement + gen "A magical broom closet? What makes something a \"magical\" broom closet?" + lun "Because... Last time I went there, the closet was gone!" + lun "Instead, I was presented by a brick wall!" + lun "Have you ever experienced such an anomaly before, [name_genie_luna]?" + gen "(The only brick wall I've experienced is whenever I try to get more than I paid for at a whore-house.)" + lun "My assumptions was, since the closet door had vanished, that it would only materialize when I had the desire for it to exist." + gen "..." + lun "*Ehm*... Or am I hooting up the wrong bush with that assumption, [name_genie_luna]?" #Like "Barking up the wrong tree", but also sounds like she has the urge to have sex with a woman. + gen "I think it'd be best if you focused less on {i}bushes{/i} and {i}closets{/i} and more towards the task at hand." + lun "Task at hand, [name_genie_luna]?" + gen "Or task at mouth, I should say." + + nar "You briefly move your gaze down to your throbbing member." + + lun "Oh! Of course, [name_genie_luna]!" + lun "I'll get to it right away!" + + #Luna pulls genie's trousers down + + lun "*Giggles*" + lun "You know, I was worried that I would never get suck this delectable thing again." + gen "Delectable?" + + #Luna takes Genie's cock in her mouth + + gen "*Ngh*!" + lun "*Hmmff*?" + lun "*U Oay*?" + + gen "I'm fine! You go right ahead." + lun "*Esh pffeshor*!" + gen "*Ngh*!" + gen "Whoa! Say that again!" + lun "*Mff*?" + gen "Whatever you just said, say it again!" + lun "*Pffesor*?" + gen "*Ah*, yes! That felt good!" + lun "*Wha a ue*--" + gen "Now, down the wizard tower we go!" + + nar "Luna, looking slightly more puzzled than her usual self, shrugs and then pushes her head down your shaft." + + #Sucking loop + gen "*Ah*... Yes... Now that's how you descend a tower!" + + nar "Revelling in your praise, you watch as Luna happily bobs her head up and down your cock, only slowing down intermittently to run her tongue underneath your shaft." + + gen "*Ah*... I think you might've touched the bottom floor that time." + gen "You sure are a cumslut." + + nar "As the last word escapes your lips, could swear that Luna's throat tensed up briefly around your cock, but before the thought took hold, her onslaught on your cock continues." + + gen "(She's--{w=0.2} too good! If she keeps going like this, my reputation will be in shambles!)" + gen "*Ngh*... Slow down a bit, won't you?" + nar "Luna, hearing your pleas, looks at you worryingly and increases the pace." + gen "What are you--" + gen "Slow down, girl!" + + + #Cum section + menu: + "-Say something weird to make her pull out-": + menu: + "\"Look! There's an elephant in the room!\"": + #Luna Pulls out + lun "*Slrp-pop*! Where?!" + + gen "*AAAAH*!" + + #Genie cums + + lun "[name_genie_luna]!" + gen "*Ah*... That was--" + lun "Quickly, [name_genie_luna]... Move your legs!" + gen "*Huh*?" + + show screen blkfade + with d5 + + #Hide CG + + nar "Luna pushes your leg to the side, and then darts to the front of your desk." + + hide screen blkfade + with d5 + + #Fade to Office screen + #Luna chibi facing right + lun "I can't believe there's a--{w=0.2}{nw}" ("base", "base", "base", "mid") + #Luna chibi turns left + lun "I can't believe there's a--{fast} Wait...{w=0.4} Where did the elephant go?" ("base", "base", "base", "mid") + gen "Err..." ("base", xpos="far_left", ypos="head") + lun "There's no elephant in the room, is there?" ("base", "base", "base", "mid") + gen "Other than your unfathomable naivety?" ("base", xpos="far_left", ypos="head") + lun "...?" ("base", "base", "base", "mid") + gen "No, there's no actual elephant..." ("base", xpos="far_left", ypos="head") + lun "I see..." ("base", "base", "base", "mid") #dissapointed + gen "I mean, there was one! It just leapt out the window!" ("grin", xpos="far_left", ypos="head") + lun "Really?" ("base", "base", "base", "mid") + gen "Of course!" ("grin", xpos="far_left", ypos="head") + lun "How extraordinary!" ("base", "base", "base", "mid") + gen "(If it was only this easy to make Hermione excited.)" ("base", xpos="far_left", ypos="head") + lun "Hold on... How would an elephant even fit--" ("base", "base", "base", "mid") + gen "Weren't you meant to swallow the spurs by the way?" ("base", xpos="far_left", ypos="head") + lun "Wha--{w=0.2} Oh no!" ("base", "base", "base", "mid") + gen "(*Phew*... Bullet dodged.)" ("base", xpos="far_left", ypos="head") + + lun "" ("base", "base", "base", "mid") #Tongue out + nar "You watch as Luna desperately tries to extend her tongue towards your cum." + + gen "What are you doing?" ("base", xpos="far_left", ypos="head") + lun "*Blerbleblerg*!" ("base", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + gen "[name_luna_genie]... I believe it's a bit late for that..." + lun "... Really?" ("base", "base", "base", "mid") #Sad + gen "Really..." ("base", xpos="far_left", ypos="head") + lun "Oh..." ("base", "base", "base", "mid") #Sad + lun "This means that the wrackspurts will return even faster, doesn't it?" ("base", "base", "base", "mid") + gen "Most certainly..." ("base", xpos="far_left", ypos="head") + lun "I see..." ("base", "base", "base", "mid") + gen "What's with the long face?" ("base", xpos="far_left", ypos="head") + + "\"Cum covered bimbo says what?\"": + #Luna Pulls out + lun "*Slrp-pop*! What?!" + + #TODO Genie cums on her face + gen "*AAAAH*!" + + #Genie cums + + lun "[name_genie_luna]!" + lun "You tricked me!" + lun "Or... Did the wrackspurts make you say that?" + gen "What--{w=0.2} Oh yes! Those rascals got to me again!" + lun "*Hmph*" + gen "What's up?" + lun "It's just... *Hmph*... Nevermind..." + + show screen blkfade + with d5 + + nar "Luna gets out from underneath your desk, and trudges over to stand in front of it." + + hide screen blkfade + with d5 + + #Office screen Luna in front of desk + gen "Are you alright, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") + lun "I failed to swallow the wrackspurts... So, now they'll surely end up returning even sooner." ("base", "base", "base", "mid") + "\"I'm cured! You can stop now!\"": + #Luna Pulls out + lun "*Slrp-pop*! What?!" + gen "Nevermind!" + + #TODO Genie cums on her face + gen "*AAAAH*!" + + #Genie cums + + lun "[name_genie_luna]!" + lun "You came on me again!" + gen "Sure did." + lun "But, I was meant to swallow it--{w=0.2} I mean, the wrackspurts!" + gen "Yes... That's unfortunate indeed..." + lun "Then why would you say something like that, just as you were about to..." + lun "Hold on a moment..." + + show screen blkfade + with d5 + + nar "Luna quickly gets out from underneath your desk, and rushes over to the front of it." + #Office screen Luna in front of desk + + hide screen blkfade + with d5 + + lun "[name_genie_luna]... Please don't tell me that your desk is made out of whisperwood!" ("base", "base", "base", "mid") + gen "Out of what?" ("base", xpos="far_left", ypos="head") + lun "Whisperwood!" ("base", "base", "base", "mid") + lun "Spending an excessive amount of time near a whisperwood tree may lead you to involuntarily utter the most inappropriate remarks at the most inopportune times imaginable!" ("base", "base", "base", "mid") + gen "Sounds like you're describing the characteristics of a genie..." ("base", xpos="far_left", ypos="head") + lun "Really?" ("base", "base", "base", "mid") + gen "Yes... Although, that wasn't why I said it." ("base", xpos="far_left", ypos="head") + lun "Then why did you..." ("base", "base", "base", "mid") + gen "Just as I sensed that the buggers were on the verge of bursting forth, they abruptly darted in the opposite direction!" ("base", xpos="far_left", ypos="head") + lun "So...{w=0.4} You're not cured?" ("base", "base", "base", "mid") + gen "On the contrary... They're getting smarter." ("base", xpos="far_left", ypos="head") + lun "..." ("base", "base", "base", "mid") #Sad + gen "Are you alright?" ("base", xpos="far_left", ypos="head") + lun "I just thought I might've had them that time..." + gen "I'm sure you'll get them next time." ("base", xpos="far_left", ypos="head") + gen "In any case..." ("base", xpos="far_left", ypos="head") + + gen "Didn't you say that you find pleasure in assisting me?" ("base", xpos="far_left", ypos="head") + lun "Oh, right! I do! I'm {i}the{/i} cumslut!" ("base", "base", "base", "mid") #Happy + lun "See you next time, then!" ("base", "base", "base", "mid") + gen "*Heh-Heh*... See you next--" ("base", xpos="far_left", ypos="head") + gen "Hold on!" ("base", xpos="far_left", ypos="head") + lun "Yes?" ("base", "base", "base", "mid") + gen "Make sure you clean yourself..." ("base", xpos="far_left", ypos="head") + lun "Oh, but I'm fine [name_genie_luna], I assure you!" + gen "I see..." + gen "I just figured that you wouldn't want that pretty face of yours to be covered up." + lun "Oh..." ("base", "base", "base", "mid") #blushing + + #TODO hide cum + nar "Luna quickly begins scooping cum off her face, flicking it onto the floor." + + lun "There you go!" ("base", "base", "base", "mid") + lun "Did I manage to get them all?" ("base", "base", "base", "mid") + gen "*Hmm*... Yes, I belive you did... Nice work!" ("base", xpos="far_left", ypos="head") + lun "Thank you, [name_genie_luna]!" ("base", "base", "base", "mid") + + if _wearing_clothes: + $ luna.wear("all") + + if game.daytime: + lun "Have a nice day!" ("base", "base", "base", "mid") + gen "Have a--" ("base", xpos="far_left", ypos="head") + else: + lun "Good night then!" ("base", "base", "base", "mid") + gen "Good--" ("base", xpos="far_left", ypos="head") + + #Luna leaves + call lun_walk(action="leave") + gen "..." + + "-Tell her to get ready, and cum down her throat-": + gen "Take it, you--{w=0.2} cum hungry--{w=0.2} Slut!" + + nar "Luna, ready for your load, pushes her head down to the hilt, and you feel her throat contract around your cock." + + gen "*AARGH*!! You whore!!!" + + #Bobbing stops, and Genie cums down her throat + + play sound "sounds/gulp.ogg" + pause .4 + play sound "sounds/gulp.ogg" + pause .6 + play sound "sounds/gulp.ogg" + + show screen blkfade + with d5 + + #Hide CG + nar "As the last pulse escapes your balls, you slump back into your chair, exhausted by the cheer intensity of the session." + + hide screen blkfade + with d5 + #Fade to office, Luna in front of desk + + lun "So... Did I do good?" ("base", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + lun "[name_genie_luna]?" ("base", "base", "base", "mid") + + $ renpy.sound.play("sounds/snore1.ogg") + gen "*Snore*..." ("base", xpos="far_left", ypos="head") + + lun "You called me a whore, what did you--" ("base", "base", "base", "mid") + + $ renpy.sound.play("sounds/snore1.ogg") + gen "*Snore*!" ("angry", xpos="far_left", ypos="head") + + lun "I'll... I'll let you sleep... Sweet dreams, [name_genie_luna]." ("base", "base", "base", "mid") + + if _wearing_clothes: + $ luna.wear("all") + #Luna leaves + call lun_walk(action="leave") + + gen "..." ("base", xpos="far_left", ypos="head") + gen "(When all else fails, pretend to sleep.)" ("grin", xpos="far_left", ypos="head") + + $ _wearing_clothes = False + + jump ll_pf_blowjob_end + +#Tier 5 BJ notes: +#Genie jokes and says that perhaps he should call her the "head master now." Luna doesn't get it. From 3ede6dba2d3a669f894f2518a1ef676728fa2f10 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 30 Oct 2023 14:51:50 +0000 Subject: [PATCH 022/249] Luna T4 Fellatio - Pose 1/5 * Implemented idle/stroking pose * Updated .gitignore to not include development PNG files --- game/images/CG/.gitignore | 2 + .../lun_blowjob_personal_background.webp | 3 + .../lun_blowjob_personal_genie_arm_idle.webp | 3 + ...wjob_personal_genie_arm_petting_pose3.webp | 3 + ...wjob_personal_genie_arm_petting_pose4.webp | 3 + ...wjob_personal_genie_arm_petting_pose5.webp | 3 + .../lun_blowjob_personal_genie_back.webp | 3 + .../lun_blowjob_personal_genie_front.webp | 3 + .../lun_blowjob_personal_genie_trousers.webp | 3 + .../lun_blowjob_personal_tabletop.webp | 3 + .../lun_blowjob_personal_vignette.webp | 3 + ...lun_blowjob_personal_pose1_cum_frame0.webp | 3 + ...lun_blowjob_personal_pose1_cum_frame1.webp | 3 + ...lun_blowjob_personal_pose1_cum_frame2.webp | 3 + ...lun_blowjob_personal_pose1_cum_frame3.webp | 3 + ...lun_blowjob_personal_pose1_cum_frame4.webp | 3 + ...blowjob_personal_pose1_cum_frame4_alt.webp | 3 + ...lun_blowjob_personal_pose1_cum_precum.webp | 3 + .../lun_blowjob_personal_pose1_luna_base.webp | 3 + ...wjob_personal_pose1_luna_cheeks_blush.webp | 3 + ...ob_personal_pose1_luna_eyebrows_angry.webp | 3 + ...job_personal_pose1_luna_eyebrows_base.webp | 3 + ...b_personal_pose1_luna_eyebrows_raised.webp | 3 + ..._personal_pose1_luna_eyebrows_shocked.webp | 3 + ..._personal_pose1_luna_eyebrows_worried.webp | 3 + ...ob_personal_pose1_luna_eyes_base_down.webp | 3 + ...onal_pose1_luna_eyes_base_down_hearts.webp | 3 + ...ob_personal_pose1_luna_eyes_base_left.webp | 3 + ...b_personal_pose1_luna_eyes_base_right.webp | 3 + ..._personal_pose1_luna_eyes_base_squint.webp | 3 + ...al_pose1_luna_eyes_base_squint_hearts.webp | 3 + ...b_personal_pose1_luna_eyes_base_stare.webp | 3 + ...nal_pose1_luna_eyes_base_stare_hearts.webp | 3 + ...wjob_personal_pose1_luna_eyes_base_up.webp | 3 + ...rsonal_pose1_luna_eyes_base_up_hearts.webp | 3 + .../lun_blowjob_personal_pose1_luna_hair.webp | 3 + ...job_personal_pose1_luna_mouth_annoyed.webp | 3 + ...lowjob_personal_pose1_luna_mouth_base.webp | 3 + ...lowjob_personal_pose1_luna_mouth_grin.webp | 3 + ...job_personal_pose1_luna_mouth_neutral.webp | 3 + ...lowjob_personal_pose1_luna_mouth_open.webp | 3 + ...ob_personal_pose1_luna_mouth_open_cum.webp | 3 + ...b_personal_pose1_luna_mouth_open_spit.webp | 3 + ...personal_pose1_luna_mouth_open_tongue.webp | 3 + ...lowjob_personal_pose1_luna_mouth_soft.webp | 3 + ...ob_personal_pose1_luna_mouth_spitting.webp | 3 + ...job_personal_pose1_luna_mouth_swallow.webp | 3 + ..._pose1_luna_mouth_swallow_full_cheeks.webp | 3 + ...owjob_personal_pose1_luna_stroke_down.webp | 3 + ...ersonal_pose1_luna_stroke_down_shadow.webp | 3 + ...nal_pose1_luna_stroke_down_speedlines.webp | 3 + ...blowjob_personal_pose1_luna_stroke_up.webp | 3 + ..._personal_pose1_luna_stroke_up_shadow.webp | 3 + ...sonal_pose1_luna_stroke_up_speedlines.webp | 3 + .../lun_blowjob_personal_pose1_penis.webp | 3 + ...n_blowjob_personal_pose1_penis_shadow.webp | 3 + ...lun_blowjob_personal_pose1_penis_spit.webp | 3 + game/scripts/cg/luna.rpy | 83 +++++++++++++++++++ .../characters/luna/events/favors/suck_it.rpy | 6 +- 59 files changed, 256 insertions(+), 3 deletions(-) create mode 100644 game/images/CG/.gitignore create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_background.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_idle.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose3.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose4.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose5.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_back.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_front.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_trousers.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_tabletop.webp create mode 100644 game/images/CG/lun_blowjob/personal/lun_blowjob_personal_vignette.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame0.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame1.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame2.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame3.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4_alt.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_precum.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_cheeks_blush.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_raised.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_shocked.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_worried.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_hair.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_annoyed.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_grin.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_neutral.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_cum.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_spit.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_tongue.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_soft.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_spitting.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow_full_cheeks.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_shadow.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_speedlines.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_shadow.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_speedlines.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_shadow.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_spit.webp diff --git a/game/images/CG/.gitignore b/game/images/CG/.gitignore new file mode 100644 index 00000000..598c0299 --- /dev/null +++ b/game/images/CG/.gitignore @@ -0,0 +1,2 @@ +# It is an error to include PNG files for CGs. Use WEBP format instead. +*.png diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_background.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_background.webp new file mode 100644 index 00000000..3548f699 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_background.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48134a051a0fdbb124a4000b38490c9b43d20f45d83c86f80b9a9d376217de73 +size 452440 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_idle.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_idle.webp new file mode 100644 index 00000000..8a902219 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ebed13775e904728b8f62ec42a85e6caa2ecd1a106fae56a3380fc9e727924c +size 122134 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose3.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose3.webp new file mode 100644 index 00000000..e4729168 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose3.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:add16abb01a9dd85b9eed2f9771eb300f8b952715a9944f8e0da836f59ebea06 +size 142876 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose4.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose4.webp new file mode 100644 index 00000000..1ba84120 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose4.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2885cb00c32e3edc560a323c6b0a7f5b771c36ad6c5cb586229d5de063d00a1a +size 139546 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose5.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose5.webp new file mode 100644 index 00000000..b3f69838 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose5.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4932a81bb6687562ded2f28a92a65d243ba962b8b560c035d5aa16a2ff00a242 +size 135714 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_back.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_back.webp new file mode 100644 index 00000000..eb200cf7 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ea782528e9488cb1300b2e72bafd17b5ee2eaeb51373bbfaab1c138020409f6 +size 38428 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_front.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_front.webp new file mode 100644 index 00000000..be308dc4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_front.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a732f0c3df96ccfd3740884887ff8aaa17965a054ccce3b0ad27f4a9ddbe6dea +size 285252 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_trousers.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_trousers.webp new file mode 100644 index 00000000..71cb9e8f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_trousers.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28fafb257d385977039ec6550c0d8dff065eb3edb610ac955936124bdee0958d +size 124870 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_tabletop.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_tabletop.webp new file mode 100644 index 00000000..61b7ae11 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_tabletop.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c79ae4c8a4cd92a55ed9183298074516aa4011c13dccc6dd839cb3ec65e879bb +size 325488 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_vignette.webp b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_vignette.webp new file mode 100644 index 00000000..46dfd56f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_vignette.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:360e9e2343d0bdf691fb055160cdc1658bddaad3be1488e39aff697a2153b954 +size 54436 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame0.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame0.webp new file mode 100644 index 00000000..d9f3c76d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5721e8d6b1e59a92d705ad6b41635241de4e2f678848553717d35229e93881fa +size 22690 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame1.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame1.webp new file mode 100644 index 00000000..433491bc --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02b08357fc84e4c3024c5ad18457d8f4a8c9b210877acc544cb6b974feae7905 +size 43666 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame2.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame2.webp new file mode 100644 index 00000000..5d19a36a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f364417b8aff7011184057b3a42f2d627f28abfe0a5af40394a5f28b1a57891f +size 50454 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame3.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame3.webp new file mode 100644 index 00000000..a344ceb2 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame3.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:159baa1f05a434f48128926b11135111827ed7e2ae86ac9948ad17e01522418d +size 86202 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4.webp new file mode 100644 index 00000000..f8f18435 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c4e891091a4dc1a0ed827a47ba188e686e4dc3ea61ee3cc88817a3cbfe870d1 +size 92690 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4_alt.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4_alt.webp new file mode 100644 index 00000000..ed0aba55 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4_alt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98bce07bb5cb44718320f3c86f87e862ea03fa5af9747914d9491dadad6fc67a +size 83204 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_precum.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_precum.webp new file mode 100644 index 00000000..e4e83edb --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_precum.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3a1a65018148ddb7d838f7ab1647cf05639c967c9300b16b98ff86edef174e4 +size 4692 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_base.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_base.webp new file mode 100644 index 00000000..ca70e55f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3ec70e89cd09f4f82da3259964cd6b9e1663d72fac3f82d166167cf87aff04a +size 462256 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_cheeks_blush.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_cheeks_blush.webp new file mode 100644 index 00000000..fa9f18f6 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_cheeks_blush.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf4b4745ac1aa594fba642a5c48bd343a89fbe919190172bd5ea40f47378b20c +size 67568 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp new file mode 100644 index 00000000..6eb18161 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dc395f1cecec31839cf3cbe3184b41649e32670b3fc50504bedc85e0b8353c0 +size 30500 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_base.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_base.webp new file mode 100644 index 00000000..dc528f84 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e769d879b793b320b413050536b8176447c89042061dd340a48ab5d0ff66a9a0 +size 23288 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_raised.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_raised.webp new file mode 100644 index 00000000..a9f86fb0 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_raised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7d70751b9cb2342347f3634ae974fdbe6836d96ac0fdc1a2d33d56f80b5fb8f +size 24244 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_shocked.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_shocked.webp new file mode 100644 index 00000000..642619ae --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_shocked.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b311ea3fe206fb045324759617b4aa269624665053bf5ce3c5043b5e3393a0d +size 25668 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_worried.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_worried.webp new file mode 100644 index 00000000..65c2d853 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_worried.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3172fc823579f5e0f263fdf55fd704fff1a2f091258b3e604019b8be8a490f8 +size 28218 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down.webp new file mode 100644 index 00000000..72a96dab --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13fc3e79247cb022341d7929e8fe812f356863bdb2b5d30d0b5e908d95245d91 +size 26494 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down_hearts.webp new file mode 100644 index 00000000..2aebe87d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b94c622b9500a12a14aaf9e8fdd6cabaae9ecc976e5fcf64315bb0bd8e6bf1d +size 28046 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_left.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_left.webp new file mode 100644 index 00000000..9293e92f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81e94ae01d5fd925ba8eb4a10fb055c1ec495ad96b943e4fede0b3a655a71781 +size 28134 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_right.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_right.webp new file mode 100644 index 00000000..227a2663 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbf85e9308209df5103afabc672556190697b5e183e15928787caa9d640c8167 +size 28416 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint.webp new file mode 100644 index 00000000..bf428f96 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fff3d61d83fb7aba72485ed721a8f8e912f17fc0e0a7bf4efb5f9fd8bc28eae7 +size 27334 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint_hearts.webp new file mode 100644 index 00000000..517eaefa --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ec89b937d31644b8dfcd7776db2619d4e8ba6ea00e2a9d3f2e34a499db47e6c +size 29030 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare.webp new file mode 100644 index 00000000..4cf92124 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4eedce3033accd6c61412a5378be6d3448aa16def841d699ba5114430a07ce7b +size 28276 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare_hearts.webp new file mode 100644 index 00000000..db35300e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7ae96e80536ac2b54c01f1adf6446710b822bae6fe6a0ab06835ebb61ffc364 +size 30330 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp new file mode 100644 index 00000000..b58b4b04 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ef54f60867d398aebb656403ea88dd1e43929a2549f55fd729afbfe4be3ffe2 +size 27468 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp new file mode 100644 index 00000000..94ab520c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af1399282b81e2cd43c070a66f59ba21365d42a3b925be300582c8124207380a +size 29424 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_hair.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_hair.webp new file mode 100644 index 00000000..a3ec0761 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_hair.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e39c88c61c0b33cedd5ea8991eff07c421d485f30c0421fd667df1700c7bf1c +size 391968 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_annoyed.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_annoyed.webp new file mode 100644 index 00000000..9355ce56 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_annoyed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d258b5656172d569387c25ba5601e350710be903903c6072af7da8053c3d156 +size 10418 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_base.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_base.webp new file mode 100644 index 00000000..4c8d7c6e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7188ffe1329962c4aa7543d5a9ca67769dc4cb0df36124bc445678bd5673a8d7 +size 11228 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_grin.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_grin.webp new file mode 100644 index 00000000..abe25d70 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_grin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24468945b698e062e3c0f996eabdfe41ca8e3473174591f4dcba5951976b11b0 +size 19470 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_neutral.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_neutral.webp new file mode 100644 index 00000000..4d85d31b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_neutral.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c401c3d37b779fbee909432a614d5df200836b1e78f3219966d5a94b54e4c9e +size 11306 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open.webp new file mode 100644 index 00000000..43c03175 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4738f2bbc1f7b05747a4ef4f573980da173455802e2993d9e0025a6c5be1530 +size 18788 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_cum.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_cum.webp new file mode 100644 index 00000000..312b7d5e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_cum.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7930756b4c2dd7ac89dd3676e5ed4ba158f7b5433e73bfc75bab632329c9dd7e +size 25480 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_spit.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_spit.webp new file mode 100644 index 00000000..d67eb945 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25e14951f090cd2bada2e8c0e8c29a883d67de674ce2ec96a81b0e7f679da2ee +size 19834 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_tongue.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_tongue.webp new file mode 100644 index 00000000..caf6a4ec --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_tongue.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6c5372b82a89ff6a472b586c36139131a34298355acfb3cb25d3dd50ffa97c9 +size 22082 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_soft.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_soft.webp new file mode 100644 index 00000000..1c3c823e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_soft.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5f4f76c5137715c29e4129d6c0edf364c6b9b546def78c65534dfd4b7a37870 +size 14536 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_spitting.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_spitting.webp new file mode 100644 index 00000000..7626cca4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_spitting.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bba7d4211d71dd0869c7e83955a56313c88ba4b28f4128de364d33c6aca32a1 +size 19282 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow.webp new file mode 100644 index 00000000..06757e3e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0244f2c72802ad3e2e2bf31e11005a722a86955aac9927358c22748826788bd6 +size 14858 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow_full_cheeks.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow_full_cheeks.webp new file mode 100644 index 00000000..5f741fba --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow_full_cheeks.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bac5830e8f7b8c8a2f431e96012cc18d95e9c216efdabb46f91ec1b0bbb8db02 +size 32714 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down.webp new file mode 100644 index 00000000..4a1ece0f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca0183914608c5a084dcaf7c448c3e0373dc1ece39a2fd4910a629e185785bc6 +size 86234 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_shadow.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_shadow.webp new file mode 100644 index 00000000..9801bacb --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_shadow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b18330fd2547f83bf21604f4998a0ac42e0e6632ebc35335eb364689b00df08a +size 11106 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_speedlines.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_speedlines.webp new file mode 100644 index 00000000..84ff235a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_speedlines.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a2003ab2f6dd8cd19f80b5d8e6e05636bccafec8cfa2ee3bf8449692f688b2a +size 30686 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up.webp new file mode 100644 index 00000000..b983b546 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1db4504148d04eb63cea7e16b27625fd87f46efcf800c07fbd90c2ffd5bab64 +size 100762 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_shadow.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_shadow.webp new file mode 100644 index 00000000..197b165e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_shadow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b57277718e9a2bcb6b95cd13fe754d9085bb9ebff76eb3c9078f9a1d1e348c2d +size 19336 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_speedlines.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_speedlines.webp new file mode 100644 index 00000000..4ea02da4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_speedlines.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e8a78bfa1de64d2d552e28b54d8ed4b6e99421580078ee2274c6ef7d41319e2 +size 36370 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis.webp new file mode 100644 index 00000000..4ca90358 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e76eb1e432423e5734ff7f537d9bb4a9d0679dea6ee436c0ead544aea0574c2 +size 56110 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_shadow.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_shadow.webp new file mode 100644 index 00000000..1bb711de --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_shadow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f0291981f6e29f240d54c6882de8f3dcc545e67e82bf950b910cd1a1ceb026f +size 12810 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_spit.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_spit.webp new file mode 100644 index 00000000..65056844 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66765976ad5e9e0fbc1ef22b5eac91ea82ce9d2cbd06d80f84660590d480dc7d +size 28612 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index fff8f1ea..1c31b21b 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -8,3 +8,86 @@ image CG lun_intro luna bendover naked = Fixed( "images/CG/lun_intro/bg.webp", "images/CG/lun_intro/luna_naked.webp", ) + +layeredimage lun_blowjob_personal_pose1: + fit "cover" + fit_first True + + always "lun_blowjob_personal_background" + always "lun_blowjob_personal_pose1_luna_base" + always "lun_blowjob_personal_genie_back" + + group luna_cheeks auto prefix "cheeks": + attribute none null default + + group luna_mouth auto prefix "mouth": + attribute base default + + group luna_eyes auto prefix "eyes": + attribute base_stare default + + group luna_eyebrows auto prefix "eyebrows": + attribute base default + + always "lun_blowjob_personal_pose1_luna_hair" + + attribute penis default if_not ["trousers"] + attribute penis_shadow default if_not ["trousers"] + attribute penis_spit + + group handjob prefix "handjob" if_not ["trousers"]: + attribute idle "lun_blowjob_personal_pose1_luna_stroke_down" default + attribute slow + attribute moderate + attribute fast + + always "lun_blowjob_personal_genie_front" + + group genie: + attribute trousers "lun_blowjob_personal_genie_trousers" default + attribute no_trousers null + + always "lun_blowjob_personal_tabletop" + + group cum auto prefix "cum" if_not ["trousers"]: + attribute precum default + + always "lun_blowjob_personal_vignette" + +image lun_blowjob_personal_pose1_handjob_slow: + Fixed( + "lun_blowjob_personal_pose1_luna_stroke_down_shadow", + "lun_blowjob_personal_pose1_luna_stroke_down") + pause 0.5 + Fixed( + "lun_blowjob_personal_pose1_luna_stroke_up_shadow", + "lun_blowjob_personal_pose1_luna_stroke_up") + pause 0.5 + repeat + +image lun_blowjob_personal_pose1_handjob_moderate: + Fixed( + "lun_blowjob_personal_pose1_luna_stroke_down_shadow", + "lun_blowjob_personal_pose1_luna_stroke_down") + pause 0.35 + Fixed( + "lun_blowjob_personal_pose1_luna_stroke_up_shadow", + "lun_blowjob_personal_pose1_luna_stroke_up") + pause 0.35 + repeat + +image lun_blowjob_personal_pose1_handjob_fast: + Fixed( + "lun_blowjob_personal_pose1_luna_stroke_down_shadow", + "lun_blowjob_personal_pose1_luna_stroke_down", + "lun_blowjob_personal_pose1_luna_stroke_down_speedlines") + + pause 0.2 + + Fixed( + "lun_blowjob_personal_pose1_luna_stroke_up_shadow", + "lun_blowjob_personal_pose1_luna_stroke_up", + "lun_blowjob_personal_pose1_luna_stroke_up_speedlines") + + pause 0.2 + repeat diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 5db980c2..990ceab1 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -179,7 +179,7 @@ label ll_pf_blowjob_T4_E1_intro: gen "You may proceed with the treatment, [name_luna_genie]." lun "How am I supposed to--" lun "I mean... Is there any particular way that I should suck on it?" - gen "*Hmm*... Perhaps sucking isn't the right phrase to describe it..." ( + gen "*Hmm*... Perhaps sucking isn't the right phrase to describe it..." gen "The goal is to lure them out, so just try and make the area feel good first and foremost." lun "Okay then..." nar "Luna stares at your cock excitedly as she readies herself to take the head into her mouth." @@ -568,7 +568,7 @@ label ll_pf_blowjob_T4_E3_intro: gen "(I thought weekends didn't exist in this universe...)" ("base", xpos="far_left", ypos="head") lun "Yes! It's Mister Sun's happy day!" ("base", "base", "base", "mid") menu: - "-Enough with the nonsense-" + "-Enough with the nonsense-": gen "And here I thought my calendar said {i}Suckday{/i} on it." ("base", xpos="far_left", ypos="head") lun "*Huh*?" ("base", "base", "base", "mid") gen "That's why I called you here, to suck those spurts out for me." ("base", xpos="far_left", ypos="head") @@ -582,7 +582,7 @@ label ll_pf_blowjob_T4_E3_intro: lun "Oh, okay! Sorry, I don't always know when someone is joking..." ("base", "base", "base", "mid") gen "So... Since it's Suckday today, you think you could help me?" ("base", xpos="far_left", ypos="head") lun "Of course!" ("base", "base", "base", "mid") - "-Let her talk-" + "-Let her talk-": gen "Right..." ("base", xpos="far_left", ypos="head") if game.daytime: if game.weather == "clear": #Sunny From 5286827d6ebd64e94e4a447a53ff501644e5bd96 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 31 Oct 2023 11:45:05 +0000 Subject: [PATCH 023/249] Bug fixes * Fixed a typos in character name references --- game/scripts/characters/hermione/events/items/butt_plugs.rpy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/scripts/characters/hermione/events/items/butt_plugs.rpy b/game/scripts/characters/hermione/events/items/butt_plugs.rpy index 5e14d882..16bedde1 100644 --- a/game/scripts/characters/hermione/events/items/butt_plugs.rpy +++ b/game/scripts/characters/hermione/events/items/butt_plugs.rpy @@ -34,7 +34,7 @@ label hg_butt_plugs: gen "Today, I want you to wear a butt plug around the school." ("base", xpos="far_left", ypos="head") her "You want me to...{w=0.4} What?!" ("angry", "wide", "worried", "mid") gen "Wear a--" ("base", xpos="far_left", ypos="head") - her "[name_genie_hermione_], I can't believe you'd do this!" ("angry", "happyCl", "worried", "mid") + her "[name_genie_hermione], I can't believe you'd do this!" ("angry", "happyCl", "worried", "mid") her "I'm leaving!" ("angry", "base", "worried", "R") call her_walk(action="leave") @@ -164,7 +164,7 @@ label hg_butt_plugs: gen "Today, I want you to wear a butt plug around the school." ("base", xpos="far_left", ypos="head") her "You want me to...{w=0.4} What?!" ("angry", "wide", "worried", "mid") gen "Wear a--" ("base", xpos="far_left", ypos="head") - her "[name_genie_hermione_], I can't believe you'd do this!" ("angry", "happyCl", "worried", "mid") + her "[name_genie_hermione], I can't believe you'd do this!" ("angry", "happyCl", "worried", "mid") her "I'm leaving!" ("angry", "base", "worried", "R") call her_walk(action="leave") From 57c1dccb8a3d3785a7b47bb0e5eae12f4737760b Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 31 Oct 2023 15:24:44 +0000 Subject: [PATCH 024/249] Luna T4 Fellatio - Pose 5/5 * Implemented fellatio poses 2-5 * Added previously misplaced images * Initial implementation for posing --- ...owjob_personal_pose1_luna_eyes_closed.webp | 3 + ...personal_pose1_luna_eyes_halflid_down.webp | 3 + ...l_pose1_luna_eyes_halflid_down_hearts.webp | 3 + ...personal_pose1_luna_eyes_halflid_left.webp | 3 + ...ersonal_pose1_luna_eyes_halflid_right.webp | 3 + ...rsonal_pose1_luna_eyes_halflid_squint.webp | 3 + ...pose1_luna_eyes_halflid_squint_hearts.webp | 3 + ...ersonal_pose1_luna_eyes_halflid_stare.webp | 3 + ..._pose1_luna_eyes_halflid_stare_hearts.webp | 3 + ...b_personal_pose1_luna_eyes_halflid_up.webp | 3 + ...nal_pose1_luna_eyes_halflid_up_hearts.webp | 3 + ...ob_personal_pose1_luna_eyes_wide_down.webp | 3 + ...onal_pose1_luna_eyes_wide_down_hearts.webp | 3 + ...ob_personal_pose1_luna_eyes_wide_left.webp | 3 + ...b_personal_pose1_luna_eyes_wide_right.webp | 3 + ..._personal_pose1_luna_eyes_wide_squint.webp | 3 + ...al_pose1_luna_eyes_wide_squint_hearts.webp | 3 + ...b_personal_pose1_luna_eyes_wide_stare.webp | 3 + ...nal_pose1_luna_eyes_wide_stare_hearts.webp | 3 + ...wjob_personal_pose1_luna_eyes_wide_up.webp | 3 + ...rsonal_pose1_luna_eyes_wide_up_hearts.webp | 3 + ...owjob_personal_pose1_luna_mouth_full.webp} | 0 ...owjob_personal_pose1_throatpie_frame0.webp | 3 + .../lun_blowjob_personal_pose2_luna_base.webp | 3 + ...ob_personal_pose2_luna_eyebrows_angry.webp | 3 + ...job_personal_pose2_luna_eyebrows_base.webp | 3 + ...b_personal_pose2_luna_eyebrows_raised.webp | 3 + ..._personal_pose2_luna_eyebrows_shocked.webp | 3 + ..._personal_pose2_luna_eyebrows_worried.webp | 3 + ...ob_personal_pose2_luna_eyes_base_down.webp | 3 + ...onal_pose2_luna_eyes_base_down_hearts.webp | 3 + ...ob_personal_pose2_luna_eyes_base_left.webp | 3 + ...b_personal_pose2_luna_eyes_base_right.webp | 3 + ..._personal_pose2_luna_eyes_base_squint.webp | 3 + ...al_pose2_luna_eyes_base_squint_hearts.webp | 3 + ...b_personal_pose2_luna_eyes_base_stare.webp | 3 + ...nal_pose2_luna_eyes_base_stare_hearts.webp | 3 + ...wjob_personal_pose2_luna_eyes_base_up.webp | 3 + ...rsonal_pose2_luna_eyes_base_up_hearts.webp | 3 + ...owjob_personal_pose2_luna_eyes_closed.webp | 3 + ...personal_pose2_luna_eyes_halflid_down.webp | 3 + ...l_pose2_luna_eyes_halflid_down_hearts.webp | 3 + ...personal_pose2_luna_eyes_halflid_left.webp | 3 + ...ersonal_pose2_luna_eyes_halflid_right.webp | 3 + ...rsonal_pose2_luna_eyes_halflid_squint.webp | 3 + ...pose2_luna_eyes_halflid_squint_hearts.webp | 3 + ...ersonal_pose2_luna_eyes_halflid_stare.webp | 3 + ..._pose2_luna_eyes_halflid_stare_hearts.webp | 3 + ...b_personal_pose2_luna_eyes_halflid_up.webp | 3 + ...nal_pose2_luna_eyes_halflid_up_hearts.webp | 3 + ...ob_personal_pose2_luna_eyes_wide_down.webp | 3 + ...onal_pose2_luna_eyes_wide_down_hearts.webp | 3 + ...ob_personal_pose2_luna_eyes_wide_left.webp | 3 + ...b_personal_pose2_luna_eyes_wide_right.webp | 3 + ..._personal_pose2_luna_eyes_wide_squint.webp | 3 + ...al_pose2_luna_eyes_wide_squint_hearts.webp | 3 + ...b_personal_pose2_luna_eyes_wide_stare.webp | 3 + ...nal_pose2_luna_eyes_wide_stare_hearts.webp | 3 + ...wjob_personal_pose2_luna_eyes_wide_up.webp | 3 + ...rsonal_pose2_luna_eyes_wide_up_hearts.webp | 3 + .../lun_blowjob_personal_pose2_luna_hair.webp | 3 + ...lowjob_personal_pose2_luna_mouth_kiss.webp | 3 + ...lowjob_personal_pose2_luna_mouth_lick.webp | 3 + ...owjob_personal_pose2_luna_stroke_down.webp | 3 + .../lun_blowjob_personal_pose2_penis.webp | 3 + ...lun_blowjob_personal_pose2_penis_spit.webp | 3 + ...owjob_personal_pose2_throatpie_frame0.webp | 3 + .../lun_blowjob_personal_pose3_luna_base.webp | 3 + ...ob_personal_pose3_luna_eyebrows_angry.webp | 3 + ...job_personal_pose3_luna_eyebrows_base.webp | 3 + ...b_personal_pose3_luna_eyebrows_raised.webp | 3 + ..._personal_pose3_luna_eyebrows_shocked.webp | 3 + ..._personal_pose3_luna_eyebrows_worried.webp | 3 + ...ob_personal_pose3_luna_eyes_base_down.webp | 3 + ...onal_pose3_luna_eyes_base_down_hearts.webp | 3 + ...ob_personal_pose3_luna_eyes_base_left.webp | 3 + ...b_personal_pose3_luna_eyes_base_right.webp | 3 + ..._personal_pose3_luna_eyes_base_squint.webp | 3 + ...al_pose3_luna_eyes_base_squint_hearts.webp | 3 + ...b_personal_pose3_luna_eyes_base_stare.webp | 3 + ...nal_pose3_luna_eyes_base_stare_hearts.webp | 3 + ...wjob_personal_pose3_luna_eyes_base_up.webp | 3 + ...rsonal_pose3_luna_eyes_base_up_hearts.webp | 3 + ...owjob_personal_pose3_luna_eyes_closed.webp | 3 + ...personal_pose3_luna_eyes_halflid_down.webp | 3 + ...l_pose3_luna_eyes_halflid_down_hearts.webp | 3 + ...personal_pose3_luna_eyes_halflid_left.webp | 3 + ...ersonal_pose3_luna_eyes_halflid_right.webp | 3 + ...rsonal_pose3_luna_eyes_halflid_squint.webp | 3 + ...pose3_luna_eyes_halflid_squint_hearts.webp | 3 + ...ersonal_pose3_luna_eyes_halflid_stare.webp | 3 + ..._pose3_luna_eyes_halflid_stare_hearts.webp | 3 + ...b_personal_pose3_luna_eyes_halflid_up.webp | 3 + ...nal_pose3_luna_eyes_halflid_up_hearts.webp | 3 + ...ob_personal_pose3_luna_eyes_wide_down.webp | 3 + ...onal_pose3_luna_eyes_wide_down_hearts.webp | 3 + ...ob_personal_pose3_luna_eyes_wide_left.webp | 3 + ...b_personal_pose3_luna_eyes_wide_right.webp | 3 + ..._personal_pose3_luna_eyes_wide_squint.webp | 3 + ...al_pose3_luna_eyes_wide_squint_hearts.webp | 3 + ...b_personal_pose3_luna_eyes_wide_stare.webp | 3 + ...nal_pose3_luna_eyes_wide_stare_hearts.webp | 3 + ...wjob_personal_pose3_luna_eyes_wide_up.webp | 3 + ...rsonal_pose3_luna_eyes_wide_up_hearts.webp | 3 + .../lun_blowjob_personal_pose3_luna_hair.webp | 3 + ...lowjob_personal_pose3_luna_mouth_suck.webp | 3 + ...owjob_personal_pose3_luna_stroke_down.webp | 3 + .../lun_blowjob_personal_pose3_penis.webp | 3 + ...lun_blowjob_personal_pose3_penis_spit.webp | 3 + ...owjob_personal_pose3_throatpie_frame0.webp | 3 + .../lun_blowjob_personal_pose4_luna_base.webp | 3 + ...ob_personal_pose4_luna_eyebrows_angry.webp | 3 + ...job_personal_pose4_luna_eyebrows_base.webp | 3 + ...b_personal_pose4_luna_eyebrows_raised.webp | 3 + ..._personal_pose4_luna_eyebrows_shocked.webp | 3 + ..._personal_pose4_luna_eyebrows_worried.webp | 3 + ...ob_personal_pose4_luna_eyes_base_down.webp | 3 + ...onal_pose4_luna_eyes_base_down_hearts.webp | 3 + ...ob_personal_pose4_luna_eyes_base_left.webp | 3 + ...b_personal_pose4_luna_eyes_base_right.webp | 3 + ..._personal_pose4_luna_eyes_base_squint.webp | 3 + ...al_pose4_luna_eyes_base_squint_hearts.webp | 3 + ...b_personal_pose4_luna_eyes_base_stare.webp | 3 + ...nal_pose4_luna_eyes_base_stare_hearts.webp | 3 + ...wjob_personal_pose4_luna_eyes_base_up.webp | 3 + ...rsonal_pose4_luna_eyes_base_up_hearts.webp | 3 + ...owjob_personal_pose4_luna_eyes_closed.webp | 3 + ...personal_pose4_luna_eyes_halflid_down.webp | 3 + ...l_pose4_luna_eyes_halflid_down_hearts.webp | 3 + ...personal_pose4_luna_eyes_halflid_left.webp | 3 + ...ersonal_pose4_luna_eyes_halflid_right.webp | 3 + ...rsonal_pose4_luna_eyes_halflid_squint.webp | 3 + ...pose4_luna_eyes_halflid_squint_hearts.webp | 3 + ...ersonal_pose4_luna_eyes_halflid_stare.webp | 3 + ..._pose4_luna_eyes_halflid_stare_hearts.webp | 3 + ...b_personal_pose4_luna_eyes_halflid_up.webp | 3 + ...nal_pose4_luna_eyes_halflid_up_hearts.webp | 3 + ...ob_personal_pose4_luna_eyes_wide_down.webp | 3 + ...onal_pose4_luna_eyes_wide_down_hearts.webp | 3 + ...ob_personal_pose4_luna_eyes_wide_left.webp | 3 + ...b_personal_pose4_luna_eyes_wide_right.webp | 3 + ..._personal_pose4_luna_eyes_wide_squint.webp | 3 + ...al_pose4_luna_eyes_wide_squint_hearts.webp | 3 + ...b_personal_pose4_luna_eyes_wide_stare.webp | 3 + ...nal_pose4_luna_eyes_wide_stare_hearts.webp | 3 + ...wjob_personal_pose4_luna_eyes_wide_up.webp | 3 + ...rsonal_pose4_luna_eyes_wide_up_hearts.webp | 3 + .../lun_blowjob_personal_pose4_luna_hair.webp | 3 + ...lowjob_personal_pose4_luna_mouth_suck.webp | 3 + ...owjob_personal_pose4_luna_stroke_down.webp | 3 + .../lun_blowjob_personal_pose4_penis.webp | 3 + ...lun_blowjob_personal_pose4_penis_spit.webp | 3 + ...owjob_personal_pose4_throatpie_frame0.webp | 3 + .../lun_blowjob_personal_pose5_luna_base.webp | 3 + ...ob_personal_pose5_luna_eyebrows_angry.webp | 3 + ...job_personal_pose5_luna_eyebrows_base.webp | 3 + ...b_personal_pose5_luna_eyebrows_raised.webp | 3 + ..._personal_pose5_luna_eyebrows_shocked.webp | 3 + ..._personal_pose5_luna_eyebrows_worried.webp | 3 + ...ob_personal_pose5_luna_eyes_base_down.webp | 3 + ...onal_pose5_luna_eyes_base_down_hearts.webp | 3 + ...ob_personal_pose5_luna_eyes_base_left.webp | 3 + ...b_personal_pose5_luna_eyes_base_right.webp | 3 + ..._personal_pose5_luna_eyes_base_squint.webp | 3 + ...al_pose5_luna_eyes_base_squint_hearts.webp | 3 + ...b_personal_pose5_luna_eyes_base_stare.webp | 3 + ...nal_pose5_luna_eyes_base_stare_hearts.webp | 3 + ...wjob_personal_pose5_luna_eyes_base_up.webp | 3 + ...rsonal_pose5_luna_eyes_base_up_hearts.webp | 3 + ...owjob_personal_pose5_luna_eyes_closed.webp | 3 + ...personal_pose5_luna_eyes_halflid_down.webp | 3 + ...l_pose5_luna_eyes_halflid_down_hearts.webp | 3 + ...personal_pose5_luna_eyes_halflid_left.webp | 3 + ...ersonal_pose5_luna_eyes_halflid_right.webp | 3 + ...rsonal_pose5_luna_eyes_halflid_squint.webp | 3 + ...pose5_luna_eyes_halflid_squint_hearts.webp | 3 + ...ersonal_pose5_luna_eyes_halflid_stare.webp | 3 + ..._pose5_luna_eyes_halflid_stare_hearts.webp | 3 + ...b_personal_pose5_luna_eyes_halflid_up.webp | 3 + ...nal_pose5_luna_eyes_halflid_up_hearts.webp | 3 + ...ob_personal_pose5_luna_eyes_wide_down.webp | 3 + ...onal_pose5_luna_eyes_wide_down_hearts.webp | 3 + ...ob_personal_pose5_luna_eyes_wide_left.webp | 3 + ...b_personal_pose5_luna_eyes_wide_right.webp | 3 + ..._personal_pose5_luna_eyes_wide_squint.webp | 3 + ...al_pose5_luna_eyes_wide_squint_hearts.webp | 3 + ...b_personal_pose5_luna_eyes_wide_stare.webp | 3 + ...nal_pose5_luna_eyes_wide_stare_hearts.webp | 3 + ...wjob_personal_pose5_luna_eyes_wide_up.webp | 3 + ...rsonal_pose5_luna_eyes_wide_up_hearts.webp | 3 + ..._blowjob_personal_pose5_luna_frothing.webp | 3 + .../lun_blowjob_personal_pose5_luna_hair.webp | 3 + ...lowjob_personal_pose5_luna_mouth_suck.webp | 3 + ...owjob_personal_pose5_luna_stroke_down.webp | 3 + .../lun_blowjob_personal_pose5_penis.webp | 3 + ...lun_blowjob_personal_pose5_penis_spit.webp | 3 + ...owjob_personal_pose5_throatpie_frame0.webp | 3 + ...owjob_personal_pose5_throatpie_frame1.webp | 3 + game/scripts/cg/luna.rpy | 171 +++++++++++++++++- .../characters/luna/events/favors/suck_it.rpy | 53 +++++- 200 files changed, 810 insertions(+), 5 deletions(-) create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_closed.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up_hearts.webp rename game/images/CG/lun_blowjob/personal/pose1/{lun_blowjob_personal_pose1_luna_mouth_swallow_full_cheeks.webp => lun_blowjob_personal_pose1_luna_mouth_full.webp} (100%) create mode 100644 game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_throatpie_frame0.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_angry.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_raised.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_shocked.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_worried.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_closed.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_hair.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_kiss.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_lick.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_stroke_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis_spit.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_throatpie_frame0.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_angry.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_raised.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_shocked.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_worried.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_closed.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_hair.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_mouth_suck.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_stroke_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis_spit.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_throatpie_frame0.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_angry.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_raised.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_shocked.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_worried.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_closed.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_hair.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_mouth_suck.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_stroke_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis_spit.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_throatpie_frame0.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_angry.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_base.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_raised.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_shocked.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_worried.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_closed.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_left.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_right.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up_hearts.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_frothing.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_hair.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_mouth_suck.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_stroke_down.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis_spit.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame0.webp create mode 100644 game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame1.webp diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_closed.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_closed.webp new file mode 100644 index 00000000..5eedc499 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fb75921133da191ed1aa19bdd72f4f91a0c02fea4ce67571abfebf1c6eac710 +size 20620 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down.webp new file mode 100644 index 00000000..35b36d40 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29437b4c77d505c05cb2c1f7c16f173c7f014e87d8a3568cde046d4f243ce591 +size 22550 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down_hearts.webp new file mode 100644 index 00000000..63cfc769 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:249d39bb77c7932002607841cc429342021ba1ea0096dc7523e8492092e986ad +size 24012 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_left.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_left.webp new file mode 100644 index 00000000..da93a883 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc5dae90492028ef278363e56caf24f208a0946eea1266751250304b113ae9e2 +size 25864 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_right.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_right.webp new file mode 100644 index 00000000..3b2a4f93 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3113b3c1afd3c7c3b730eb9c01bd7accbfb9903f74c124e851c13668f5f9b0f7 +size 23890 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint.webp new file mode 100644 index 00000000..bcddf0e3 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92aab2c78c968c2ea545231eab58c81fe4f12fc7f07b7aba28490104e8ad9a94 +size 23754 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint_hearts.webp new file mode 100644 index 00000000..411b9002 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67f7576a9a6b9f7266c07f4b5820c372b3af16039c47d63913c9aeea22b23321 +size 25320 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare.webp new file mode 100644 index 00000000..541f9600 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d98925398002af7089dbf5d4bd58d0636c8b8a5752020767036fc07bb04e48b0 +size 25468 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare_hearts.webp new file mode 100644 index 00000000..8dc7d6ad --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bbc60cc3f5a1eb0348055557e9cd15284b41fdf94e4fd6cebdf4dd9ac4b3ce3 +size 27446 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up.webp new file mode 100644 index 00000000..01c68275 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b973046b761bd39d52118d0a7026b2f3ff26d31c3f264f602452b0a75a0b8e45 +size 25610 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up_hearts.webp new file mode 100644 index 00000000..7633d195 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c616377fee557ed63dad86f9e25082b298febd22b5a51682fa6a673c828b72ab +size 27708 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down.webp new file mode 100644 index 00000000..341f01bb --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc04f069d757e1d1517c4aaab7d98a7434659e49dc15100289537905a45f44bf +size 29006 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down_hearts.webp new file mode 100644 index 00000000..43c4ebc9 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fc8d11409572565b2758b71ba66bc4c228e17431c25ee3b5dbf831775399a4e +size 30710 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_left.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_left.webp new file mode 100644 index 00000000..14e565c4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b7e8414a086380a5c566f7529cc1ba99ad105b90a71f5b11190566d04e10154 +size 30748 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_right.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_right.webp new file mode 100644 index 00000000..833c5ce0 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7071efb7faa561a4db3ca55f1dac9e879ada31a2f32fd2d49cfebf30b88c4d3 +size 30382 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint.webp new file mode 100644 index 00000000..6905cc68 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:134da640c7da178c3b8e6725ead2d84cdf249db51b8ecac957532b29261af580 +size 29218 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint_hearts.webp new file mode 100644 index 00000000..0cfd1d24 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7dc873dbaade5bb5988ad6795c38871103a33ecbf61cfaad332ee63665ef6f9 +size 30800 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare.webp new file mode 100644 index 00000000..e27094c4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77b7b226fae3f25c0991cf971cb129fee45e401f13799cd1e3498f2c38e7f1cf +size 30160 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare_hearts.webp new file mode 100644 index 00000000..3211527e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb0e4eef749850db1223f424ab03f80b32185c976013b65bc8917f5da2484060 +size 32208 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up.webp new file mode 100644 index 00000000..4c9c9d1e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7160b6679b36500fd4612b5febc033a05daf91a3e3dbb52edaa11acd9d9375b +size 29512 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up_hearts.webp new file mode 100644 index 00000000..394ccf59 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e74cbf2f0bd61b6458f7eb03a193d68270bc0220e05ae76f5ad835e7e7e5fa8e +size 31510 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow_full_cheeks.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_full.webp similarity index 100% rename from game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow_full_cheeks.webp rename to game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_full.webp diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_throatpie_frame0.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_throatpie_frame0.webp new file mode 100644 index 00000000..bf950028 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_throatpie_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d88ba94adf24ecb3d5e47234b9b9a787cb870f706b2098fe402617a54bd1cd8c +size 112254 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_base.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_base.webp new file mode 100644 index 00000000..1a8cac92 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca91372967b5bf58f40415c054b81d6eb20213554b17563cf5f070662e2d4af6 +size 420492 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_angry.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_angry.webp new file mode 100644 index 00000000..c8f00ede --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aec6872f2c34002cd68c3367aef9d47c614ef0a883082c371b20359d68922096 +size 23800 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_base.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_base.webp new file mode 100644 index 00000000..c269eab2 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76e411fac0895ec44b6811d58774f28818eb184e49ab4a93bafdd17504dca60d +size 24486 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_raised.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_raised.webp new file mode 100644 index 00000000..72c1dc55 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_raised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa01b929f9779ecfc495abb2edf4f8fcd28d5ad84f57ac3cf25e1ff38e98d0ca +size 24526 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_shocked.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_shocked.webp new file mode 100644 index 00000000..5a695fa7 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_shocked.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3432eeaf2531e93c2d6a568d3128b02e0b1482167a8e9cf23f71779169b2c0a +size 22624 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_worried.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_worried.webp new file mode 100644 index 00000000..c0366681 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_worried.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5b7782793d49888d32c341aba04dfefb10604887c06aaa519be9cd4db653b72 +size 24234 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down.webp new file mode 100644 index 00000000..403cda5a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba049baaa712513006e4de2c1adb47eaa44ef6027ec20e6e337ff106419381f9 +size 27878 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down_hearts.webp new file mode 100644 index 00000000..69e7eb06 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dd348747524b6aae5439c87b64b2d721c1f61ed1f0371775fe01404b27143e4 +size 29788 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_left.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_left.webp new file mode 100644 index 00000000..11e2a8d2 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0754922f748db2a727372bf2be44c066c74011180b356ea7363292346c4304cd +size 27666 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_right.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_right.webp new file mode 100644 index 00000000..bdae95f8 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c5824a20521a7ee9565fb231991165f4e5d79a720d7f664d21b91495df27132 +size 27096 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint.webp new file mode 100644 index 00000000..6e900f8e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97b6aa07d044dc44db736e908368c5aadac856f084eef30b3084f77936b3085 +size 27620 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint_hearts.webp new file mode 100644 index 00000000..06129ff5 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55862a0cf1525e478d6d1a8d7d29ceeecb5b0d9db883bab35bdb12e178c77081 +size 29752 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare.webp new file mode 100644 index 00000000..8f23318d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86a6283f4ed407ba4e73fc4768a78b59b3d90bb6afb3993d0c8df0cc8f0a9023 +size 29274 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare_hearts.webp new file mode 100644 index 00000000..4513cae2 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97704ae08e96ed0e6f45f429c7ab464698e425acfec7a45cdd23e6032484749b +size 31432 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up.webp new file mode 100644 index 00000000..ffe9e3ef --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52c24b5da4cd13f4ef5b47c56c3c96dd3272b646bd1d104b2f9faa34659493d9 +size 28352 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up_hearts.webp new file mode 100644 index 00000000..3cb76cd2 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4949e42248fb00f528862857e480c878047603fc25360cf6c662565e9be8bd0d +size 30418 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_closed.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_closed.webp new file mode 100644 index 00000000..d0011b77 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff5b9a0e8fcdfd6e07e9c0eb6ec0cf24dc0c5c86ba27ef9420c6725c0deaf4c7 +size 23408 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down.webp new file mode 100644 index 00000000..4371b423 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d3d5053f8186ef03e0587c1babe04a06dda432ba0c7dc9fc21d2ed15e534466 +size 26438 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down_hearts.webp new file mode 100644 index 00000000..87a0c49c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:331bd8a42573e187ea51fcb39a23c38437db749bd17d424732fec377c20de04f +size 28408 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_left.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_left.webp new file mode 100644 index 00000000..b9f854c4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec1e4a8fd7eff63db7fa96e267f3b3c3e40215cf0814bcc7d55db19a1d824714 +size 25508 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp new file mode 100644 index 00000000..58936f42 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ce9984025f5730a1e399b53ebf9e2611720bfc2a1eeae9122e751dbdd664318 +size 25344 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint.webp new file mode 100644 index 00000000..5cb22e1d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:419c82359e4b1e7d842f542c2e9fbc9fcdf34ab65696094b005e64d039ecb60a +size 25548 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint_hearts.webp new file mode 100644 index 00000000..ddfd9802 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e378dc6eb54714278ae4d9ba1f67f7ce63ccb6ecb6c4eaac371d6a5f4a3b65f7 +size 27616 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare.webp new file mode 100644 index 00000000..800df5fe --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f8bd21e4be0d46f7d5499bc447f1a79f8bfeb4748bd4d98c87a70d6b299d2d2 +size 26918 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare_hearts.webp new file mode 100644 index 00000000..34822987 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a26e6bdc7f7c2df4b4bb152ce7320da1e5c5779cf26b977cdc8ab933ff031ab4 +size 29062 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up.webp new file mode 100644 index 00000000..0a0befd5 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd0c9bc7e00d88e88d66436d56b4e1b557e514ca0d6560b52700def6d31984a8 +size 26612 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up_hearts.webp new file mode 100644 index 00000000..db221c52 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5243bcc3908dd94a924b7aee656517ad00e2e2cfb4179710c537c27ad6630698 +size 28662 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down.webp new file mode 100644 index 00000000..b408a90e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86b2aaada4f77107cbde46d550dbe39ad7146d2b9064c265c869cb0d0e17714e +size 30804 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down_hearts.webp new file mode 100644 index 00000000..053f6327 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00da6bb25942c33da9b566a315676bbc53fdc3e2533bbc6c530f6ff998110d65 +size 32942 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_left.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_left.webp new file mode 100644 index 00000000..e4c5211c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55c15b05c8a85b0ae1ee8338b2f640b6f6136f4dade42943082d1136f002c17c +size 30638 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_right.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_right.webp new file mode 100644 index 00000000..9b223e27 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c27bf6118381d5ca381325bf850b6de469379f22ea1872263d54bf0f8362bd06 +size 29868 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint.webp new file mode 100644 index 00000000..5df53ed0 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0a8e3b6a490b129bc7700394e34b3ee6cc720e800ba1ec86cd0eabbaa4031fe +size 30588 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint_hearts.webp new file mode 100644 index 00000000..d21bd782 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92d93aad8646499891f5dd8dc36becac8b81c03e8bb4ff6d7667ace61e1ccd67 +size 32622 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare.webp new file mode 100644 index 00000000..7a7e76a9 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92bf188f5318d39699c8b5fae51e60313c848543dfdc6ef3f144402e4a7c4213 +size 31938 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare_hearts.webp new file mode 100644 index 00000000..23204f29 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:775d05c8b1c1d5cde8ebc2dd62e19e10c76dbefcb790d95ac94f27c34de94517 +size 34176 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up.webp new file mode 100644 index 00000000..d0f047f8 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98a71008dc0b207a483745b7255dd46490dd3678af8455d924215baff37c9a33 +size 30620 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up_hearts.webp new file mode 100644 index 00000000..5c058287 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceff560a286a1e6a4872f37b2dd052e4958db5c46271a3fd5b399344073a2613 +size 32682 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_hair.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_hair.webp new file mode 100644 index 00000000..370c5dbe --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_hair.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbd82957a32493eda4d31f68fd066adef186fd30156e0a30d58465b7bcfba611 +size 401480 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_kiss.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_kiss.webp new file mode 100644 index 00000000..8cfeea5d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_kiss.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0270695a9c5cfcc105d486901efb7429a2ea12cbcebcac3d2a207a454beca6b9 +size 18692 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_lick.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_lick.webp new file mode 100644 index 00000000..c10c1b4a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_lick.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06dd23ace4326862ff6e0dd3655aad9b8a2cfc116cc4eaf7cb698d9d7e29e6cc +size 16726 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_stroke_down.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_stroke_down.webp new file mode 100644 index 00000000..c506b85e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_stroke_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbdc68b989a08e095e069f42225e6a8eba9fc9cf7d4e0a8645e3dfeb873dc508 +size 78696 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis.webp new file mode 100644 index 00000000..30cdb991 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:697c4664ef6cfa5e7c0b569dbf9690eb8a8021d92f1e3eb053d071db432fe41f +size 57576 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis_spit.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis_spit.webp new file mode 100644 index 00000000..9b6e6b5b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12fff6419b82327cb1d9d2f36d4a352af21cb4a570023ccf345bf9c2de1d174e +size 19574 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_throatpie_frame0.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_throatpie_frame0.webp new file mode 100644 index 00000000..c2107408 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_throatpie_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7aea2d54bcaa2ee338fab1e93980c920837def8269dce7036bdea24daa028b8e +size 118480 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_base.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_base.webp new file mode 100644 index 00000000..b9bf08d0 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f6f540917e535714a00d4f3fce7233a7de8e9c1124c7306f92c1f34f4dc23dd +size 394348 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_angry.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_angry.webp new file mode 100644 index 00000000..d2f478b4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d975c0b4fd88482f5d872c554984c9ac4489e5e8213e3192cce878ae132d81dd +size 24630 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_base.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_base.webp new file mode 100644 index 00000000..4dba1014 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85eac0e5c110eb453c686a16289858b9d6c10dc9f63b10d1ea8750f7d1295706 +size 24714 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_raised.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_raised.webp new file mode 100644 index 00000000..c4bfd639 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_raised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39cd4a57a462b1e60af590bfd6f7e354d44c74965b9215bef9647d0aad227005 +size 25134 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_shocked.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_shocked.webp new file mode 100644 index 00000000..274ae568 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_shocked.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fc3a93faed1dcf13e4957cb35f4d5d04d9cb0693dec5da5af467f35a3524a1d +size 23536 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_worried.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_worried.webp new file mode 100644 index 00000000..28cc495d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_worried.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb5dd13b0ede68ee8a3c7776cc3d704a782e850af502970269b4982b9af61769 +size 24112 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down.webp new file mode 100644 index 00000000..5205f281 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e88f81ddc704dbee87520dc425a25ddf2459a7a1432acf7bd24207e425cf56bc +size 29718 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down_hearts.webp new file mode 100644 index 00000000..be3c8e45 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78763b65bd993f8c2d64caf2f7364a2dcfbbe85aa5d580f45813349711c7e44c +size 31622 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_left.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_left.webp new file mode 100644 index 00000000..005fa8ec --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1aef4d9adee809792d49f5a7ac49b791543ac102b35062f4f9729679c51d8bd8 +size 29824 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_right.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_right.webp new file mode 100644 index 00000000..04756886 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a914e616fa83c7aa2b1212a818e0b8ffc89099966982c51685a1e361b8eef394 +size 29466 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint.webp new file mode 100644 index 00000000..f0846604 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:141b7e78f8b4d016a3b5ba3b3ab34fb6619195c82a2c8c5e98d1a0f902076ab7 +size 29476 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint_hearts.webp new file mode 100644 index 00000000..2fbe3d1a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bd3e38c86a28ef3dc5e6fd8661707c966ed2625f085efe5b6bb2ff1324e952b +size 31640 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare.webp new file mode 100644 index 00000000..1be3bb54 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df9ecfe7263fcc83535ee2f6f3ddc0a2a7bd2024e4e0b6b73e6c4ba67e2de79a +size 31414 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare_hearts.webp new file mode 100644 index 00000000..7999c76e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d134dfb02a27639e3bef213d04e091712f4bc135ba120e9d294f9ce6acbf23a4 +size 33666 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up.webp new file mode 100644 index 00000000..b82f076b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2157c6b2a8bf296e882c69512a1383afa945343cb3257b52ee814319180a786f +size 30198 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up_hearts.webp new file mode 100644 index 00000000..e220f5b6 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dc6ea1526c128f25002dfb2304da65d73c8c1c659180ed5fe45a92529d1346e +size 32552 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_closed.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_closed.webp new file mode 100644 index 00000000..f1965b70 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db4caf8e74eea33b4ea94f2d6cab51cdf3f42efbb28cd3f5540410139ecb7278 +size 25494 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down.webp new file mode 100644 index 00000000..f181627e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71cbff667e09be3d58e1ca4ec99715b89d4a10b75649ed076b987c931cd91e00 +size 27746 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down_hearts.webp new file mode 100644 index 00000000..7517ac8c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70eeef5183691fb44dc9458e779ac322cde58d33e16f6fa3383d485f2f4641da +size 29696 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_left.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_left.webp new file mode 100644 index 00000000..16a74055 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7554ec9f4cbc6fbbaea6b0497933646e6f9e4efaacc9e10f0f69bd5941544f58 +size 27540 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_right.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_right.webp new file mode 100644 index 00000000..1b6a8c77 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18d1ca191c713cba8d2327142996aa0438eb636160b61368ba89dbcef988c47a +size 26966 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint.webp new file mode 100644 index 00000000..d98a4e1f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26a156c9dd6fa7b531f26bac3432cc72cc41fa5d1547365ea3d8750982277edc +size 27406 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint_hearts.webp new file mode 100644 index 00000000..33e62a59 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2942f4a123744df0f964ee2733f81e5a1bf25dce80167c30cc49ed04c21185f0 +size 29260 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare.webp new file mode 100644 index 00000000..c9afe97f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97a48cd1320b6a6e072f08817e1e379f42858c3a47797d15fba92218321d86cf +size 28882 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare_hearts.webp new file mode 100644 index 00000000..9e051926 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f9107703f55e01ba45eb96b85bb6e2e6daba09977d324e7b59c0a5e2267e1cb +size 30858 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up.webp new file mode 100644 index 00000000..bd4a43dc --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:188f062f1f3d6b05d959cef280ff9dd5b17b407b4826d41209c461d1295ff9b6 +size 28076 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up_hearts.webp new file mode 100644 index 00000000..10e3cc7e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9288d5d083ff0acb477d69cdd382ca21a5529c658a0e5f8387d67db511df104d +size 29920 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down.webp new file mode 100644 index 00000000..7b65689f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a3c87137643397f168d809d069b38e7f446749d1ad9eee3bfc430757e5018c2 +size 32610 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down_hearts.webp new file mode 100644 index 00000000..1f01cd2c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6f7382cae6806d6327974ddeff48ebee95f1b5b03ba7074d4196459fb8b9c82 +size 34862 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_left.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_left.webp new file mode 100644 index 00000000..e7bdfffb --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd08f7482687436698fc7b912b3be511a629a163f0aeafac016344d9021009b7 +size 32494 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_right.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_right.webp new file mode 100644 index 00000000..b29f7273 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b3682141ff8692f7fd8f74587daff0dc512a4194a31f95b0c51e3296da44180 +size 32618 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint.webp new file mode 100644 index 00000000..5428b203 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98a4beb02a4074e11e42ba9554057dc5aefc3182f639ceab88bb9b09ad095bba +size 32292 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint_hearts.webp new file mode 100644 index 00000000..cd4b9c91 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba7d685e8bb7b4462ab4c166e452be59a41763f40ee31d6e1e732331e6f0ad17 +size 34418 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare.webp new file mode 100644 index 00000000..4f086077 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6cf20c521291de5a1452a40a72affc68f3177dad4a3d17576ec64554512b2b7 +size 34850 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare_hearts.webp new file mode 100644 index 00000000..9c859930 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:104a3d84e5534abd582ec3a4482a1a8e9b527e43f71dda2b6ef22453b5651431 +size 37144 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up.webp new file mode 100644 index 00000000..6805e19e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:708b9f7b5676235006a507e1f30b80e89d2deccb1bec1fc9df45b759348bc763 +size 33198 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up_hearts.webp new file mode 100644 index 00000000..5afc8302 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b019590aa68228becc15e2d0a075ab36eaffc3b43f99311a3ee1fec8e966373 +size 35564 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_hair.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_hair.webp new file mode 100644 index 00000000..1a89b45c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_hair.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10122a23bde59a6e43858ee4effc5014b1b2d1ca7dce72b63435a82e2067dadf +size 436584 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_mouth_suck.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_mouth_suck.webp new file mode 100644 index 00000000..b6c12538 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_mouth_suck.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f2a3b230eea8f5a13fe02c295c2b2c7ed131bcfb70d677e85e8969cb491a58c +size 9630 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_stroke_down.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_stroke_down.webp new file mode 100644 index 00000000..6803f279 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_stroke_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a11255814bf907b2bd2b57d25b0655fa5b286be26f0423964a43c388941bae9b +size 84400 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis.webp new file mode 100644 index 00000000..e7ef0252 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:337912bab4099475aadc0c6a2e7d45ae6489b9e8bb8acb73f31989455867dc30 +size 45738 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis_spit.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis_spit.webp new file mode 100644 index 00000000..190f1a8e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:275fec304e99f0d0815ef1831da6271390d219a8bae1a37927ba88f2579bd5c8 +size 20578 diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_throatpie_frame0.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_throatpie_frame0.webp new file mode 100644 index 00000000..11b34067 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_throatpie_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:791a7fac423915d027e325d51083e52d31d092081772f63ba4065fa463bc0d6c +size 88600 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_base.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_base.webp new file mode 100644 index 00000000..485014bd --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b266c675ebafec81247bf990a2d24787c6893699f1de85d003d003d489db294e +size 424186 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_angry.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_angry.webp new file mode 100644 index 00000000..78ad914d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17088bcdb85189fb2a209e28031238680a499ed1ad0d93b87d0d7690018d1ae8 +size 23340 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_base.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_base.webp new file mode 100644 index 00000000..c2c2400b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f62b0feb2ad443b3f2e79040bc11315222463b008471338e5c632741f3fb59c5 +size 23030 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_raised.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_raised.webp new file mode 100644 index 00000000..5aa4d7e6 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_raised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b2b610233dd933c66f0f4bcc9cf11e9361072807f0810438373179de06b0c87 +size 24340 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_shocked.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_shocked.webp new file mode 100644 index 00000000..9d30c59c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_shocked.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:140edefe776cb81ba0e9bbe36ab5fab792e6861686c4cb68005ceaa5d5c451b1 +size 22576 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_worried.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_worried.webp new file mode 100644 index 00000000..c91dfd8a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_worried.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:961fa068b7de1a83beed91a62a9f76f67cbb8108a25a726cd7cb7dfb36db96ff +size 21548 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down.webp new file mode 100644 index 00000000..97ba3331 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86aa88b0d277a32af4bd292568624925f2a8009a28190f8cf697ea727b3ea5f2 +size 35116 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down_hearts.webp new file mode 100644 index 00000000..daa27174 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f08ff5f0d0bbb26a6832e1639b5df0c91fb11ed504d25d99327bc424e546dce +size 37248 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_left.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_left.webp new file mode 100644 index 00000000..2e98886a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd06e4c3f00c8beca83d17e42e323dba79e25dc02f83ae8bd8ca15b1ce7b7e5b +size 35150 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_right.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_right.webp new file mode 100644 index 00000000..3bed4185 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ce44a66749443c923927cf97cca1e67ad6a6fdc0715cb0c0457ecce5bc55e9 +size 34236 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint.webp new file mode 100644 index 00000000..8c57466e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f16520cefb3ee417ad03e31dd5b2c3858f483bc60327bc9b74f6bd9bc5aaf298 +size 34628 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint_hearts.webp new file mode 100644 index 00000000..53506334 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc73efb9f4b13692465d5f1f00b6cec74fc26643ce9c832ac3723e44e0e47698 +size 36764 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare.webp new file mode 100644 index 00000000..5783498a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34ea374a85b889b0474cdeece540a7a248c5d00070b8c4723c83199fea0ba2f1 +size 37082 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare_hearts.webp new file mode 100644 index 00000000..06f6c11d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61513f13ef17c989a0b12520850e85836a2c8ba07cf7809167be6f760357cd01 +size 39484 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up.webp new file mode 100644 index 00000000..4831733d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33a1267c72fb398491ce0888fc91dad9061d2427b54516edc11ac5e899a30a75 +size 35710 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up_hearts.webp new file mode 100644 index 00000000..64c1871b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:291ac500b768ad997974c14256ae6c020f15480a27742c51f1cdbb67520cb712 +size 38196 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_closed.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_closed.webp new file mode 100644 index 00000000..04c0fa61 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89253a5e110a45865424726cb95975bf7d9dc5c180c8e584cdda6fbd9e1db139 +size 29428 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down.webp new file mode 100644 index 00000000..e0f4e5a4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16f52e17621263f3e36d656082c78de5e394882489ff7461c2926fca4e7bbc42 +size 32656 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down_hearts.webp new file mode 100644 index 00000000..32238ebb --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91f16754391e38d07324b823e24f881d4ccbc2f5c5d516713b25835b01fdd08e +size 34784 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_left.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_left.webp new file mode 100644 index 00000000..f51ad5b2 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0afaa5eaa4cb9bf3e88c6199a247a87efc7e193b51ee131e49b6cfbc286bc2e3 +size 32288 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_right.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_right.webp new file mode 100644 index 00000000..6f54c6db --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d030c6cd32154317f63630443b70dc207ac4284308965664cb958b36484355cd +size 31426 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint.webp new file mode 100644 index 00000000..d8f89f9b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95b3a3b2b8f4e87d785bd817e7a7399594083b9ac56b21b4a39eeadd8a71839b +size 31990 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint_hearts.webp new file mode 100644 index 00000000..36dd5d1c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f73347d5a3c413bd63017d542cd92ece257348d71cc094b9448840a01d03eb28 +size 34002 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare.webp new file mode 100644 index 00000000..375c8495 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff7a7e08a97cf873fd5851304da3bc99c693c28f57a873cdb38bb6919c778007 +size 33716 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare_hearts.webp new file mode 100644 index 00000000..7e528c2d --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fee1a29b876afc6007713e16a1e131fe5136e3ed0a64090956880364be8c42f +size 35922 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up.webp new file mode 100644 index 00000000..30352f16 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99ce4eea556ca0ff06e4ddb8d3b089164b64056c6d61505ce485375c46a9f5c8 +size 33434 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up_hearts.webp new file mode 100644 index 00000000..8f9daf22 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e6bcb9609ed2c233d12ab23863f3481bde49c16cab478e09e22f9fcf299fc2 +size 35462 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down.webp new file mode 100644 index 00000000..c6cc4ced --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e95fca9987383a243408e2a4c760ee802062354b865ee8e90766f65052fa55b +size 38358 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down_hearts.webp new file mode 100644 index 00000000..e0f97ef1 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f33da437360eb3e1369f552ecbf924a24127e4ada45847c11f2e344c49e6eff4 +size 40578 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_left.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_left.webp new file mode 100644 index 00000000..c478187e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e1284221130299352d5c506d58400cede59faf8bd6423f7328f3bb595c2e7aa +size 38230 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_right.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_right.webp new file mode 100644 index 00000000..be655a03 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d01fb371598fa526a62e26c7240dc46ba51f1931cc53fe8fed06be374a8a6e4 +size 38632 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint.webp new file mode 100644 index 00000000..1ad391da --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:381ac28530e9cf70c2901b712fb3b320b84d8cd59a62de6af66e90544380e4fd +size 38038 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint_hearts.webp new file mode 100644 index 00000000..e1d89dbb --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cbdfc78556895e6678ff06d9e1e902d711e848aff356c57ae3de19c5a0297fe +size 40250 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare.webp new file mode 100644 index 00000000..42913665 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91ec5540cb8b7ea694682842c7e67406a59bae3b8c17779bf9b98a76bfdf31a2 +size 41158 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare_hearts.webp new file mode 100644 index 00000000..fe90ea75 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:100a5ff8af68659e4834552b1aece9b2c6d22cbfd462412504fa33cd2efd0a0e +size 43664 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up.webp new file mode 100644 index 00000000..93fda65e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32bf91fe0293338d5454c8101e1c63450742099a79814f26ee414e5de6172603 +size 38852 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up_hearts.webp new file mode 100644 index 00000000..d4dffb82 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0c98860898f0eb92e4ed24188ecde3924633706c6c933c8afbbc42a87d91ce0 +size 41414 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_hair.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_hair.webp new file mode 100644 index 00000000..4dac46a0 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_hair.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ceabe8d5c2e7c5c06de24c64b1d35d7b3e9977c4741fc1b305b78a4bf892682 +size 459186 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_mouth_suck.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_mouth_suck.webp new file mode 100644 index 00000000..10759903 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_mouth_suck.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:604b6b361d5fefb2fb3d19ade48bee7675b21bfe6d388260da07ff3702cf83e9 +size 8368 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_stroke_down.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_stroke_down.webp new file mode 100644 index 00000000..c3b2f84f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_stroke_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d023470767a0c664c4cd51b355cd5a26d53137f77c0666b33f6be4ac07aa90a4 +size 77158 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis.webp new file mode 100644 index 00000000..a28eb0aa --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db8ebd2e9efce4f3e7a6e7d0cde871828db8f54226a9c87deaa3c5c6cc9f93f3 +size 42728 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis_spit.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis_spit.webp new file mode 100644 index 00000000..4577496f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:477fa65cf32ddd11b676b4c782ce6c5692a1d2f50cb91b41af31b945e552c351 +size 13622 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_throatpie_frame0.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_throatpie_frame0.webp new file mode 100644 index 00000000..721d075b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_throatpie_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5299a3665dfeab4c267b128c40902634cfe556854d532e551fb56638d4e890ff +size 77284 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_base.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_base.webp new file mode 100644 index 00000000..7084a55a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a7a8fc9b6e7f410ffe215f715add80043e82f2077124501a3204425eaae72e1 +size 430908 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_angry.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_angry.webp new file mode 100644 index 00000000..a39ef621 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30cb8d32be9d429a2d0726512fc2017e5c54721ae1afa17036932ccccdb2d6b1 +size 25560 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_base.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_base.webp new file mode 100644 index 00000000..591c3311 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6a6fad0f881ba9c72e307d5d045581f767e5581d0fb3685a2f24641fe1b515c +size 24976 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_raised.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_raised.webp new file mode 100644 index 00000000..913ee968 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_raised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32da9f346517db83e5325d1935f20ea055e08344b29bf5fe755581b7299b9aea +size 26200 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_shocked.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_shocked.webp new file mode 100644 index 00000000..7d093176 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_shocked.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a535f44e4e3e9a81770278bdc66e9fe9ea6cd7edfc5857c6377f1ef82d1e206 +size 24508 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_worried.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_worried.webp new file mode 100644 index 00000000..28d15dcc --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_worried.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea3e8eb4db96bab66553c5cafd3f8a52508dad2bb9d34c9df9f579851c35063e +size 22620 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down.webp new file mode 100644 index 00000000..21fa52fe --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a8aaa3e7716052c5b6186be2fda3c99cbc1c091633454569ab27f37959fb0a2 +size 39032 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down_hearts.webp new file mode 100644 index 00000000..7cb19c21 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3526c9808ac9c2cbcaa065ac33b7e52ac4f672328fb063abd097d8e9188150d +size 33736 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_left.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_left.webp new file mode 100644 index 00000000..87d580f3 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a865734101a79fed7e4b0c5f81646d1a0d0539aa9f684121246bbbe39125e8b8 +size 31696 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_right.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_right.webp new file mode 100644 index 00000000..b0898656 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a618874dd1fb250242bb45ec7531c160d41d3db5bc1c24867b78b92dadf8ded +size 38628 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint.webp new file mode 100644 index 00000000..84539f99 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6c3fa4f529a175ab6d052368d9fcef79ad488146efa66b552ac63234196c67c +size 38562 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint_hearts.webp new file mode 100644 index 00000000..635f554c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c158a5529f1735a69db1e5d94d15130ecf60a127d6f351af63f9600dec930af1 +size 33850 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare.webp new file mode 100644 index 00000000..708f4bcf --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4226c247824801f1620d6822cadfd2c9d86ddaf85a9499e4e70511e8ce2e9b5b +size 40982 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare_hearts.webp new file mode 100644 index 00000000..98727394 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:373aadb7e0cf173329a5b098255bbf5dd3196434e52b66b7497348501be509ea +size 35888 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up.webp new file mode 100644 index 00000000..7d8957a8 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee6787a8952f8b81edb60145e0838a9abcf027fd35d09c3d82abf1c5ef8fa67c +size 39164 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up_hearts.webp new file mode 100644 index 00000000..6bbda9f5 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6e8759e4faf41c4bcdecbbc5e8fb23478f8a45b39b4540d0defdc9402f13f9f +size 34378 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_closed.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_closed.webp new file mode 100644 index 00000000..c8e2b74f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee81fc5120c80ec37127c68ea7db57005dd1bcf6d7652c4abf290134a0f0175d +size 32668 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down.webp new file mode 100644 index 00000000..7702b2bf --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93837245c05668c83673604203e90fc42bce3ba09a403f07754020e99f9c0fe9 +size 36188 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down_hearts.webp new file mode 100644 index 00000000..d3a42040 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:539b8adc9e85a72256ecc81abc741fb50616be1422295707ed268a3f3222165b +size 31784 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_left.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_left.webp new file mode 100644 index 00000000..bc1b9e68 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f37961d7f9f27f87bf69a7e1c1e720eed0ef7d3740233f82f3472ba8c34c641 +size 35788 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_right.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_right.webp new file mode 100644 index 00000000..d9f535de --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf7ab35aac14c69dd5d0b6520b170ce3a59b10ee7e0285ba1b7be8aa310bc395 +size 35212 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint.webp new file mode 100644 index 00000000..5ace22e4 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7a06a14ad97d5c74b3e37d57a66f3385a439e8538b9ea088b973d24a2d2ee8a +size 35250 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint_hearts.webp new file mode 100644 index 00000000..ff04f1cc --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d9f7d5d4f68967a1d28d9cd658655fd710ec8d6f894d726bc12688b72525913 +size 37396 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare.webp new file mode 100644 index 00000000..9c42b62b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5eba9d100cc7e315aa45f6bbd33f22d2f77c8a448af3500c45f235618cab05a +size 37426 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare_hearts.webp new file mode 100644 index 00000000..00ab972a --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:844350c039699f754367442220b26c882dcf7eba7c9ffcbe3d9ad01209f9db65 +size 32704 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up.webp new file mode 100644 index 00000000..b12253b7 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3c91412863cbb3593c98db57a766004e348d96c06a5b3c1424547f6c519c388 +size 37026 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up_hearts.webp new file mode 100644 index 00000000..2e00f66f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66154ff09dead32419040bed3b4e1d3915dd5539d8d9d5281fc95dca505accf7 +size 31858 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down.webp new file mode 100644 index 00000000..aeaa2128 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9a3c3fe41e134a6a9cbee87eabe932023ed1b12ceff5c98fc4336e927be0fd7 +size 42548 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down_hearts.webp new file mode 100644 index 00000000..6cae6d70 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2ed45be4a3f14defa574481dfa71a98564fab4efa3418abd209cb34f53dd495 +size 36752 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_left.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_left.webp new file mode 100644 index 00000000..0c9f4626 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fda090cebbaec49c472839033237311f4a1803e950f221e4f8e0b52f561295d +size 34390 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_right.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_right.webp new file mode 100644 index 00000000..15de3d43 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20a6cdd240fa3b2d419754ed9337bf269c4fcf361e2358691e1dc94b28a34424 +size 34972 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint.webp new file mode 100644 index 00000000..8f2f50c9 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:937d65054e99e6dc2c3786caab39828926c479f6e5955a127a4d44b475677180 +size 34644 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint_hearts.webp new file mode 100644 index 00000000..41efde6e --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19b5a62383504743d5989de0c18823599f39326d67b2a346a333caf7fcf3c9b3 +size 36802 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare.webp new file mode 100644 index 00000000..6eead937 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f517f6f2b2add49c5e663b470fd161b7f15bf9f3f7caca06f226cf5b31d3cc4c +size 37102 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare_hearts.webp new file mode 100644 index 00000000..85499849 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a502b956c7f54fd11f558461e095cd1374b22cc402b1ca4f5822b1482b81191 +size 39406 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up.webp new file mode 100644 index 00000000..2a9ab75f --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c04da6fd16cb92c03838b0d8e5104673a8d2079c2b74d9f38c8f7235b481b35b +size 42892 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up_hearts.webp new file mode 100644 index 00000000..48b0a15c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:619119e1e3a04fb67f8e0ac63033305e327f1b897cfbbdd7d1c1ead40a8f1685 +size 37202 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_frothing.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_frothing.webp new file mode 100644 index 00000000..b6a9219b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_frothing.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f933546f00a07dccdcd9c7f7bbd3acb03c92cc0bc8db6b998dce0be79b5e9bb +size 7720 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_hair.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_hair.webp new file mode 100644 index 00000000..b1f90584 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_hair.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59ba75574804e27b9e0630bf5c3ea6b83557fc694a0c0f5396679f274ad79304 +size 499670 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_mouth_suck.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_mouth_suck.webp new file mode 100644 index 00000000..5db80880 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_mouth_suck.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a5f241d3fc6e3a53ed011f5db938e187ce75e223d7a1e5a15f55d103be61454 +size 8258 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_stroke_down.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_stroke_down.webp new file mode 100644 index 00000000..41d5548b --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_stroke_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:607edaa2ac04af95bb7d38cc749bbb62c329bf94f46d15ec0788d0b2933424f6 +size 52096 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis.webp new file mode 100644 index 00000000..4916477c --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9abdd62d1ab7ded706c9f34654eddc2f47ef7c27f20dea52083b3065042946b +size 24274 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis_spit.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis_spit.webp new file mode 100644 index 00000000..806e98e8 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6d449ce7ce92c2d1e267d5db1723e4303eabeb4f17d47491787bda4a13acb19 +size 8526 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame0.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame0.webp new file mode 100644 index 00000000..65d649d8 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dadf25a96705abf3761e986626f9dafd0a62665e410ce6d653671864b9860f17 +size 20844 diff --git a/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame1.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame1.webp new file mode 100644 index 00000000..2797aa80 --- /dev/null +++ b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b0a11435ab87c02b4f1971dcb45fbe5c4b649a4f6bf23b8bfcf97a571fd3d96 +size 49458 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 1c31b21b..ffb13aea 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -35,25 +35,192 @@ layeredimage lun_blowjob_personal_pose1: attribute penis_shadow default if_not ["trousers"] attribute penis_spit + group throatpie auto prefix "throatpie" + group handjob prefix "handjob" if_not ["trousers"]: attribute idle "lun_blowjob_personal_pose1_luna_stroke_down" default attribute slow attribute moderate attribute fast + always "lun_blowjob_personal_tabletop" + always "lun_blowjob_personal_genie_front" group genie: attribute trousers "lun_blowjob_personal_genie_trousers" default attribute no_trousers null - always "lun_blowjob_personal_tabletop" - group cum auto prefix "cum" if_not ["trousers"]: attribute precum default always "lun_blowjob_personal_vignette" +layeredimage lun_blowjob_personal_pose2: + fit "cover" + fit_first True + + always "lun_blowjob_personal_background" + always "lun_blowjob_personal_pose2_luna_base" + always "lun_blowjob_personal_genie_back" + + group luna_cheeks auto prefix "cheeks": + attribute none null default + + group luna_mouth auto prefix "mouth": + attribute lick default + + group luna_eyes auto prefix "eyes": + attribute base_stare default + + group luna_eyebrows auto prefix "eyebrows": + attribute base default + + always "lun_blowjob_personal_pose2_luna_hair" + + attribute penis default + attribute penis_spit + + group throatpie auto prefix "throatpie" + + attribute idle "lun_blowjob_personal_pose2_luna_stroke_down" default + + always "lun_blowjob_personal_tabletop" + + always "lun_blowjob_personal_genie_front" + + group genie: + attribute no_trousers null default + + # group cum auto prefix "cum" if_not ["trousers"]: + # attribute precum default + + always "lun_blowjob_personal_vignette" + +layeredimage lun_blowjob_personal_pose3: + fit "cover" + fit_first True + + always "lun_blowjob_personal_background" + always "lun_blowjob_personal_pose3_luna_base" + always "lun_blowjob_personal_genie_back" + + group luna_cheeks auto prefix "cheeks": + attribute none null default + + group luna_eyes auto prefix "eyes": + attribute base_stare default + + group luna_eyebrows auto prefix "eyebrows": + attribute base default + + always "lun_blowjob_personal_pose3_luna_hair" + + attribute penis default + + group luna_mouth auto prefix "mouth": + attribute suck default + + attribute penis_spit + + group throatpie auto prefix "throatpie" + + attribute idle "lun_blowjob_personal_pose3_luna_stroke_down" default + + always "lun_blowjob_personal_tabletop" + + always "lun_blowjob_personal_genie_front" + + group genie: + attribute no_trousers null default + + # group cum auto prefix "cum" if_not ["trousers"]: + # attribute precum default + + always "lun_blowjob_personal_vignette" + +layeredimage lun_blowjob_personal_pose4: + fit "cover" + fit_first True + + always "lun_blowjob_personal_background" + always "lun_blowjob_personal_genie_back" + always "lun_blowjob_personal_pose4_luna_base" + + group luna_cheeks auto prefix "cheeks": + attribute none null default + + group luna_eyes auto prefix "eyes": + attribute base_stare default + + group luna_eyebrows auto prefix "eyebrows": + attribute base default + + always "lun_blowjob_personal_pose4_luna_hair" + + attribute penis default + + group luna_mouth auto prefix "mouth": + attribute suck default + + attribute penis_spit + + group throatpie auto prefix "throatpie" + + attribute idle "lun_blowjob_personal_pose4_luna_stroke_down" default + + always "lun_blowjob_personal_tabletop" + + always "lun_blowjob_personal_genie_front" + + group genie: + attribute no_trousers null default + + # group cum auto prefix "cum" if_not ["trousers"]: + # attribute precum default + + always "lun_blowjob_personal_vignette" + +layeredimage lun_blowjob_personal_pose5: + fit "cover" + fit_first True + + always "lun_blowjob_personal_background" + always "lun_blowjob_personal_genie_back" + always "lun_blowjob_personal_pose5_luna_base" + + group luna_cheeks auto prefix "cheeks": + attribute none null default + + group luna_eyes auto prefix "eyes": + attribute base_stare default + + group luna_eyebrows auto prefix "eyebrows": + attribute base default + + always "lun_blowjob_personal_pose5_luna_hair" + + attribute penis default + + group luna_mouth auto prefix "mouth": + attribute suck default + + attribute penis_spit + attribute luna_frothing + + group throatpie auto prefix "throatpie" + + attribute idle "lun_blowjob_personal_pose5_luna_stroke_down" default + + always "lun_blowjob_personal_tabletop" + + always "lun_blowjob_personal_genie_front" + + group genie: + attribute no_trousers null default + + always "lun_blowjob_personal_vignette" + image lun_blowjob_personal_pose1_handjob_slow: Fixed( "lun_blowjob_personal_pose1_luna_stroke_down_shadow", diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 990ceab1..9557f238 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -66,7 +66,7 @@ label ll_pf_blowjob_T4_E1_intro: lun "So, I am to put something new inside of me?" ("base", "base", "base", "mid") gen "...{w} Well... New for you at least, but I'd say in terms of age, it's probably the oldest thing in here." ("base", xpos="far_left", ypos="head") lun "Wow!" ("base", "base", "base", "mid") - nar "Luna's eyes begins darting around your office." ("base", "base", "base", "mid") + nar "Luna's eyes begins darting around your office." gen "*Err*...{w=0.4} What are you doing?" ("base", xpos="far_left", ypos="head") lun "Oh, I'm just looking around to see if I can spot what it might be." ("base", "base", "base", "mid") lun "You said it was very old, so it must be some kind of ancient, magical artifact, right?" ("base", "base", "base", "mid") @@ -111,6 +111,7 @@ label ll_pf_blowjob_T4_E1_intro: lun "Yay!" ("base", "base", "base", "mid") #Luna quickly walks up towards the desk, fades to black + call lun_walk("desk", "base", speed=1.75) show screen blkfade with d5 @@ -123,7 +124,9 @@ label ll_pf_blowjob_T4_E1_intro: nar "Luna hurriedly makes her way around your desk and crawls underneath..." gen "*Err*... It's probably not the best idea to go under my--" - #Fade to Luna BJ under desk CG + show lun_blowjob_personal_pose1 as cg + hide screen blkfade + with d5 gen "Desk..." lun "My goodness...{w=0.4} I've never seen so much..." @@ -148,6 +151,9 @@ label ll_pf_blowjob_T4_E1_intro: menu: "-Pull your cock out-": + show lun_blowjob_personal_pose1 no_trousers as cg + with d3 + nar "You swiftly pull out your hardening cock from underneath your robes." lun "..." @@ -171,9 +177,14 @@ label ll_pf_blowjob_T4_E1_intro: gen "Now, I'll need you to--" "-Tell her to take it out-": + gen "I'm a little tired..." gen "So why don't you assist me by pulling out the \"affected area\"..." lun "Of course, [name_genie_luna]." + + show lun_blowjob_personal_pose1 no_trousers as cg + with d3 + nar "Luna takes a deep breath and then withdraws your hardening cock." lun "(It's so big...)" gen "You may proceed with the treatment, [name_luna_genie]." @@ -196,6 +207,10 @@ label ll_pf_blowjob_T4_E1_intro: "-Shove it in there!-": gen "Open wide!" + + show lun_blowjob_personal_pose1 no_trousers as cg + with d3 + nar "You quickly pull out your cock, and slip it into the girl's warm mouth." lun "*Mff*!!!" gen "Sorry, I just couldn't wait any longer." @@ -214,11 +229,14 @@ label ll_pf_blowjob_T4_E1_intro: nar "In an attempt at responding to your praise, Luna's tongue moves along the underside of your cock once again, and a sudden rush of pleasure runs through your body." gen "*Argh*..." - #Luna tries harder + show lun_blowjob_personal_pose3 as cg + with d3 gen "Would you please slow down [name_luna_genie]!" #Takes cock out + show lun_blowjob_personal_pose1 as cg + with d3 lun "*Pwah*..." lun "Was I not doing a good job, [name_genie_luna]?" @@ -234,6 +252,9 @@ label ll_pf_blowjob_T4_E1_intro: lun "Those tricksy little--" lun "Don't worry, [name_genie_luna], I'll get them out in no time!" + show lun_blowjob_personal_pose3 as cg + with d3 + nar "With that, Luna resumes her rapid assault of your cock." gen "*Ngh*!" @@ -244,10 +265,29 @@ label ll_pf_blowjob_T4_E1_intro: #Luna pulls out to speak and takes a facial + show lun_blowjob_personal_pose1 cum_precum as cg + with d3 + lun "Your wha--" gen "*AAAAH*!" + show lun_blowjob_personal_pose1 cum_frame0 as cg + with d3 + pause 0.2 + show lun_blowjob_personal_pose1 cum_frame1 as cg + with d3 + pause 0.2 + show lun_blowjob_personal_pose1 cum_frame2 as cg + with d3 + pause 0.2 + show lun_blowjob_personal_pose1 cum_frame3 as cg + with d3 + pause 0.2 + show lun_blowjob_personal_pose1 cum_frame4 as cg + with d3 + pause 0.2 + #Genie cums lun "Whoa!" @@ -261,10 +301,17 @@ label ll_pf_blowjob_T4_E1_intro: #Blackfade #Hide CG + show screen blkfade + with d3 + nar "Luna crawls out and happily starts skipping to the front of your desk, then spinning around, she flicks some of the remains of your deed of her face onto the stone floor." #Fade to Office + hide cg + hide screen blkfade + with d5 + #Todo Add Cum to Luna face call play_sound("giggle") From be76f33759cc31579c5973cf4aaff5d35e428e12 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 1 Nov 2023 16:32:38 +0100 Subject: [PATCH 025/249] Luna Fellatio CG posing * Posed part of the Luna BJ favours. * Added sexual activity vars. --- .../characters/luna/events/favors/suck_it.rpy | 384 ++++++++++++------ game/scripts/characters/luna/vars.rpy | 5 +- 2 files changed, 252 insertions(+), 137 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 9557f238..700f9017 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -1,7 +1,8 @@ #TODO Add some minor writing to go along with Loafy's CG additions when necessary during posing, such as HJ and licking tip of dick #TODO Add character state flags (BJ/swallow, cum on body etc, uncomment flags in var file) #TODO Add event checks for the existing writing variants once the other T4 Luna events are added -#TODO Add unlock for "cumslut" Luna nickname at end of first event (silent unlock) +#TODO Add unlock for "cumslut" Luna nickname at end of ll_pf_blowjob_T4_E1_intro event (silent unlock) +#TODO Add unlock for "Genie" Genie nickname at end of ll_pf_blowjob_T4_E3_intro label ll_pf_blowjob: @@ -52,63 +53,63 @@ label ll_pf_blowjob_T4_E1_intro: call ll_pf_blowjob gen "I think it's about time we try a new technique to deal with those wankspurs." ("base", xpos="far_left", ypos="head") - lun "This is the idea that you had, after I've told you about Professor Trelawney reading me my future?" ("base", "base", "base", "mid") + lun "This is the idea that you had, after I've told you about Professor Trelawney reading me my future?" ("open", "base", "base", "mid") gen "That's--" ("base", xpos="far_left", ypos="head") - lun "\"I will soon find something new within me, that will propel me forward on the path towards my destiny!\"" ("base", "base", "base", "mid") + lun "\"I will soon find something new within me, that will propel me forward on the path towards my destiny!\"" ("grin", "closed", "base", "mid") lun "That's what she said!" ("base", "base", "base", "mid") - lun "Oh my goodness, I can hardly wait!" ("base", "base", "base", "mid") - lun "These sessions have been so much fun." ("base", "base", "base", "mid") + lun "Oh my goodness, I can hardly wait!" ("smile", "wide", "base", "mid") + lun "These sessions have been so much fun." ("smile", "happyCl", "base", "mid") gen "Calm down, [name_luna_genie]..." ("base", xpos="far_left", ypos="head") gen "This research is very serious business." ("base", xpos="far_left", ypos="head") gen "So for this to succeed, I'll need you to focus and perform at your very best." ("base", xpos="far_left", ypos="head") - lun "Can do, [name_genie_luna]!" ("base", "base", "base", "mid") + lun "Can do, [name_genie_luna]!" ("smile", "base", "base", "mid") gen "Now... If you've calmed--" ("base", xpos="far_left", ypos="head") - lun "So, I am to put something new inside of me?" ("base", "base", "base", "mid") + lun "So, I am to put something new inside of me?" ("smile", "wide", "base", "mid") gen "...{w} Well... New for you at least, but I'd say in terms of age, it's probably the oldest thing in here." ("base", xpos="far_left", ypos="head") - lun "Wow!" ("base", "base", "base", "mid") + lun "Wow!" ("open", "wide", "base", "mid") nar "Luna's eyes begins darting around your office." gen "*Err*...{w=0.4} What are you doing?" ("base", xpos="far_left", ypos="head") - lun "Oh, I'm just looking around to see if I can spot what it might be." ("base", "base", "base", "mid") - lun "You said it was very old, so it must be some kind of ancient, magical artifact, right?" ("base", "base", "base", "mid") + lun "Oh, I'm just looking around to see if I can spot what it might be." ("grin", "base", "base", "mid") + lun "You said it was very old, so it must be some kind of ancient, magical artifact, right?" ("grin", "base", "raised", "mid") gen "That's not--{w=0.4} This isn't a setup for a game of hide and seek." ("angry", xpos="far_left", ypos="head") - gen "If you could just shut your mouth for a moment, I'll tell you!" ("angry", xpos="far_left", ypos="head") - lun "..." ("base", "base", "base", "mid") + gen "If you could just shut your mouth for a moment, I'll tell you!" ("base", xpos="far_left", ypos="head") + lun "..." ("soft", "base", "base", "mid") gen "*Sigh*..." ("base", xpos="far_left", ypos="head") gen "(I'm beginning to feel as if these tales I'm spinning are only self-serving at this point...)" ("base", xpos="far_left", ypos="head") gen "*Ahem*... So... My theory..." ("base", xpos="far_left", ypos="head") gen "It involves sucking those nasty things out." ("base", xpos="far_left", ypos="head") - lun "..." ("base", "base", "base", "mid") #Wide eyed + lun "..." ("soft", "wide", "base", "stare") #Wide eyed gen "I suppose it's a bit out there, I was afraid you might not be up for it." ("base", xpos="far_left", ypos="head") - lun "..." ("base", "base", "base", "mid") #He did tell her to shut her mouth + lun "..." ("angry", "wide", "base", "mid") #He did tell her to shut her mouth gen "..." ("base", xpos="far_left", ypos="head") gen "You--{w} You can talk now." ("base", xpos="far_left", ypos="head") - lun "Sucking them out?!" ("base", "base", "base", "mid") - lun "That's brilliant!" ("base", "base", "base", "mid") + lun "Sucking them out?!" ("mad", "wide", "base", "mid") + lun "That's brilliant!" ("smile", "wide", "base", "mid") gen "...{w} It is?" ("angry", xpos="far_left", ypos="head") - lun "Yes!" ("base", "base", "base", "mid") - lun "What better way is there to get them all in one place than applying suction?" ("base", "base", "base", "mid") + lun "Yes!" ("smile", "wide", "base", "mid") + lun "What better way is there to get them all in one place than applying suction?" ("grin", "wide", "base", "mid") gen "That's what I thought!" ("grin", xpos="far_left", ypos="head") - lun "But how on earth are you supposed to suck them out of me?!" ("base", "base", "base", "mid") + lun "But, [name_genie_luna]... How on earth are you supposed to suck them out of me?!" ("soft", "wide", "base", "mid") gen "..." ("base", xpos="far_left", ypos="head") - lun "Oh, don't tell me!" ("base", "base", "base", "mid") - lun "You're going to put a wand inside of me and \"accio\" them out!" ("base", "base", "base", "mid") - gen "(What the fuck.)" + lun "Oh, don't tell me!" ("smile", "base", "base", "stare") + lun "You're going to put a wand inside of me and \"accio\" them out!" ("smile", "wide", "base", "mid") + gen "(What the fuck.)" ("base", xpos="far_left", ypos="head") gen "While I appreciate your input, I think an easier approach is you, sucking them out of me..." ("base", xpos="far_left", ypos="head") - lun "..." ("base", "base", "base", "mid") + lun "..." ("soft", "wide", "base", "stare") gen "Out of my cock." ("base", xpos="far_left", ypos="head") #TODO if you've not played label ll_pf_talk_T4_E1_repeat: #lun "..." ("base", "base", "base", "mid") #gen "*Sigh*... My Penis... [name_luna_genie]." ("base", xpos="far_left", ypos="head") - lun "Using \"Accio\"?" ("base", "base", "base", "mid") + lun "Using \"Accio\"?" ("soft", "wide", "base", "mid") gen "Using your mouth..." ("base", xpos="far_left", ypos="head") - lun "Oh!" ("base", "base", "base", "mid") + lun "Oh!" ("angry", "wide", "base", "stare") gen "I mean, if it's not too much to ask... I wouldn't want to--" ("base", xpos="far_left", ypos="head") - lun "I'll do it!" ("base", "base", "base", "mid") + lun "I'll do it!" ("smile", "base", "base", "mid") gen "Great!" ("base", xpos="far_left", ypos="head") gen "Then let's begin, shall we?" ("base", xpos="far_left", ypos="head") - lun "Yay!" ("base", "base", "base", "mid") + lun "Yay!" ("smile", "base", "base", "mid") #Luna quickly walks up towards the desk, fades to black @@ -129,163 +130,256 @@ label ll_pf_blowjob_T4_E1_intro: with d5 gen "Desk..." + + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_wide_left mouth_grin as cg with d3 lun "My goodness...{w=0.4} I've never seen so much..." + + show lun_blowjob_personal_pose1 eyes_wide_right as cg with d3 lun "There's more magic down here than under my Wiggentree!" - gen "Wait..." - gen "Magic?" + gen "Wait...{w} Magic?" + show lun_blowjob_personal_pose1 eyebrows_base eyes_base_stare mouth_base as cg with d3 lun "Yes!" - lun "Why I never thought the wrackspurts would draw out this much magical essence..." + lun "Why I never would've imagine the wrackspurts drawing out this much magical essence..." + show lun_blowjob_personal_pose1 eyebrows_raised mouth_grin as cg with d3 lun "Can you not feel it, [name_genie_luna]?" + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_halflid_down as cg with d3 lun "It's so heavy in the air... It's almost infused into the wood..." + show lun_blowjob_personal_pose1 eyes_halflid_up_hearts as cg with d3 lun "You can almost taste it..." + + show lun_blowjob_personal_pose1 eyes_closed mouth_base as cg with d3 nar "Luna takes a deep breath of air under your soiled desk..." + + show lun_blowjob_personal_pose1 mouth_soft as cg with d3 lun "Wow..." gen "Are you sure you're okay down there? I haven't cleaned it since...{w=0.5} well...{w=0.5} Ever..." + show lun_blowjob_personal_pose1 mouth_base as cg with d3 lun "I'm...{w=0.3} Great..." + show lun_blowjob_personal_pose1 eyebrows_angry as cg with d3 nar "Luna takes another deep breath..." gen "(She's got to be faking this... No one could be this oblivious...)" gen "(Still, better not look a gift horse in the mouth...)" + show lun_blowjob_personal_pose1 eyes_halflid_stare as cg with d3 nar "While the naive blonde sits under your desk, you decide it's finally time for her to get to work." menu: "-Pull your cock out-": - show lun_blowjob_personal_pose1 no_trousers as cg - with d3 + show lun_blowjob_personal_pose1 no_trousers eyes_halflid_down as cg with d3 - nar "You swiftly pull out your hardening cock from underneath your robes." + nar "You swiftly pull out your hardening cock, and Luna grabs it without hesitation." - lun "..." + show lun_blowjob_personal_pose1 eyebrows_base eyes_halflid_down mouth_neutral as cg with d3 lun "{size=-5}Wow...{/size}" gen "Now, as I said... This technique requires you to suck those nasty little critters out of the affected area..." gen "And as you know... For me, that's right here." + + show lun_blowjob_personal_pose1 mouth_base as cg with d3 lun "*Mmm*..." gen "Just try and make me feel as good as possible, and I'm sure those nasty little buggers will come..." + + show lun_blowjob_personal_pose1 eyebrows_raised mouth_open as cg with d3 lun "Out?" gen "Yeah, out, that's it..." gen "Begin when you're ready, [name_luna_genie]." + + show lun_blowjob_personal_pose1 eyebrows_angry mouth_soft as cg with d3 lun "Okay..." + nar "Luna stares at your cock excitedly as she readies herself to take the head into her mouth." + show lun_blowjob_personal_pose1 eyebrows_base mouth_open as cg with d3 lun "Suck until they come..." #Luna puts dick in mouth - + show lun_blowjob_personal_pose2 mouth_kiss as cg with d3 gen "*Ngh*!" + + show lun_blowjob_personal_pose2 eyes_halflid_stare as cg with d3 lun "*Hmm*?" - gen "I'm good, you just started me--{w=0.4} I mean, them!" + gen "I'm good, you just startled me--{w=0.4} I mean, them!" + + show lun_blowjob_personal_pose2 eyebrows_angry eyes_halflid_down as cg with d3 gen "Now, I'll need you to--" "-Tell her to take it out-": gen "I'm a little tired..." - gen "So why don't you assist me by pulling out the \"affected area\"..." + gen "So, why don't you assist me by pulling out the \"affected area\"..." + + show lun_blowjob_personal_pose1 eyebrows_base eyes_halflid_down as cg with d3 lun "Of course, [name_genie_luna]." - show lun_blowjob_personal_pose1 no_trousers as cg - with d3 - + show lun_blowjob_personal_pose1 no_trousers mouth_soft as cg with d3 nar "Luna takes a deep breath and then withdraws your hardening cock." - lun "(It's so big...)" - gen "You may proceed with the treatment, [name_luna_genie]." - lun "How am I supposed to--" - lun "I mean... Is there any particular way that I should suck on it?" - gen "*Hmm*... Perhaps sucking isn't the right phrase to describe it..." - gen "The goal is to lure them out, so just try and make the area feel good first and foremost." + + show lun_blowjob_personal_pose1 eyes_wide_down mouth_grin as cg with d3 + lun "(It looks so much bigger, when I'm this close...)" + gen "You may proceed with the treatment, [name_luna_genie]..." + + play sound "sounds/sniff.ogg" + show lun_blowjob_personal_pose1 eyebrows_worried eyes_closed as cg with d3 + lun "*Sniff* *Sniff*" + + gen "What are you--" + + show lun_blowjob_personal_pose2 as cg with d5 + lun "*Lick* *Lick*" + gen "[name_luna_genie]?" + + show lun_blowjob_personal_pose2 mouth_kiss as cg with d3 + lun "*Kissing noises*" + + gen "[name_luna_genie]!" + + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_wide_right mouth_soft as cg with d3 + lun "Sorry [name_genie_luna], I'm listening!" + + gen "As I said... You may proceed with the treatment..." + + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_wide_stare as cg with d3 + lun "Oh... Right... Is there any particular way that I should suck on it, [name_genie_luna]?" + gen "*Ahem*... Perhaps sucking isn't the right phrase to describe it..." + gen "The goal is to lure them out, so just try and make the area feel good, first and foremost." + + show lun_blowjob_personal_pose1 eyebrows_base mouth_base as cg with d3 lun "Okay then..." - nar "Luna stares at your cock excitedly as she readies herself to take the head into her mouth." - lun "I'll make you feel as good as possible to lure them out..." + show lun_blowjob_personal_pose1 eyebrows_base eyes_halflid_down mouth_grin as cg with d3 + nar "Luna's eyes darts to your cock excitedly as she readies herself to take the head into her mouth." + + show lun_blowjob_personal_pose1 eyebrows_base eyes_wide_down mouth_open as cg with d3 + lun "I'll make sure to lure them out before you even know it!" gen "That's--" - #Luna puts dick in mouth - - gen "*Ngh*!" - lun "*Hmm*?" - gen "We're good, I think you must have startled them!" - gen "Now, why don't you try and move--" - "-Shove it in there!-": + #TODO see if this section will work, it clashes with the upcoming bit and the art may not be too well suited for this. + #TODO pose gen "Open wide!" - show lun_blowjob_personal_pose1 no_trousers as cg - with d3 - + show lun_blowjob_personal_pose3 no_trousers as cg with d3 nar "You quickly pull out your cock, and slip it into the girl's warm mouth." + lun "*Mff*!!!" gen "Sorry, I just couldn't wait any longer." lun "*Mhm*." gen "Glad you understand, now, why don't you start by--" - nar "Luna begins sucking in earnest, moving her tongue along the underside of your sensitive cock." + show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + + show lun_blowjob_personal_pose3 as cg with d3 + + show lun_blowjob_personal_pose4 as cg with d3 + + play sound "sounds/gag_01.ogg" + show lun_blowjob_personal_pose5 eyebrows_angry eyes_closed as cg with d3 + + nar "Luna pushes her head all the way down your shaft." gen "By the gods, girl!" + show lun_blowjob_personal_pose5 eyebrows_raised eyes_base_up as cg with d3 lun "*Gmph*?" + + #moves head back up + show lun_blowjob_personal_pose4 penis_spit as cg with d3 + + show lun_blowjob_personal_pose3 as cg with d3 + + show lun_blowjob_personal_pose2 as cg with d3 + lun "*Ish shomhing whon*?" - nar "Luna somehow manages to form her muffled question without even slowing her pace." gen "N-no, of course not...{w=0.3} You're doing great..." + + show lun_blowjob_personal_pose2 eyebrows_shocked as cg with d3 lun "*Hi ahm*?" + gen "Yes..." - lun "*Schan khoo!* *Slurp*" - nar "In an attempt at responding to your praise, Luna's tongue moves along the underside of your cock once again, and a sudden rush of pleasure runs through your body." + show lun_blowjob_personal_pose2 eyebrows_base eyes_closed as cg with d3 + lun "*Schan khoo!*" + + show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + + show lun_blowjob_personal_pose3 as cg with d3 + + show lun_blowjob_personal_pose4 as cg with d3 + nar "After responding to your praise, Luna's tongue moves along the underside of your cock once again, and a sudden rush of pleasure runs through your body." gen "*Argh*..." - show lun_blowjob_personal_pose3 as cg - with d3 - - gen "Would you please slow down [name_luna_genie]!" + show lun_blowjob_personal_pose4 eyes_base_up as cg with d3 + lun "*Hmm*?" + gen "Would you please be careful, [name_luna_genie]!" #Takes cock out - show lun_blowjob_personal_pose1 as cg - with d3 + show lun_blowjob_personal_pose3 as cg with d3 + show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + + show lun_blowjob_personal_pose1 eyes_halflid_up mouth_open_spit as cg with d3 lun "*Pwah*..." - lun "Was I not doing a good job, [name_genie_luna]?" - gen "No, you were doing great, you were just going a little too--" - lun "I knew I was hurting you!" - lun "Should we try inserting my wand to draw them out instead?" - gen "What?! That sounds awful!" - lun "But wasn't I doing it wrong?" + + show lun_blowjob_personal_pose1 eyebrows_worried mouth_annoyed as cg with d3 + lun "Was my performance not satisfactory, [name_genie_luna]?" + gen "No, you were doing surprisingly well, but unless you know how to control your gag--" + + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_wide_stare mouth_open as cg with d3 + lun "I knew it! I was hurting you!" + + show lun_blowjob_personal_pose1 eyebrows_angry eyes_base_down mouth_soft as cg with d3 + lun "Should I try inserting my wand and \"Accio\" them out instead?" + gen "What?! That's sounding--{w=0.2} I mean, that sounds awful!" + + show lun_blowjob_personal_pose1 eyebrows_base eyes_base_stare as cg with d3 + lun "But, wasn't I doing it wrong?" gen "Of course not!" - lun "Why did you ask me to slow down then?" - gen "I didn't! It must have been those nasty Wrinklespores!" - gen "They made me say it so you'd leave them alone!" + + show lun_blowjob_personal_pose1 mouth_annoyed as cg with d3 + lun "Then how come you told me to be careful?" + gen "I just figured..." + + show lun_blowjob_personal_pose1 eyebrows_raised as cg with d3 + lun "..." + gen "You know what, just go for it...{w=0.4} I'm sure nothing bad will happen..." + gen "It was probably those nasty wrinklespores that made me stop you in the first place anyway." + + show lun_blowjob_personal_pose1 eyebrows_angry eyes_halflid_down as cg with d3 lun "Those tricksy little--" + + show lun_blowjob_personal_pose1 eyes_base_down mouth_open as cg with d3 lun "Don't worry, [name_genie_luna], I'll get them out in no time!" - show lun_blowjob_personal_pose3 as cg - with d3 + play sound "sounds/spit.ogg" + show lun_blowjob_personal_pose1 mouth_spitting as cg with d3 + lun "*Ptui*" - nar "With that, Luna resumes her rapid assault of your cock." + #show lun_blowjob_personal_loop_shallow as cg with d3 + #TODO Continue posing from here + + nar "After lubricating your cock some more, Luna begins sucking in earnest, moving her tongue along the underside of your sensitive cock." gen "*Ngh*!" - gen "G-good work [name_luna_genie]..." + gen "G-good work, [name_luna_genie]..." gen "I-- I think I can feel them coming... Get ready!" gen "That's...{w=0.3} It...{w=0.3} Take all of my cum, you cumslut!" #Luna pulls out to speak and takes a facial - show lun_blowjob_personal_pose1 cum_precum as cg - with d3 + show lun_blowjob_personal_pose1 cum_precum as cg with d3 + + #TODO jerking loop lun "Your wha--" gen "*AAAAH*!" - show lun_blowjob_personal_pose1 cum_frame0 as cg - with d3 + show lun_blowjob_personal_pose1 cum_frame0 as cg with d3 pause 0.2 - show lun_blowjob_personal_pose1 cum_frame1 as cg - with d3 + show lun_blowjob_personal_pose1 cum_frame1 as cg with d3 pause 0.2 - show lun_blowjob_personal_pose1 cum_frame2 as cg - with d3 + show lun_blowjob_personal_pose1 cum_frame2 as cg with d3 pause 0.2 - show lun_blowjob_personal_pose1 cum_frame3 as cg - with d3 + show lun_blowjob_personal_pose1 cum_frame3 as cg with d3 pause 0.2 - show lun_blowjob_personal_pose1 cum_frame4 as cg - with d3 + show lun_blowjob_personal_pose1 cum_frame4 as cg with d3 pause 0.2 #Genie cums @@ -301,8 +395,7 @@ label ll_pf_blowjob_T4_E1_intro: #Blackfade #Hide CG - show screen blkfade - with d3 + show screen blkfade with d3 nar "Luna crawls out and happily starts skipping to the front of your desk, then spinning around, she flicks some of the remains of your deed of her face onto the stone floor." @@ -319,18 +412,22 @@ label ll_pf_blowjob_T4_E1_intro: lun "I can't believe how fun this was!" ("base", "base", "base", "mid") gen "Glad you enjoyed it." ("base", xpos="far_left", ypos="head") - lun "Just let me know when you need my assistance again." ("base", "base", "base", "mid") - gen "I most certainly will--" ("base", xpos="far_left", ypos="head") + lun "Just let me know when you require my assistance again." ("base", "base", "base", "mid") + gen "I most certainly will..." ("base", xpos="far_left", ypos="head") + call play_sound("giggle") pause .8 + hide luna_main + with d3 - #Luna turns around + call lun_chibi(flip=True) + pause .5 - gen "-- [name_luna_genie]." ("base", xpos="far_left", ypos="head") + gen "[name_luna_genie]." ("base", xpos="far_left", ypos="head") gen "Aren't you forgetting something?" ("base", xpos="far_left", ypos="head") - #Luna turns back + call lun_chibi(flip=False) lun "*Ehm*... Probably... I'm not the best when it comes to remembering things." ("base", "base", "base", "mid") gen "Don't you think you should clean yourself off a little, before heading to your dorm?" ("base", xpos="far_left", ypos="head") @@ -382,7 +479,8 @@ label ll_pf_blowjob_T4_E1_intro: $ _wearing_clothes = False #TODO Add unlock requirement for "cumslut" Luna nickname where you have to finish this event to use it - #TODO event end (check how other favours do it for Luna since they are a bit different) + $ states.lun.status.blowjob = True + $ states.lun.status.cumshot = True jump ll_pf_blowjob_end @@ -448,11 +546,10 @@ label ll_pf_blowjob_T4_E2_intro: gen "What?" gen "You better not get your teeth anywhere near it." - #giggles call play_sound("giggle") - #Luna smiles pause 1 + #Luna smiles lun "Not like that, silly..." lun "What I meant, is that this is becoming more of a habit, like brushing your teeth." gen "Right..." @@ -463,14 +560,14 @@ label ll_pf_blowjob_T4_E2_intro: lun "This is a lot more fun than brushing my teeth..." gen "If you say--" - #Luna starts sucking - #TODO sucking image loop/speedlines and sound - #TODO sucking sound loop/speedlines and sound + #Luna pushes her head down genie's shaft gen "*Ngh*!" gen "Eager today, are we?" lun "*Mhm*..." + #TODO sucking image loop/speedlines and sound + #TODO sucking sound loop/speedlines and sound nar "Luna, not even hesitating, starts bobbing her head happily down your shaft, the thought of swallowing your cum being the only thing occupying her mind." gen "Excellent work, [name_luna_genie]..." @@ -527,7 +624,7 @@ label ll_pf_blowjob_T4_E2_intro: #Luna pulls out lun "*Ah*...{w=0.3 }*Ah*...{w=0.3 }*Ah*..." - lun "All...{w=0.3 }*Ah*...{w=0.3} All gone [name_genie_luna]..." + lun "All...{w=0.3 }*Ah*...{w=0.3} All gone, [name_genie_luna]..." gen "Very--{w=0.4} Very, impressive, [name_luna_genie]." gen "Those Wickerspatters barely stood a chance..." lun "I...{w=0.4} I'm glad..." @@ -600,6 +697,7 @@ label ll_pf_blowjob_T4_E2_intro: gen "(Did she just say \"thank you\"?)" $ _wearing_clothes = False + $ states.lun.status.gokkun = True jump ll_pf_blowjob_end @@ -768,34 +866,39 @@ label ll_pf_blowjob_T4_E3_intro: show screen blkfade with d5 - nar "In the afterglow of your enormous climax, all you hear for a while is the sounds of Luna breathing heavily underneath your desk." + nar "In the afterglow of your enormous climax, all you hear for a while is the sounds of Luna panting heavily underneath your desk." hide screen blkfade with d5 - lun "*Ah*...{w=0.4} Thank you, [name_genie_luna]..." + #Luna shows cum on her tongue + lun "Aaaah...{w=0.4}{nw}" + #swallows + lun "*Ah*...{fast} *Gulp*...{w} All gone..." + lun "Thank you, [name_genie_luna]..." gen "*Huh*?" lun "You were the only person who took me seriously about the wrackspurts problem..." lun "And you've been so nice and patient and have taught me so many things..." lun "And this cum..." lun "It's so good! It's as if it's made of pure magic!" + #TODO, starts jerking lun "I can't get enough of it!" lun "Thank you, thank you, thank you!" - lun "You're the best genie ever!" + lun "You're the best genie ever!" #heart eyes - #Luna sucking loop - nar "With that, Luna resumes sucking on your cock, shamelessly slobbering over every inch of it..." + #Luna kiss dick + nar "With that, Luna starts kissing and licking the tip of your cock, shamelessly slobbering over every inch of it..." - gen "*Ugh*... I'm glad you're enjoying yourself." + gen "*Ngh*... I'm glad you're enjoying yourself." gen "And indeed, I {i}am{/i} the best genie ever..." play sound "sounds/scratch.wav" gen "Wait...{w=0.5} Did you just say {b}GENIE{/b}?!" - #Luna stops sucking - lun "*Slrp-pop*!" - lun "*Mhmmm*? I mean you are a genie, aren't you?" + #Luna stops licking + lun "*Slrp*?" + lun "I mean you are a genie, aren't you?" gen "Well, yes..." gen "But how did you know? Don't tell me the cloaking thingy had a experiation date..." lun "Oh, don't worry [name_genie_luna]... I can only see your true form when I'm wearing my spectrespecs!" @@ -807,14 +910,16 @@ label ll_pf_blowjob_T4_E3_intro: lun "Nope! Not unless it bothers you..." gen "As long as you keep sucking like that, you can think I'm the prince of Persia..." gen "Just don't expect any wishes." - lun "Oh... Why not?" - gen "You have to rub my lamp to get wishes and I'm pretty sure that thing is all the way back in Agrabah." + lun "Oh...{w=0.4} Why not?" + gen "You have to rub my lamp to get wishes, and I'm pretty sure that thing is all the way back in Agrabah." lun "*Awww*... Rubbing this doesn't count?" + #TODO, starts jerking nar "Luna gives your cock a playful few strokes." gen "I wish..." gen "..." + #TODO, stops jerking lun "Oh well... I guess this will have to do then." lun "Speaking of..." @@ -829,25 +934,27 @@ label ll_pf_blowjob_T4_E3_intro: lun "You've come up with another method already?" gen "I believe so..." gen "Am I making the right assumption that the spurs haven't stopped bothering you whilst you've been helping me, [name_luna_genie]?" - lun "Oh... I mean... I suppose not... But I'll manage, as long as it helps with your research!" - gen "*Hmm*... I appreaciate the sentiment, but that isn't good enough I'm afraid..." + lun "Oh...{w=0.4} I mean...{w=0.4} I suppose not...{w} But I'll manage, as long as it helps with your research!" + gen "*Hmm*...{w=0.4} I appreciate the sentiment, but that isn't good enough I'm afraid..." lun "[name_genie_luna]?" gen "I will not allow a world where the comfort of one is only achievable thanks to the suffering of another." lun "*Ehm*..." - gen "Therefor the only real solution is one where we're able to physically stimulate each other to rid ourselves of the sprats at the same time." + gen "Therefore the only real solution is one where we're able to physically stimulate each other to rid ourselves of the sprats at the same time." lun "At the same time!?" - gen "That's right, [name_luna_genie]... If we can achieve physical stimulation and release between both participants simultaniously then--" + gen "That's right, [name_luna_genie]... If we can achieve physical stimulation and release between both participants simultaneously, then--" + #Luna starts jerking lun "Can we try it now? Pleaaaase!" gen "*Ugh*...{w=0.4} I appreciate the enthusiasm [name_luna_genie], but I think I need a bit of a nap first..." + #Stops jerking lun "Oh... Okay then, Mister Genie!" gen "Just \"Genie\" is fine." ("base", xpos="far_left", ypos="head") - gen "Although, try to avoid calling me that in front of anyone else... It will be our little secret." + gen "Although, try to avoid calling me that in front of anyone else...{w=0.4} It will be our little secret." lun "Okie dokie, [name_genie_luna], Enjoy your nap!" show screen blkfade with d5 #Office screen - #Genie nickname becomes available for Luna (adding writing along with) + #TODO Genie nickname becomes available for Luna (adding writing along with) if _wearing_clothes: $ luna.wear("all") @@ -930,42 +1037,49 @@ label ll_pf_blowjob_T4_E4_repeat: lun "You know, I was worried that I would never get suck this delectable thing again." gen "Delectable?" - #Luna takes Genie's cock in her mouth + #Luna kisses cock + play sound "sounds/kiss.ogg" + with kissiris + gen "You sure have caught a liking to doing this..." + lun "*Lick*" gen "*Ngh*!" lun "*Hmmff*?" lun "*U Oay*?" gen "I'm fine! You go right ahead." lun "*Esh pffeshor*!" + + #Luna takes Genie's cock in her mouth + lun "*Mmmmmm*...." gen "*Ngh*!" - gen "Whoa! Say that again!" + gen "Whoa! Do that again!" lun "*Mff*?" - gen "Whatever you just said, say it again!" - lun "*Pffesor*?" + gen "Whatever you just did, do it again!" + lun "*Mmmmmm*?" gen "*Ah*, yes! That felt good!" - lun "*Wha a ue*--" gen "Now, down the wizard tower we go!" nar "Luna, looking slightly more puzzled than her usual self, shrugs and then pushes her head down your shaft." - #Sucking loop - gen "*Ah*... Yes... Now that's how you descend a tower!" + #Sucking slow + gen "*Ah*...{w=0.4} Yes...{w=0.4} Now that's how you descend a tower!" nar "Revelling in your praise, you watch as Luna happily bobs her head up and down your cock, only slowing down intermittently to run her tongue underneath your shaft." - gen "*Ah*... I think you might've touched the bottom floor that time." - gen "You sure are a cumslut." + gen "*Ah*...{w=0.4} I think you might've touched the bottom floor that time." + gen "You sure are a cumslut..." nar "As the last word escapes your lips, could swear that Luna's throat tensed up briefly around your cock, but before the thought took hold, her onslaught on your cock continues." + #sucking medium gen "(She's--{w=0.2} too good! If she keeps going like this, my reputation will be in shambles!)" gen "*Ngh*... Slow down a bit, won't you?" + #sucking fast nar "Luna, hearing your pleas, looks at you worryingly and increases the pace." gen "What are you--" gen "Slow down, girl!" - #Cum section menu: "-Say something weird to make her pull out-": @@ -980,7 +1094,7 @@ label ll_pf_blowjob_T4_E4_repeat: lun "[name_genie_luna]!" gen "*Ah*... That was--" - lun "Quickly, [name_genie_luna]... Move your legs!" + lun "Quickly, [name_genie_luna]... Move your leg!" gen "*Huh*?" show screen blkfade diff --git a/game/scripts/characters/luna/vars.rpy b/game/scripts/characters/luna/vars.rpy index ab350cf1..43035d3d 100644 --- a/game/scripts/characters/luna/vars.rpy +++ b/game/scripts/characters/luna/vars.rpy @@ -24,8 +24,9 @@ default states.lun.status.show_panties = False default states.lun.status.show_pussy = False default states.lun.status.stripping = False default states.lun.status.masturbating = False -#default states.lun.status.blowjob = False -#default states.lun.status.gokkun = False +default states.lun.status.blowjob = False +default states.lun.status.cumshot = False +default states.lun.status.gokkun = False #default states.lun.status.sex = False #default states.lun.status.creampie = False #default states.lun.status.anal = False From 5eb5ec63fac8f04cb1604e0b0e79940114e88366 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 1 Nov 2023 17:39:28 +0000 Subject: [PATCH 026/249] Luna T4 Fellatio - Additions * Added missing arm attribute controller * Added animation loops * Added cum layers for Luna for Hair, Chest, Face * Updated .gitignore --- game/characters/.gitignore | 2 + .../poses/default/cum/breasts/heavy/cum.webp | 4 +- .../poses/default/cum/breasts/heavy/skin.webp | 3 + .../poses/default/cum/face/heavy/cum.webp | 4 +- .../poses/default/cum/face/heavy/skin.webp | 3 + .../poses/default/cum/hair/heavy/cum.webp | 3 - .../default/cum/hair/heavy/default/cum.webp | 3 + ...job_personal_pose3_genie_arm_petting.webp} | 0 ...job_personal_pose4_genie_arm_petting.webp} | 0 ...job_personal_pose5_genie_arm_petting.webp} | 0 game/scripts/cg/luna.rpy | 60 +++++++++++++++++++ 11 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 game/characters/.gitignore create mode 100644 game/characters/luna/poses/default/cum/breasts/heavy/skin.webp create mode 100644 game/characters/luna/poses/default/cum/face/heavy/skin.webp delete mode 100644 game/characters/luna/poses/default/cum/hair/heavy/cum.webp create mode 100644 game/characters/luna/poses/default/cum/hair/heavy/default/cum.webp rename game/images/CG/lun_blowjob/personal/{lun_blowjob_personal_genie_arm_petting_pose3.webp => pose3/lun_blowjob_personal_pose3_genie_arm_petting.webp} (100%) rename game/images/CG/lun_blowjob/personal/{lun_blowjob_personal_genie_arm_petting_pose4.webp => pose4/lun_blowjob_personal_pose4_genie_arm_petting.webp} (100%) rename game/images/CG/lun_blowjob/personal/{lun_blowjob_personal_genie_arm_petting_pose5.webp => pose5/lun_blowjob_personal_pose5_genie_arm_petting.webp} (100%) diff --git a/game/characters/.gitignore b/game/characters/.gitignore new file mode 100644 index 00000000..7375510b --- /dev/null +++ b/game/characters/.gitignore @@ -0,0 +1,2 @@ +# We don't want to include PNGs in GIT +*.png diff --git a/game/characters/luna/poses/default/cum/breasts/heavy/cum.webp b/game/characters/luna/poses/default/cum/breasts/heavy/cum.webp index 1778c73a..53d39acd 100644 --- a/game/characters/luna/poses/default/cum/breasts/heavy/cum.webp +++ b/game/characters/luna/poses/default/cum/breasts/heavy/cum.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49c967935ca5ab21cb305c95fa2117fe8ae7830adb20ea0b2748da2bf98e45eb -size 21588 +oid sha256:f0022f239d0cb72861943753490fff0c577992ffa683496bd71d19268e8d40eb +size 23320 diff --git a/game/characters/luna/poses/default/cum/breasts/heavy/skin.webp b/game/characters/luna/poses/default/cum/breasts/heavy/skin.webp new file mode 100644 index 00000000..c77ed040 --- /dev/null +++ b/game/characters/luna/poses/default/cum/breasts/heavy/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d3383c6b1d9472dfd9b762838df6e970f92798105a9dcb0773daa6ac0c07f02 +size 7384 diff --git a/game/characters/luna/poses/default/cum/face/heavy/cum.webp b/game/characters/luna/poses/default/cum/face/heavy/cum.webp index 008e5b41..7d775e03 100644 --- a/game/characters/luna/poses/default/cum/face/heavy/cum.webp +++ b/game/characters/luna/poses/default/cum/face/heavy/cum.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c60507756048a91c1c68492714ccd63db147a577b9597af817f59a06e49575dc -size 10552 +oid sha256:93374ea69fde3374f5b760b26226d2c7db9bc39c04b503748528926e7d78973b +size 8872 diff --git a/game/characters/luna/poses/default/cum/face/heavy/skin.webp b/game/characters/luna/poses/default/cum/face/heavy/skin.webp new file mode 100644 index 00000000..91b401a7 --- /dev/null +++ b/game/characters/luna/poses/default/cum/face/heavy/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7af83c9769f2ededcfad083843580e026e7e09e891ba1cd51a41a6cc39c76d23 +size 2256 diff --git a/game/characters/luna/poses/default/cum/hair/heavy/cum.webp b/game/characters/luna/poses/default/cum/hair/heavy/cum.webp deleted file mode 100644 index 841e6feb..00000000 --- a/game/characters/luna/poses/default/cum/hair/heavy/cum.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1d58546a21789f5a3c53858f5fdb46c5dcbf775ee87add5ed8515de02b58cbd9 -size 19014 diff --git a/game/characters/luna/poses/default/cum/hair/heavy/default/cum.webp b/game/characters/luna/poses/default/cum/hair/heavy/default/cum.webp new file mode 100644 index 00000000..34c9238a --- /dev/null +++ b/game/characters/luna/poses/default/cum/hair/heavy/default/cum.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7ab58bee75693d52f208c0028ea9365c81dc02d13bc43c5d08e0a96cde76da2 +size 35172 diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose3.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_genie_arm_petting.webp similarity index 100% rename from game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose3.webp rename to game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_genie_arm_petting.webp diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose4.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_genie_arm_petting.webp similarity index 100% rename from game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose4.webp rename to game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_genie_arm_petting.webp diff --git a/game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose5.webp b/game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_genie_arm_petting.webp similarity index 100% rename from game/images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_petting_pose5.webp rename to game/images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_genie_arm_petting.webp diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index ffb13aea..dfdec021 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -14,6 +14,7 @@ layeredimage lun_blowjob_personal_pose1: fit_first True always "lun_blowjob_personal_background" + always "lun_blowjob_personal_pose1_luna_base" always "lun_blowjob_personal_genie_back" @@ -45,6 +46,10 @@ layeredimage lun_blowjob_personal_pose1: always "lun_blowjob_personal_tabletop" + group genie_arm auto prefix "genie_arm": + attribute idle "lun_blowjob_personal_genie_arm_idle" + attribute down null default + always "lun_blowjob_personal_genie_front" group genie: @@ -87,6 +92,10 @@ layeredimage lun_blowjob_personal_pose2: always "lun_blowjob_personal_tabletop" + group genie_arm auto prefix "genie_arm": + attribute idle "lun_blowjob_personal_genie_arm_idle" + attribute down null default + always "lun_blowjob_personal_genie_front" group genie: @@ -129,6 +138,10 @@ layeredimage lun_blowjob_personal_pose3: always "lun_blowjob_personal_tabletop" + group genie_arm auto prefix "genie_arm": + attribute idle "lun_blowjob_personal_genie_arm_idle" + attribute down null default + always "lun_blowjob_personal_genie_front" group genie: @@ -171,6 +184,10 @@ layeredimage lun_blowjob_personal_pose4: always "lun_blowjob_personal_tabletop" + group genie_arm auto prefix "genie_arm": + attribute idle "lun_blowjob_personal_genie_arm_idle" + attribute down null default + always "lun_blowjob_personal_genie_front" group genie: @@ -214,6 +231,10 @@ layeredimage lun_blowjob_personal_pose5: always "lun_blowjob_personal_tabletop" + group genie_arm auto prefix "genie_arm": + attribute idle "lun_blowjob_personal_genie_arm_idle" + attribute down null default + always "lun_blowjob_personal_genie_front" group genie: @@ -221,6 +242,45 @@ layeredimage lun_blowjob_personal_pose5: always "lun_blowjob_personal_vignette" +image lun_blowjob_personal_loop: + "lun_blowjob_personal_pose3 penis_spit eyes_halflid_up" with d1 + pause 0.35 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_up" with d1 + pause 0.25 + "lun_blowjob_personal_pose5 penis_spit eyebrows_angry eyes_halflid_up" with d1 + pause 0.35 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_stare" with d1 + pause 0.25 + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_closed" with d1 + pause 0.25 + repeat + +image lun_blowjob_personal_loop_ahegao: + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 + pause 0.25 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 + pause 0.15 + "lun_blowjob_personal_pose5 penis_spit eyebrows_worried eyes_closed" with d1 + pause 0.25 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 + pause 0.15 + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 + pause 0.15 + repeat + +image lun_blowjob_personal_loop_ahegao_hold: + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_up_hearts" with d1 + pause 0.2 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_down_hearts" with d1 + pause 0.10 + "lun_blowjob_personal_pose5 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_stare_hearts" with d1 + pause 0.2 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_up_hearts" with d1 + pause 0.10 + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_up_hearts" with d1 + pause 0.10 + repeat + image lun_blowjob_personal_pose1_handjob_slow: Fixed( "lun_blowjob_personal_pose1_luna_stroke_down_shadow", From 211c52041e34a59e238bc31f2839e1789b590763 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Fri, 3 Nov 2023 14:06:50 +0100 Subject: [PATCH 027/249] Luna Fellatio CG posing * Posed more of the event. * Added more image loops. * Fixed some shadows on genie arm images. --- ...wjob_personal_pose3_genie_arm_petting.webp | 4 +- ...wjob_personal_pose4_genie_arm_petting.webp | 4 +- game/scripts/cg/luna.rpy | 21 +- .../characters/luna/events/favors/suck_it.rpy | 190 +++++++++--------- 4 files changed, 122 insertions(+), 97 deletions(-) diff --git a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_genie_arm_petting.webp b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_genie_arm_petting.webp index e4729168..f7393a13 100644 --- a/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_genie_arm_petting.webp +++ b/game/images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_genie_arm_petting.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:add16abb01a9dd85b9eed2f9771eb300f8b952715a9944f8e0da836f59ebea06 -size 142876 +oid sha256:1bfd5885874703b20c60043bd1715a4ede169251c197fd30afa04202cbddaabf +size 142616 diff --git a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_genie_arm_petting.webp b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_genie_arm_petting.webp index 1ba84120..eb38022a 100644 --- a/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_genie_arm_petting.webp +++ b/game/images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_genie_arm_petting.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2885cb00c32e3edc560a323c6b0a7f5b771c36ad6c5cb586229d5de063d00a1a -size 139546 +oid sha256:c32206821efc54a6263132dfaa7164a3cd79982c77ee0fbbf80478b7419dee43 +size 137972 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index dfdec021..91bbefbe 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -243,15 +243,15 @@ layeredimage lun_blowjob_personal_pose5: always "lun_blowjob_personal_vignette" image lun_blowjob_personal_loop: - "lun_blowjob_personal_pose3 penis_spit eyes_halflid_up" with d1 + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_halflid_stare" with d1 pause 0.35 "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_up" with d1 pause 0.25 "lun_blowjob_personal_pose5 penis_spit eyebrows_angry eyes_halflid_up" with d1 - pause 0.35 + pause 0.45 "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_stare" with d1 pause 0.25 - "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_closed" with d1 + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_halflid_stare" with d1 pause 0.25 repeat @@ -281,6 +281,21 @@ image lun_blowjob_personal_loop_ahegao_hold: pause 0.10 repeat +image lun_blowjob_personal_loop_ahegao_hold_down: + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_up_hearts" with d1 + pause 0.2 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_down_hearts" with d1 + pause 0.10 + "lun_blowjob_personal_pose5 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_stare_hearts" with d1 + pause 0.6 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_up_hearts" with d1 + pause 0.10 + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried genie_arm_petting eyes_halflid_up_hearts" with d1 + pause 0.10 + repeat + + + image lun_blowjob_personal_pose1_handjob_slow: Fixed( "lun_blowjob_personal_pose1_luna_stroke_down_shadow", diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 700f9017..0257a75f 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -53,7 +53,7 @@ label ll_pf_blowjob_T4_E1_intro: call ll_pf_blowjob gen "I think it's about time we try a new technique to deal with those wankspurs." ("base", xpos="far_left", ypos="head") - lun "This is the idea that you had, after I've told you about Professor Trelawney reading me my future?" ("open", "base", "base", "mid") + lun "This is the idea that you had, after I've told you about Professor Trelawney reading me my future?" ("open", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "That's--" ("base", xpos="far_left", ypos="head") lun "\"I will soon find something new within me, that will propel me forward on the path towards my destiny!\"" ("grin", "closed", "base", "mid") lun "That's what she said!" ("base", "base", "base", "mid") @@ -70,7 +70,7 @@ label ll_pf_blowjob_T4_E1_intro: nar "Luna's eyes begins darting around your office." gen "*Err*...{w=0.4} What are you doing?" ("base", xpos="far_left", ypos="head") lun "Oh, I'm just looking around to see if I can spot what it might be." ("grin", "base", "base", "mid") - lun "You said it was very old, so it must be some kind of ancient, magical artifact, right?" ("grin", "base", "raised", "mid") + lun "You said it was very old, so it must be some kind of ancient, magical artefact, right?" ("grin", "base", "raised", "mid") gen "That's not--{w=0.4} This isn't a setup for a game of hide and seek." ("angry", xpos="far_left", ypos="head") gen "If you could just shut your mouth for a moment, I'll tell you!" ("base", xpos="far_left", ypos="head") lun "..." ("soft", "base", "base", "mid") @@ -139,7 +139,7 @@ label ll_pf_blowjob_T4_E1_intro: gen "Wait...{w} Magic?" show lun_blowjob_personal_pose1 eyebrows_base eyes_base_stare mouth_base as cg with d3 lun "Yes!" - lun "Why I never would've imagine the wrackspurts drawing out this much magical essence..." + lun "Why I never would've imagined the wrackspurts drawing out this much magical essence..." show lun_blowjob_personal_pose1 eyebrows_raised mouth_grin as cg with d3 lun "Can you not feel it, [name_genie_luna]?" show lun_blowjob_personal_pose1 eyebrows_shocked eyes_halflid_down as cg with d3 @@ -202,6 +202,10 @@ label ll_pf_blowjob_T4_E1_intro: show lun_blowjob_personal_pose2 eyebrows_angry eyes_halflid_down as cg with d3 gen "Now, I'll need you to--" + show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + + show lun_blowjob_personal_pose3 as cg with d3 + "-Tell her to take it out-": gen "I'm a little tired..." @@ -251,28 +255,33 @@ label ll_pf_blowjob_T4_E1_intro: lun "I'll make sure to lure them out before you even know it!" gen "That's--" + show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + + show lun_blowjob_personal_pose3 as cg with d3 + "-Shove it in there!-": - #TODO see if this section will work, it clashes with the upcoming bit and the art may not be too well suited for this. - #TODO pose gen "Open wide!" - show lun_blowjob_personal_pose3 no_trousers as cg with d3 - nar "You quickly pull out your cock, and slip it into the girl's warm mouth." + show lun_blowjob_personal_pose3 no_trousers genie_arm_petting eyebrows_angry eyes_halflid_up as cg with d3 + nar "You quickly pull out your cock, and then pull Luna's head down your shaft." + show lun_blowjob_personal_pose3 eyebrows_shocked eyes_wide_up as cg with d3 lun "*Mff*!!!" gen "Sorry, I just couldn't wait any longer." - lun "*Mhm*." - gen "Glad you understand, now, why don't you start by--" - show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + show lun_blowjob_personal_pose3 eyebrows_base eyes_base_down as cg with d3 + lun "*Mhm*..." + + show lun_blowjob_personal_pose3 -genie_arm_petting as cg with d3 + gen "Glad you understand...{w=0.4} Now, why don't you start by--" - show lun_blowjob_personal_pose3 as cg with d3 show lun_blowjob_personal_pose4 as cg with d3 play sound "sounds/gag_01.ogg" show lun_blowjob_personal_pose5 eyebrows_angry eyes_closed as cg with d3 + with vpunch nar "Luna pushes her head all the way down your shaft." gen "By the gods, girl!" @@ -350,10 +359,21 @@ label ll_pf_blowjob_T4_E1_intro: show lun_blowjob_personal_pose1 mouth_spitting as cg with d3 lun "*Ptui*" - #show lun_blowjob_personal_loop_shallow as cg with d3 - #TODO Continue posing from here + #TODO Add more posing here, HJ loop may not work currently + show lun_blowjob_personal_pose1_handjob_moderate as cg with d3 - nar "After lubricating your cock some more, Luna begins sucking in earnest, moving her tongue along the underside of your sensitive cock." + nar "Without even hesitating, Luna spits on your cock and begins jerking you off." + nar "Her fingers move across your shaft with ease, and you can feel yourself getting close to finishing already." + lun "How's this, [name_genie_luna]? Is this how you usually do it?" + gen "*Ah*...{w=0.4} Yes...{w=0.4} Very good, [name_luna_genie]." + gen "(How's she so good at this already?)" + lun "Thank you, [name_genie_luna]!" + + show lun_blowjob_personal_pose2 as cg with d3 + pause 0.2 + + play background "sounds/slickloop.ogg" fadein 2 + show lun_blowjob_personal_loop as cg with d3 gen "*Ngh*!" gen "G-good work, [name_luna_genie]..." @@ -361,35 +381,36 @@ label ll_pf_blowjob_T4_E1_intro: gen "That's...{w=0.3} It...{w=0.3} Take all of my cum, you cumslut!" - #Luna pulls out to speak and takes a facial + #Luna pulls out to speak, and takes a facial + show lun_blowjob_personal_pose1 no_trousers penis_spit cum_precum eyebrows_shocked eyes_wide_stare mouth_open as cg with d3 - show lun_blowjob_personal_pose1 cum_precum as cg with d3 + stop background fadeout 2 + lun "What did you call--" + gen "*Argh*!" - #TODO jerking loop + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose1 cum_frame0 eyes_wide_down as cg with d2 + show lun_blowjob_personal_pose1 cum_frame1 eyes_wide_stare as cg with d2 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose1 cum_frame2 as cg with d2 + show lun_blowjob_personal_pose1 cum_frame3 as cg with d2 + show lun_blowjob_personal_pose1 cum_frame4 as cg with d2 - lun "Your wha--" + show lun_blowjob_personal_pose1 eyebrows_angry eyes_wide_down as cg with d2 + lun "Whoa!{w=0.4}{nw}" - gen "*AAAAH*!" - - show lun_blowjob_personal_pose1 cum_frame0 as cg with d3 - pause 0.2 - show lun_blowjob_personal_pose1 cum_frame1 as cg with d3 - pause 0.2 - show lun_blowjob_personal_pose1 cum_frame2 as cg with d3 - pause 0.2 - show lun_blowjob_personal_pose1 cum_frame3 as cg with d3 - pause 0.2 - show lun_blowjob_personal_pose1 cum_frame4 as cg with d3 - pause 0.2 - - #Genie cums - - lun "Whoa!" - lun "Wow, you really managed to cover me in them, [name_genie_luna]!" - gen "*Ah*... Well... That's sort of part of the job--" + show lun_blowjob_personal_pose1 mouth_grin as cg + lun "Whoa!{fast} You've covered me in wrackspurts, [name_genie_luna]!" + gen "*Ah*...{w=0.4} I...{w=0.4} Sorry about--" + show lun_blowjob_personal_pose1 eyes_closed as cg with d3 lun "Oh, I'm so pleased I managed to get so many out at once!" - nar "Luna looks up at you happily as your cum slowly begins sliding down her face." + + show lun_blowjob_personal_pose1 eyes_wide_stare as cg with d3 + nar "Luna looks up at you happily as your cum slowly starts sliding down her face." + gen "*Ahem*... Perhaps it'd be best if you got out from under the desk now." + + show lun_blowjob_personal_pose1 eyes_halflid_stare mouth_base as cg with d3 lun "Of course, [name_genie_luna]." #Blackfade @@ -397,26 +418,23 @@ label ll_pf_blowjob_T4_E1_intro: show screen blkfade with d3 - nar "Luna crawls out and happily starts skipping to the front of your desk, then spinning around, she flicks some of the remains of your deed of her face onto the stone floor." + $ luna.set_cum(face="heavy") + call lun_chibi("stand","desk","base", flip=False) + nar "Luna crawls out and happily starts skipping to the front of your desk, then spinning around, she flicks some of the remains of your deed off her hair and onto the stone floor." #Fade to Office hide cg hide screen blkfade with d5 - #Todo Add Cum to Luna face - - call play_sound("giggle") + play sound "sounds/giggle2.ogg" pause .8 - lun "I can't believe how fun this was!" ("base", "base", "base", "mid") - gen "Glad you enjoyed it." ("base", xpos="far_left", ypos="head") - lun "Just let me know when you require my assistance again." ("base", "base", "base", "mid") + lun "I can't believe how fun this was!" ("smile", "happyCl", "base", "mid", xpos="mid", ypos="base", trans=d3) + gen "Glad you enjoyed it." ("grin", xpos="far_left", ypos="head") + lun "Just let me know when you require my assistance again." ("grin", "narrow", "base", "mid") gen "I most certainly will..." ("base", xpos="far_left", ypos="head") - - - call play_sound("giggle") pause .8 hide luna_main with d3 @@ -429,43 +447,35 @@ label ll_pf_blowjob_T4_E1_intro: call lun_chibi(flip=False) - lun "*Ehm*... Probably... I'm not the best when it comes to remembering things." ("base", "base", "base", "mid") + lun "*Ehm*...{w=0.4} Probably...{w=0.4} I'm not the best when it comes to remembering things." ("angry", "base", "raised", "mid") gen "Don't you think you should clean yourself off a little, before heading to your dorm?" ("base", xpos="far_left", ypos="head") - lun "Oh, don't worry [name_genie_luna], I'm not going to my dorm, I'm going to the library." ("base", "base", "base", "mid") - gen "That's doesn't--" ("base", xpos="far_left", ypos="head") - lun "Oh, wait! I {i}did{/i} forget something!" ("base", "base", "base", "mid") - gen "... Right?" ("base", xpos="far_left", ypos="head") - lun "You called me a cumslut." ("base", "base", "base", "mid") - gen "*Err*... I did? You sure I didn't say... *Err*... thumb cut?!" ("angry", xpos="far_left", ypos="head") - lun "No, I'm sure you said cumslut! When I was getting rid of the wrackspurts!" ("base", "base", "base", "mid") - gen "Oh..." ("base", "base", "base", "mid") - lun "So, am I one?! What does it mean?!" ("base", "base", "base", "mid") - gen "*Err*... I guess you-- It means that you enjoy making someone cum!" ("base", xpos="far_left", ypos="head") - lun "Cum..." ("base", "base", "base", "mid") - lun "Is that also what you call the magical essence that is released?" ("base", "base", "base", "mid") - gen "Sure is... I figured why not have a singular word for both the substance, and the action." ("base", xpos="far_left", ypos="head") - lun "I like it!" ("base", "base", "base", "mid") - gen "And since you appeared to be enjoying it, I figured that cumslut would be an appropriate title for you." - lun "Oooh... I see!" ("base", "base", "base", "mid") - lun "Well I did enjoy it, so I guess I am a cumslut, [name_genie_luna]!" + lun "Oh, don't worry [name_genie_luna], I'm not going to my dorm, I'm going to the library." ("base", "wink", "base", "mid") + gen "That doesn't--" ("base", xpos="far_left", ypos="head") + lun "Oh, wait! I {i}did{/i} forget something!" ("angry", "base", "base", "stare") + gen "...{w=0.4} Right?" ("base", xpos="far_left", ypos="head") + lun "You called me a cumslut." ("grin", "base", "base", "mid") + gen "*Err*...{w=0.4} I did? You sure I didn't say...{w=0.4} *Err*...{w=0.4} thumb cut?!" ("angry", xpos="far_left", ypos="head") + lun "No, I'm certain you said cumslut! You said it, just before you released a bucketload of wrackspurts all over my face!" ("grin", "base", "base", "mid") + gen "Oh..." ("angry", xpos="far_left", ypos="head") + lun "So, is that what I am?! What does it mean?!" ("smile", "base", "base", "mid") + gen "*Err*...{w=0.4} I guess you--{w=0.2} Why, it just means that you enjoy making someone cum!" ("base", xpos="far_left", ypos="head") + lun "Cum..." ("base", "narrow", "base", "down") + lun "Is that another name for the magical essence that is released?" ("grin", "base", "raised", "mid") + gen "Sure is...{w=0.4} I figured why not have a singular word for both the substance, and the action." ("base", xpos="far_left", ypos="head") + lun "I like it!" ("smile", "base", "base", "mid") + gen "And since you appeared to be enjoying it, I figured that cumslut would be an appropriate title for you." ("base", xpos="far_left", ypos="head") + lun "Oooh...{w=0.4} I see!" ("grin", "base", "base", "stare") + lun "You know me so well, [name_genie_luna]! I truly am a cumslut!" ("grin", "happyCl", "raised", "mid") gen "Indeed you are!" ("grin", xpos="far_left", ypos="head") lun "Well, I better let everyone know my new title!" ("base", "base", "base", "mid") - - #TODO if you've done public T3 events (once public are written and added) - #gen "Sure, why not..." ("grin", xpos="far_left", ypos="head") - #gen "I'm sure they'll be happy to know that you enjoy helping out." ("grin", xpos="far_left", ypos="head") - #lun "Great!" ("base", "base", "base", "mid") - #else: - - gen "Oh, *Err*... I don't think that's such a good idea."("base", xpos="far_left", ypos="head") - lun "*Aww*... Why not?" ("base", "base", "base", "mid") - gen "Because... I'm your patient now, that's it!" ("grin", xpos="far_left", ypos="head") + gen "Oh, *Err*...{w=0.4} I don't think that's such a good idea."("base", xpos="far_left", ypos="head") + lun "*Aww*... Why not?" ("annoyed", "wink", "base", "mid") + gen "Because...{w=0.4} I'm your patient now! Yes, that's it!" ("grin", xpos="far_left", ypos="head") gen "Patient confidentiality and all that." ("grin", xpos="far_left", ypos="head") - lun "I see! I think I've heard about that!" ("base", "base", "base", "mid") - lun "Well then, at least you know that I'm a cumslut now!" ("base", "base", "base", "mid") - gen "Yep! Thanks [name_luna_genie]." ("grin", xpos="far_left", ypos="head") - lun "No problem [name_genie_luna]!" ("base", "base", "base", "mid") - lun "Well, I better get going...{w=0.4} Too-da-loo!" + lun "I see! I think I've heard about that!" ("grin", "base", "base", "stare") + lun "Well then, at least you can be pleased to know that I'm a cumslut now!" ("base", "base", "base", "mid") + gen "Very pleased, indeed!" ("grin", xpos="far_left", ypos="head") + lun "Well, I better get going...{w=0.4} Too-da-loo!" ("grin", "base", "base", "mid") call lun_walk(action="leave") @@ -489,7 +499,7 @@ label ll_pf_blowjob_T4_E2_intro: call ll_pf_blowjob gen "I've got another theory that I'd like us to try today, [name_luna_genie]." ("base", xpos="far_left", ypos="head") - lun "Oh, are we already finished with testing the sucking technique?" ("base", "base", "base", "mid") + lun "Oh, are we already finished with testing the sucking technique?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "Heavens no!" ("base", xpos="far_left", ypos="head") gen "I'll need you to do it at least two more times as to not break the format." ("base", xpos="far_left", ypos="head") lun "The format?" ("base", "base", "base", "mid") @@ -546,7 +556,7 @@ label ll_pf_blowjob_T4_E2_intro: gen "What?" gen "You better not get your teeth anywhere near it." - call play_sound("giggle") + play sound "sounds/giggle.ogg" pause 1 #Luna smiles @@ -639,7 +649,7 @@ label ll_pf_blowjob_T4_E2_intro: #Hide CG #Office screen Fade - lun "Those nasty wrackspurts were giving you a lot of trouble, weren't they [name_genie_luna]?" ("base", "base", "base", "mid") + lun "Those nasty wrackspurts were giving you a lot of trouble, weren't they [name_genie_luna]?" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) lun "Swallowing them all sure proved itself quite difficult..." ("base", "base", "base", "mid") gen "You sure could've fooled me..." ("base", xpos="far_left", ypos="head") lun "Do you think we've managed to dispose all of them, [name_genie_luna]?" ("base", "base", "base", "mid") @@ -706,7 +716,7 @@ label ll_pf_blowjob_T4_E3_intro: call ll_pf_blowjob gen "[name_luna_genie], care to help me me with--" ("base", xpos="far_left", ypos="head") - lun "Of course [name_genie_luna]! Today is Sunday, after all!" ("base", "base", "base", "mid") + lun "Of course [name_genie_luna]! Today is Sunday, after all!" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) #Luna walks closer to desk gen "I didn't even tell you what--" ("base", xpos="far_left", ypos="head") gen "Wait... It's Sunday?" ("base", xpos="far_left", ypos="head") @@ -719,7 +729,7 @@ label ll_pf_blowjob_T4_E3_intro: gen "That's why I called you here, to suck those spurts out for me." ("base", xpos="far_left", ypos="head") #giggles - call play_sound("giggle") + play sound "sounds/giggle.ogg" pause 1 lun "Oh, you're so silly sometimes [name_genie_luna]." ("base", "base", "base", "mid") @@ -761,7 +771,7 @@ label ll_pf_blowjob_T4_E3_intro: gen "Is there some sort of alien abduction scheduled that I wasn't aware of?" ("base", xpos="far_left", ypos="head") #giggles - call play_sound("giggle") + play sound "sounds/giggle.ogg" pause 1 lun "Good one, [name_genie_luna]!" ("base", "base", "base", "mid") @@ -976,7 +986,7 @@ label ll_pf_blowjob_T4_E4_repeat: call ll_pf_blowjob gen "Before we proceed to test out my new theory, what do you say about that spacious head of yours taking a trip downstairs?" ("base", xpos="far_left", ypos="head") - lun "Downstairs?" ("base", "base", "base", "mid") + lun "Downstairs?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "Downstairs, and down my shaft!" ("base", xpos="far_left", ypos="head") lun "Your shaft? Are you talking about your wizard tower?" ("base", "base", "base", "mid") gen "Tower, mast, shaft, whatever you want to call it." ("base", xpos="far_left", ypos="head") @@ -1109,7 +1119,7 @@ label ll_pf_blowjob_T4_E4_repeat: #Fade to Office screen #Luna chibi facing right - lun "I can't believe there's a--{w=0.2}{nw}" ("base", "base", "base", "mid") + lun "I can't believe there's a--{w=0.2}{nw}" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) #Luna chibi turns left lun "I can't believe there's a--{fast} Wait...{w=0.4} Where did the elephant go?" ("base", "base", "base", "mid") gen "Err..." ("base", xpos="far_left", ypos="head") @@ -1170,7 +1180,7 @@ label ll_pf_blowjob_T4_E4_repeat: #Office screen Luna in front of desk gen "Are you alright, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun "I failed to swallow the wrackspurts... So, now they'll surely end up returning even sooner." ("base", "base", "base", "mid") + lun "I failed to swallow the wrackspurts... So, now they'll surely end up returning even sooner." ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) "\"I'm cured! You can stop now!\"": #Luna Pulls out lun "*Slrp-pop*! What?!" @@ -1198,7 +1208,7 @@ label ll_pf_blowjob_T4_E4_repeat: hide screen blkfade with d5 - lun "[name_genie_luna]... Please don't tell me that your desk is made out of whisperwood!" ("base", "base", "base", "mid") + lun "[name_genie_luna]... Please don't tell me that your desk is made out of whisperwood!" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) gen "Out of what?" ("base", xpos="far_left", ypos="head") lun "Whisperwood!" ("base", "base", "base", "mid") lun "Spending an excessive amount of time near a whisperwood tree may lead you to involuntarily utter the most inappropriate remarks at the most inopportune times imaginable!" ("base", "base", "base", "mid") From 07ab3ffef9df78ea0c948b039d340868d819fe78 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Fri, 3 Nov 2023 13:51:52 +0000 Subject: [PATCH 028/249] Bug fix * Fixed missing shadow for the hand during the idle state --- game/scripts/cg/luna.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 91bbefbe..457fc365 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -39,7 +39,7 @@ layeredimage lun_blowjob_personal_pose1: group throatpie auto prefix "throatpie" group handjob prefix "handjob" if_not ["trousers"]: - attribute idle "lun_blowjob_personal_pose1_luna_stroke_down" default + attribute idle Fixed("lun_blowjob_personal_pose1_luna_stroke_down_shadow", "lun_blowjob_personal_pose1_luna_stroke_down") default attribute slow attribute moderate attribute fast From 7d6f66035cea4c50f50f444a09ee7a75e818bfc1 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Fri, 3 Nov 2023 14:55:12 +0100 Subject: [PATCH 029/249] Luna Fellatio CG posing --- .../characters/luna/events/favors/suck_it.rpy | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 0257a75f..1302bbe6 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -360,14 +360,18 @@ label ll_pf_blowjob_T4_E1_intro: lun "*Ptui*" #TODO Add more posing here, HJ loop may not work currently - show lun_blowjob_personal_pose1_handjob_moderate as cg with d3 + show lun_blowjob_personal_pose1 handjob_moderate mouth_base as cg with d3 nar "Without even hesitating, Luna spits on your cock and begins jerking you off." nar "Her fingers move across your shaft with ease, and you can feel yourself getting close to finishing already." + + show lun_blowjob_personal_pose1 eyes_base_stare mouth_soft as cg with d3 lun "How's this, [name_genie_luna]? Is this how you usually do it?" gen "*Ah*...{w=0.4} Yes...{w=0.4} Very good, [name_luna_genie]." - gen "(How's she so good at this already?)" + + show lun_blowjob_personal_pose1 handjob_fast mouth_grin as cg with d3 lun "Thank you, [name_genie_luna]!" + gen "(*Ngh*...{w=0.4} How's she so good at this already?)" show lun_blowjob_personal_pose2 as cg with d3 pause 0.2 @@ -375,9 +379,9 @@ label ll_pf_blowjob_T4_E1_intro: play background "sounds/slickloop.ogg" fadein 2 show lun_blowjob_personal_loop as cg with d3 - gen "*Ngh*!" - gen "G-good work, [name_luna_genie]..." - gen "I-- I think I can feel them coming... Get ready!" + gen "*Ghh*!!" + gen "G--{w=0.2} Good work, [name_luna_genie]..." + gen "I--{w=0.2} I think I can feel them coming...{w=0.4} Get ready!" gen "That's...{w=0.3} It...{w=0.3} Take all of my cum, you cumslut!" From 40d273bee17d9edd6483a21730356939e3526a84 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Sat, 4 Nov 2023 16:08:04 +0100 Subject: [PATCH 030/249] Luna Fellatio CG posing --- game/scripts/cg/luna.rpy | 12 +- .../characters/luna/events/favors/suck_it.rpy | 208 ++++++++++++------ 2 files changed, 150 insertions(+), 70 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 457fc365..e173c392 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -256,15 +256,15 @@ image lun_blowjob_personal_loop: repeat image lun_blowjob_personal_loop_ahegao: - "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 - pause 0.25 + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_halflid_stare_hearts" with d1 + pause 0.35 "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 pause 0.15 - "lun_blowjob_personal_pose5 penis_spit eyebrows_worried eyes_closed" with d1 - pause 0.25 - "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 + "lun_blowjob_personal_pose5 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 + pause 0.45 + "lun_blowjob_personal_pose4 penis_spit eyebrows_worried eyes_halflid_stare_hearts" with d1 pause 0.15 - "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_halflid_up_hearts" with d1 + "lun_blowjob_personal_pose3 penis_spit eyebrows_worried eyes_halflid_stare_hearts" with d1 pause 0.15 repeat diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 1302bbe6..7269ca61 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -359,9 +359,7 @@ label ll_pf_blowjob_T4_E1_intro: show lun_blowjob_personal_pose1 mouth_spitting as cg with d3 lun "*Ptui*" - #TODO Add more posing here, HJ loop may not work currently show lun_blowjob_personal_pose1 handjob_moderate mouth_base as cg with d3 - nar "Without even hesitating, Luna spits on your cock and begins jerking you off." nar "Her fingers move across your shaft with ease, and you can feel yourself getting close to finishing already." @@ -426,8 +424,8 @@ label ll_pf_blowjob_T4_E1_intro: call lun_chibi("stand","desk","base", flip=False) nar "Luna crawls out and happily starts skipping to the front of your desk, then spinning around, she flicks some of the remains of your deed off her hair and onto the stone floor." - #Fade to Office + #Fade to Office hide cg hide screen blkfade with d5 @@ -503,37 +501,37 @@ label ll_pf_blowjob_T4_E2_intro: call ll_pf_blowjob gen "I've got another theory that I'd like us to try today, [name_luna_genie]." ("base", xpos="far_left", ypos="head") - lun "Oh, are we already finished with testing the sucking technique?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) + lun "Oh... Are we already finished with testing the sucking technique?" ("annoyed", "narrow", "base", "downL", xpos="base", ypos="base", trans=d3) gen "Heavens no!" ("base", xpos="far_left", ypos="head") gen "I'll need you to do it at least two more times as to not break the format." ("base", xpos="far_left", ypos="head") - lun "The format?" ("base", "base", "base", "mid") - gen "Since we've already done a lot of progress in terms of extracting. It is now time to explore the more important matter of disposing." ("base", xpos="far_left", ypos="head") - lun "Ooooh...{w=0.4} Good idea, [name_genie_luna]!" ("base", "base", "base", "mid") - lun "Although...{w=0.4} Well, are you certain I am the most suitable person to help with this?" ("base", "base", "base", "mid") + lun "The format?" ("soft", "narrow", "raised", "mid") + gen "Since we've already made plenty of progress in terms of extracting. It is now time to explore the more important matter of disposing." ("base", xpos="far_left", ypos="head") + lun "Ooooh...{w=0.4} Good idea, [name_genie_luna]!" ("grin", "base", "base", "stare") + lun "Although...{w=0.4} Well, are you certain I am the most suitable person to help with this?" ("soft", "narrow", "base", "mid") gen "Most certainly, [name_luna_genie]." ("base", xpos="far_left", ypos="head") - lun "I see..." ("base", "base", "base", "mid") - lun "Well, in that case, why don't we try using \"scourgify\" on them?" ("base", "base", "base", "mid") + lun @ cheeks blush "I see..." ("base", "narrow", "base", "downL") + lun "Well, in that case, why don't we try using \"scourgify\" on them?" ("grin", "base", "base", "mid") gen "Scurvy-what?" ("base", xpos="far_left", ypos="head") - lun "The scouring charm!" ("base", "base", "base", "mid") - lun "Professor Snape used it to wash the mouth of one of my classmates, when they let out a swear during class." ("base", "base", "base", "mid") - lun "If you use the charm on the wrackspurts as soon as they come out, it should clean them up in no time!" ("base", "base", "base", "mid") + lun "The scouring charm!" ("base", "narrow", "base", "mid") + lun "Professor Snape used it to wash the mouth of one of my classmates, when they let out a swear during class." ("open", "base", "base", "mid") + lun "So, I figured if you use the charm on the wrackspurts as soon as they come out, it should clean them up in no time!" ("smile", "base", "base", "mid") gen "Well, I do think--" ("base", xpos="far_left", ypos="head") - lun "And if that doesn't work, we could try the drought charm!" ("base", "base", "base", "mid") - lun "They'd get all dried out, and the only thing that'd remain is a flaky crust on my face!" ("base", "base", "base", "mid") + lun "And if that doesn't work, we could try the drought charm!" ("grin", "base", "base", "mid") + lun "They'd get all dried out, and the only thing that'd remain is a flaky crust on my face!" ("grin", "closed", "base", "mid") gen "...{w} Or you could just swallow them." ("base", xpos="far_left", ypos="head") - lun "Swallow--" ("base", "base", "base", "mid") - lun "You believe that wrackspurts are unable to survive in someone's stomach, [name_genie_luna]?" + lun "Swallow--" ("soft", "wide", "base", "stare") + lun "You believe that wrackspurts are unable to survive in someone's stomach, [name_genie_luna]?" ("soft", "wide", "base", "mid") gen "Sure... Let's go with that." ("base", xpos="far_left", ypos="head") - lun "Wow, your brilliance astounds me yet again, [name_genie_luna]." ("base", "base", "base", "mid") + lun "Wow, your brilliance astounds me yet again, [name_genie_luna]." ("smile", "wide", "base", "mid") gen "So, are you up for it? Some women don't like to--" ("base", xpos="far_left", ypos="head") - lun "Why of course, [name_genie_luna]!" ("base", "base", "base", "mid") + lun "Why of course, [name_genie_luna]!" ("smile", "happyCl", "base", "mid") lun "No trouble at all!" ("base", "base", "base", "mid") - lun "Can I hide under your desk again?" ("base", "base", "base", "mid") + lun "May I crawl under your desk again?" ("grin", "base", "base", "mid") gen "You don't have to, I could just turn the chair around." ("base", xpos="far_left", ypos="head") - lun "Oh no, I want to..." ("base", "base", "base", "mid") + lun "Oh no, I want to..." ("grin", "base", "base", "downL") lun "I've always been rather fond of small spaces..." ("base", "base", "base", "mid") - lun "When I was a little girl, I used to hide in the roots of a huge {i}Wiggentree{/i} near our home..." ("base", "base", "base", "mid") - lun "I've never felt as safe as I did when I was under the roots of that tree..." ("base", "base", "base", "mid") + lun "When I was a little girl, I used to hide under the roots of a huge {i}Wiggentree{/i} near our home..." ("base", "closed", "base", "mid") + lun "I've never experienced a greater sense of security than when I sought shelter beneath the comforting embrace of that tree's roots." ("base", "narrow", "base", "downL") gen "..." ("base", xpos="far_left", ypos="head") gen "Then feel free to crawl under the desk if you must..." ("base", xpos="far_left", ypos="head") lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") @@ -550,12 +548,19 @@ label ll_pf_blowjob_T4_E2_intro: else: nar "Luna quickly makes her way around your desk, and crawls underneath." - #Fade to CG + show lun_blowjob_personal_pose1 as cg + hide screen blkfade + with d5 - lun "*Ah*... There's that familiar scent..." + show lun_blowjob_personal_pose1 eyebrows_worried eyes_closed as cg with d3 + lun "*Ah*...{w=0.4} There's that familiar scent..." gen "..." + + show lun_blowjob_personal_pose1 eyebrows_base eyes_base_stare mouth_grin as cg with d3 lun "I think I could get used to doing this..." gen "I don't doubt it." + + show lun_blowjob_personal_pose1 eyes_halflid_stare mouth_grin as cg with d3 lun "It's like brushing your teeth, you know." gen "What?" gen "You better not get your teeth anywhere near it." @@ -564,94 +569,169 @@ label ll_pf_blowjob_T4_E2_intro: pause 1 #Luna smiles + show lun_blowjob_personal_pose1 eyebrows_angry eyes_base_stare mouth_base as cg with d3 lun "Not like that, silly..." - lun "What I meant, is that this is becoming more of a habit, like brushing your teeth." + + show lun_blowjob_personal_pose1 eyes_halflid_down as cg with d3 + lun "What I meant, is that I wouldn't mind this becoming more of a habit, like brushing your teeth." gen "Right..." + + show lun_blowjob_personal_pose1 mouth_open as cg with d3 lun "Although I must say..." #Luna pulls genies trousers down so his cock pops out - lun "This is a lot more fun than brushing my teeth..." + show lun_blowjob_personal_pose1 no_trousers eyebrows_shocked eyes_halflid_down_hearts mouth_open_spit as cg with d3 + lun "I've found this activity to be far more enjoyable than brushing your teeth..." gen "If you say--" #Luna pushes her head down genie's shaft + show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + show lun_blowjob_personal_pose3 as cg with d3 + show lun_blowjob_personal_pose4 as cg with d3 + + play sound "sounds/gag_01.ogg" + show lun_blowjob_personal_pose5 eyebrows_angry eyes_closed as cg with d3 + with vpunch gen "*Ngh*!" gen "Eager today, are we?" + + show lun_blowjob_personal_pose5 eyes_halflid_up as cg with d3 lun "*Mhm*..." - #TODO sucking image loop/speedlines and sound - #TODO sucking sound loop/speedlines and sound - nar "Luna, not even hesitating, starts bobbing her head happily down your shaft, the thought of swallowing your cum being the only thing occupying her mind." + #moves head back up + show lun_blowjob_personal_pose4 penis_spit as cg with d3 - gen "Excellent work, [name_luna_genie]..." + show lun_blowjob_personal_pose3 as cg with d3 + + show lun_blowjob_personal_pose2 as cg with d3 + + lun "*Pwah*" + gen "*Ah*....{w=0.4} Excellent work, [name_luna_genie]..." + show lun_blowjob_personal_pose2 eyes_closed as cg with d3 lun "*Glae U Ike Eet*" - nar "Looking down at the girl, you can't help but appreciate her commitment, as her pace didn't change one bit when she answered you." - + show lun_blowjob_personal_pose2 eyes_halflid_down_hearts as cg with d3 + show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + play background "sounds/slickloop.ogg" fadein 2 + show lun_blowjob_personal_loop as cg with d3 + nar "Without hesitating, Luna starts bobbing her head happily down your shaft, the thought of swallowing your cum being the only thing occupying her mind." + nar "Looking down at the girl, you can't help but appreciate her commitment." gen "Now I'm going to need you to--{w=0.4} Relax your throat...{w=0.4} We wouldn't want any of them to escape..." - gen "You...{w=0.4} You think you could do that?" - lun "...{w=0.8} *Mhm*..." - + lun "*Mhm*..." nar "You feel Luna's throat muscles relax slightly as she prepares herself to take your load down her throat." - gen "*Ah*... Yes, that's it, [name_luna_genie]... Just like that." - - nar "Luna continues bobbing her head up and down your shaft happily, your cock now reaching all the way down towards the back of her throat..." - + nar "Luna continues bobbing her head up and down your shaft happily, and you can feel your cock reaching all the way down towards the back of her throat..." gen "(Bloody hell... How is this girl... so good at this?)" lun "(*Hmm*...)" lun "(Looks like he's really enjoying it when I push my head down...)" #Luna moves down and keeps her head there - + stop background + play sound "sounds/gag_03.ogg" + show lun_blowjob_personal_pose5 penis_spit eyebrows_angry eyes_closed as cg with d3 + with vpunch gen "What are you--" + show lun_blowjob_personal_pose5 eyes_halflid_up_hearts as cg with d3 nar "With her head firmly down your shaft, Luna begins moving her tongue, the lack of oxygen barely even phasing her." - gen "Girl... Don't forget you need to--" #Luna moves again - - nar "Not letting you finish your sentence, Luna starts bobbing her head again." - nar "Taken aback by how effortlessly your cock slides along the girl's lips and down her throat, you can't help but let out a groan of pleasure." + play background "sounds/slickloop.ogg" fadein 2 + show lun_blowjob_personal_loop_ahegao as cg with d3 + nar "Luna starts bobbing her head again, although this time, you can sense the tip of her tongue playfully licking the underside of your shaft." + nar "Taken aback by her her sheer enthusiasm, you can't help but let out a groan of pleasure." gen "*Aaah*..." - nar "Feeling yourself getting closer to the edge, you tense up your pelvis muscles. Luna still sucking your cock fervently keeps her pace steady as she eagerly anticipates your load." + nar "Feeling yourself getting closer to the edge, you start to tense up your pelvis muscles." + nar "Luna, eagerly anticipating your load, keeps sucking your cock fervently." gen "By the great desert--{w=0.3} Get ready, girl!" + + stop background + show lun_blowjob_personal_pose5 penis_spit eyebrows_base eyes_halflid_down_hearts as cg with d3 + with vpunch + lun "{heart}*Mmmf*{heart}" + + show lun_blowjob_personal_pose5 penis_spit eyebrows_angry eyes_halflid_up_hearts as cg with d3 + nar "You suddenly feel Luna's throat tense around your cock, and with a rush of pleasure coursing through your body, wave after wave of semen starts shooting down her throat." gen "*Nnngh*...{w=0.5} AAHH!!!!" - nar "With a sudden rush of pleasure running down your shaft you let out a loud groan as wave after wave of semen shoots down the girls throat." - #Bobbing stops and Genie cums down her throat - + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose5 penis_spit eyebrows_base eyes_closed as cg with d3 play sound "sounds/gulp.ogg" - pause .4 - play sound "sounds/gulp.ogg" - pause .6 - play sound "sounds/gulp.ogg" - pause .4 + pause 1 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose5 throatpie_frame0 as cg with d3 + pause 1 + play sound "sounds/gag_05.ogg" + show lun_blowjob_personal_pose5 throatpie_frame1 eyebrows_angry as cg with d3 + pause 1 #Luna pulls out + show lun_blowjob_personal_pose4 throatpie_frame0 as cg with d3 + show lun_blowjob_personal_pose3 as cg with d3 + show lun_blowjob_personal_pose2 mouth_kiss as cg with d3 + show lun_blowjob_personal_pose1 no_trousers eyebrows_worried eyes_halflid_up mouth_open_tongue as cg with d3 - lun "*Ah*...{w=0.3 }*Ah*...{w=0.3 }*Ah*..." - lun "All...{w=0.3 }*Ah*...{w=0.3} All gone, [name_genie_luna]..." - gen "Very--{w=0.4} Very, impressive, [name_luna_genie]." - gen "Those Wickerspatters barely stood a chance..." - lun "I...{w=0.4} I'm glad..." + lun "I...{w=0.5} *Pant*...{w=0.5}{nw}" + show lun_blowjob_personal_pose1 eyes_halflid_stare mouth_open as cg + lun "I... *Pant*...{fast} I couldn't--{w=0.2} I didn't manage to swallow them all, [name_genie_luna]..." + gen "*Ah*...{w=0.4} Don't--{w=0.2} don't worry, [name_luna_genie]..." + gen "Your performance... Was highly... Satisfactory..." + + show lun_blowjob_personal_pose1 eyes_halflid_down mouth_neutral as cg + lun "I...{w=0.4} Alright then..." + + show screen blkfade with d3 + + #hide throatpie_frame0 as cg with d3 + show lun_blowjob_personal_pose5 eyebrows_angry eyes_halflid_down_hearts -throatpie_frame0 as cg with d3 lun "..." gen "..." gen "[name_luna_genie]?" - lun "Yes, [name_genie_luna]?" gen "You can come out from under the desk now..." - lun "Oh... Right..." + lun "..." + gen "[name_luna_genie]?" - #Black fade - #Hide CG - #Office screen Fade + play sound "sounds/gltch.ogg" + with kissiris + pause 0.5 + hide screen blkfade with d3 + + gen "[name_luna_genie]!" + + #moves head back up + show lun_blowjob_personal_pose4 as cg with d3 + + show lun_blowjob_personal_pose3 as cg with d3 + + show lun_blowjob_personal_pose2 mouth_kiss as cg with d3 + lun "*Slrp-pop*!{w=0.4}{nw}" + show lun_blowjob_personal_pose2 eyes_halflid_up_hearts as cg + lun "*Slrp-pop*!{fast}" + show lun_blowjob_personal_pose1 eyes_halflid_down mouth_base as cg with d3 + lun "There we are...{w=0.4}{nw}" + show lun_blowjob_personal_pose1 eyes_halflid_down mouth_grin as cg + lun "There we are...{fast} Much better..." + + show screen blkfade with d3 + + call lun_chibi("stand","desk","base", flip=False) + + nar "With a contented smile, now spreading across her face, Luna crawls out and walks to the front of your desk." + + #Fade to Office + hide cg + hide screen blkfade + with d5 + + #TODO pose from here lun "Those nasty wrackspurts were giving you a lot of trouble, weren't they [name_genie_luna]?" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) lun "Swallowing them all sure proved itself quite difficult..." ("base", "base", "base", "mid") From 42353f56690e65eb9e372f72a38ac5edc4cdceae Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Mon, 6 Nov 2023 15:42:25 +0100 Subject: [PATCH 031/249] Luna Fellatio CG posing and writing * Posed more of the event. * Adjusted the writing to improve the flow, added some more jokes and sexual comments. --- .../characters/luna/events/favors/suck_it.rpy | 252 ++++++++++-------- 1 file changed, 141 insertions(+), 111 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 7269ca61..4a1e8013 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -1,5 +1,3 @@ -#TODO Add some minor writing to go along with Loafy's CG additions when necessary during posing, such as HJ and licking tip of dick -#TODO Add character state flags (BJ/swallow, cum on body etc, uncomment flags in var file) #TODO Add event checks for the existing writing variants once the other T4 Luna events are added #TODO Add unlock for "cumslut" Luna nickname at end of ll_pf_blowjob_T4_E1_intro event (silent unlock) #TODO Add unlock for "Genie" Genie nickname at end of ll_pf_blowjob_T4_E3_intro @@ -643,7 +641,7 @@ label ll_pf_blowjob_T4_E2_intro: play background "sounds/slickloop.ogg" fadein 2 show lun_blowjob_personal_loop_ahegao as cg with d3 nar "Luna starts bobbing her head again, although this time, you can sense the tip of her tongue playfully licking the underside of your shaft." - nar "Taken aback by her her sheer enthusiasm, you can't help but let out a groan of pleasure." + nar "Taken aback by her sheer enthusiasm, you can't help but let out a groan of pleasure." gen "*Aaah*..." @@ -685,12 +683,11 @@ label ll_pf_blowjob_T4_E2_intro: gen "*Ah*...{w=0.4} Don't--{w=0.2} don't worry, [name_luna_genie]..." gen "Your performance... Was highly... Satisfactory..." - show lun_blowjob_personal_pose1 eyes_halflid_down mouth_neutral as cg + show lun_blowjob_personal_pose1 eyes_halflid_down mouth_neutral as cg with d3 lun "I...{w=0.4} Alright then..." show screen blkfade with d3 - #hide throatpie_frame0 as cg with d3 show lun_blowjob_personal_pose5 eyebrows_angry eyes_halflid_down_hearts -throatpie_frame0 as cg with d3 lun "..." gen "..." @@ -731,20 +728,18 @@ label ll_pf_blowjob_T4_E2_intro: hide screen blkfade with d5 - #TODO pose from here - - lun "Those nasty wrackspurts were giving you a lot of trouble, weren't they [name_genie_luna]?" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) - lun "Swallowing them all sure proved itself quite difficult..." ("base", "base", "base", "mid") - gen "You sure could've fooled me..." ("base", xpos="far_left", ypos="head") - lun "Do you think we've managed to dispose all of them, [name_genie_luna]?" ("base", "base", "base", "mid") + lun "Those nasty wrackspurts were giving you a lot of trouble, weren't they [name_genie_luna]?" ("open", "narrow", "worried", "mid", xpos="mid", ypos="base", trans=d3) + lun "Swallowing them all sure proved itself quite a bit more difficult than I had anticipated..." ("soft", "narrow", "base", "mid") + gen "Well, I certainly appreciate the effort you're putting into it." ("grin", xpos="far_left", ypos="head") + lun "So... Do you believe I managed to dispose of them all, [name_genie_luna]?" ("soft", "narrow", "base", "downR") gen "What?" ("base", xpos="far_left", ypos="head") - lun "Since I swallowed them... Does that mean I won't be required to help rid you of them anymore?" ("base", "base", "base", "mid") - gen "I'm sure there's more where they came from..." ("base", xpos="far_left", ypos="head") - lun "Oh... Well, that's good." ("base", "base", "base", "mid") - lun "I mean--" ("base", "base", "base", "mid") + lun "Since I went back for seconds to clean them all up... Does that mean they're gone for good?" ("open", "base", "base", "mid") + gen "I'm sure there's more to come..." ("base", xpos="far_left", ypos="head") + lun "Oh... Well, that's good." ("base", "closed", "base", "mid") + lun "I mean--" ("angry", "base", "base", "mid") gen "Now, if you don't mind..." ("base", xpos="far_left", ypos="head") gen "This encounter with those...{w=0.4} Things... Has left me rather exhausted..." ("base", xpos="far_left", ypos="head") - lun "Oh... Okay..." ("base", "base", "base", "mid") + lun "Oh... Okay..." ("soft", "base", "base", "downL") if _wearing_clothes: play sound "sounds/cloth_sound3.ogg" @@ -752,43 +747,50 @@ label ll_pf_blowjob_T4_E2_intro: pause .8 if game.daytime: - lun "Well, I best be off to divination class..." ("base", "base", "base", "mid") + lun "In that case, I best be off to divination class..." ("base", "base", "base", "mid") else: lun "I better head off to bed then." ("base", "base", "base", "mid") - lun "Oh, before I go... There's something I wanted to ask you... If that's alright?" ("base", "base", "base", "mid") + lun "Oh, before I go... There's something I wanted to ask you... If that's alright?" ("base", "base", "raised", "mid") gen "Sure thing." ("base", xpos="far_left", ypos="head") - lun "I was thinking about that prediction Professor Trelawney performed on me." ("base", "base", "base", "mid") + lun "I was thinking about that prediction Professor Trelawney performed on me." ("open", "base", "base", "R") gen "Right?" ("base", xpos="far_left", ypos="head") - lun "How could something be a true prediction, if hearing it is what allows it to become true?" + lun "It's just... How could something be a true prediction, if hearing about it is required for it to become true?" ("open", "base", "base", "mid") gen "What?" ("base", xpos="far_left", ypos="head") - lun "I told you the details of the prediction, and from that, you came up with an idea that fit my description of it." ("base", "base", "base", "mid") - lun "Doesn't that make the prediction more of a self-fulfilling prophecy, and not an actual prophecy?" ("base", "base", "base", "mid") + lun "I mean... I shared the details of the prediction with you, didn't I? Then you subsequently derived an idea from its contents." ("open", "base", "base", "mid") + lun "Doesn't that make the prediction more of a self-fulfilling prophecy, and not an actual prophecy?" ("open", "base", "raised", "mid") gen "..." ("base", xpos="far_left", ypos="head") - gen "(The way this girl's mind figures these things out, truly is unpredictable.)" + gen "(The way this girl's mind figures things out, is genuinely unpredictable.)" ("base", xpos="far_left", ypos="head") gen "So, what you're saying is that fortune telling is just psychological manipulation, where the subject is lead down a path where they themselves allow it to become a reality?" ("base", xpos="far_left", ypos="head") - lun "*Huh*?" ("base", "base", "base", "mid") + lun "*Huh*?" ("angry", "base", "base", "mid") gen "Or that predictions are based on past knowledge, and even if you had not told me, it is something that I would've naturally come up with either way?" ("base", xpos="far_left", ypos="head") - lun "*Ehm*..." ("base", "base", "base", "mid") + lun "*Ehm*..." ("disgust", "narrow", "base", "mid") gen "You've not been telling her about our research, have you?" ("base", xpos="far_left", ypos="head") - lun "Oh--{w=0.4} Of course not!" ("base", "base", "base", "mid") - lun "The only way she'd know is if she was somehow able to read my mind!" ("base", "base", "base", "mid") + lun "Oh--{w=0.4} Of course not!" ("angry", "base", "base", "mid") + lun "The only way she'd know is if she was somehow able to read my mind!" ("angry", "base", "base", "mid") gen "I see... So, highly improbable." ("base", xpos="far_left", ypos="head") - gen "Either way, while I'm always up for figuring out on how this universe works, I believe there's more important things to prioritise." + gen "Either way, while I'm always up for figuring out how this universe works, I believe there are more important things to prioritise." ("base", xpos="far_left", ypos="head") + lun "This universe?" ("soft", "narrow", "base", "stare") + gen "These priorities include this dick getting sucked on a regular basis." ("base", xpos="far_left", ypos="head") + lun "Oh, why of course, [name_genie_luna]!" ("grin", "base", "base", "mid") + lun "Just call for me any time you need me, and I'll be under your desk, sucking, before you know it!" ("smile", "base", "base", "mid") + gen "So, you'll happily be my call girl?" ("base", xpos="far_left", ypos="head") + lun "Of course, [name_genie_luna]!" ("base", "base", "base", "mid") + gen "Well, you said it, not me." ("base", xpos="far_left", ypos="head") lun "..." ("base", "base", "base", "mid") - gen "Such as this dick getting sucked on a regular basis." ("base", xpos="far_left", ypos="head") - lun "Oh, of course [name_genie_luna]!" ("base", "base", "base", "mid") - lun "Let me know if you need any help with those wrackspurts again and I'll be here sucking it before you know it!" ("base", "base", "base", "mid") - gen "You'll be the first to know." ("base", xpos="far_left", ypos="head") + gen "Well, go on then... How am I supposed to call you, unless you leave?" ("base", xpos="far_left", ypos="head") + lun "Oh, right!" ("angry", "base", "base", "mid") if game.daytime: - lun "Thank you, [name_genie_luna]! Have a nice day!" ("base", "base", "base", "mid") + lun "Have a nice day!" ("smile", "base", "base", "mid") else: - lun "Thank you, [name_genie_luna]! Have a nice evening!" ("base", "base", "base", "mid") + lun "Have a nice evening!" ("base", "base", "base", "mid") + + lun "And thanks for cumming in my mouth!" ("smile", "base", "base", "mid") + gen "Oh...{w=0.4} *Err*...{w=0.4} You're welcome?" ("base", xpos="far_left", ypos="head") call lun_walk(action="leave") - gen "..." ("base", "base", "base", "mid") - gen "(Did she just say \"thank you\"?)" + gen "...{w} (I feel like I've just unlocked a new fetish somehow...)" ("base", xpos="far_left", ypos="head") $ _wearing_clothes = False $ states.lun.status.gokkun = True @@ -800,103 +802,122 @@ label ll_pf_blowjob_T4_E3_intro: call ll_pf_blowjob gen "[name_luna_genie], care to help me me with--" ("base", xpos="far_left", ypos="head") - lun "Of course [name_genie_luna]! Today is Sunday, after all!" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) - #Luna walks closer to desk + lun "Of course, [name_genie_luna]! Today is Sunday, after all!" ("smile", "narrow", "base", "mid", xpos="base", ypos="base", trans=d3) + + call lun_walk("desk", "base", speed=1.75) + gen "I didn't even tell you what--" ("base", xpos="far_left", ypos="head") - gen "Wait... It's Sunday?" ("base", xpos="far_left", ypos="head") + gen "Wait...{w=0.4} It's Sunday?" ("base", xpos="far_left", ypos="head") gen "(I thought weekends didn't exist in this universe...)" ("base", xpos="far_left", ypos="head") - lun "Yes! It's Mister Sun's happy day!" ("base", "base", "base", "mid") + lun "Yes! It's Mister Sun's happy day!" ("grin", "narrow", "base", "mid", xpos="mid", ypos="base", trans=d3) menu: "-Enough with the nonsense-": gen "And here I thought my calendar said {i}Suckday{/i} on it." ("base", xpos="far_left", ypos="head") - lun "*Huh*?" ("base", "base", "base", "mid") + lun "*Huh*?" ("angry", "base", "base", "mid") gen "That's why I called you here, to suck those spurts out for me." ("base", xpos="far_left", ypos="head") #giggles play sound "sounds/giggle.ogg" pause 1 - lun "Oh, you're so silly sometimes [name_genie_luna]." ("base", "base", "base", "mid") + lun "Oh... You're so silly sometimes, [name_genie_luna]." ("grin", "happyCl", "base", "mid") gen "I'm a hundred percent serious." ("base", xpos="far_left", ypos="head") - lun "Oh, okay! Sorry, I don't always know when someone is joking..." ("base", "base", "base", "mid") - gen "So... Since it's Suckday today, you think you could help me?" ("base", xpos="far_left", ypos="head") - lun "Of course!" ("base", "base", "base", "mid") - "-Let her talk-": - gen "Right..." ("base", xpos="far_left", ypos="head") + lun "Oh! Sorry, I don't always know when someone is joking..." ("angry", "narrow", "base", "mid") + gen "So, since it's \"Suckday\" today...{w=0.4} You think you could help me?" ("base", xpos="far_left", ypos="head") + lun "Of course!" ("angry", "base", "base", "mid") + "-Humour her-": if game.daytime: if game.weather == "clear": #Sunny - lun "Can't you tell how happy mister Sun is?" ("base", "base", "base", "mid") + gen "Right..." ("base", xpos="far_left", ypos="head") + lun "Can't you see the radiant joy on Mister Sun's face?" ("grin", "base", "base", "L") gen "Looks like the same burning ball of fire to me." ("base", xpos="far_left", ypos="head") - lun "[name_genie_luna], don't look directly at it!" ("base", "base", "base", "mid") + lun "[name_genie_luna], don't look directly at him!" ("mad", "wide", "base", "mid") gen "Whops." ("base", xpos="far_left", ypos="head") gen "(Mortals and their weak retinas...)" ("base", xpos="far_left", ypos="head") - gen "(Wait, did she actually give me some useful advice--)" ("angry", xpos="far_left", ypos="head") - lun "The sun is very shy, and he doesn't like it when you look directly at it." ("base", "base", "base", "mid") - gen "(Nevermind...)" ("base", xpos="far_left", ypos="head") - lun "Sundays are the time for celebration!" ("base", "base", "base", "mid") - gen "Really?" ("base", xpos="far_left", ypos="head") - lun "Yes!" ("base", "base", "base", "mid") + gen "(Hold on... Did she actually give me some useful advice--)" ("angry", xpos="far_left", ypos="head") + lun "The sun is rather bashful and doesn't like it when you stare directly at him." ("angry", "base", "base", "mid") + gen "(Never mind...)" ("base", xpos="far_left", ypos="head") else: #cloudy/rain/snow - gen "Are you sure?" ("base", xpos="far_left", ypos="head") - lun "Of course! Can't you tell how happy mister Sun is?" ("base", "base", "base", "mid") - gen "Well, I can't really see it right now..." ("base", xpos="far_left", ypos="head") - lun "Oh..." ("base", "base", "base", "mid") - lun "Well, maybe he's just being shy..." ("base", "base", "base", "mid") - gen "Shy?" ("base", xpos="far_left", ypos="head") - lun "Yes... Daddy told me that you're not supposed to look directly at it." ("base", "base", "base", "mid") - gen "I see..." ("base", xpos="far_left", ypos="head") - lun "Even if he's hiding today, that doesn't mean we shouldn't celebrate him." ("base", "base", "base", "mid") - gen "Right... So, what does the sun bring to cause celebration?" ("base", xpos="far_left", ypos="head") - lun "Well..." ("base", "base", "base", "mid") + gen "Are you sure about that?" ("base", xpos="far_left", ypos="head") + lun "Of course! Can't you see the radiant joy on Mister Sun's face?" ("smile", "base", "base", "L") + gen "*Err*... It's not really visible right now..." ("base", xpos="far_left", ypos="head") + lun "Oh..." ("soft", "narrow", "base", "L") + lun "Maybe he's just being shy..." ("open", "base", "base", "L") + gen "The sun... Is being, shy?" ("base", xpos="far_left", ypos="head") + lun "Obviously... Why else would Daddy tell not to look directly at him?" ("soft", "base", "base", "mid") + gen "...{w=0.4} I suppose that's a reasonable conclusion to make." ("base", xpos="far_left", ypos="head") + lun "That said... Even if he's being shy, that doesn't mean we shouldn't acknowledge him on his special day." ("base", "base", "base", "mid") + gen "(Hold on... Is she one of those sun worshippers?)" ("base", xpos="far_left", ypos="head") + gen "(Don't tell me she's been trying to groom me for some peculiar sacrificial role...)" ("base", xpos="far_left", ypos="head") + lun "[name_genie_luna]?" ("base", "base", "base", "mid") + gen "(Is that why she's been trying so hard to suck me dry?)" ("base", xpos="far_left", ypos="head") + lun "[name_genie_luna]!" ("base", "base", "base", "mid") + gen "Please, don't suck me dry!" ("base", xpos="far_left", ypos="head") + lun "*Huh*?" ("base", "base", "base", "mid") + gen "*Err*... Never mind..." ("base", xpos="far_left", ypos="head") else: - lun "The whole day is a cause for celebration, [name_genie_luna]." ("base", "base", "base", "mid") - lun "Sunday is the day where you celebrate the limited time we have on this earth." ("base", "base", "base", "mid") - gen "*Huh*?" ("base", xpos="far_left", ypos="head") - gen "Is there some sort of alien abduction scheduled that I wasn't aware of?" ("base", xpos="far_left", ypos="head") + gen "Right..." ("base", xpos="far_left", ypos="head") + gen "Why is it his happy day, again?" ("base", xpos="far_left", ypos="head") + lun "Because he gets to remind us about our limited time on this earth." ("grin", "base", "base", "mid") + gen "I see... Sounds like a very happy occasion indeed..." ("base", xpos="far_left", ypos="head") + gen "So, what is it this time, an impending alien abduction or something?" ("base", xpos="far_left", ypos="head") #giggles play sound "sounds/giggle.ogg" pause 1 - lun "Good one, [name_genie_luna]!" ("base", "base", "base", "mid") + lun "Good one, [name_genie_luna]!" ("smile", "narrow", "base", "mid") gen "(So, she doesn't believe in aliens... The irony...)" ("base", xpos="far_left", ypos="head") + lun "..." ("grin", "base", "base", "mid") #smiles + gen "..." ("base", xpos="far_left", ypos="head") - lun "The movement of the sun is meant to remind us to spend our time on this earth to the fullest." ("base", "base", "base", "mid") - gen "*Hmm*... Well I can't say that I can relate to that very much." ("base", xpos="far_left", ypos="head") + + gen "So... What's so special about Sundays, exactly?" ("base", xpos="far_left", ypos="head") + lun "I'm glad you asked!" ("base", "base", "base", "mid") + lun "Sundays are the day of the week where we acknowledge the importance of the sun." ("grin", "base", "base", "mid") + gen "Right..." ("base", xpos="far_left", ypos="head") + lun "The sun's movement reminds us all to spend our time on this earth to the fullest, after all." ("grin", "base", "base", "mid") + gen "*Hmm*... Well, I can't say that I can relate to that very much." ("base", xpos="far_left", ypos="head") lun "It also marks the end of the weekend and makes you look forward to getting back to work or school the next day." ("base", "base", "base", "mid") - gen "Ah, yes. Now that sure is very relatable..." ("base", xpos="far_left", ypos="head") - lun "The sun itself should also be appreciated as it has given us life itself." ("base", "base", "base", "mid") - lun "I mean, I wouldn't be standing here if it wasn't for the sun." ("base", "base", "base", "mid") + gen "Ah, yes. Now that certainly is relatable..." ("base", xpos="far_left", ypos="head") + lun "The sun itself should also be appreciated as it has given us life itself." ("smile", "base", "base", "mid") + lun "I mean, I wouldn't be standing here if it wasn't for the sun." ("grin", "narrow", "base", "mid") gen "Then let's not waste the day any further!" ("base", xpos="far_left", ypos="head") gen "If I'm to live life to the fullest then I'll require your help again, [name_luna_genie]." ("base", xpos="far_left", ypos="head") - lun "Again, [name_genie_luna]?" ("base", "base", "base", "mid") - gen "The Spurts have been quite lively today... Must be because it's Sunday and all that." ("base", xpos="far_left", ypos="head") - lun "Oh, I see!" ("base", "base", "base", "mid") - gen "So, do you think you could help me again?" ("base", xpos="far_left", ypos="head") - lun "Certainly [name_genie_luna], I'll be happy to!" ("base", "base", "base", "mid") + lun "Again, [name_genie_luna]?" ("soft", "base", "base", "mid") + gen "The spurts have been quite lively today... Must be because it's Sunday and all that." ("base", xpos="far_left", ypos="head") + lun "Oh, I see!" ("smile", "base", "base", "mid") + gen "So, do you think you and your mouth could help me again?" ("base", xpos="far_left", ypos="head") + lun "Certainly [name_genie_luna], I'd be happy to!" ("grin", "base", "base", "mid") gen "Praise the sun!" ("grin", xpos="far_left", ypos="head") - lun "My mouth is here for you, whenever you need it, [name_genie_luna]." ("base", "base", "base", "mid") + lun "My mouth is here for you, whenever you need it, [name_genie_luna]." ("smile", "base", "base", "mid") gen "Well that's--" ("base", xpos="far_left", ypos="head") - lun "Any time!" ("base", "base", "base", "mid") + lun "Any time!" ("smile", "wide", "base", "mid") gen "Greatly appreciated--" ("base", xpos="far_left", ypos="head") - lun "Even if I'm asleep!" ("base", "base", "base", "mid") + lun "Even if I'm asleep!" ("smile", "wide", "base", "mid") gen "..." ("angry", xpos="far_left", ypos="head") - lun "So, just wake me up whenever you need it!" ("base", "base", "base", "mid") - gen "(Phew...)" ("base", xpos="far_left", ypos="head") - lun "Using my mouth to make you feel better is so much fun!" ("base", "base", "base", "mid") - gen "Fun, you say?" ("base", xpos="far_left", ypos="head") - lun "I mean... Ridding you of the wrackspurts is my top priority!" ("base", "base", "base", "mid") - gen "*He-heh*." ("grin", xpos="far_left", ypos="head") - lun "" ("base", "base", "base", "mid") #smiles - pause .8 - gen "Well then, I better not stay in the way of your fun [name_luna_genie]..." ("base", xpos="far_left", ypos="head") - lun "" ("base", "base", "base", "mid") #blush - gen "Why don't you--" ("base", xpos="far_left", ypos="head") - lun "Certainly, [name_genie_luna]!!" ("base", "base", "base", "mid") + lun "So, just wake me up whenever you need it!" ("grin", "wink", "base", "mid") + lun "I even made sure to brush my tongue for you!" ("smile", "base", "base", "mid") + gen "Well, that's--" ("base", xpos="far_left", ypos="head") + lun "Look!{w=0.4}{nw}" ("scream", "base", "base", "mid") + lun "Look!{fast} Aaaaaah..." ("open_wide_tongue", "base", "base", "mid") + gen "Right...{w=0.4} Well, I don't think--" ("base", xpos="far_left", ypos="head") + lun "If you don't believe it, you could always brush it yourself!" ("grin", "base", "base", "mid") + lun "Would you like that, [name_genie_luna]?" ("smile", "base", "base", "mid") + gen "That's--{w=0.2} You didn't watch a certain video since your last visit, did you?" ("base", xpos="far_left", ypos="head") + lun "A what?" ("soft", "base", "base", "mid") + gen "Never mind..." ("base", xpos="far_left", ypos="head") + gen "So... Ready to suck some dick?" ("base", xpos="far_left", ypos="head") + lun "Of course, [name_genie_luna]! I love sucking dick!" ("smile", "base", "base", "mid") + gen "...{w=0.4} You do?" ("base", xpos="far_left", ypos="head") + lun "Oh, it's an absolute blast!" ("grin", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + lun "I mean...{w=0.4} Focusing on ridding you of wrackspurts is my top priority, not having fun, of course!" ("angry", "base", "base", "mid") + gen "*He-heh*" ("grin", xpos="far_left", ypos="head") + gen "Well, I certainly don't see anything wrong with you having a bit of fun, as long as you get the job done..." ("base", xpos="far_left", ypos="head") + lun "Great!" ("grin", "base", "base", "mid") - #Luna quickly walks up towards the desk, fades to black - call lun_walk("desk", "base", speed=1.75) show screen blkfade with d5 @@ -908,23 +929,31 @@ label ll_pf_blowjob_T4_E3_intro: lun "I like it down here..." gen "Very well..." + show lun_blowjob_personal_pose1 as cg hide screen blkfade with d5 - #CG, Genie's dick is tucked in + show lun_blowjob_personal_pose1 mouth_open as cg with d3 + + #TODO pose from here + + lun "..." #Luna untucks genie's dick - gen "Steady girl... There's no need to rush." lun "*Mmm*...{w=0.4} Hello there mister penis..." gen "(Somehow I'm feeling like a third wheel, even though it's only the two of us...)" + #Luna opens mouth + gen "Steady girl... There's no need to rush..." + lun "But..." + gen "Fine...{w=0.4} Go on then..." + lun "Yay!" show screen blkfade with d5 - nar "Over the next hour, Luna remains kneeling beneath your desk, relentlessly assaulting your cock as if her life depended on it." - #CG - #Luna sucking - #Fade back + #Luna sucking + sound + + nar "Over the next hour, Luna remains kneeling beneath your desk, relentlessly assaulting your cock as if her life depended on it." hide screen blkfade with d5 @@ -952,29 +981,30 @@ label ll_pf_blowjob_T4_E3_intro: play sound "sounds/gulp.ogg" nar "Your cock continues to fire shot after shot down her throat and into her stomach." - nar "The sheer force of your orgasm causes white dots to scatter across your vision." - - #TODO fade to white - pause 1 show screen blkfade with d5 + nar "The sheer force of your orgasm causes your vision to go dark for a moment." nar "In the afterglow of your enormous climax, all you hear for a while is the sounds of Luna panting heavily underneath your desk." + #Luna shows cum on her tongue, heart eyes + hide screen blkfade with d5 - #Luna shows cum on her tongue lun "Aaaah...{w=0.4}{nw}" - #swallows - lun "*Ah*...{fast} *Gulp*...{w} All gone..." + + play sound "sounds/gulp.ogg" + lun "*Ah*...{fast} *Gulp*...{w=0.4} All gone..." + lun "Thank you, [name_genie_luna]..." gen "*Huh*?" lun "You were the only person who took me seriously about the wrackspurts problem..." lun "And you've been so nice and patient and have taught me so many things..." lun "And this cum..." lun "It's so good! It's as if it's made of pure magic!" + #TODO, starts jerking lun "I can't get enough of it!" lun "Thank you, thank you, thank you!" From 682d0b424c85c5be720f6b1828be6981a8167ffc Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 8 Nov 2023 16:49:22 +0100 Subject: [PATCH 032/249] Luna Fellatio CG posing --- .../characters/luna/events/favors/suck_it.rpy | 192 +++++++++++------- 1 file changed, 123 insertions(+), 69 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 4a1e8013..9ab37640 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -801,7 +801,7 @@ label ll_pf_blowjob_T4_E3_intro: call ll_pf_blowjob - gen "[name_luna_genie], care to help me me with--" ("base", xpos="far_left", ypos="head") + gen "[name_luna_genie], care to help me with--" ("base", xpos="far_left", ypos="head") lun "Of course, [name_genie_luna]! Today is Sunday, after all!" ("smile", "narrow", "base", "mid", xpos="base", ypos="base", trans=d3) call lun_walk("desk", "base", speed=1.75) @@ -874,7 +874,7 @@ label ll_pf_blowjob_T4_E3_intro: gen "So... What's so special about Sundays, exactly?" ("base", xpos="far_left", ypos="head") lun "I'm glad you asked!" ("base", "base", "base", "mid") - lun "Sundays are the day of the week where we acknowledge the importance of the sun." ("grin", "base", "base", "mid") + lun "Sundays are the day of the week when we acknowledge the importance of the sun." ("grin", "base", "base", "mid") gen "Right..." ("base", xpos="far_left", ypos="head") lun "The sun's movement reminds us all to spend our time on this earth to the fullest, after all." ("grin", "base", "base", "mid") gen "*Hmm*... Well, I can't say that I can relate to that very much." ("base", xpos="far_left", ypos="head") @@ -883,7 +883,7 @@ label ll_pf_blowjob_T4_E3_intro: lun "The sun itself should also be appreciated as it has given us life itself." ("smile", "base", "base", "mid") lun "I mean, I wouldn't be standing here if it wasn't for the sun." ("grin", "narrow", "base", "mid") gen "Then let's not waste the day any further!" ("base", xpos="far_left", ypos="head") - gen "If I'm to live life to the fullest then I'll require your help again, [name_luna_genie]." ("base", xpos="far_left", ypos="head") + gen "If I'm to live life to the fullest, then I'll require your help again, [name_luna_genie]." ("base", xpos="far_left", ypos="head") lun "Again, [name_genie_luna]?" ("soft", "base", "base", "mid") gen "The spurts have been quite lively today... Must be because it's Sunday and all that." ("base", xpos="far_left", ypos="head") lun "Oh, I see!" ("smile", "base", "base", "mid") @@ -929,29 +929,29 @@ label ll_pf_blowjob_T4_E3_intro: lun "I like it down here..." gen "Very well..." - show lun_blowjob_personal_pose1 as cg + show lun_blowjob_personal_pose1 no_trousers eyebrows_angry eyes_halflid_down_hearts mouth_base as cg hide screen blkfade with d5 - show lun_blowjob_personal_pose1 mouth_open as cg with d3 - - #TODO pose from here - - lun "..." - #Luna untucks genie's dick - lun "*Mmm*...{w=0.4} Hello there mister penis..." + lun "*Mmm*...{w=0.4} Hello there Mister penis..." gen "(Somehow I'm feeling like a third wheel, even though it's only the two of us...)" - #Luna opens mouth - gen "Steady girl... There's no need to rush..." + + show lun_blowjob_personal_pose1 mouth_open_spit as cg with d3 + pause 0.4 + gen "Steady girl...{w=0.4} There's no need to rush..." + + show lun_blowjob_personal_pose1 eyes_halflid_stare_hearts mouth_soft as cg with d3 lun "But..." gen "Fine...{w=0.4} Go on then..." + + show lun_blowjob_personal_pose1 eyes_halflid_down_hearts mouth_grin as cg with d3 lun "Yay!" show screen blkfade with d5 - #CG - #Luna sucking + sound + play background "sounds/slickloop.ogg" fadein 2 + show lun_blowjob_personal_loop_ahegao as cg with d3 nar "Over the next hour, Luna remains kneeling beneath your desk, relentlessly assaulting your cock as if her life depended on it." @@ -962,127 +962,180 @@ label ll_pf_blowjob_T4_E3_intro: lun "*Mmm*..." gen "Get ready to--" + play sound "sounds/gag_01.ogg" + stop background fadeout 2 + show lun_blowjob_personal_pose5 penis_spit eyebrows_base eyes_closed as cg with d3 nar "Before you can finish your sentence, Luna thrusts her head forward, forcing your cock down her throat." - gen "Holy mommy of--" - gen "Here they come!" - - nar "You grab the edge of your seat to steady yourself as your balls begin to contract, releasing one of the largest loads of your life." - - lun "!!!" + show lun_blowjob_personal_pose5 genie_arm_idle as cg with d3 + nar "You grab the edge of your desk to steady yourself as your balls begin to contract, releasing one of the largest loads of your life." gen "By the--" #Bobbing stops and Genie cums down her throat + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose5 eyes_halflid_down_hearts as cg with d3 play sound "sounds/gulp.ogg" - pause .4 + pause 1 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose5 eyes_halflid_stare_hearts as cg with d3 play sound "sounds/gulp.ogg" - pause .6 + pause 1 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose5 eyebrows_base eyes_halflid_up_hearts as cg with d3 play sound "sounds/gulp.ogg" + pause 1 - nar "Your cock continues to fire shot after shot down her throat and into her stomach." - - show screen blkfade - with d5 - - nar "The sheer force of your orgasm causes your vision to go dark for a moment." - nar "In the afterglow of your enormous climax, all you hear for a while is the sounds of Luna panting heavily underneath your desk." - - #Luna shows cum on her tongue, heart eyes - - hide screen blkfade - with d5 + show lun_blowjob_personal_pose4 as cg with d3 + show lun_blowjob_personal_pose3 as cg with d3 + show lun_blowjob_personal_pose2 mouth_kiss as cg with d3 + lun "*Slrp-pop*!{w=0.4}{nw}" + show lun_blowjob_personal_pose2 eyes_halflid_up_hearts as cg + lun "*Slrp-pop*!{fast}" + show lun_blowjob_personal_pose1 no_trousers eyes_halflid_stare_hearts mouth_open_cum as cg with d3 lun "Aaaah...{w=0.4}{nw}" play sound "sounds/gulp.ogg" - lun "*Ah*...{fast} *Gulp*...{w=0.4} All gone..." + show lun_blowjob_personal_pose1 eyes_closed mouth_neutral as cg + lun "Aaaah...{fast} *Gulp*...{w=0.4}{nw}" - lun "Thank you, [name_genie_luna]..." - gen "*Huh*?" + show lun_blowjob_personal_pose1 eyes_wide_stare_hearts mouth_base as cg + lun "Aaaah... *Gulp*...{fast} All gone..." + + show lun_blowjob_personal_pose1 eyes_halflid_stare_hearts mouth_grin as cg with d3 + lun "Thank you so much, [name_genie_luna]..." + + show lun_blowjob_personal_pose1 -genie_arm_idle as cg with d3 + gen "*Huh*? For what?" + + show lun_blowjob_personal_pose1 mouth_base as cg with d3 lun "You were the only person who took me seriously about the wrackspurts problem..." - lun "And you've been so nice and patient and have taught me so many things..." + + show lun_blowjob_personal_pose1 mouth_soft as cg with d3 + lun "And you've been so nice, and patient, and have taught me so many things..." + + show lun_blowjob_personal_pose1 eyes_halflid_down_hearts as cg with d3 lun "And this cum..." + + show lun_blowjob_personal_pose1 mouth_grin as cg with d3 lun "It's so good! It's as if it's made of pure magic!" - #TODO, starts jerking + show lun_blowjob_personal_pose1 handjob_moderate as cg with d3 lun "I can't get enough of it!" + + show lun_blowjob_personal_pose1 eyebrows_worried eyes_closed as cg with d3 lun "Thank you, thank you, thank you!" + + show lun_blowjob_personal_pose1 handjob_fast eyebrows_base eyes_base_stare_hearts as cg with d3 lun "You're the best genie ever!" #heart eyes #Luna kiss dick + show lun_blowjob_personal_pose2 eyebrows_angry eyes_closed mouth_kiss as cg with d3 + lun "*Kissing noises*" nar "With that, Luna starts kissing and licking the tip of your cock, shamelessly slobbering over every inch of it..." gen "*Ngh*... I'm glad you're enjoying yourself." gen "And indeed, I {i}am{/i} the best genie ever..." - play sound "sounds/scratch.wav" + play sound "sounds/scratch.ogg" gen "Wait...{w=0.5} Did you just say {b}GENIE{/b}?!" - #Luna stops licking + show lun_blowjob_personal_pose2 eyes_halflid_up_hearts mouth_kiss as cg with d2 lun "*Slrp*?" + + show lun_blowjob_personal_pose1 eyebrows_raised eyes_halflid_stare mouth_base as cg with d3 lun "I mean you are a genie, aren't you?" gen "Well, yes..." - gen "But how did you know? Don't tell me the cloaking thingy had a experiation date..." + gen "But how did you know? Don't tell me the cloaking thingy had a expiration date..." + + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_base_stare mouth_grin as cg with d3 lun "Oh, don't worry [name_genie_luna]... I can only see your true form when I'm wearing my spectrespecs!" gen "Those glasses? So, you're saying you've known this whole time?" + + show lun_blowjob_personal_pose1 eyebrows_angry eyes_halflid_down mouth_base as cg with d3 lun "Well, I wasn't a hundred percent sure you were a genie until I tasted this..." + + show lun_blowjob_personal_pose1 eyebrows_base as cg with d3 lun "I doubt any other creature could produce something this tasty..." + + show lun_blowjob_personal_pose1 mouth_grin as cg with d3 lun "Not even a unicorn..." - gen "So... You don't mind that I'm a genie?" + gen "So...{w=0.4} You don't mind that I'm a genie?" + + show lun_blowjob_personal_pose1 eyes_halflid_stare mouth_soft as cg with d3 lun "Nope! Not unless it bothers you..." - gen "As long as you keep sucking like that, you can think I'm the prince of Persia..." + gen "As long as you keep sucking like that, you can think I'm the Prince of Persia..." gen "Just don't expect any wishes." + + show lun_blowjob_personal_pose1 mouth_annoyed as cg with d3 lun "Oh...{w=0.4} Why not?" - gen "You have to rub my lamp to get wishes, and I'm pretty sure that thing is all the way back in Agrabah." - lun "*Awww*... Rubbing this doesn't count?" + gen "Well... First off, you have to rub--" - #TODO, starts jerking - nar "Luna gives your cock a playful few strokes." + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_wide_stare mouth_grin as cg with d3 + lun "I can do that!" - gen "I wish..." - gen "..." - #TODO, stops jerking - lun "Oh well... I guess this will have to do then." - lun "Speaking of..." + show lun_blowjob_personal_pose1 handjob_moderate eyebrows_angry eyes_halflid_down as cg with d3 - nar "Luna starts eyeing up your cock again." + gen "That's not--{w=0.2} Well, perhaps if you rub it often enough..." + nar "You quickly realise that Luna isn't paying you much attention, as her gaze is once again locked onto your cock." + gen "Steady on, girl...{w=0.4} Don't you think you've had enough for one day?" - gen "Steady on, girl... Don't you think you've had enough for one day?" - lun "*Aww*... Already? But there's still so much magic..." - lun "{heart}{heart}{heart}" #heart eyes - lun "Can't we keep going? Surely there must be some wrackspurts left in you..." - gen "(Oh right... Those things...)" + show lun_blowjob_personal_pose1 mouth_open_spit as cg with d3 + lun "{size=-4}Come on out already...{/size}" + gen "[name_luna_genie]!" + + show lun_blowjob_personal_pose1 -handjob_moderate eyes_halflid_stare mouth_soft as cg with d3 + lun "*Huh*?" + gen "That shall do for today." + + show lun_blowjob_personal_pose1 eyebrows_worried mouth_annoyed as cg with d3 + lun "*Aww*...{w=0.4} Already?{w=0.4} Surely there must be some wrackspurts left in you..." gen "Perhaps it's time we moved onto another method..." + + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_wide_stare mouth_neutral as cg with d3 lun "You've come up with another method already?" gen "I believe so..." gen "Am I making the right assumption that the spurs haven't stopped bothering you whilst you've been helping me, [name_luna_genie]?" + + show lun_blowjob_personal_pose1 eyes_halflid_right cheeks_blush mouth_soft as cg with d3 lun "Oh...{w=0.4} I mean...{w=0.4} I suppose not...{w} But I'll manage, as long as it helps with your research!" - gen "*Hmm*...{w=0.4} I appreciate the sentiment, but that isn't good enough I'm afraid..." + gen "*Hmm*...{w=0.4} I appreciate the sentiment, but that isn't good enough, I'm afraid..." + + show lun_blowjob_personal_pose1 -cheeks_blush eyes_halflid_stare mouth_soft as cg with d3 lun "[name_genie_luna]?" - gen "I will not allow a world where the comfort of one is only achievable thanks to the suffering of another." - lun "*Ehm*..." - gen "Therefore the only real solution is one where we're able to physically stimulate each other to rid ourselves of the sprats at the same time." + gen "A world where the comfort of one is only achievable thanks to the suffering of another is not an acceptable solution." + + show lun_blowjob_personal_pose1 eyes_halflid_down as cg with d3 + lun "I see..." + gen "The only real solution is one where the participants are able to physically stimulate each other at the same time." + + show lun_blowjob_personal_pose1 eyes_wide_stare mouth_open as cg with d3 lun "At the same time!?" - gen "That's right, [name_luna_genie]... If we can achieve physical stimulation and release between both participants simultaneously, then--" - #Luna starts jerking + gen "That's right, [name_luna_genie]...{w=0.4} If we can achieve physical stimulation and release between both participants simultaneously, then--" + + show lun_blowjob_personal_pose1 handjob_moderate eyebrows_worried eyes_halflid_stare mouth_soft as cg with d3 lun "Can we try it now? Pleaaaase!" gen "*Ugh*...{w=0.4} I appreciate the enthusiasm [name_luna_genie], but I think I need a bit of a nap first..." - #Stops jerking + + show lun_blowjob_personal_pose1 -handjob_moderate eyes_base_stare mouth_grin as cg with d3 lun "Oh... Okay then, Mister Genie!" - gen "Just \"Genie\" is fine." ("base", xpos="far_left", ypos="head") + gen "Just \"Genie\" is fine." gen "Although, try to avoid calling me that in front of anyone else...{w=0.4} It will be our little secret." + + show lun_blowjob_personal_pose1 eyebrows_base eyes_halflid_stare as cg with d3 lun "Okie dokie, [name_genie_luna], Enjoy your nap!" show screen blkfade with d5 #Office screen - #TODO Genie nickname becomes available for Luna (adding writing along with) + #TODO Genie nickname becomes available for Luna (adding writing along with it) if _wearing_clothes: $ luna.wear("all") + hide cg hide screen blkfade with d5 @@ -1099,6 +1152,7 @@ label ll_pf_blowjob_T4_E4_repeat: call ll_pf_blowjob + #TODO continue posing gen "Before we proceed to test out my new theory, what do you say about that spacious head of yours taking a trip downstairs?" ("base", xpos="far_left", ypos="head") lun "Downstairs?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "Downstairs, and down my shaft!" ("base", xpos="far_left", ypos="head") From 4d5a7fef3b3af51fe38b8a981b35abe757619543 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Fri, 10 Nov 2023 16:17:32 +0100 Subject: [PATCH 033/249] Luna Fellatio CG posing and nicknames * Event posing. * Added nickname for Genie "Genie". * Added unlock req for Luna "Cumslut" nickname. --- .../characters/luna/events/favors/suck_it.rpy | 352 ++++++++++++------ game/scripts/characters/luna/summon.rpy | 13 +- game/scripts/characters/luna/vars.rpy | 2 + 3 files changed, 260 insertions(+), 107 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 9ab37640..d831ff9a 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -1,6 +1,6 @@ #TODO Add event checks for the existing writing variants once the other T4 Luna events are added -#TODO Add unlock for "cumslut" Luna nickname at end of ll_pf_blowjob_T4_E1_intro event (silent unlock) -#TODO Add unlock for "Genie" Genie nickname at end of ll_pf_blowjob_T4_E3_intro + +### Luna Suck It ### label ll_pf_blowjob: @@ -486,9 +486,11 @@ label ll_pf_blowjob_T4_E1_intro: else: gen "(Wait, she didn't clean herself!)" ("angry", xpos="far_left", ypos="head") + $ luna.set_cum(None) + $ _wearing_clothes = False - #TODO Add unlock requirement for "cumslut" Luna nickname where you have to finish this event to use it + $ states.lun.ev.lun_cumslut_nickname_unlocked = True $ states.lun.status.blowjob = True $ states.lun.status.cumshot = True @@ -519,7 +521,7 @@ label ll_pf_blowjob_T4_E2_intro: gen "...{w} Or you could just swallow them." ("base", xpos="far_left", ypos="head") lun "Swallow--" ("soft", "wide", "base", "stare") lun "You believe that wrackspurts are unable to survive in someone's stomach, [name_genie_luna]?" ("soft", "wide", "base", "mid") - gen "Sure... Let's go with that." ("base", xpos="far_left", ypos="head") + gen "Sure...{w=0.4} Let's go with that." ("base", xpos="far_left", ypos="head") lun "Wow, your brilliance astounds me yet again, [name_genie_luna]." ("smile", "wide", "base", "mid") gen "So, are you up for it? Some women don't like to--" ("base", xpos="far_left", ypos="head") lun "Why of course, [name_genie_luna]!" ("smile", "happyCl", "base", "mid") @@ -1129,8 +1131,6 @@ label ll_pf_blowjob_T4_E3_intro: show screen blkfade with d5 - #Office screen - #TODO Genie nickname becomes available for Luna (adding writing along with it) if _wearing_clothes: $ luna.wear("all") @@ -1143,6 +1143,7 @@ label ll_pf_blowjob_T4_E3_intro: call lun_walk(action="leave") $ _wearing_clothes = False + $ states.lun.ev.gen_genie_nickname_unlocked = True call ll_pf_blowjob_end @@ -1152,24 +1153,23 @@ label ll_pf_blowjob_T4_E4_repeat: call ll_pf_blowjob - #TODO continue posing gen "Before we proceed to test out my new theory, what do you say about that spacious head of yours taking a trip downstairs?" ("base", xpos="far_left", ypos="head") - lun "Downstairs?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) - gen "Downstairs, and down my shaft!" ("base", xpos="far_left", ypos="head") - lun "Your shaft? Are you talking about your wizard tower?" ("base", "base", "base", "mid") - gen "Tower, mast, shaft, whatever you want to call it." ("base", xpos="far_left", ypos="head") - lun "But, I just got here, are you sure you don't need me for anything?" ("base", "base", "base", "mid") + lun "Downstairs?" ("soft", "base", "raised", "mid", xpos="base", ypos="base", trans=d3) + gen "Downstairs, and down my shaft!" ("grin", xpos="far_left", ypos="head") + lun "Your shaft? Are you talking about your wizard tower?" ("upset", "base", "raised", "mid") + gen "Tower, mast, shaft, whatever you want to call it." ("grin", xpos="far_left", ypos="head") + lun "But, I just got here, are you sure you don't need me for anything?" ("angry", "base", "base", "mid") gen "What do you--{w=0.2} I'm asking you to suck my dick again, [name_luna_genie]!" ("base", xpos="far_left", ypos="head") - lun "Oh! Of course, [name_genie_luna]! Why didn't you say so?" ("base", "base", "base", "mid") + lun "Oh! Of course, [name_genie_luna]! Why didn't you say so?" ("grin", "base", "base", "stare") gen "..." ("base", xpos="far_left", ypos="head") lun "Either way... There's no need to to ask!" ("base", "base", "base", "mid") - lun "As I said before..." ("base", "base", "base", "mid") - lun "My mouth is here for you, whenever you need it!" ("base", "base", "base", "mid") + lun "As I said before..." ("grin", "base", "base", "mid") + lun "My mouth is here for you, whenever you need it!" ("smile", "base", "base", "mid") gen "Oh right... You did say that." ("base", xpos="far_left", ypos="head") gen "I've gotten so used to requiring more convincing than that, so I forgot who I was talking to." ("base", xpos="far_left", ypos="head") - lun "I'm {i}the{/i} cumslut aren't I? I'm always pleased to be of assistance!" ("base", "base", "base", "mid") # Genie told Luna it just means "a person who enjoys helping people cum". + lun "I'm {i}the{/i} cumslut aren't I? I'm always pleased to be of assistance!" ("smile", "closed", "base", "mid") # Genie told Luna it just means "a person who enjoys helping people cum". gen "You certainly are {i}a{/i} cumslut... Now, assume the pleasing position!" ("base", xpos="far_left", ypos="head") - lun "Yes, [name_genie_luna]!" ("base", "base", "base", "mid") + lun "Yes, [name_genie_luna]!" ("smile", "base", "base", "L") #Luna quickly walks up towards the desk, fades to black call lun_walk("desk", "base", speed=1.75) @@ -1180,83 +1180,144 @@ label ll_pf_blowjob_T4_E4_repeat: $ _wearing_clothes = True $ luna.strip("clothes") - #CG Luna talking pose + show lun_blowjob_personal_pose1 eyes_closed mouth_soft as cg hide screen blkfade with d5 - lun "*Sniff* *Sniff*." + lun "*Sniff* *Sniff*" gen "Enjoying yourself down there?" - lun "Oh yes, very much..." + + show lun_blowjob_personal_pose1 eyebrows_angry eyes_halflid_stare mouth_base as cg with d3 + lun "Oh, yes... Very much..." + + show lun_blowjob_personal_pose1 eyes_halflid_right as cg with d3 lun "I think this might even have become my new safe space." gen "Really? What makes you say that?" - lun "Why, I used to have another safe space that I'd go to whenever I needed to think." + + show lun_blowjob_personal_pose1 eyes_halflid_stare mouth_open as cg with d3 + lun "Well, I used to have another safe space that I'd go to whenever I needed to think." + + show lun_blowjob_personal_pose1 eyes_base_stare mouth_base as cg with d3 lun "It was this magical broom closet on the seventh floor... You know, the one opposite the tapestry of Barnabas the Barmy." #Room of requirement gen "A magical broom closet? What makes something a \"magical\" broom closet?" + + show lun_blowjob_personal_pose1 eyebrows_worried eyes_base_stare mouth_soft as cg with d3 lun "Because... Last time I went there, the closet was gone!" - lun "Instead, I was presented by a brick wall!" + + show lun_blowjob_personal_pose1 eyebrows_angry mouth_open as cg with d3 + lun "And in its place, was nothing but a brick wall!" + + show lun_blowjob_personal_pose1 mouth_soft as cg with d3 lun "Have you ever experienced such an anomaly before, [name_genie_luna]?" - gen "(The only brick wall I've experienced is whenever I try to get more than I paid for at a whore-house.)" - lun "My assumptions was, since the closet door had vanished, that it would only materialize when I had the desire for it to exist." + + gen "Only when I've hinted towards trying the other hole." + + show lun_blowjob_personal_pose1 eyes_halflid_stare as cg with d3 + lun "A magical hole? " + gen "Some would say it is..." + + show lun_blowjob_personal_pose1 mouth_base as cg with d3 + lun "Fascinating..." + + show lun_blowjob_personal_pose1 eyebrows_raised as cg with d3 + lun "Any idea how this magical hole functions?" + gen "I try not to think about it." + + show lun_blowjob_personal_pose1 eyebrows_angry eyes_closed mouth_open as cg with d3 + lun "My thought about the magic closet not materializing is that it will only appear when there's a desire for it to exist." + + show lun_blowjob_personal_pose1 eyes_halflid_stare mouth_soft as cg with d3 gen "..." - lun "*Ehm*... Or am I hooting up the wrong bush with that assumption, [name_genie_luna]?" #Like "Barking up the wrong tree", but also sounds like she has the urge to have sex with a woman. + + show lun_blowjob_personal_pose1 eyebrows_raised as cg with d3 + lun "*Ehm*... Or am I hooting up the wrong bush with that assumption, [name_genie_luna]?" gen "I think it'd be best if you focused less on {i}bushes{/i} and {i}closets{/i} and more towards the task at hand." + + show lun_blowjob_personal_pose1 mouth_open as cg with d3 lun "Task at hand, [name_genie_luna]?" - gen "Or task at mouth, I should say." - nar "You briefly move your gaze down to your throbbing member." + nar "You briefly move your gaze down towards your throbbing member." + show lun_blowjob_personal_pose1 eyebrows_base eyes_halflid_down as cg with d3 lun "Oh! Of course, [name_genie_luna]!" lun "I'll get to it right away!" #Luna pulls genie's trousers down - + show lun_blowjob_personal_pose1 no_trousers mouth_base as cg with d3 lun "*Giggles*" - lun "You know, I was worried that I would never get suck this delectable thing again." + + show lun_blowjob_personal_pose1 eyes_halflid_down mouth_open as cg with d3 + lun "You know.... I was worried that I would never get suck this delectable thing again." gen "Delectable?" #Luna kisses cock - play sound "sounds/kiss.ogg" - with kissiris + show lun_blowjob_personal_pose1 mouth_open_spit as cg with d3 + show lun_blowjob_personal_pose2 eyebrows_angry eyes_closed mouth_kiss as cg with d3 + lun "*Kissing noises*" gen "You sure have caught a liking to doing this..." + + show lun_blowjob_personal_pose2 mouth_lick as cg with d3 lun "*Lick*" gen "*Ngh*!" + + show lun_blowjob_personal_pose2 eyes_halflid_stare as cg with d3 lun "*Hmmff*?" + + show lun_blowjob_personal_pose2 eyebrows_worried as cg with d3 lun "*U Oay*?" gen "I'm fine! You go right ahead." + + show lun_blowjob_personal_pose2 eyebrows_angry as cg with d3 lun "*Esh pffeshor*!" - #Luna takes Genie's cock in her mouth + show lun_blowjob_personal_pose2 eyes_halflid_down as cg with d3 + + #Luna pushes her head down genie's shaft + show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 + show lun_blowjob_personal_pose3 eyes_halflid_stare as cg with d3 + show lun_blowjob_personal_pose4 as cg with d3 + show lun_blowjob_personal_pose5 eyebrows_angry eyes_halflid_up as cg with d3 + lun "*Mmmmmm*...." gen "*Ngh*!" gen "Whoa! Do that again!" + + show lun_blowjob_personal_pose5 eyes_base_stare as cg with d3 lun "*Mff*?" gen "Whatever you just did, do it again!" + + show lun_blowjob_personal_pose5 eyebrows_base eyes_halflid_stare as cg with d3 lun "*Mmmmmm*?" gen "*Ah*, yes! That felt good!" - gen "Now, down the wizard tower we go!" + gen "Now, up and down the wizard tower you go!" - nar "Luna, looking slightly more puzzled than her usual self, shrugs and then pushes her head down your shaft." + show lun_blowjob_personal_pose5 eyes_halflid_down as cg with d3 + nar "Luna, looking slightly more puzzled than her usual self, shrugs and then starts moving her head up and down your cock." - #Sucking slow - gen "*Ah*...{w=0.4} Yes...{w=0.4} Now that's how you descend a tower!" + play background "sounds/slickloop.ogg" fadein 2 + show lun_blowjob_personal_loop as cg with d3 + gen "*Ah*...{w=0.4} Yes...{w=0.4} Now that's how you do it!" nar "Revelling in your praise, you watch as Luna happily bobs her head up and down your cock, only slowing down intermittently to run her tongue underneath your shaft." - gen "*Ah*...{w=0.4} I think you might've touched the bottom floor that time." + gen "*Ah*...{w=0.4} I think you might've touched the ground floor that time." gen "You sure are a cumslut..." - nar "As the last word escapes your lips, could swear that Luna's throat tensed up briefly around your cock, but before the thought took hold, her onslaught on your cock continues." + nar "As the last word escapes your lips, you could swear that Luna's throat tensed up briefly, but before the thought could take hold, her onslaught on your cock continues." - #sucking medium gen "(She's--{w=0.2} too good! If she keeps going like this, my reputation will be in shambles!)" gen "*Ngh*... Slow down a bit, won't you?" - #sucking fast - nar "Luna, hearing your pleas, looks at you worryingly and increases the pace." + + play background "sounds/slickloopfast.ogg" fadein 2 + show lun_blowjob_personal_loop_ahegao as cg with d3 + nar "Luna, hearing your pleas, looks at you worryingly for a moment, then increases her pace." gen "What are you--" gen "Slow down, girl!" + lun "*Mmmmmm*..." + gen "*Ngh*--" #Cum section menu: @@ -1264,190 +1325,270 @@ label ll_pf_blowjob_T4_E4_repeat: menu: "\"Look! There's an elephant in the room!\"": #Luna Pulls out + stop background + show lun_blowjob_personal_pose2 mouth_kiss as cg with d1 + show lun_blowjob_personal_pose1 no_trousers penis_spit cum_precum eyebrows_shocked eyes_wide_left mouth_open_spit as cg with d3 lun "*Slrp-pop*! Where?!" gen "*AAAAH*!" - #Genie cums + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose1 cum_frame0 eyes_wide_down as cg with d2 + show lun_blowjob_personal_pose1 cum_frame1 eyes_wide_stare as cg with d2 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose1 cum_frame2 as cg with d2 + show lun_blowjob_personal_pose1 cum_frame3 as cg with d2 + show lun_blowjob_personal_pose1 cum_frame4 as cg with d2 + show lun_blowjob_personal_pose1 eyebrows_angry eyes_wide_down mouth_open_spit as cg with d2 lun "[name_genie_luna]!" + gen "*Ah*... That was--" - lun "Quickly, [name_genie_luna]... Move your leg!" + + show lun_blowjob_personal_pose1 eyes_halflid_stare as cg with d3 + lun "Quickly, [name_genie_luna]! Move your leg!" gen "*Huh*?" show screen blkfade with d5 - #Hide CG - nar "Luna pushes your leg to the side, and then darts to the front of your desk." + $ luna.set_cum(face="heavy") + hide cg hide screen blkfade with d5 - #Fade to Office screen - #Luna chibi facing right - lun "I can't believe there's a--{w=0.2}{nw}" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) - #Luna chibi turns left - lun "I can't believe there's a--{fast} Wait...{w=0.4} Where did the elephant go?" ("base", "base", "base", "mid") + call lun_chibi(flip=True) + lun "I can't believe there's a--{w=0.2}{nw}" + call lun_chibi(flip=False) + lun "I can't believe there's a--{fast} Wait...{w=0.4} Where did the elephant go?" ("angry", "base", "base", "L", xpos="mid", ypos="base", trans=d3) gen "Err..." ("base", xpos="far_left", ypos="head") - lun "There's no elephant in the room, is there?" ("base", "base", "base", "mid") + lun "There's no elephant in the room, is there?" ("annoyed", "narrow", "base", "mid") gen "Other than your unfathomable naivety?" ("base", xpos="far_left", ypos="head") - lun "...?" ("base", "base", "base", "mid") + lun "...?" ("annoyed", "base", "base", "mid") gen "No, there's no actual elephant..." ("base", xpos="far_left", ypos="head") - lun "I see..." ("base", "base", "base", "mid") #dissapointed + lun "I see..." ("annoyed", "narrow", "base", "down") #dissapointed gen "I mean, there was one! It just leapt out the window!" ("grin", xpos="far_left", ypos="head") - lun "Really?" ("base", "base", "base", "mid") + lun "Really?" ("angry", "wide", "base", "mid") gen "Of course!" ("grin", xpos="far_left", ypos="head") - lun "How extraordinary!" ("base", "base", "base", "mid") + lun "How extraordinary!" ("grin", "base", "base", "mid") gen "(If it was only this easy to make Hermione excited.)" ("base", xpos="far_left", ypos="head") - lun "Hold on... How would an elephant even fit--" ("base", "base", "base", "mid") + lun "Hold on... How would an elephant even fit--" ("upset", "base", "base", "L") gen "Weren't you meant to swallow the spurs by the way?" ("base", xpos="far_left", ypos="head") - lun "Wha--{w=0.2} Oh no!" ("base", "base", "base", "mid") + lun "Wha--{w=0.2} Oh no!" ("angry", "wide", "base", "stare") gen "(*Phew*... Bullet dodged.)" ("base", xpos="far_left", ypos="head") - lun "" ("base", "base", "base", "mid") #Tongue out + lun "" ("open_tongue", "base", "annoyed", "down") #Tongue out nar "You watch as Luna desperately tries to extend her tongue towards your cum." gen "What are you doing?" ("base", xpos="far_left", ypos="head") - lun "*Blerbleblerg*!" ("base", "base", "base", "mid") + lun "*Ngh*!" ("open_tongue", "narrow", "annoyed", "down") gen "..." ("base", xpos="far_left", ypos="head") - gen "[name_luna_genie]... I believe it's a bit late for that..." - lun "... Really?" ("base", "base", "base", "mid") #Sad + gen "[name_luna_genie]... I believe it's a bit late for that..." ("base", xpos="far_left", ypos="head") + lun "... Really?" ("angry", "narrow", "base", "mid") #Sad gen "Really..." ("base", xpos="far_left", ypos="head") - lun "Oh..." ("base", "base", "base", "mid") #Sad - lun "This means that the wrackspurts will return even faster, doesn't it?" ("base", "base", "base", "mid") + lun "Oh..." ("open", "narrow", "worried", "down") #Sad + lun "This means that the wrackspurts will return even faster, doesn't it?" ("angry", "narrow", "base", "down") gen "Most certainly..." ("base", xpos="far_left", ypos="head") - lun "I see..." ("base", "base", "base", "mid") + lun "I see..." ("soft", "narrow", "worried", "down") gen "What's with the long face?" ("base", xpos="far_left", ypos="head") "\"Cum covered bimbo says what?\"": #Luna Pulls out + stop background + show lun_blowjob_personal_pose2 mouth_kiss as cg with d1 + show lun_blowjob_personal_pose1 no_trousers penis_spit cum_precum eyebrows_angry eyes_halflid_stare mouth_open_spit as cg with d3 lun "*Slrp-pop*! What?!" - #TODO Genie cums on her face gen "*AAAAH*!" #Genie cums + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose1 cum_frame0 eyes_wide_down as cg with d2 + show lun_blowjob_personal_pose1 cum_frame1 eyes_wide_stare as cg with d2 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose1 cum_frame2 as cg with d2 + show lun_blowjob_personal_pose1 cum_frame3 as cg with d2 + show lun_blowjob_personal_pose1 cum_frame4 as cg with d2 + show lun_blowjob_personal_pose1 eyebrows_angry eyes_wide_down as cg with d2 lun "[name_genie_luna]!" + + show lun_blowjob_personal_pose1 eyes_halflid_stare as cg with d3 lun "You tricked me!" + + show lun_blowjob_personal_pose1 eyes_base_stare mouth_soft as cg with d3 lun "Or... Did the wrackspurts make you say that?" gen "What--{w=0.2} Oh yes! Those rascals got to me again!" + + show lun_blowjob_personal_pose1 eyes_base_right as cg with d3 lun "*Hmph*" gen "What's up?" + + show lun_blowjob_personal_pose1 eyes_halflid_down as cg with d3 lun "It's just... *Hmph*... Nevermind..." show screen blkfade with d5 nar "Luna gets out from underneath your desk, and trudges over to stand in front of it." + $ luna.set_cum(face="heavy") + hide cg hide screen blkfade with d5 - #Office screen Luna in front of desk gen "Are you alright, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun "I failed to swallow the wrackspurts... So, now they'll surely end up returning even sooner." ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) + lun "I failed to swallow the wrackspurts... So, now they'll surely end up returning even sooner." ("angry", "narrow", "base", "down", xpos="mid", ypos="base", trans=d3) "\"I'm cured! You can stop now!\"": #Luna Pulls out + stop background + show lun_blowjob_personal_pose2 mouth_kiss as cg with d1 + show lun_blowjob_personal_pose1 no_trousers penis_spit cum_precum eyebrows_worried eyes_wide_up mouth_open_spit as cg with d3 lun "*Slrp-pop*! What?!" gen "Nevermind!" - #TODO Genie cums on her face gen "*AAAAH*!" #Genie cums + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose1 cum_frame0 eyes_wide_down as cg with d2 + show lun_blowjob_personal_pose1 cum_frame1 eyes_wide_stare as cg with d2 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose1 cum_frame2 as cg with d2 + show lun_blowjob_personal_pose1 cum_frame3 as cg with d2 + show lun_blowjob_personal_pose1 cum_frame4 as cg with d2 + show lun_blowjob_personal_pose1 eyebrows_angry eyes_wide_down as cg with d2 lun "[name_genie_luna]!" + + show lun_blowjob_personal_pose1 eyebrows_angry eyes_wide_stare as cg with d3 lun "You came on me again!" gen "Sure did." + + show lun_blowjob_personal_pose1 eyes_halflid_down mouth_soft as cg with d3 lun "But, I was meant to swallow it--{w=0.2} I mean, the wrackspurts!" - gen "Yes... That's unfortunate indeed..." - lun "Then why would you say something like that, just as you were about to..." + gen "Yes... An unfortunate outcome indeed..." + + show lun_blowjob_personal_pose1 eyes_halflid_stare as cg with d2 + lun "Then why would you say something like that, just as you were about to--" + + show lun_blowjob_personal_pose1 eyebrows_shocked eyes_wide_up mouth_open as cg with d3 lun "Hold on a moment..." show screen blkfade with d5 nar "Luna quickly gets out from underneath your desk, and rushes over to the front of it." - #Office screen Luna in front of desk + $ luna.set_cum(face="heavy") + hide cg hide screen blkfade with d5 - lun "[name_genie_luna]... Please don't tell me that your desk is made out of whisperwood!" ("base", "base", "base", "mid", xpos="mid", ypos="base", trans=d3) + call lun_chibi(flip=False) + + lun "[name_genie_luna]... Please don't tell me that your desk is made out of whisperwood!" ("angry", "wide", "base", "L", xpos="mid", ypos="base", trans=d3) gen "Out of what?" ("base", xpos="far_left", ypos="head") - lun "Whisperwood!" ("base", "base", "base", "mid") - lun "Spending an excessive amount of time near a whisperwood tree may lead you to involuntarily utter the most inappropriate remarks at the most inopportune times imaginable!" ("base", "base", "base", "mid") + lun "Whisperwood!" ("angry", "wide", "base", "mid") + lun "Spending an excessive amount of time near a whisperwood tree may lead you to involuntarily utter the most inappropriate remarks at the most inopportune times imaginable!" ("mad", "narrow", "base", "mid") gen "Sounds like you're describing the characteristics of a genie..." ("base", xpos="far_left", ypos="head") - lun "Really?" ("base", "base", "base", "mid") + lun "Really?" ("soft", "base", "base", "mid") gen "Yes... Although, that wasn't why I said it." ("base", xpos="far_left", ypos="head") - lun "Then why did you..." ("base", "base", "base", "mid") - gen "Just as I sensed that the buggers were on the verge of bursting forth, they abruptly darted in the opposite direction!" ("base", xpos="far_left", ypos="head") - lun "So...{w=0.4} You're not cured?" ("base", "base", "base", "mid") + lun "Then why did you..." ("soft", "base", "base", "mid") + gen "Just as the buggers were on the verge of bursting forth, they abruptly darted in the opposite direction!" ("base", xpos="far_left", ypos="head") + lun "So...{w=0.4} You're not cured?" ("angry", "base", "raised", "mid") gen "On the contrary... They're getting smarter." ("base", xpos="far_left", ypos="head") - lun "..." ("base", "base", "base", "mid") #Sad - gen "Are you alright?" ("base", xpos="far_left", ypos="head") - lun "I just thought I might've had them that time..." + lun "..." ("upset", "narrow", "base", "down") #Sad + gen "Are you alright [name_luna_genie]? I didn't hit you in the eye, did I?" ("base", xpos="far_left", ypos="head") + lun "I'm fine, [name_genie_luna]...{w=0.4} I just thought I might've had them that time." ("angry", "narrow", "base", "down") gen "I'm sure you'll get them next time." ("base", xpos="far_left", ypos="head") gen "In any case..." ("base", xpos="far_left", ypos="head") gen "Didn't you say that you find pleasure in assisting me?" ("base", xpos="far_left", ypos="head") - lun "Oh, right! I do! I'm {i}the{/i} cumslut!" ("base", "base", "base", "mid") #Happy - lun "See you next time, then!" ("base", "base", "base", "mid") + lun "Oh, right! I do! I'm {i}the{/i} cumslut!" ("angry", "base", "base", "stare") #Happy + lun "See you next time, then!" ("grin", "base", "base", "mid") gen "*Heh-Heh*... See you next--" ("base", xpos="far_left", ypos="head") gen "Hold on!" ("base", xpos="far_left", ypos="head") - lun "Yes?" ("base", "base", "base", "mid") - gen "Make sure you clean yourself..." ("base", xpos="far_left", ypos="head") - lun "Oh, but I'm fine [name_genie_luna], I assure you!" - gen "I see..." - gen "I just figured that you wouldn't want that pretty face of yours to be covered up." - lun "Oh..." ("base", "base", "base", "mid") #blushing + lun "Yes?" ("soft", "base", "raised", "mid") + gen "Make sure you clean yourself before you leave..." ("base", xpos="far_left", ypos="head") + lun "Oh, but I'm fine [name_genie_luna], I assure you!" ("grin", "base", "base", "mid") + gen "I'm sure you are...{w=0.4} I would just prefer it if that pretty face of yours weren't covered up." ("base", xpos="far_left", ypos="head") + lun @ cheeks blush "Oh..." ("angry", "narrow", "base", "down") #blushing - #TODO hide cum - nar "Luna quickly begins scooping cum off her face, flicking it onto the floor." + hide luna_main + with d3 + $ luna.set_cum(None) - lun "There you go!" ("base", "base", "base", "mid") - lun "Did I manage to get them all?" ("base", "base", "base", "mid") - gen "*Hmm*... Yes, I belive you did... Nice work!" ("base", xpos="far_left", ypos="head") - lun "Thank you, [name_genie_luna]!" ("base", "base", "base", "mid") + nar "Luna quickly begins scooping your cum off her face, then flicking it onto the floor." + + lun @ cheeks blush "There we go!" ("soft", "narrow", "base", "down") + lun @ cheeks blush "Did-- Did I manage to get them all?" ("open", "narrow", "base", "downR") + gen "*Hmm*... Yes, I believe you did...{w=0.4} Nice work!" ("base", xpos="far_left", ypos="head") + + $ luna.set_cum(pussy="wet") + lun @ cheeks blush "*Mmm*... Thank you, [name_genie_luna]!" ("base", "closed", "base", "down") if _wearing_clothes: + hide luna_main + with d3 $ luna.wear("all") + with d3 + pause .5 if game.daytime: - lun "Have a nice day!" ("base", "base", "base", "mid") + lun @ cheeks blush "*Ah*...{w=0.4} *Ehm*...{w=0.4} Have a nice day!" ("angry", "narrow", "base", "R") gen "Have a--" ("base", xpos="far_left", ypos="head") else: - lun "Good night then!" ("base", "base", "base", "mid") + lun "*Ah*...{w=0.4} *Ehm*...{w=0.4} Good night then!" ("angry", "narrow", "base", "R") gen "Good--" ("base", xpos="far_left", ypos="head") #Luna leaves - call lun_walk(action="leave") - gen "..." + call lun_walk(action="leave", speed=1.75) + gen "..." ("base", xpos="far_left", ypos="head") + + $ luna.set_cum(None) "-Tell her to get ready, and cum down her throat-": gen "Take it, you--{w=0.2} cum hungry--{w=0.2} Slut!" - nar "Luna, ready for your load, pushes her head down to the hilt, and you feel her throat contract around your cock." + nar "Luna, readying herself for your load, pushes her head down to the hilt, and you feel her throat contract around your cock." gen "*AARGH*!! You whore!!!" #Bobbing stops, and Genie cums down her throat + stop background + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose5 eyes_halflid_down_hearts as cg with d3 play sound "sounds/gulp.ogg" - pause .4 + pause 1 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose5 eyes_halflid_stare_hearts as cg with d3 play sound "sounds/gulp.ogg" - pause .6 + pause 1 + play sound "sounds/slick_01.ogg" + show lun_blowjob_personal_pose5 eyebrows_base eyes_halflid_up_hearts as cg with d3 play sound "sounds/gulp.ogg" + pause 1 + + show lun_blowjob_personal_pose4 as cg with d3 + show lun_blowjob_personal_pose3 as cg with d3 + + show lun_blowjob_personal_pose2 mouth_kiss as cg with d3 + lun "*Slrp-pop*!{w=0.4}{nw}" + show lun_blowjob_personal_pose2 eyes_halflid_up_hearts as cg + lun "*Slrp-pop*!{fast}" + show lun_blowjob_personal_pose1 no_trousers eyes_halflid_stare_hearts mouth_open_spit as cg with d3 + lun "*Ah*...{w=0.4} Ah*...{w=0.4} Ah*..." show screen blkfade with d5 - #Hide CG - nar "As the last pulse escapes your balls, you slump back into your chair, exhausted by the cheer intensity of the session." + nar "As Luna crawls out from under your desk, you slump back into your chair, exhausted by the cheer intensity of the session." + hide cg hide screen blkfade with d5 #Fade to office, Luna in front of desk @@ -1464,10 +1605,11 @@ label ll_pf_blowjob_T4_E4_repeat: $ renpy.sound.play("sounds/snore1.ogg") gen "*Snore*!" ("angry", xpos="far_left", ypos="head") - lun "I'll... I'll let you sleep... Sweet dreams, [name_genie_luna]." ("base", "base", "base", "mid") + lun "I'll...{w=0.4} I'll let you sleep...{w=0.4} Sweet dreams, [name_genie_luna]." ("base", "base", "base", "mid") if _wearing_clothes: $ luna.wear("all") + pause 1 #Luna leaves call lun_walk(action="leave") diff --git a/game/scripts/characters/luna/summon.rpy b/game/scripts/characters/luna/summon.rpy index 2d1b3094..3202320e 100644 --- a/game/scripts/characters/luna/summon.rpy +++ b/game/scripts/characters/luna/summon.rpy @@ -186,6 +186,8 @@ label luna_talk: $ name_genie_luna = "Master" "-Daddy-" if states.lun.tier >= 2: $ name_genie_luna = "Daddy" + "-Genie-" if states.lun.ev.gen_genie_nickname_unlocked: + $ name_genie_luna = "Genie" "-Custom Input-" if states.lun.tier >= 3: $ name_genie_luna = renpy.input("(Please enter the name.)", name_genie_luna, ALLOWED_CHARACTERS, length=14).strip() or "Professor" "-Never mind-": @@ -209,7 +211,7 @@ label luna_talk: $ name_luna_genie = "Bimbo" "-Minx-" if states.lun.tier >= 3: $ name_luna_genie = "Minx" - "-Cumslut-" if states.lun.tier >= 5: + "-Cumslut-" if states.lun.ev.lun_cumslut_nickname_unlocked: $ name_luna_genie = "Cumslut" "-Custom Input-" if states.lun.tier >= 3: $ name_luna_genie = renpy.input("(Please enter the name.)", name_luna_genie, ALLOWED_CHARACTERS, length=14).strip() or "Miss Lovegood" @@ -267,7 +269,14 @@ label genie_luna_change: gen "I'm your daddy now..." ("base", xpos="far_left", ypos="head") lun "*Huh*?" ("angry", "base", "base", "mid") gen "Call me daddy you naughty girl!" ("angry", xpos="far_left", ypos="head") - lun "Oh...{w=0.3} Yes, I'm sorry [name_genie_luna]!" ("angry", "happyCl", "base", "mid") + lun "Oh...{w=0.4} Yes, I'm sorry [name_genie_luna]!" ("angry", "happyCl", "base", "mid") + elif name_genie_luna == "Genie": + lun "[name_genie_luna]..." ("open", "narrow", "base", "mid") + lun "Wouldn't it be a bit weird if I called you that?" ("annoyed", "base", "base", "mid") + gen "Why would it?" ("base", xpos="far_left", ypos="head") + lun "Wouldn't me calling you \"genie\" be the same as you calling me \"human\"?" ("soft", "narrow", "base", "mid") + gen "Genie's my name..." ("base", xpos="far_left", ypos="head") + lun "Oh...{w=0.4} How convenient!" ("soft", "base", "base", "stare") else: #custom/fallback lun "Okay, I'll call you [name_genie_luna] from now on..." ("base", "base", "base", "mid") jump luna_talk diff --git a/game/scripts/characters/luna/vars.rpy b/game/scripts/characters/luna/vars.rpy index 43035d3d..8fbb1525 100644 --- a/game/scripts/characters/luna/vars.rpy +++ b/game/scripts/characters/luna/vars.rpy @@ -44,6 +44,8 @@ default states.lun.ev.quibbler.stocked = False default states.lun.ev.talk_to_me.t1_e3_complete = False default states.lun.ev.inspect_her_body.t2_e3_complete = False default states.lun.ev.play_with_yourself.t3_e3_complete = False +default states.lun.ev.gen_genie_nickname_unlocked = False +default states.lun.ev.lun_cumslut_nickname_unlocked = False # Flags default lun_level_up = None From bab691b985f129d540465b03b12c9aca8d8e41cf Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Tue, 14 Nov 2023 14:43:22 +0100 Subject: [PATCH 034/249] Luna Fellatio CG posing --- .../characters/luna/events/favors/suck_it.rpy | 98 ++++++++++--------- 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index d831ff9a..11b6dd24 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -54,7 +54,7 @@ label ll_pf_blowjob_T4_E1_intro: lun "This is the idea that you had, after I've told you about Professor Trelawney reading me my future?" ("open", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "That's--" ("base", xpos="far_left", ypos="head") lun "\"I will soon find something new within me, that will propel me forward on the path towards my destiny!\"" ("grin", "closed", "base", "mid") - lun "That's what she said!" ("base", "base", "base", "mid") + lun "That's what she said!" ("grin", "base", "base", "mid") lun "Oh my goodness, I can hardly wait!" ("smile", "wide", "base", "mid") lun "These sessions have been so much fun." ("smile", "happyCl", "base", "mid") gen "Calm down, [name_luna_genie]..." ("base", xpos="far_left", ypos="head") @@ -67,16 +67,16 @@ label ll_pf_blowjob_T4_E1_intro: lun "Wow!" ("open", "wide", "base", "mid") nar "Luna's eyes begins darting around your office." gen "*Err*...{w=0.4} What are you doing?" ("base", xpos="far_left", ypos="head") - lun "Oh, I'm just looking around to see if I can spot what it might be." ("grin", "base", "base", "mid") - lun "You said it was very old, so it must be some kind of ancient, magical artefact, right?" ("grin", "base", "raised", "mid") + lun "Oh, I'm just looking around to see if I can spot what it might be." ("grin", "base", "base", "L") + lun "You said it was very old, so it must be some kind of ancient, magical artefact, right?" ("grin", "base", "raised", "R") gen "That's not--{w=0.4} This isn't a setup for a game of hide and seek." ("angry", xpos="far_left", ypos="head") gen "If you could just shut your mouth for a moment, I'll tell you!" ("base", xpos="far_left", ypos="head") - lun "..." ("soft", "base", "base", "mid") + lun "..." ("normal", "base", "base", "mid") gen "*Sigh*..." ("base", xpos="far_left", ypos="head") gen "(I'm beginning to feel as if these tales I'm spinning are only self-serving at this point...)" ("base", xpos="far_left", ypos="head") gen "*Ahem*... So... My theory..." ("base", xpos="far_left", ypos="head") gen "It involves sucking those nasty things out." ("base", xpos="far_left", ypos="head") - lun "..." ("soft", "wide", "base", "stare") #Wide eyed + lun "..." ("normal", "wide", "base", "stare") #Wide eyed gen "I suppose it's a bit out there, I was afraid you might not be up for it." ("base", xpos="far_left", ypos="head") lun "..." ("angry", "wide", "base", "mid") #He did tell her to shut her mouth gen "..." ("base", xpos="far_left", ypos="head") @@ -164,7 +164,7 @@ label ll_pf_blowjob_T4_E1_intro: menu: "-Pull your cock out-": - show lun_blowjob_personal_pose1 no_trousers eyes_halflid_down as cg with d3 + show lun_blowjob_personal_pose1 no_trousers eyes_halflid_down mouth_soft as cg with d3 nar "You swiftly pull out your hardening cock, and Luna grabs it without hesitation." @@ -200,8 +200,6 @@ label ll_pf_blowjob_T4_E1_intro: show lun_blowjob_personal_pose2 eyebrows_angry eyes_halflid_down as cg with d3 gen "Now, I'll need you to--" - show lun_blowjob_personal_pose2 mouth_kiss as cg with d2 - show lun_blowjob_personal_pose3 as cg with d3 "-Tell her to take it out-": @@ -308,7 +306,7 @@ label ll_pf_blowjob_T4_E1_intro: show lun_blowjob_personal_pose3 as cg with d3 show lun_blowjob_personal_pose4 as cg with d3 - nar "After responding to your praise, Luna's tongue moves along the underside of your cock once again, and a sudden rush of pleasure runs through your body." + nar "After responding to your praise, Luna moves her tongue along the underside of your cock once again, and a sudden rush of pleasure runs through your body." gen "*Argh*..." show lun_blowjob_personal_pose4 eyes_base_up as cg with d3 @@ -479,7 +477,7 @@ label ll_pf_blowjob_T4_E1_intro: call lun_walk(action="leave") - gen "*Heh-heh*..." ("grin", xpos="far_left", ypos="head") + gen "*Heh-heh*...{w=0.4} Very pleased..." ("grin", xpos="far_left", ypos="head") if _wearing_clothes: gen "(Wait... Wasn't she wearing something when she arrived?)" ("angry", xpos="far_left", ypos="head") gen "(And, she didn't even clean herself!)" ("angry", xpos="far_left", ypos="head") @@ -507,7 +505,7 @@ label ll_pf_blowjob_T4_E2_intro: lun "The format?" ("soft", "narrow", "raised", "mid") gen "Since we've already made plenty of progress in terms of extracting. It is now time to explore the more important matter of disposing." ("base", xpos="far_left", ypos="head") lun "Ooooh...{w=0.4} Good idea, [name_genie_luna]!" ("grin", "base", "base", "stare") - lun "Although...{w=0.4} Well, are you certain I am the most suitable person to help with this?" ("soft", "narrow", "base", "mid") + lun @ cheeks blush "Although...{w=0.4} Well, are you certain I am the most suitable person to help with this?" ("soft", "narrow", "base", "mid") gen "Most certainly, [name_luna_genie]." ("base", xpos="far_left", ypos="head") lun @ cheeks blush "I see..." ("base", "narrow", "base", "downL") lun "Well, in that case, why don't we try using \"scourgify\" on them?" ("grin", "base", "base", "mid") @@ -618,8 +616,8 @@ label ll_pf_blowjob_T4_E2_intro: show lun_blowjob_personal_loop as cg with d3 nar "Without hesitating, Luna starts bobbing her head happily down your shaft, the thought of swallowing your cum being the only thing occupying her mind." nar "Looking down at the girl, you can't help but appreciate her commitment." - gen "Now I'm going to need you to--{w=0.4} Relax your throat...{w=0.4} We wouldn't want any of them to escape..." - gen "You...{w=0.4} You think you could do that?" + gen "Now, I'm going to need you to--{w=0.4} Relax your throat...{w=0.4} We wouldn't want any of them to escape..." + gen "You think you could do that?" lun "*Mhm*..." nar "You feel Luna's throat muscles relax slightly as she prepares herself to take your load down her throat." gen "*Ah*... Yes, that's it, [name_luna_genie]... Just like that." @@ -679,9 +677,9 @@ label ll_pf_blowjob_T4_E2_intro: show lun_blowjob_personal_pose2 mouth_kiss as cg with d3 show lun_blowjob_personal_pose1 no_trousers eyebrows_worried eyes_halflid_up mouth_open_tongue as cg with d3 - lun "I...{w=0.5} *Pant*...{w=0.5}{nw}" - show lun_blowjob_personal_pose1 eyes_halflid_stare mouth_open as cg - lun "I... *Pant*...{fast} I couldn't--{w=0.2} I didn't manage to swallow them all, [name_genie_luna]..." + lun "*Ah*...{w=0.4} I...{w=0.4} *Pant*...{w=0.5}{nw}" + show lun_blowjob_personal_pose1 eyes_halflid_stare mouth_open_spit as cg + lun "*Ah*... I... *Pant*...{fast} I couldn't--{w=0.2} I didn't manage to swallow them all, [name_genie_luna]..." gen "*Ah*...{w=0.4} Don't--{w=0.2} don't worry, [name_luna_genie]..." gen "Your performance... Was highly... Satisfactory..." @@ -732,24 +730,26 @@ label ll_pf_blowjob_T4_E2_intro: lun "Those nasty wrackspurts were giving you a lot of trouble, weren't they [name_genie_luna]?" ("open", "narrow", "worried", "mid", xpos="mid", ypos="base", trans=d3) lun "Swallowing them all sure proved itself quite a bit more difficult than I had anticipated..." ("soft", "narrow", "base", "mid") - gen "Well, I certainly appreciate the effort you're putting into it." ("grin", xpos="far_left", ypos="head") + gen "Well, I certainly appreciate the extra effort you put into it." ("grin", xpos="far_left", ypos="head") lun "So... Do you believe I managed to dispose of them all, [name_genie_luna]?" ("soft", "narrow", "base", "downR") gen "What?" ("base", xpos="far_left", ypos="head") lun "Since I went back for seconds to clean them all up... Does that mean they're gone for good?" ("open", "base", "base", "mid") gen "I'm sure there's more to come..." ("base", xpos="far_left", ypos="head") lun "Oh... Well, that's good." ("base", "closed", "base", "mid") - lun "I mean--" ("angry", "base", "base", "mid") + lun @ cheeks blush "I mean--" ("angry", "base", "base", "mid") gen "Now, if you don't mind..." ("base", xpos="far_left", ypos="head") gen "This encounter with those...{w=0.4} Things... Has left me rather exhausted..." ("base", xpos="far_left", ypos="head") lun "Oh... Okay..." ("soft", "base", "base", "downL") if _wearing_clothes: - play sound "sounds/cloth_sound3.ogg" + hide luna_main + with d3 $ luna.wear("all") - pause .8 + with d3 + pause .5 if game.daytime: - lun "In that case, I best be off to divination class..." ("base", "base", "base", "mid") + lun "I best be off to divination class..." ("base", "base", "base", "mid") else: lun "I better head off to bed then." ("base", "base", "base", "mid") @@ -757,7 +757,7 @@ label ll_pf_blowjob_T4_E2_intro: gen "Sure thing." ("base", xpos="far_left", ypos="head") lun "I was thinking about that prediction Professor Trelawney performed on me." ("open", "base", "base", "R") gen "Right?" ("base", xpos="far_left", ypos="head") - lun "It's just... How could something be a true prediction, if hearing about it is required for it to become true?" ("open", "base", "base", "mid") + lun "It's just... How could something be a true prediction, if hearing it is required for it to become true?" ("open", "base", "base", "mid") gen "What?" ("base", xpos="far_left", ypos="head") lun "I mean... I shared the details of the prediction with you, didn't I? Then you subsequently derived an idea from its contents." ("open", "base", "base", "mid") lun "Doesn't that make the prediction more of a self-fulfilling prophecy, and not an actual prophecy?" ("open", "base", "raised", "mid") @@ -851,11 +851,11 @@ label ll_pf_blowjob_T4_E3_intro: lun "That said... Even if he's being shy, that doesn't mean we shouldn't acknowledge him on his special day." ("base", "base", "base", "mid") gen "(Hold on... Is she one of those sun worshippers?)" ("base", xpos="far_left", ypos="head") gen "(Don't tell me she's been trying to groom me for some peculiar sacrificial role...)" ("base", xpos="far_left", ypos="head") - lun "[name_genie_luna]?" ("base", "base", "base", "mid") + lun "Don't you think so too, [name_genie_luna]?" ("grin", "base", "base", "mid") gen "(Is that why she's been trying so hard to suck me dry?)" ("base", xpos="far_left", ypos="head") - lun "[name_genie_luna]!" ("base", "base", "base", "mid") + lun "[name_genie_luna]?" ("soft", "base", "base", "mid") gen "Please, don't suck me dry!" ("base", xpos="far_left", ypos="head") - lun "*Huh*?" ("base", "base", "base", "mid") + lun "*Huh*?" ("angry", "base", "base", "mid") gen "*Err*... Never mind..." ("base", xpos="far_left", ypos="head") else: gen "Right..." ("base", xpos="far_left", ypos="head") @@ -875,14 +875,14 @@ label ll_pf_blowjob_T4_E3_intro: gen "So... What's so special about Sundays, exactly?" ("base", xpos="far_left", ypos="head") - lun "I'm glad you asked!" ("base", "base", "base", "mid") - lun "Sundays are the day of the week when we acknowledge the importance of the sun." ("grin", "base", "base", "mid") + lun "I'm glad you asked!" ("grin", "base", "base", "mid") + lun "Sundays are the day of the week when we acknowledge the importance of the sun." ("grin", "narrow", "base", "mid") gen "Right..." ("base", xpos="far_left", ypos="head") lun "The sun's movement reminds us all to spend our time on this earth to the fullest, after all." ("grin", "base", "base", "mid") gen "*Hmm*... Well, I can't say that I can relate to that very much." ("base", xpos="far_left", ypos="head") lun "It also marks the end of the weekend and makes you look forward to getting back to work or school the next day." ("base", "base", "base", "mid") gen "Ah, yes. Now that certainly is relatable..." ("base", xpos="far_left", ypos="head") - lun "The sun itself should also be appreciated as it has given us life itself." ("smile", "base", "base", "mid") + lun "The sun itself should also be appreciated, as it has given us life itself." ("smile", "base", "base", "mid") lun "I mean, I wouldn't be standing here if it wasn't for the sun." ("grin", "narrow", "base", "mid") gen "Then let's not waste the day any further!" ("base", xpos="far_left", ypos="head") gen "If I'm to live life to the fullest, then I'll require your help again, [name_luna_genie]." ("base", xpos="far_left", ypos="head") @@ -894,9 +894,9 @@ label ll_pf_blowjob_T4_E3_intro: gen "Praise the sun!" ("grin", xpos="far_left", ypos="head") lun "My mouth is here for you, whenever you need it, [name_genie_luna]." ("smile", "base", "base", "mid") - gen "Well that's--" ("base", xpos="far_left", ypos="head") + gen "That's--" ("grin", xpos="far_left", ypos="head") lun "Any time!" ("smile", "wide", "base", "mid") - gen "Greatly appreciated--" ("base", xpos="far_left", ypos="head") + gen "Greatly appreciated--" ("grin", xpos="far_left", ypos="head") lun "Even if I'm asleep!" ("smile", "wide", "base", "mid") gen "..." ("angry", xpos="far_left", ypos="head") lun "So, just wake me up whenever you need it!" ("grin", "wink", "base", "mid") @@ -1050,7 +1050,7 @@ label ll_pf_blowjob_T4_E3_intro: show lun_blowjob_personal_pose1 eyebrows_raised eyes_halflid_stare mouth_base as cg with d3 lun "I mean you are a genie, aren't you?" gen "Well, yes..." - gen "But how did you know? Don't tell me the cloaking thingy had a expiration date..." + gen "But how did you know? Don't tell me the cloaking thingy had an expiration date..." show lun_blowjob_personal_pose1 eyebrows_shocked eyes_base_stare mouth_grin as cg with d3 lun "Oh, don't worry [name_genie_luna]... I can only see your true form when I'm wearing my spectrespecs!" @@ -1080,8 +1080,8 @@ label ll_pf_blowjob_T4_E3_intro: show lun_blowjob_personal_pose1 handjob_moderate eyebrows_angry eyes_halflid_down as cg with d3 - gen "That's not--{w=0.2} Well, perhaps if you rub it often enough..." - nar "You quickly realise that Luna isn't paying you much attention, as her gaze is once again locked onto your cock." + gen "That's not--{w=0.2} Well, I suppose if it's cum that you want..." + nar "You quickly realise that Luna isn't paying you much attention, as her gaze has once again locked onto your cock." gen "Steady on, girl...{w=0.4} Don't you think you've had enough for one day?" show lun_blowjob_personal_pose1 mouth_open_spit as cg with d3 @@ -1133,6 +1133,7 @@ label ll_pf_blowjob_T4_E3_intro: with d5 if _wearing_clothes: + hide luna_main $ luna.wear("all") hide cg @@ -1244,8 +1245,9 @@ label ll_pf_blowjob_T4_E4_repeat: lun "I'll get to it right away!" #Luna pulls genie's trousers down - show lun_blowjob_personal_pose1 no_trousers mouth_base as cg with d3 - lun "*Giggles*" + show lun_blowjob_personal_pose1 no_trousers eyebrows_angry mouth_base as cg with d3 + pause 0.5 + lun "*Mmm*..." show lun_blowjob_personal_pose1 eyes_halflid_down mouth_open as cg with d3 lun "You know.... I was worried that I would never get suck this delectable thing again." @@ -1253,7 +1255,7 @@ label ll_pf_blowjob_T4_E4_repeat: #Luna kisses cock show lun_blowjob_personal_pose1 mouth_open_spit as cg with d3 - show lun_blowjob_personal_pose2 eyebrows_angry eyes_closed mouth_kiss as cg with d3 + show lun_blowjob_personal_pose2 eyes_closed mouth_kiss as cg with d3 lun "*Kissing noises*" gen "You sure have caught a liking to doing this..." @@ -1561,7 +1563,7 @@ label ll_pf_blowjob_T4_E4_repeat: stop background play sound "sounds/slick_01.ogg" - show lun_blowjob_personal_pose5 eyes_halflid_down_hearts as cg with d3 + show lun_blowjob_personal_pose5 penis_spit eyes_halflid_down_hearts as cg with d3 play sound "sounds/gulp.ogg" pause 1 play sound "sounds/slick_01.ogg" @@ -1578,10 +1580,12 @@ label ll_pf_blowjob_T4_E4_repeat: show lun_blowjob_personal_pose2 mouth_kiss as cg with d3 lun "*Slrp-pop*!{w=0.4}{nw}" - show lun_blowjob_personal_pose2 eyes_halflid_up_hearts as cg + show lun_blowjob_personal_pose2 eyes_closed as cg lun "*Slrp-pop*!{fast}" - show lun_blowjob_personal_pose1 no_trousers eyes_halflid_stare_hearts mouth_open_spit as cg with d3 + show lun_blowjob_personal_pose1 no_trousers eyebrows_angry mouth_open_cum as cg with d3 lun "*Ah*...{w=0.4} Ah*...{w=0.4} Ah*..." + play sound "sounds/gulp.ogg" + show lun_blowjob_personal_pose1 mouth_neutral as cg with d3 show screen blkfade with d5 @@ -1591,16 +1595,18 @@ label ll_pf_blowjob_T4_E4_repeat: hide cg hide screen blkfade with d5 - #Fade to office, Luna in front of desk - lun "So... Did I do good?" ("base", "base", "base", "mid") + #Fade to office, Luna in front of desk + call lun_chibi(flip=False) + + lun @ cheeks blush "So... Did I do good?" ("soft", "narrow", "base", "downR", xpos="mid", ypos="base", trans=d3) gen "..." ("base", xpos="far_left", ypos="head") - lun "[name_genie_luna]?" ("base", "base", "base", "mid") + lun "[name_genie_luna]?" ("open", "base", "base", "mid") $ renpy.sound.play("sounds/snore1.ogg") gen "*Snore*..." ("base", xpos="far_left", ypos="head") - lun "You called me a whore, what did you--" ("base", "base", "base", "mid") + lun "You called me a whore, what did you--" ("open", "base", "base", "mid") $ renpy.sound.play("sounds/snore1.ogg") gen "*Snore*!" ("angry", xpos="far_left", ypos="head") @@ -1608,8 +1614,12 @@ label ll_pf_blowjob_T4_E4_repeat: lun "I'll...{w=0.4} I'll let you sleep...{w=0.4} Sweet dreams, [name_genie_luna]." ("base", "base", "base", "mid") if _wearing_clothes: + hide luna_main + with d3 $ luna.wear("all") - pause 1 + with d3 + pause .5 + #Luna leaves call lun_walk(action="leave") From b5500403693c73aedddb20d9115785799ee8252f Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 15 Nov 2023 15:26:50 +0000 Subject: [PATCH 035/249] Bug fix * Fixed an issue with Tonks' auror coat sleeve --- .../tonks/poses/default/clothes/robe/auror_coat/0_front.webp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/characters/tonks/poses/default/clothes/robe/auror_coat/0_front.webp b/game/characters/tonks/poses/default/clothes/robe/auror_coat/0_front.webp index caa632dd..1b305c69 100644 --- a/game/characters/tonks/poses/default/clothes/robe/auror_coat/0_front.webp +++ b/game/characters/tonks/poses/default/clothes/robe/auror_coat/0_front.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bfa8a64387b5f55db220e9596ba7385a26a00f1ff35f3395afdca2f70560ff47 -size 3826 +oid sha256:c49f6779fe0790bcc1867fa6577ee462501f6efe6ba214d1f222ed8f93f28a08 +size 3576 From 36d79b4bb25b16694ba22074713991a6093752da Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 11 Nov 2023 20:42:56 +0100 Subject: [PATCH 036/249] Hasten istype --- game/scripts/utility/common_functions.rpy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index cfe66436..ec611e3c 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -186,9 +186,9 @@ init python early: return s1.replace(filter, "") == s2.replace(filter, "") def istype(inst, clss): - if not isinstance(clss, (list, tuple, set)): - clss = (clss,) - return type(inst) in clss + if isinstance(clss, (list, tuple, set)): + return type(inst) in clss + return type(inst) is clss class IntLike(python_object): # Does not support rollback From 19bfc010c83646cbb6174b081d02fe714bbd488b Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 11 Nov 2023 20:54:41 +0100 Subject: [PATCH 037/249] Avoid creating an unnecessary list (use an iterator instead) --- game/scripts/utility/common_functions.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index ec611e3c..5096f451 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -125,7 +125,7 @@ init python early: if isinstance(obj, _list): return [make_revertable(x) for x in obj] elif isinstance(obj, _dict): - return dict([(make_revertable(k), make_revertable(v)) for (k,v) in obj.items()]) + return dict((make_revertable(k), make_revertable(v)) for (k,v) in obj.items()) else: return obj From 0d0c54058d61d0e9d7ead453e5f501efbacc0f92 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 11 Nov 2023 20:58:07 +0100 Subject: [PATCH 038/249] Hasten is_integer the commented further improvement should be done too imo, but up to you --- game/scripts/utility/common_functions.rpy | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index 5096f451..dae89f72 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -130,14 +130,15 @@ init python early: return obj def is_integer(s): - def zero(s): - return (len(s) > 1 and s.startswith("0")) - s = str(s) - - if s and s[0] in ("-", "+"): - return (not zero(s[1:]) and s[1:].isdigit()) - return (not zero(s) and s.isdigit()) + if not s: + return False + if s[0] in ("-", "+"): + # calling lstrip("0+-") would be faster but not exactly identical + s = s[1:] + if s.lstrip("0").isdigit(): + return True + return False def timeit(func, loops=10000, args=(), kwargs={}): start = time.time() From a1e4f059982541c2f331a08aa0320af846dee5d5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 11 Nov 2023 21:02:36 +0100 Subject: [PATCH 039/249] Update the timeit function to use the timeit module add the autorange function as a bonus (I like it better) Patch-1-pull-request --- game/scripts/utility/common_functions.rpy | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index dae89f72..2f7eac57 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -11,6 +11,7 @@ init python early: import re import string import functools + import timeit as timeit_module from bisect import bisect from operator import itemgetter from operator import add as _add @@ -141,11 +142,12 @@ init python early: return False def timeit(func, loops=10000, args=(), kwargs={}): - start = time.time() - for i in range(loops): - func(*args, **kwargs) - end = time.time() - print(f"The task has taken {end-start} seconds to finish") + rv = timeit_module.timeit("func(*args, **kwargs)", number=loops, globals=dict(func=func, args=args, kwargs=kwargs)) + print(f"The task has taken {rv} seconds to finish") + + def autorange(func, args=(), kwargs={}): + loops, time = timeit_module.Timer("func(*args, **kwargs)", globals=dict(func=func, args=args, kwargs=kwargs)).autorange() + print(f"The task has taken {time/loops} seconds to finish ({loops} iterations in {time} seconds)") def list_swap_values(l, val1, val2): """Mutates the original list.""" From 8286be4a50df1a7e5a2b61329e351d3ba8a80038 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 11 Nov 2023 21:02:58 +0100 Subject: [PATCH 040/249] init is ignored when early is used --- game/scripts/utility/devtools.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/utility/devtools.rpy b/game/scripts/utility/devtools.rpy index fb1102e2..cefccce1 100644 --- a/game/scripts/utility/devtools.rpy +++ b/game/scripts/utility/devtools.rpy @@ -1,4 +1,4 @@ -init -999 python early: +python early: if renpy.version_tuple < (7,5,3,22090809): raise RuntimeWarning("Your Ren'Py launcher is outdated, the current minimal requirement is 7.5.3.22090809+\nPlease perform an update and try launching the game again.") From 52ed1d37de7d7a20ce0016120dba6fca1cfb835e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 11 Nov 2023 21:04:20 +0100 Subject: [PATCH 041/249] Scrap some prepended newlines --- game/scripts/characters.rpy | 1 - game/scripts/options.rpy | 1 - game/scripts/script.rpy | 1 - game/scripts/theme.rpy | 1 - game/scripts/utility/text_tags.rpy | 1 - game/scripts/utility/transitions.rpy | 1 - 6 files changed, 6 deletions(-) diff --git a/game/scripts/characters.rpy b/game/scripts/characters.rpy index f495b3f7..3e0f1760 100644 --- a/game/scripts/characters.rpy +++ b/game/scripts/characters.rpy @@ -1,4 +1,3 @@ - init -999 python: # Remove style overrides adv.who_args.pop("style", None) diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index 8a702ac7..3d1d6979 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -1,4 +1,3 @@ - # Preferences # https://www.renpy.org/doc/html/preferences.html diff --git a/game/scripts/script.rpy b/game/scripts/script.rpy index 65aa0cd1..20093d43 100644 --- a/game/scripts/script.rpy +++ b/game/scripts/script.rpy @@ -1,4 +1,3 @@ - label start: python: version = version_float() diff --git a/game/scripts/theme.rpy b/game/scripts/theme.rpy index f353c943..ca91faec 100644 --- a/game/scripts/theme.rpy +++ b/game/scripts/theme.rpy @@ -1,4 +1,3 @@ - # Legacy styles (still in use) style yesno_button: diff --git a/game/scripts/utility/text_tags.rpy b/game/scripts/utility/text_tags.rpy index e197b142..1df3ea6c 100644 --- a/game/scripts/utility/text_tags.rpy +++ b/game/scripts/utility/text_tags.rpy @@ -1,4 +1,3 @@ - # Custom text tags # https://www.renpy.org/doc/html/custom_text_tags.html diff --git a/game/scripts/utility/transitions.rpy b/game/scripts/utility/transitions.rpy index cd2948af..e88b3ec5 100644 --- a/game/scripts/utility/transitions.rpy +++ b/game/scripts/utility/transitions.rpy @@ -1,4 +1,3 @@ - image fade = "#00000080" image fade_gradient = "interface/bld.webp" From f5074e7aac4b32c50119d03dc782f954dc933c1a Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Sat, 18 Nov 2023 13:52:52 +0100 Subject: [PATCH 042/249] Hermione nicknames * Added more writing for fail variants. * Simplified dialogue checks. * Adjusted levels to make some inaccessible dialogue accessible. --- game/scripts/characters/hermione/talk.rpy | 318 +++++++++++----------- 1 file changed, 164 insertions(+), 154 deletions(-) diff --git a/game/scripts/characters/hermione/talk.rpy b/game/scripts/characters/hermione/talk.rpy index c3a552a6..1309bfdc 100644 --- a/game/scripts/characters/hermione/talk.rpy +++ b/game/scripts/characters/hermione/talk.rpy @@ -209,110 +209,95 @@ label genie_change_fail: label hermione_change: if temp_name == "Miss Granger": if states.her.level <=0: - her "Sure, [name_genie_hermione]." ("base", "base", "base", "mid") + random: + her "Sure, [name_genie_hermione]." ("base", "base", "base", "mid") + her "Of course, [name_genie_hermione]." ("base", "base", "base", "mid") else: her "You don't have to be so formal, [name_genie_hermione], you know?" ("base", "closed", "base", "mid") her "" ("base", "base", "base", "mid") elif temp_name == "Hermione": - her "Of course [name_genie_hermione]." ("base", "base", "base", "mid") + her "Of course, [name_genie_hermione]." ("base", "base", "base", "mid") elif temp_name == "Girl": - if states.her.level >=1 and states.her.level < 3: - her "This girl thing again?" ("annoyed", "happy", "base", "mid") + if states.her.level < 3: + her "This \"girl\" thing again?" ("annoyed", "happy", "base", "mid") her "*Sigh*..." ("soft", "happy", "base", "R") - elif states.her.level >=3: - her "Fine... I don't mind." ("soft", "base", "base", "R") + elif states.her.level < 13: + her "Fine...{w=0.4} I don't mind." ("soft", "base", "base", "R") + else: + her "Of course..." ("soft", "base", "base", "R") elif temp_name == "Nerd": - if states.her.level >=3 and states.her.level < 5: - her "*sigh* I just enjoy books, that's all." ("annoyed", "narrow", "worried", "down") + if states.her.level < 5: + her "*Sigh*...{w=0.4} I just enjoy books, that's all." ("annoyed", "narrow", "worried", "down") gen "I'm sure you'll find other things to enjoy soon enough..." ("base", xpos="far_left", ypos="head") her "Like what exactly?" ("normal", "narrow", "base", "mid_soft") gen "Nothing to worry about, things will work out..." ("base", xpos="far_left", ypos="head") gen "Nerd..." ("grin", xpos="far_left", ypos="head") her "*Tsk* ..." ("soft", "narrow", "base", "R_soft") her "" ("normal", "narrow", "base", "R_soft") - elif states.her.level >= 5 and states.her.level < 19: + elif states.her.level < 19: her "I can be a bit nerdy sometimes I suppose..." ("angry", "happyCl", "base", "mid", emote="sweat") her "" ("base", "base", "base", "mid") - elif states.her.level >= 19: + else: her "I don't read as much as I used to anymore." ("grin", "narrow", "base", "R_soft", emote="sweat") her "" ("base", "narrow", "base", "mid_soft") elif temp_name == "Hottie": - if states.her.level >=5 and states.her.level < 7: + if states.her.level < 7: her @ cheeks blush "[name_genie_hermione]?!" ("angry", "wide", "angry", "mid") gen "What? That's true, you're hot." ("base", xpos="far_left", ypos="head") her @ cheeks blush "That's inappropriate." ("annoyed", "base", "worried", "R") her "But I'll let it slide, I guess." - elif states.her.level >=7 and states.her.level < 19: + elif states.her.level < 19: her "Thank you, [name_genie_hermione]." ("soft", "wink", "base", "mid") her "" ("normal", "base", "base", "mid") - elif states.her.level >=19: + else: her @ cheeks blush "... Glad you think so." ("smile", "wink", "base", "mid") her @ cheeks blush "" ("base","happy", "base", "mid") - elif temp_name == "Good Girl": - if states.her.level >=5 and states.her.level < 7: - her "Well, I do try my best, [name_genie_hermione]." ("base", "closed", "base", "mid") - her "" ("base", "base", "base", "mid") - elif states.her.level >=7 and states.her.level < 19: + elif temp_name == "Good Girl": #Custom nickname (21+) + if states.her.level <=23: her "I'm not sure if I'd qualify, but fine." ("annoyed", "wink", "base", "mid") her "" ("normal", "base", "base", "mid") - elif states.her.level >=19: - her @ cheeks blush "I could act like a good girl if you really want me to..." ("smile", "wink", "base", "mid") + else: + her @ cheeks blush "I'm not sure that's true..." ("soft", "narrow", "base", "mid") + her @ cheeks blush "But I could act like a good girl if you really want me to..." ("smile", "wink", "base", "mid") her @ cheeks blush "" ("base","happy", "base", "mid") elif temp_name == "Angel": - if states.her.level >=7 and states.her.level < 9: + if states.her.level < 9: her "What's going on with these silly nicknames of yours all of a sudden?" ("normal", "squint", "angry", "mid") gen "What do you mean by silly?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Ugh, forget I said anything..." ("open", "narrow", "base", "down") + her @ cheeks blush "*Ugh*... forget I said anything..." ("open", "narrow", "base", "down") her @ cheeks blush "" ("normal", "base", "base", "R") - elif states.her.level >=9 and states.her.level < 19: + elif states.her.level < 19: her @ cheeks blush "I like it..." ("soft", "narrow", "base", "R_soft") her @ cheeks blush "" ("base", "narrow", "base", "R_soft") - elif states.her.level >= 19: + else: + her @ cheeks blush "After everything you've put me through, I certainly must be..." ("base", "narrow", "base", "R_soft") her @ cheeks blush "I'm surprised I didn't grow wings yet." ("base", "narrow", "worried", "mid_soft") - elif temp_name == "Little Girl": - if states.her.level >=7 and states.her.level < 9: - her "What's going on with these silly nicknames of yours all of a sudden?" ("normal", "squint", "angry", "mid") - gen "What do you mean by silly?" ("base", xpos="far_left", ypos="head") - her "It makes it sound as if I'm your..." ("soft", "base", "worried", "R") - her @ cheeks blush "Ugh, forget I said anything..." ("open", "narrow", "base", "down") - her @ cheeks blush "" ("normal", "base", "base", "R") - elif states.her.level >=9 and states.her.level < 19: - her "Bit of an odd request but..." ("normal", "narrow", "base", "down") - her @ cheeks blush "I like it..." ("soft", "narrow", "base", "R_soft") - her @ cheeks blush "" ("base", "narrow", "base", "R_soft") - elif states.her.level >= 19: - her @ cheeks blush "Yes, [name_genie_hermione]." ("base", "narrow", "worried", "mid_soft") - elif temp_name == "Bad Girl": - if states.her.level >=9 and states.her.level < 11: - her "I guess I am a bit." ("soft", "narrow", "worried", "down") - her "I did fail that test after all..." ("disgust", "narrow", "base", "down") - her "" ("normal", "narrow", "worried", "mid_soft") - her "" ("normal", "base", "base", "mid") - elif states.her.level >=11 and states.her.level < 17: - her @ cheeks blush "I may be a little bit naughty at times." ("base", "happy", "base", "R") - elif states.her.level >=17: - her @ cheeks blush "I may be a little bit naughty at times." ("base", "happy", "base", "R") - her @ cheeks blush "" ("base", "base", "base", "mid") + elif temp_name == "Little Girl": #Custom nickname (21+) + her @ cheeks blush "Little...{w=0.4} Girl..." ("soft", "narrow", "worried", "mid_soft") + her @ cheeks blush "Yes, [name_genie_hermione]..." ("base", "narrow", "worried", "mid_soft") + elif temp_name == "Bad Girl": #Custom nickname (21+) + her @ cheeks blush "I suppose I may be a little bit naughty at times." ("base", "happy", "base", "R") + her @ cheeks blush "" ("base", "base", "base", "mid") elif temp_name == "Minx": - if states.her.level >=9 and states.her.level < 11: + if states.her.level < 15: her "I guess I am a bit." ("soft", "narrow", "worried", "down") her "" ("normal", "narrow", "worried", "mid_soft") - elif states.her.level >=11 and states.her.level < 17: + elif states.her.level < 19: her @ cheeks blush "I may be a little bit naughty at times." ("base", "happy", "base", "R") - elif states.her.level >=17: + else: her @ cheeks blush "I may be a little bit naughty at times." ("base", "happy", "base", "R") her @ cheeks blush "" ("base", "base", "base", "mid") elif temp_name == "Princess": - if states.her.level >= 11 and states.her.level < 13: - her @ cheeks blush "That would make you my prince wouldn't it?" ("open", "base", "base", "R") + if states.her.level < 15: + her @ cheeks blush "That would make you my prince, wouldn't it?" ("open", "base", "base", "R") her @ cheeks blush "" ("base", "base", "base", "mid") - elif states.her.level >= 13: - her "Yes... My prince." ("smile","happy", "base", "mid") + else: + her "Yes...{w=0.4} My prince." ("smile","happy", "base", "mid") gen "..." ("base", xpos="far_left", ypos="head") - her "I-I mean, [name_genie_hermione]." ("smile", "happyCl", "base", "mid", emote="sweat") + her "I--{w=0.2} I mean, [name_genie_hermione]." ("smile", "happyCl", "base", "mid", emote="sweat") her "" ("base", "base", "base", "mid") elif temp_name == "Pet": - if states.her.level >= 11 and states.her.level < 13: + if states.her.level < 15: her "You want to call me....{w=0.5} a pet?" ("normal", "squint", "angry", "mid") gen "Yes." ("base", xpos="far_left", ypos="head") her ".... {w=0.5}.... {w=0.5}.... {w=0.5}...." ("normal", "happy", "base", "mid") @@ -321,117 +306,97 @@ label hermione_change: her "May I at least know why?" ("open", "squint", "base", "mid") gen "No." ("base", xpos="far_left", ypos="head") her "...." ("annoyed", "base", "worried", "mid") - elif states.her.level >= 13: + else: her "*Meow*" ("smile","happyCl", "base", "mid") her "" ("smile","happy", "base", "mid") gen "Don't do that..." ("base", xpos="far_left", ypos="head") her "Such a party pooper." ("annoyed","happyCl", "base", "mid") her "" ("base", "base", "base", "mid") elif temp_name == "Bitch": - if states.her.level >=13 and states.her.level < 15: + if states.her.level < 19: her "Isn't this a bit inappropriate [name_genie_hermione]?" ("mad", "narrow", "worried", "down") gen "And doing favours for house points isn't?" ("base", xpos="far_left", ypos="head") her @ cheeks blush "Fine..." ("base", "narrow", "base", "down") - elif states.her.level >= 15 and states.her.level < 17: + elif states.her.level < 21: her @ cheeks blush "..." ("normal", "narrow", "worried", "down") gen "Any objections?" ("base", xpos="far_left", ypos="head") her @ cheeks blush "..." ("soft", "base", "worried", "R") gen "Okay then..." ("grin", xpos="far_left", ypos="head") - elif states.her.level >= 17: + else: her @ cheeks blush "Alright." ("base", "happyCl", "base", "mid") her @ cheeks blush "" ("base","happy", "base", "mid") elif temp_name == "Slut": - if states.her.level >=15 and states.her.level < 17: - her "[name_genie_hermione]?!" ("shock", "wide", "worried", "stare") - her "You can't just call someone that!" ("mad", "wide", "base", "stare") - gen "It'll just be between us..." ("base", xpos="far_left", ypos="head") - her "..." ("disgust", "squint", "base", "mid") - gen "Nothing to add?" ("base", xpos="far_left", ypos="head") - her "" ("clench", "closed", "base", "mid", emote="angry") - gen "So you'll let me call you that or not?" ("base", xpos="far_left", ypos="head") - her "{size=+5}FINE!{/size}" ("clench", "closed", "angry", "mid", emote="angry") - gen "..." ("base", xpos="far_left", ypos="head") - her "" ("normal", "narrow", "angry", "R") - elif states.her.level >= 17: - her @ cheeks blush "I guess if you have to call me that, sure..." ("base", "narrow", "base", "down") - elif states.her.level >= 19: + if states.her.level < 21: + her @ cheeks blush "I suppose if you have to call me that, sure..." ("base", "narrow", "base", "down") + else: her @ cheeks blush "I don't mind..." ("smile", "happyCl", "base", "mid") elif temp_name == "Cumslut": - if states.her.level >= 17 and states.her.level < 19: - her "A cumslut?!" ("open", "wide", "worried", "stare") - gen "Something wrong?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "You have to even ask?" ("soft", "narrow", "worried", "down") - her @ cheeks blush "This is so degrading..." ("normal", "narrow", "base", "down") - her @ cheeks blush "(But I kinda am a slut begging for cum aren't I...)" ("base", "happyCl", "base", "mid") - elif states.her.level >= 19: + if states.her.level < 22: + her "I suppose if you have to call me that, sure..." ("base", "narrow", "base", "down") + else: her "..." ("soft", "narrow", "base", "up") her @ cheeks blush "(When did I start enjoying it so much...)" ("open", "narrow", "base", "up") - her @ cheeks blush "(That taste, the texture...)" ("open", "narrow", "annoyed", "up") + her @ cheeks blush "(That taste, even the texture...)" ("open", "narrow", "annoyed", "up") her @ cheeks blush "(So warm, sticky, and--)" ("silly", "narrow", "base", "up") gen "Are you okay there, [temp_name]?" ("base", xpos="far_left", ypos="head") her "Wha--" ("mad", "wide", "base", "stare") her @ cheeks blush "Of course I am!" ("smile", "base", "base", "R") elif temp_name == "Slytherin Whore": - if states.her.level >=19 and states.her.level < 21: - her "Do you really have to call me that, [name_genie_hermione]?" ("disgust", "base", "worried", "mid") - her @ cheeks blush "Referring to me as a bitch or a slut for your own amusement is one thing..." ("mad", "narrow", "worried", "down") - her "You're aware of how much I loathe Slytherin." ("open", "narrow", "worried", "mid_soft") - her "And I'm definitely not a whore..." ("soft", "closed", "base", "mid") - her "I refuse!" - menu: - "-Say it's fine-": - gen "Fine, I won't call you that..." ("base", xpos="far_left", ypos="head") - her "You won't?" ("open", "base", "base", "mid") - her "" ("soft", "base", "base", "mid") - gen "Of course..." ("base", xpos="far_left", ypos="head") - her "I am glad we're on the same page on this one, [name_genie_hermione]." ("open", "closed", "base", "mid") - her "" ("base", "closed", "base", "mid") - gen "In fact, from this point forward you don't have to call me [name_genie_hermione] or exchange any favours..." ("base", xpos="far_left", ypos="head") - her "" ("soft", "base", "base", "mid", emote="confused") - gen "Let's just void this whole... deal of yours, shall we?" ("base", xpos="far_left", ypos="head") - her "B-but, [name_genie_hermione]?!" ("mad", "wide", "base", "mid", emote="shocked") - her "" ("mad", "wide", "base", "mid") - gen "I must apologise {b}Miss Granger{/b}, I thought we had come to some kind of agreeable arrangement by now..." ("base", xpos="far_left", ypos="head") - her "But I--" ("mad", "wide", "worried", "stare") - gen "I should have known better to believe that this sort of thing would work out..." ("base", xpos="far_left", ypos="head") - her "Maybe I coul--" ("clench","happyCl", "worried", "stare") - gen "I thought we both had what we wanted..." ("base", xpos="far_left", ypos="head") - her "Liste--" ("soft", "narrow", "worried", "down") - her "" ("normal", "closed", "angry", "mid") - gen "Might as well hand in my resignation with the ministry and--" ("base", xpos="far_left", ypos="head") - with hpunch - her @ cheeks blush "{size=+10}I AM A SLYTHERIN WHORE!!!{/size}" ("scream", "closed", "angry", "mid") - her "" ("normal", "closed", "base", "mid") - gen "..." ("base", xpos="far_left", ypos="head") - her "Now please, [name_genie_hermione]... Let's just forget this conversation ever happened." ("disgust", "base", "worried", "mid") - gen "Are you sure that's what you want, [temp_name]?" ("base", xpos="far_left", ypos="head") - her "... Yes." ("disgust", "narrow", "worried", "down", emote="sweat") - gen "(This girl really is beyond redemption...)" ("base", xpos="far_left", ypos="head") - her "" ("base", "narrow", "worried", "down") - "-Threaten her-": - gen "Either accept my offer or Gryffindor lose five hundred points..." ("angry", xpos="far_left", ypos="head") - with hpunch - her "FIVE HUNDRED?!" ("shock", "wide", "base", "stare") - her "[name_genie_hermione]... This is blackmailing!" ("scream", "closed", "angry", "mid") - her "" ("mad", "closed", "angry", "mid") - gen "It is?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "What else would it be?" ("mad", "base", "angry", "mid") - gen "Negotiations..." ("grin", xpos="far_left", ypos="head") - her @ cheeks blush "You..." ("clench", "closed", "angry", "mid") - gen "That's not an answer..." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "{size=-10}Okay...{/size}" ("soft", "narrow", "angry", "R") - gen "What was that? I didn't hear you." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "I said yes, you can call me a Slytherin whore... or whatever." ("normal", "narrow", "annoyed", "mid") - her @ cheeks blush "Happy now?!" ("open", "closed", "angry", "mid") - gen "Very." ("grin", xpos="far_left", ypos="head") - her @ cheeks blush "{size=-6}You are the worst.{/size}" ("normal", "narrow", "base", "R_soft") - $ states.her.mood += 15 - elif states.her.level >= 21: - her "Please, [name_genie_hermione], couldn't you call me something else instead?" ("open", "base", "worried", "mid") - gen "But where's the fun in that?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Why do I even bother... *sigh*" ("soft", "narrow", "base", "R_soft") + her "Do you really have to call me that, [name_genie_hermione]?" ("disgust", "base", "worried", "mid") + her @ cheeks blush "Referring to me as a bitch or a slut for your own amusement is one thing..." ("mad", "narrow", "worried", "down") + her "I know you're aware of how much I loathe Slytherin..." ("open", "narrow", "worried", "mid_soft") + her "And I'm definitely not a whore..." ("soft", "closed", "base", "mid") + her "I refuse!" + menu: + "-Say it's fine-": + gen "Fine, I won't call you that..." ("base", xpos="far_left", ypos="head") + her "You won't?" ("open", "base", "base", "mid") + her "" ("soft", "base", "base", "mid") + gen "Of course..." ("base", xpos="far_left", ypos="head") + her "I am glad we're on the same page on this one, [name_genie_hermione]." ("open", "closed", "base", "mid") + her "" ("base", "closed", "base", "mid") + gen "In fact, from this point forward you don't have to call me [name_genie_hermione], or exchange any favours..." ("base", xpos="far_left", ypos="head") + her "" ("soft", "base", "base", "mid", emote="confused") + gen "Let's just void this whole... deal of yours, shall we?" ("base", xpos="far_left", ypos="head") + her "B-but, [name_genie_hermione]?!" ("mad", "wide", "base", "mid", emote="shocked") + her "" ("mad", "wide", "base", "mid") + gen "I must apologise {b}Miss Granger{/b}, I thought we had come to some kind of agreeable arrangement by now..." ("base", xpos="far_left", ypos="head") + her "But I--" ("mad", "wide", "worried", "stare") + gen "I should have known better to believe that this sort of thing would work out..." ("base", xpos="far_left", ypos="head") + her "Maybe I could--" ("clench","happyCl", "worried", "stare") + gen "I thought we both had what we wanted..." ("base", xpos="far_left", ypos="head") + her "Listen--" ("soft", "narrow", "worried", "down") + her "" ("normal", "closed", "angry", "mid") + gen "Might as well hand in my resignation with the ministry and--" ("base", xpos="far_left", ypos="head") + with hpunch + her @ cheeks blush "{size=+10}I AM A SLYTHERIN WHORE!!!{/size}" ("scream", "closed", "angry", "mid") + her "" ("normal", "closed", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + her "Now please, [name_genie_hermione]... Let's just forget this conversation ever happened." ("disgust", "base", "worried", "mid") + gen "Are you sure that's what you want, [temp_name]?" ("base", xpos="far_left", ypos="head") + her "... Yes." ("disgust", "narrow", "worried", "down", emote="sweat") + gen "(This girl really is beyond redemption...)" ("base", xpos="far_left", ypos="head") + her "" ("base", "narrow", "worried", "down") + "-Threaten her-": + gen "Either accept my offer or Gryffindor lose five hundred points..." ("angry", xpos="far_left", ypos="head") + with hpunch + her "{size=+4}Five hundred?!{/size}" ("shock", "wide", "base", "stare") + her "[name_genie_hermione]... This is blackmailing!" ("scream", "closed", "angry", "mid") + her "" ("mad", "closed", "angry", "mid") + gen "It is?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "What else would it be?" ("mad", "base", "angry", "mid") + gen "Negotiations..." ("grin", xpos="far_left", ypos="head") + her @ cheeks blush "You..." ("clench", "closed", "angry", "mid") + gen "That's not an answer..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "{size=-10}Okay...{/size}" ("soft", "narrow", "angry", "R") + gen "What was that? I didn't hear you." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I said yes, you can call me a Slytherin whore... or whatever." ("normal", "narrow", "annoyed", "mid") + her @ cheeks blush "Happy now?!" ("open", "closed", "angry", "mid") + gen "Very." ("grin", xpos="far_left", ypos="head") + her @ cheeks blush "{size=-6}You are the worst.{/size}" ("normal", "narrow", "base", "R_soft") + $ states.her.mood += 15 elif temp_name == "Mudblood": - her "A{w=0.5}...{w=0.5} {size=+6}{b}{cps=20}mud{w=0.5}blood{/cps}{/b}?!{/size}" ("shock", "wide", "base", "stare") + her "A...{w=0.5} {size=+6}{b}{cps=20}mud{w=0.5}blood{/cps}{/b}?!{/size}" ("shock", "wide", "base", "stare") her "Did I hear you right, [name_genie_hermione]?!" ("normal", "wide", "base", "mid") menu: "-Confirm-": @@ -509,7 +474,7 @@ label hermione_change: gen "And I {b}will{/b} call you however I want!" ("base", xpos="far_left", ypos="head") her @ tears mascara "...." ("angry", "narrow", "base", "up") else: #Custom/fallback - her "That's a bit odd... But sure, you can call me that." ("soft", "squint", "base", "mid") + her "That's a bit odd...{w=0.4} But sure, you can call me that." ("soft", "squint", "base", "mid") $ name_hermione_genie = temp_name jump hermione_talk @@ -523,21 +488,35 @@ label hermione_change_fail: her "{size=-4}And I'm not a nerd...{/size}" ("annoyed", "base", "worried", "mid") if states.her.level >= 1: her "(I think...)" ("annoyed", "base", "worried", "R") + elif temp_name == "Hottie": + her "I don't think that would be appropriate, [name_genie_hermione]..." ("open", "closed", "base", "mid") + gen "You'd feel a lot better if you tried to be less critical of yourself... " ("base", xpos="far_left", ypos="head") + her "*Huh*?" ("open", "base", "base", "mid") + elif temp_name == "Angel": + her "I certainly am!" ("open", "closed", "base", "mid") + her "But I won't let you call me that..." ("open", "base", "base", "mid") + elif temp_name == "Minx": + her "That is neither appropriate, nor true!" ("annoyed", "closed", "base", "mid") elif temp_name == "Good Girl": her "I'm not letting you call me that, [name_genie_hermione]!" ("open", "closed", "angry", "mid") if states.her.level >= 3: her "(Although it's kinda cute he said that...)" ("base", "base", "base", "R") - elif temp_name == "Little Girl": - her "I won't let you call me that, [name_genie_hermione]!" ("open", "closed", "angry", "mid") - if states.her.level >= 5: - her "(I hope they'd grow out more...)" ("disgust", "narrow", "worried", "down") - her "*sigh*" ("annoyed", "closed", "base", "mid") - her "" ("normal", "base", "base", "R") - elif temp_name == "Bad Girl": - her "I am not a [temp_name]!" ("open", "base", "angry", "mid") - if states.her.level >= 7: - her "(Or am I...?)" ("disgust", "base", "base", "R") - her "" ("normal", "base", "base", "R") + #elif temp_name == "Little Girl": + #her "What's going on with these silly nicknames of yours all of a sudden?" ("normal", "squint", "angry", "mid") + #gen "What do you mean by silly?" ("base", xpos="far_left", ypos="head") + #her "It makes it sound as if I'm your..." ("soft", "base", "worried", "R") + #her "I won't let you call me that, [name_genie_hermione]!" ("open", "closed", "angry", "mid") + #if states.her.level >= 16: + #her "(Surely my chest is big enough...)" ("disgust", "narrow", "worried", "down") + #her "*Sigh*" ("annoyed", "closed", "base", "mid") + #her "" ("normal", "base", "base", "R") + #elif temp_name == "Bad Girl": + #her "I guess I am a bit." ("soft", "narrow", "worried", "down") + #her "I did fail that test after all..." ("disgust", "narrow", "base", "down") + #her "Wait... You meant it in a--{w=0.2} I am not a [temp_name]!" ("open", "base", "angry", "mid") + #if states.her.level >= 7: + #her "(Or am I...?)" ("disgust", "base", "base", "R") + #her "" ("normal", "base", "base", "R") elif temp_name == "Princess": her "This is inappropriate, [name_genie_hermione]!" ("open", "base", "angry", "mid") if states.her.level >= 9: @@ -546,6 +525,37 @@ label hermione_change_fail: her "Are you joking, [name_genie_hermione]?" ("open", "base", "worried", "mid") if states.her.level >= 11: her "(Why would he even suggest that?)" ("annoyed", "base", "base", "R") + elif temp_name == "Bitch": + her "I am not a dog!" ("open", "closed", "angry", "mid") + gen "That's not..." ("base", xpos="far_left", ypos="head") + gen "Alrighty then..." ("base", xpos="far_left", ypos="head") + elif temp_name == "Slut": + her "[name_genie_hermione]?!" ("shock", "wide", "worried", "stare") + her "You can't just call someone that!" ("mad", "wide", "base", "stare") + gen "It'll just be between us..." ("base", xpos="far_left", ypos="head") + her "..." ("disgust", "squint", "base", "mid") + gen "Nothing to add?" ("base", xpos="far_left", ypos="head") + her "" ("clench", "closed", "base", "mid", emote="angry") + gen "So, you'll let me call you that or not?" ("base", xpos="far_left", ypos="head") + her "{size=+5}No!{/size}" ("clench", "closed", "angry", "mid", emote="angry") + gen "..." ("base", xpos="far_left", ypos="head") + elif temp_name == "Cumslut": + her "{size=+5}A what?!{/size}" ("open", "wide", "worried", "stare") + gen "Something wrong?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Do you even have to ask?" ("soft", "narrow", "angry", "down") + her @ cheeks blush "Calling someone--{w=0.4} That is so degrading!" ("angry", "narrow", "angry", "down") + her "I won't allow it!" ("angry", "closed", "angry", "down") + elif temp_name == "Slytherin Whore": + her "What did you just call me?!" ("open", "wide", "worried", "stare") + gen "*Err*... Nothing..." ("base", xpos="far_left", ypos="head") + her "*Hmph*..." ("annoyed", "narrow", "angry", "mid") + elif temp_name == "Mudblood": + her "A...{w=0.5} A...{w=0.5}{nw} " ("shock", "wide", "base", "stare") + her "A... A... M--Mm..." ("normal", "wide", "base", "stare") + gen "(This will end up badly...)" ("base", xpos="far_left", ypos="head") + gen "Mad stud! That's what I said" ("base", xpos="far_left", ypos="head") + her "*Huh?*" ("normal", "wide", "base", "mid") + gen "Let's resume the favour trading... You mad stud, you..." ("base", xpos="far_left", ypos="head") else: her "I won't let you call me that!" ("shock", "closed", "angry", "mid") her "" ("normal", "base", "angry", "mid") From a11c8ae81d3058141cce5fbecc59340682018652 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Tue, 21 Nov 2023 18:19:18 +0100 Subject: [PATCH 043/249] Hermione nicknames * Added Genie nickname success dialogue variants for Hermione. * Minor fixes --- game/scripts/characters/cho/summon.rpy | 4 +- game/scripts/characters/hermione/talk.rpy | 82 ++++++++++++++++++++++- game/scripts/characters/susan/summon.rpy | 2 +- 3 files changed, 84 insertions(+), 4 deletions(-) diff --git a/game/scripts/characters/cho/summon.rpy b/game/scripts/characters/cho/summon.rpy index ab131084..c07cf91e 100644 --- a/game/scripts/characters/cho/summon.rpy +++ b/game/scripts/characters/cho/summon.rpy @@ -47,7 +47,7 @@ label summon_cho: "Are you ready to begin the match?" "-Yes-": pass - "-no-": + "-No-": jump cho_requests jump start_hufflepuff_match @@ -59,7 +59,7 @@ label summon_cho: "Are you ready to begin the match?" "-Yes-": pass - "-no-": + "-No-": jump cho_requests jump start_slytherin_match diff --git a/game/scripts/characters/hermione/talk.rpy b/game/scripts/characters/hermione/talk.rpy index 1309bfdc..f4571059 100644 --- a/game/scripts/characters/hermione/talk.rpy +++ b/game/scripts/characters/hermione/talk.rpy @@ -199,7 +199,87 @@ label hermione_talk: label genie_change: - her "Okay, from now on I'll call you [name_genie_hermione]." ("base", "base", "base", "mid") + # NickName responses + if name_genie_hermione == "Sir": + if states.her.level < 19: + random: + her "Certainly, [name_genie_hermione]." ("base", "base", "base", "mid") + her "Yes, [name_genie_hermione]." ("base", "base", "base", "mid") + her "Of course, [name_genie_hermione]." ("base", "base", "base", "mid") + else: + her "Do I really have to be so formal, [name_genie_hermione]?" ("annoyed", "happy", "base", "mid") + her "...{w=0.4} Alright then." ("open", "happy", "base", "mid") + elif name_genie_hermione == "Dumbledore": + if states.her.level < 3: + her "You'd like me to call you...{w=0.4} [name_genie_hermione]?" ("soft", "base", "base", "mid") + gen "That's my name...{w=0.4} Right?" ("base", xpos="far_left", ypos="head") + her "Yes, but...{w=0.4} You're a teacher." ("angry", "base", "base", "mid") + gen "So?" ("base", xpos="far_left", ypos="head") + her "Well...{w=0.4} I just figured...{w=0.4} Alright then..." ("soft", "squint", "base", "R") + else: + her "Of course, [name_genie_hermione]." ("base", "base", "base", "mid") + elif name_genie_hermione == "Professor": + her "Certainly, [name_genie_hermione]." ("base", "base", "base", "mid") + elif name_genie_hermione == "Old man": + her "Old man?" ("soft", "base", "base", "mid") + gen "That's right." ("base", xpos="far_left", ypos="head") + her "Okay then, if you say so..." ("base", "base", "base", "mid") + elif name_genie_hermione == "Genie": + her "Why, [name_genie_hermione]?" ("soft", "base", "base", "mid") + gen "Because that's my--" ("base", xpos="far_left", ypos="head") + gen "*Err*..." ("angry", xpos="far_left", ypos="head") + gen "Because the main role of a headmaster is to grant the wishes of their students!" ("grin", xpos="far_left", ypos="head") + her "..." ("soft", "happy", "base", "mid") + gen "Don't you reckon it'd be a fitting nickname?" ("base", xpos="far_left", ypos="head") + her "Isn't the primary responsibility of the headmaster to prepare students for life after school and to ensure their overall well-being?" ("open", "base", "base", "mid") + gen "Well, you could say that I've ensured your well-being by granting your wish to earn points for your house..." ("base", xpos="far_left", ypos="head") + her "I guess...{w=0.4} Although--" ("disgust", "base", "base", "mid") + gen "Although I suppose compared to a genie, I could always change my mind..." ("base", xpos="far_left", ypos="head") + her "Well, since you'd never do that, then I suppose calling you [name_genie_hermione] would be fitting!" ("angry", "closed", "worried", "mid") + gen "Yes! That's what I thought!" ("base", xpos="far_left", ypos="head") + elif name_genie_hermione == "My Lord": + if states.her.level < 13: + her "*Hmm*... Well, I suppose you're technically a high-ranking member of an institution..." ("soft", "base", "base", "R") + gen "A befitting title, is it not?" ("base", xpos="far_left", ypos="head") + her "But, is it not a bit...{w=0.4} Old fashioned?" ("open", "base", "base", "mid") + gen "Just because it's old...{w=0.4} I mean...{w=0.4} Well, I like it, okay?" ("base", xpos="far_left", ypos="head") + her "I see... If you say so, [name_genie_hermione]." ("base", "base", "base", "mid") + elif states.her.level < 22: + her "If you say so, [name_genie_hermione]." ("base", "base", "base", "mid") + else: + her "Of course, [name_genie_hermione]..." ("base", "base", "base", "mid") + elif name_genie_hermione == "Darling": + if states.her.level < 13: + her "[name_genie_hermione]?!" ("angry", "base", "base", "stare") + gen "That's right... Unless, you think I'm not important to you?" ("base", xpos="far_left", ypos="head") + her "I... Well, I suppose..." ("disgust", "base", "base", "stare") + elif states.her.level < 19: + her "[name_genie_hermione]..." ("soft", "narrow", "base", "down") + her "Alright then..." ("base", "narrow", "base", "down") + else: + her "Yes, [name_genie_hermione]..." ("base", "base", "base", "mid") + elif name_genie_hermione == "Lord Voldemort": + her "You want me to call you--" ("angry", "base", "base", "stare") + her "I was under the impression that witches and wizards usually avoided mentioning that name." ("angry", "base", "base", "mid") + gen "Is that so?" ("base", xpos="far_left", ypos="head") + her "From what I've read--" ("open", "closed", "base", "mid") + gen "You shall not use the lord's name in vain?" ("base", xpos="far_left", ypos="head") + her "*Huh*?" ("disgust", "base", "base", "mid") + gen "I'm sure using it's fine, as long as you're not being disrespectful..." ("base", xpos="far_left", ypos="head") + her "I... Alright then..." ("disgust", "happy", "base", "mid") + elif name_genie_hermione == "Daddy": + if states.her.level < 22: + her "*Ehm*... Of course, [name_genie_hermione]." ("disgust", "happy", "base", "down") + else: + her "Yes, [name_genie_hermione]." ("base", "base", "base", "mid") + elif name_genie_hermione == "Master": + if states.her.level < 22: + her "[name_genie_hermione]..." ("soft", "narrow", "base", "down") + her "Alright then..." ("base", "narrow", "base", "down") + else: + her "Yes, [name_genie_hermione]..." ("base", "base", "base", "mid") + else: + her "Okay, from now on, I'll call you [name_genie_hermione]." ("base", "base", "base", "mid") jump hermione_talk label genie_change_fail: diff --git a/game/scripts/characters/susan/summon.rpy b/game/scripts/characters/susan/summon.rpy index b902a645..da182a4a 100644 --- a/game/scripts/characters/susan/summon.rpy +++ b/game/scripts/characters/susan/summon.rpy @@ -194,7 +194,7 @@ label susan_talk: gen "Being called a slut always boosts a girl's confidence!" ("base", xpos="far_left", ypos="head") sus @ cheeks blush "R-- Really?" ("soft", "happy", "sad", "mid") gen "Yes. Now... shall we try it?" ("base", xpos="far_left", ypos="head") - sus @ cheeks blush "... alright, [name_genie_susan]..." ("base", "happy", "sad", "mid") + sus @ cheeks blush "... Alright, [name_genie_susan]..." ("base", "happy", "sad", "mid") jump susan_talk "-Custom Input-": $ temp_name = renpy.input("(Please enter the name.)", name_susan_genie, ALLOWED_CHARACTERS, length=14) From f1ee0cbcd31d98e146bb5d5c0f0ebfef0484aea6 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 17 Dec 2023 17:54:19 +0000 Subject: [PATCH 044/249] Cloud fix --- game/scripts/rooms/main_room/objects/weather.rpy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/game/scripts/rooms/main_room/objects/weather.rpy b/game/scripts/rooms/main_room/objects/weather.rpy index 19827312..1657e09f 100644 --- a/game/scripts/rooms/main_room/objects/weather.rpy +++ b/game/scripts/rooms/main_room/objects/weather.rpy @@ -11,6 +11,8 @@ label weather_sound: return transform cloud_move: + animation + xpos 520 choice: ypos 150 From 27cfdd122bd222d77f9f36876c63e1c3683478bb Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 8 Jan 2024 15:10:37 +0000 Subject: [PATCH 045/249] Luna CG * First implementation for the grinding scene --- .../CG/lun_grind/lun_grind_background.webp | 3 + .../CG/lun_grind/lun_grind_body_grind.webp | 3 + .../CG/lun_grind/lun_grind_body_idle.webp | 3 + .../CG/lun_grind/lun_grind_body_spread.webp | 3 + .../lun_grind/lun_grind_cumshot_frame0.webp | 3 + .../lun_grind/lun_grind_cumshot_frame1.webp | 3 + .../lun_grind/lun_grind_cumshot_frame2.webp | 3 + .../lun_grind/lun_grind_cumshot_frame3.webp | 3 + .../lun_grind/lun_grind_cumshot_frame4.webp | 3 + .../lun_grind/lun_grind_cumshot_frame5.webp | 3 + .../lun_grind_penis_grind_frame0.webp | 3 + .../lun_grind_penis_grind_frame1.webp | 3 + game/scripts/cg/luna.rpy | 81 ++++++++++++++++++- 13 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 game/images/CG/lun_grind/lun_grind_background.webp create mode 100644 game/images/CG/lun_grind/lun_grind_body_grind.webp create mode 100644 game/images/CG/lun_grind/lun_grind_body_idle.webp create mode 100644 game/images/CG/lun_grind/lun_grind_body_spread.webp create mode 100644 game/images/CG/lun_grind/lun_grind_cumshot_frame0.webp create mode 100644 game/images/CG/lun_grind/lun_grind_cumshot_frame1.webp create mode 100644 game/images/CG/lun_grind/lun_grind_cumshot_frame2.webp create mode 100644 game/images/CG/lun_grind/lun_grind_cumshot_frame3.webp create mode 100644 game/images/CG/lun_grind/lun_grind_cumshot_frame4.webp create mode 100644 game/images/CG/lun_grind/lun_grind_cumshot_frame5.webp create mode 100644 game/images/CG/lun_grind/lun_grind_penis_grind_frame0.webp create mode 100644 game/images/CG/lun_grind/lun_grind_penis_grind_frame1.webp diff --git a/game/images/CG/lun_grind/lun_grind_background.webp b/game/images/CG/lun_grind/lun_grind_background.webp new file mode 100644 index 00000000..72ad684c --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_background.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:077dec073d73dfbee933cd719b817c0fe11ee301dcda28f982abfb88529f5aa1 +size 2185168 diff --git a/game/images/CG/lun_grind/lun_grind_body_grind.webp b/game/images/CG/lun_grind/lun_grind_body_grind.webp new file mode 100644 index 00000000..4b88bc38 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_body_grind.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4655816aad8cf5c42729d79ef39e0bb8dc6f1afbd730e8989b88b5cb2ef82a4 +size 1639340 diff --git a/game/images/CG/lun_grind/lun_grind_body_idle.webp b/game/images/CG/lun_grind/lun_grind_body_idle.webp new file mode 100644 index 00000000..61234393 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_body_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4a0a4e5e56b54fd9823150c3a8ce392614fea9446c065d5c225bb07937ec668 +size 1603018 diff --git a/game/images/CG/lun_grind/lun_grind_body_spread.webp b/game/images/CG/lun_grind/lun_grind_body_spread.webp new file mode 100644 index 00000000..e795e3da --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_body_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a00420fc333713a205602d3aba7ea112c00030d467a9e55eaa5d902f1a0af46e +size 1704798 diff --git a/game/images/CG/lun_grind/lun_grind_cumshot_frame0.webp b/game/images/CG/lun_grind/lun_grind_cumshot_frame0.webp new file mode 100644 index 00000000..f5915c19 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_cumshot_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac488bcb3be6a61408c43581576000d7a0fcabfd43c38137c3a2fdd61c44e3b3 +size 8332 diff --git a/game/images/CG/lun_grind/lun_grind_cumshot_frame1.webp b/game/images/CG/lun_grind/lun_grind_cumshot_frame1.webp new file mode 100644 index 00000000..12a712f1 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_cumshot_frame1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8dcfc4f5d7c425e1bb506fbb109518fe4c51d88ab8b81603284f8297aa2b724 +size 15338 diff --git a/game/images/CG/lun_grind/lun_grind_cumshot_frame2.webp b/game/images/CG/lun_grind/lun_grind_cumshot_frame2.webp new file mode 100644 index 00000000..c08b9d70 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_cumshot_frame2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9be879241991fa7d401bf9cb5fbd183ca7cf03a8bc3f252913d7d83e533b4643 +size 34100 diff --git a/game/images/CG/lun_grind/lun_grind_cumshot_frame3.webp b/game/images/CG/lun_grind/lun_grind_cumshot_frame3.webp new file mode 100644 index 00000000..7f848c44 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_cumshot_frame3.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49b67956cabb1f5c411df5e94a3e7410312dce0d421dea56ac08433de917bbda +size 43844 diff --git a/game/images/CG/lun_grind/lun_grind_cumshot_frame4.webp b/game/images/CG/lun_grind/lun_grind_cumshot_frame4.webp new file mode 100644 index 00000000..9b19708b --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_cumshot_frame4.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66c9ceb9d41b6ca8a3742968377e04f0354bd53c370b9d846fb2d402fefa3506 +size 58300 diff --git a/game/images/CG/lun_grind/lun_grind_cumshot_frame5.webp b/game/images/CG/lun_grind/lun_grind_cumshot_frame5.webp new file mode 100644 index 00000000..5a076e63 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_cumshot_frame5.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64a0f1f4d8418177fb76dbe379901069e760d1efd654740b4548a76855547dd5 +size 70588 diff --git a/game/images/CG/lun_grind/lun_grind_penis_grind_frame0.webp b/game/images/CG/lun_grind/lun_grind_penis_grind_frame0.webp new file mode 100644 index 00000000..6bedb6be --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_penis_grind_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50ad2d2585afe2f8dd5a992b6cc57802e8404d6fdb5807dd1061e1960cdd892b +size 99226 diff --git a/game/images/CG/lun_grind/lun_grind_penis_grind_frame1.webp b/game/images/CG/lun_grind/lun_grind_penis_grind_frame1.webp new file mode 100644 index 00000000..6e6751ca --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_penis_grind_frame1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70b7690761f42b8606c93c971656cbde942b9466fb2c0699032febb7e64e6b0f +size 100162 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index e173c392..6700a54e 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -294,8 +294,6 @@ image lun_blowjob_personal_loop_ahegao_hold_down: pause 0.10 repeat - - image lun_blowjob_personal_pose1_handjob_slow: Fixed( "lun_blowjob_personal_pose1_luna_stroke_down_shadow", @@ -333,3 +331,82 @@ image lun_blowjob_personal_pose1_handjob_fast: pause 0.2 repeat + +layeredimage lun_grind: + fit "contain" + fit_first True + + always "lun_grind_background" + + group body: + attribute idle "lun_grind_idle" default + attribute grind "lun_grind_grind" default + attribute spread "lun_grind_spread" default + attribute cumshot "lun_grind_cumshot" default + +image lun_grind_idle: + Fixed( + "lun_grind_body_idle", + "lun_grind_penis_grind_frame0") + +image lun_grind_grind: + Fixed( + "lun_grind_body_idle", + "lun_grind_penis_grind_frame0") + + pause 0.44 + + Fixed( + "lun_grind_body_grind", + "lun_grind_penis_grind_frame1") + + pause 0.44 + repeat + +image lun_grind_spread: + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_grind_frame1") + +image lun_grind_cumshot: + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_grind_frame1", + "lun_grind_cumshot_frame0") + + pause 0.12 + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_grind_frame1", + "lun_grind_cumshot_frame1") + + pause 0.12 + + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_grind_frame1", + "lun_grind_cumshot_frame2") + + pause 0.12 + + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_grind_frame1", + "lun_grind_cumshot_frame3") + + pause 0.12 + + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_grind_frame1", + "lun_grind_cumshot_frame4") + + pause 0.12 + + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_grind_frame1", + "lun_grind_cumshot_frame5") + + pause 1 + repeat From 0fac4a4247a190c072e77cb6b37e34cd34a3548b Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 8 Jan 2024 15:13:20 +0000 Subject: [PATCH 046/249] Add overlay CG default zorder --- game/scripts/options.rpy | 1 + 1 file changed, 1 insertion(+) diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index 3d1d6979..69442165 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -88,6 +88,7 @@ define config.tag_zorder = { "xray_overlay": -1, "xray_mask": -1, "cg": 17, + "cg2": 18, } # Saving and loading From a41d61ebb754b88a4420f2a8c6cf3071931baea9 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Thu, 18 Jan 2024 21:36:32 +0100 Subject: [PATCH 047/249] Luna inspect body CG prep * Prepared writing file for CG additions. * Added Tier 4 Inspect body writing. --- .../luna/events/favors/inspect_her_body.rpy | 945 +++++++++++------- 1 file changed, 588 insertions(+), 357 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index e2bd6b7a..d0d725b5 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -132,7 +132,7 @@ label ll_pf_inspect_T2_E1_intro: lun "[name_genie_luna]?" ("open", "base", "raised", "mid") gen "What?!" ("angry", xpos="far_left", ypos="head") gen "Oh yes...{w=0.3} Your tits!" ("grin", xpos="far_left", ypos="head") - gen "It appears the Spurts gather around sensitive areas..." ("base", xpos="far_left", ypos="head") + gen "It appears the spurts gather around sensitive areas..." ("base", xpos="far_left", ypos="head") gen "So with that in mind..." ("base", xpos="far_left", ypos="head") gen "Would you say that your breasts fit that description, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") lun "*Hmm*...{w=0.4} Well, my nipples do get a bit hard and sensitive whenever they bothered me previously..." ("open", "narrow", "base", "downL") @@ -153,7 +153,7 @@ label ll_pf_inspect_T2_E1_intro: nar "You keep stroking your cock, thinking about what you'd do to those nipples..." lun @ cheeks blush "Wait...{w=0.4} So I've been doing it wrong the whole time!?" ("angry", "base", "base", "mid") - gen "Yes...{w=0.4} *Nghh*...{w=0.4} It appears what you've been feeling is the Spurts trying to get out, you see..." ("base", xpos="far_left", ypos="head") + gen "Yes...{w=0.4} *Nghh*...{w=0.4} It appears what you've been feeling is the spurts trying to get out, you see..." ("base", xpos="far_left", ypos="head") lun "Ooooh..." ("open", "base", "base", "stare") lun "That makes so much sense!" ("grin", "wide", "base", "mid") lun @ cheeks blush "I can't believe I didn't think of that before!" ("angry", "base", "base", "down") @@ -276,7 +276,7 @@ label ll_pf_inspect_T2_E1_intro: nar "Luna starts grinding her legs together uncomfortably..." - gen "Well perhaps--" ("base", xpos="far_left", ypos="head") + gen "Well, perhaps--" ("base", xpos="far_left", ypos="head") lun @ cheeks blush "I know!" ("smile", "wide", "base", "mid") lun @ cheeks blush "[name_genie_luna]...{w=0.2} Why don't you teach me?" ("smile", "base", "base", "mid") gen "..." ("grin", xpos="far_left", ypos="head") @@ -455,118 +455,109 @@ label ll_pf_inspect_T2_E2_intro: show screen blkfade with d5 - nar "Luna rushes up to your desk, and without any further instructions, plants her cheeks firmly in your lap, waiting for your next move expectantly." + nar "You get out of your clothes, as Luna rushes up to you..." + nar "Without any further instructions, she plants her cheeks firmly in your lap, waiting for your next move expectantly." - #Fades back to Luna in your lap - call lun_chibi_scene("inspect_idle_naked") + #TODO Luna CG in Genie lap hide screen blkfade with d5 nar "Before moving on, you can't help but pick up the sounds of her shallow breaths and the unusual warmth, despite her current state of undress, coming off her body." - nar "You feel your cock harden slightly beneath your robes, almost at the verge of pressing up in between the girl's cheeks." - gen "*Ahem*...{w=0.4} So...{w} The sensitive areas we discussed previously." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Mmm*..." ("soft", "closed", "low", "mid", xpos="mid", ypos="base", flip=True, trans=dissolve) - gen "[name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "(His breath on the back of my neck... It's making me all tingly again...)" ("soft", "closed", "worried", "mid") + nar "You feel your cock twitch slightly, as if signalling your eagerness to let it press up in between the girl's cheeks." + gen "*Ahem*...{w=0.4} So...{w} The sensitive areas we discussed previously." + lun "*Mmm*..." + gen "[name_luna_genie]?" + lun "(His breath on the back of my neck... It's making me all tingly again...)" gen "Luna?" ("base", xpos="far_left", ypos="head") - gen "I guess we'll start with your breasts then..." ("grin", xpos="far_left", ypos="head") + gen "I guess we'll start with your breasts then..." - call lun_chibi_scene("inspect_grope_breasts_naked") - with d3 - pause 2 - call lun_chibi_scene("inspect_idle_naked") - with d3 + #Pose - lun @ cheeks blush "Ooooh!" ("open", "wide", "base", "stare") + lun "Ooooh!" nar "You give Luna's breasts a light squeeze, which causes a shudder to go down her spine..." - gen "How did that feel?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ehm*..." ("soft", "narrow", "base", "down") - gen "Good?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "I...{w=0.4} Yes...{w=0.4} I wasn't sure if good was the right word--" ("mad", "base", "base", "down") - gen "Excellent...{w=0.4} Then focus on that feeling..." ("base", xpos="far_left", ypos="head") + gen "How did that feel?" + lun "*Ehm*..." + gen "Good?" + lun "I...{w=0.4} Yes...{w=0.4} I wasn't sure if good was the right word--" + gen "Excellent...{w=0.4} Then focus on that feeling..." - call lun_chibi_scene("inspect_grope_breasts_naked") + #Pose nar "You begin kneading Luna's breasts... Her nipples firmly locked between your fingers." - lun @ cheeks blush "*Ah*..." ("open", "happyCl", "low", "mid") - lun @ cheeks blush "[name_genie_luna]...{w=0.4} I think it's working...{w=0.4} I feel a lot more sensitive than before..." ("soft", "happyCl", "base", "mid") - gen "Good...{w=0.4} That means the spurts are building up." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ah*...{w=0.4} Finally...{w=0.4} Keep going, [name_genie_luna]..." ("angry", "happyCl", "base", "stare") - - nar "As you continue, Luna tightens her thighs around your legs, and subconsciously pushes her ass back towards your abdomen." - nar "Her cheeks lightly grace your hardening cock, and as they do, the tip of your cock manages to wiggle its way out of your robes." - - lun @ cheeks blush "*Mmm*...{w=0.4} [name_genie_luna]..." ("base", "closed", "base", "mid") - gen "You're doing a great job [name_luna_genie]..." ("base", xpos="far_left", ypos="head") - gen "Make sure to keep focusing on that feeling." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "But [name_genie_luna], I think I feel the wrackspurts--" ("mad", "closed", "annoyed", "mid") + lun "*Ah*..." + lun "[name_genie_luna]...{w=0.4} I think it's working...{w=0.4} I feel a lot more sensitive than before..." + gen "Good...{w=0.4} That means the spurts are building up." + lun "*Ah*...{w=0.4} Finally...{w=0.4} Keep going, [name_genie_luna]..." nar "You stop your kneading and give her another squeeze, just slightly harder than previously." - lun @ cheeks blush "*Ah*..." ("grin", "closed", "base", "L") + #Ass shot Overlay, cock against butthole - nar "And as you do, Luna clenches her butt-cheeks around the bottom of your shaft, the tip of your penis now sticking out of your robes right above her tailbone." + nar "Luna tightens her thighs around your legs, and subconsciously pushes her ass back towards your abdomen." + nar "Her cheeks lightly grace your hardening cock, and as they do, it manages to wiggle its way to rest against her butthole." - lun @ cheeks blush "I--" ("soft", "closed", "base", "mid") + lun "*Mmm*...{w=0.4} [name_genie_luna]..." + gen "You're doing a great job [name_luna_genie]..." + gen "Make sure to keep focusing on that feeling." + lun "[name_genie_luna], I think I feel something--" - nar "You run your fingers along the sides of her breasts, lightly brushing against her." + lun "*Ah*..." - lun @ cheeks blush "*Ah*...{w=0.4} Yes, it definitely feels a lot more intense than...{w=0.4} *Mmm*..." ("open", "closed", "base", "mid") - lun @ cheeks blush "But I'm not feeling that--{w=0.2} *Ah*...{w=0.4} Relief you mentioned..." ("mad", "closed", "base", "mid") - lun @ cheeks blush "My body still feels as if--{w=0.2} *Ah*...{w=0.4} As if I'm on fire, [name_genie_luna]..." ("angry", "happyCl", "base", "mid") + nar "As Luna lets out another moan, she puts more of her weight onto you, heightening the pleasurable sensation at the tip of your cock." - nar "Luna gives up to the sensation, and starts rubbing her ass against you... The tip of your cock sliding between her ass-cheeks with each thrust." + gen "*Ngh*--" - gen "(If this keeps going, then this bitch in heat will make me bust before she does...)" ("angry", xpos="far_left", ypos="head") - lun @ cheeks blush "I think something is happening...{w=0.4} I feel woozy, [name_genie_luna]..." ("angry", "happyCl", "low", "mid") + nar "Just as you start feeling yourself getting engulfed, Luna starts rubbing her ass against you, causing your cock to slide out and rest against her back." - call lun_chibi_scene("inspect_lean_grope_breasts_naked") - nar "Luna slumps forward slightly...{w=0.4} Her ass-cheeks, now fully embracing the bottom of your shaft." + lun "*Ah*...{w=0.4} Yes, I'm definitely feeling something...{w=0.4} *Mmm*..." + lun "But I'm not sensing that--{w=0.2} *Ah*...{w=0.4} Relief you mentioned..." + lun "My body still feels as if--{w=0.2} *Ah*...{w=0.4} As if I'm on fire, [name_genie_luna]..." - lun @ cheeks blush "(Is...{w=0.4} Is that his...)" ("clench", "narrow", "base", "downL") + gen "(If this keeps going, then this bitch in heat will make me bust before she does...)" + lun "I think something is happening...{w=0.4} I feel woozy, [name_genie_luna]..." - call lun_chibi_scene("inspect_grope_breasts_naked") - nar "Arching her back up again, Luna's cheeks slide over your cock once more, which is enough to bring you over the edge." + nar "The sound of Luna's voice starts to fade away as her rubbing brings you closer and closer to the edge..." - gen "*ARGH*!!!" ("angry", xpos="far_left", ypos="head") - lun @ cheeks blush "" ("clench", "narrow", "base", "stare") #surprised - pause .5 - gen "(You've done it now slut!)" ("angry", xpos="far_left", ypos="head") - gen "(Take this!)" ("angry", xpos="far_left", ypos="head") + lun "*Ah*... [name_genie_luna]... Something is--" - call cum_block + nar "Luna's cheeks pushes against your cock once more, which is enough to bring you over the edge." + + gen "*ARGH*!!!" + gen "(You've done it now slut!)" + gen "(Take this!)" + + #Pose Genie cums - call lun_chibi_scene("inspect_idle_naked") nar "With a rush of pleasure, you unload a torrent of semen across Lunas back, completely covering it with your seed." - lun @ cheeks blush "(What's he--)" ("clench", "narrow", "base", "R") #Pleasure/confused + lun "(What's he--)" - gen "*Ah*!!!" ("angry", xpos="far_left", ypos="head") - call cum_block + gen "*Ah*..." nar "And with a soft groan, you let out a final spurt, emptying your entire sack on the girl..." - nar "Your semen, which reached all the way up onto her hair, slowly begins sliding down her back." + nar "Returning to your senses, you watch as your semen slowly begins sliding down her crack." - gen "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "[name_genie_luna], I think...{w=0.4} I feel a bit faint..." ("mad", "narrow", "low", "down") - gen "*Ah*...{w=0.4} No, you just need to--{w=0.2} *Ah*...{w=0.4} To push through--" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "No [name_genie_luna]...{w=0.4} It's as if a chill is going down my spine...{w=0.4} It doesn't feel right." ("clench", "wide", "base", "stare") - lun @ cheeks blush "It's nowhere near the feeling of relief that you described..." ("disgust", "narrow", "base", "stare") - gen "*Err*...{w=0.4} Well I--" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "I think I need to--" ("disgust", "narrow", "base", "down") - gen "No, wait!" ("angry", xpos="far_left", ypos="head") + #Back to Base CG or start blkfade here + + gen "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." + lun "[name_genie_luna], I think...{w=0.4} I feel a bit faint..." + gen "*Ah*...{w=0.4} No, you just need to--{w=0.2} *Ah*...{w=0.4} To push through--" + lun "No [name_genie_luna]...{w=0.4} It's as if a chill is going down my spine...{w=0.4} It doesn't feel right." + lun "It's nowhere near the feeling of relief that you described..." + gen "*Err*...{w=0.4} Well I--" + lun "I think I need to--" + gen "No, wait!" show screen blkfade with d5 - nar "Luna, now shaking slightly, stands up and makes her way to the front of your desk, leaving a noticeable wet streak across your robes." - nar "She begins dressing herself, keeping her eyes on the floor the entire time." + nar "Luna, now shaking slightly, stands up and makes her way to the front of your desk, leaving a noticeable wet streak across your legs." + nar "You both begin begin dressing yourselves, and you can't help but notice that Luna is keeping her eyes on the floor the entire time." $ luna.wear("all") hide luna_main call lun_chibi("stand", "desk", "base") - call lun_chibi_scene("reset") hide screen blkfade with d5 #Fade back to Luna in front of your desk. @@ -576,6 +567,7 @@ label ll_pf_inspect_T2_E2_intro: nar "Luna shuffles uncomfortably and then glances up at you, seemingly unable to find what to say..." gen "(Good job me...{w=0.4} I have royally fucked it up this time.)" ("base", xpos="far_left", ypos="head") + gen "(Of course, me of all people would blow my load too soon!)" ("base", xpos="far_left", ypos="head") gen "Look, accidents happen to the best of--" ("base", xpos="far_left", ypos="head") lun "I'm sorry [name_genie_luna]!" ("angry", "narrow", "worried", "mid", xpos="base", ypos="base", flip=False, trans=dissolve) gen "..." ("angry", xpos="far_left", ypos="head") @@ -662,252 +654,226 @@ label ll_pf_inspect_T2_E3_intro: show screen blkfade with d5 - nar "Luna absent-mindedly walks up and scoots in front of you." + nar "As you disrobe, Luna absent-mindedly walks up and scoots in front of you." - if luna.is_any_worn("top", "bottom", "robe"): - call lun_chibi_scene("inspect_idle") - else: - call lun_chibi_scene("inspect_idle_naked") hide screen blkfade with d5 - gen "*Err*...{w=0.3} I think you've forgotten something [name_luna_genie]." ("base", xpos="far_left", ypos="head") - lun "*Huh*?" ("soft", "narrow", "base", "mid", xpos="mid", ypos="base", flip=True, trans=dissolve) + #TODO Luna on lap CG, either check clothing status or not, depending what works best, (she will always wear underwear at this stage.) - if luna.is_any_worn("top", "bottom", "robe"): - gen "Your clothes..." ("base", xpos="far_left", ypos="head") + gen "*Err*...{w=0.3} I think you've forgotten something, [name_luna_genie]." + lun "*Huh*?" + + if luna.is_any_worn("top", "bottom", "robe", "stockings"): + gen "Your clothes..." else: - gen "Your underwear..." ("base", xpos="far_left", ypos="head") + gen "Your underwear..." - lun "Oh...{w=0.3} Right..." ("angry", "narrow", "base", "down") - gen "You seem awfully distracted today." ("base", xpos="far_left", ypos="head") - lun "*Ehm*...{w=0.3} To tell you the truth...{w=0.3} I'm a bit worried that it's not going to work again, [name_genie_luna]." ("open", "narrow", "base", "downL") - gen "Now, I wouldn't worry about that...{w=0.3} I'm confident it will work this time." ("base", xpos="far_left", ypos="head") - lun "But how can you be so sure, [name_genie_luna]?" ("mad", "narrow", "base", "mid") - lun "Maybe it's different for us women, maybe we aren't able to expel the wrackspurts like you men do." ("angry", "narrow", "base", "mid") - gen "I'm quite certain that the process isn't too dissimilar...{w=0.3} I'm confident that with my help--" ("base", xpos="far_left", ypos="head") - lun "But {i}how{/i} do you know, [name_genie_luna]?" ("angry", "narrow", "base", "mid") - gen "Just trust me on this one [name_luna_genie]." ("base", xpos="far_left", ypos="head") - lun "*Hmm*..." ("upset", "narrow", "base", "downL") - gen "(She doesn't seem convinced.)" ("base", xpos="far_left", ypos="head") - gen "(Oh, wait...{w=0.3} I know!)" ("grin", xpos="far_left", ypos="head") + lun "Oh...{w=0.3} Right..." + gen "You seem awfully distracted today." + lun "*Ehm*...{w=0.3} To tell you the truth...{w=0.3} I'm a bit worried that it's not going to work again, [name_genie_luna]." + gen "Now, I wouldn't worry about that...{w=0.3} I'm confident it will work this time." + lun "But how can you be so sure, [name_genie_luna]?" + lun "Maybe it's different for us women, maybe we aren't able to expel the wrackspurts like you men do." + gen "I'm quite certain that the process isn't too dissimilar...{w=0.3} I'm confident that with my help--" + lun "But {i}how{/i} do you know, [name_genie_luna]?" + gen "Just trust me on this one [name_luna_genie]." + lun "*Hmm*..." + gen "(She doesn't seem convinced.)" + gen "(Oh, wait...{w=0.3} I know!)" - gen "*Ahem*...{w=0.3} [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun "Yes [name_genie_luna]?" ("upset", "base", "base", "mid") - gen "Tell me...{w=0.3} How were those spratters described in your father's paper again?" ("base", xpos="far_left", ypos="head") - lun "Let me think.{w=0.5} They're invisible creatures that enter inside your ears and make your brain go all fuzzy." ("angry", "base", "base", "mid") - gen "And...{w=0.3} Wasn't there an instruction on how to expel them?" ("base", xpos="far_left", ypos="head") - lun "Why yes, by thinking positively..." ("soft", "narrow", "base", "mid") - lun "But that's not working, [name_genie_luna]...{w=0.3} It isn't my brain that's getting all fuzzy because of them..." ("clench", "narrow", "base", "mid") - gen "Then tell me...{w=0.3} What else have we learned about them thus far?" ("base", xpos="far_left", ypos="head") - lun "*Uhm*..." ("upset", "base", "base", "downR") - lun "We have learned that you can lure them out to a particularly sensitive body area, through positive thoughts. Then, you need to rub that spot energetically to finally expel them..." ("angry", "narrow", "base", "down") - lun "But we have already tried that [name_genie_luna], and it didn't work!" ("annoyed", "narrow", "base", "R") - gen "I managed to do it by myself...{w=0.3} So you must have done something wrong..." ("base", xpos="far_left", ypos="head") - lun "*Hmm*..." ("upset", "narrow", "base", "downL") - gen "(Putting the pieces together...{w=0.3} And...)" ("base", xpos="far_left", ypos="head") - lun "Oh! I know!" ("smile", "wide", "base", "stare") - lun "I was possibly thinking too much about the wrackspurts, and how glad I'd be to finally get rid of them." ("mad", "wide", "base", "mid") - lun "What I should have done instead was project positive thoughts onto the area itself!" ("smile", "narrow", "base", "down") - gen "Exactly!" ("grin", xpos="far_left", ypos="head") - gen "Ignore intrusive thoughts that may pop into your head, and just focus on your body, on how it feels..." ("base", xpos="far_left", ypos="head") - gen "Let the sensations engulf you completely, until your mind is clear..." ("base", xpos="far_left", ypos="head") - gen "Leave the rest to the fate..." ("base", xpos="far_left", ypos="head") - lun "That's smart, [name_genie_luna], maybe I should try that." ("crooked_smile", "narrow", "base", "mid") - gen "Now then... Ready for another try?" ("base", xpos="far_left", ypos="head") - lun "Yes, I'm ready [name_genie_luna]!" ("base", "base", "base", "mid") + gen "*Ahem*...{w=0.3} [name_luna_genie]?" + lun "Yes [name_genie_luna]?" + gen "Tell me...{w=0.3} How were those spratters described in your father's paper again?" + lun "Let me think.{w=0.5} They're invisible creatures that enter inside your ears and make your brain go all fuzzy." + gen "And...{w=0.3} Wasn't there an instruction on how to expel them?" + lun "Why yes, by thinking positively..." + lun "But that's not working, [name_genie_luna]...{w=0.3} It isn't my brain that's getting all fuzzy because of them..." + gen "Then tell me...{w=0.3} What else have we learned about them thus far?" + lun "*Uhm*..." + lun "We have learned that you can lure them out to a particularly sensitive body area, through positive thoughts. Then, you need to rub that spot energetically to finally expel them..." + lun "But we have already tried that [name_genie_luna], and it didn't work!" + gen "I managed to do it by myself...{w=0.3} So you must have done something wrong..." + lun "*Hmm*..." + gen "(Putting the pieces together...{w=0.3} And...)" + lun "Oh! I know!" + lun "I was possibly thinking too much about the wrackspurts, and how glad I'd be to finally get rid of them." + lun "What I should have done instead was project positive thoughts onto the area itself!" + gen "Exactly!" + gen "Ignore intrusive thoughts that may pop into your head, and just focus on your body, on how it feels..." + gen "Let the sensations engulf you completely, until your mind is clear..." + gen "Leave the rest to the fate..." + lun "That's smart, [name_genie_luna], maybe I should try that." + gen "Now then... Ready for another try?" + lun "Yes, I'm ready [name_genie_luna]!" - if luna.is_any_worn("robe", "top", "bottom", "accessory"): - gen "Let's get you out of those clothes first, shall we..." ("base", xpos="far_left", ypos="head") + if luna.is_any_worn("robe", "top", "bottom", "stockings"): + gen "Let's get you out of those clothes first, shall we..." else: - gen "Now, let me help you get you out of those pesky undergarments..." ("base", xpos="far_left", ypos="head") + gen "Now, let me help you get you out of those pesky undergarments..." - #Fade to black - show screen blkfade - with d5 - if luna.is_any_worn("robe", "top", "bottom", "accessory"): + if luna.is_any_worn("robe", "top", "bottom", "stockings"): nar "Luna shuffles around for a bit, attempting to get out of her clothing. The limited space between you and the desk is making it somewhat difficult." - lun "It's a bit cramped in here, [name_genie_luna]...{w=0.4} Should I scoot out and--" ("base", "base", "base", "mid") + lun "It's a bit cramped in here, [name_genie_luna]...{w=0.4} Should I scoot out and--" gen "No, that won't be necessary, [name_luna_genie]...{w=0.4} Let me help you." - if luna.is_worn("robe"): - nar "You unclasp Luna's outerwear and let it drop to the ground behind her." + #if luna.is_worn("robe"): + #nar "You unclasp Luna's outerwear and let it drop to the ground." if luna.is_worn("top"): nar "You swiftly pull Luna's top over her head...{w=0.4} Her breasts bounce a little, then settle still as the offending piece of clothing is taken off." play sound "sounds/boing02.ogg" pause .4 - lun "Whoa!" ("base", "base", "base", "mid") + lun "Whoa!" #Luna always wears underwear at this stage nar "You unhook Luna's bra with ease, and let it drop to the floor, right in front of her." nar "She glances back at you, her cheeks flushed, and a look of surprise painted across her face, caused by your unusual dexterity." - lun "Have you done this before, [name_genie_luna]?" ("base", "base", "base", "mid") - gen "Let's not make this about me, [name_luna_genie]. Free your mind of intrusive thoughts." ("base", xpos="far_left", ypos="head") - lun "Okay, I'll try." ("soft", "base", "base", "mid") + lun "Have you done this before, [name_genie_luna]?" + gen "Let's not make this about me, [name_luna_genie]. Free your mind of intrusive thoughts." + lun "Okay, I'll try." if luna.is_worn("bottom", "panties"): nar "Noticing Luna's ever-increasing excitement, you put your hands on either side of her hips, and pull both fabrics down, in one singular motion..." $ luna.strip("bottom", "panties") - elif luna.is_worn("bottom"): - nar "Noticing Luna's ever-increasing excitement, you put your hands on either side of her hips, and pull the fabric down swiftly..." elif luna.is_worn("panties"): nar "You ogle at Luna's underwear, before swiftly pulling them down right to her ankles..." - lun @ cheeks blush "" ("clench", "narrow", "base", "downR") - $ luna.strip("clothes") - pause .2 - hide screen blkfade + lun "[name_genie_luna]!" + gen "Yes, [name_luna_genie]?" + lun "*Ehm*...{w=0.4} Never mind..." + gen "Okay. In that case, let the exorcism commence--." + gen "--*Err*, I mean the expulsion." + lun "..." - #Fade back to Naked Luna in front of genie - call lun_chibi_scene("inspect_idle_naked") - with d5 - - lun @ cheeks blush "[name_genie_luna]!" ("clench", "narrow", "base", "downR") - gen "Yes, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ehm*...{w=0.4} Never mind..." ("soft", "narrow", "base", "down") - gen "Okay. In that case, let the exorcism commence--." ("base", xpos="far_left", ypos="head") - gen "--*Err*, I mean the expulsion." ("angry", xpos="far_left", ypos="head") - lun @ cheeks blush "..." ("base", "narrow", "base", "down") #blush - - call lun_chibi_scene("inspect_grope_breasts_naked") nar "Without hesitation, you reach forward and grab and start fondling Luna's breasts." nar "As she feels your touch, any doubts in Luna's mind are washed away, letting the sensations overtake her." - lun @ cheeks blush "*Ah*...{w=0.4} [name_genie_luna]..." ("soft", "closed", "base", "mid") + lun "*Ah*...{w=0.4} [name_genie_luna]..." nar "You move your attention towards Luna's sensitive areas... Gently sliding your fingers across her nipples, then across the sides of her breasts and back again." - lun @ cheeks blush "*Mmm*..." ("normal", "closed", "base", "mid") + lun "*Mmm*..." nar "You continue massaging Luna's breasts and the silence is only broken by her moans as your fingers pass across her nipples." - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} *Mmmm*..." ("soft", "closed", "base", "mid") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Mmmm*..." nar "Luna, getting more and more excited by your touch, pushes her ass towards you once more." - - call lun_chibi_scene("inspect_lean_grope_breasts_naked") nar "As it graces your cock, you struggle not to get hard..." - gen "(Nnnn-{w=0.2} Not today!)" ("angry", xpos="far_left", ypos="head") + gen "(Nnnn-{w=0.2} Not today!)" - lun @ cheeks blush "" ("normal", "closed", "base", "mid") nar "Determined to keep your composure this time, you move your gaze down to see Luna rubbing her thighs together." - gen "(Well then...{w=0.4} Looks like she's ready.)" ("grin", xpos="far_left", ypos="head") + gen "(Well then...{w=0.4} Looks like she's ready.)" - call lun_chibi_scene("inspect_lean_idle_naked") - lun @ cheeks blush "" ("soft", "narrow", "base", "R") nar "As you remove your hands from Luna's breasts, she opens her eyes, confused as to why you stopped." nar "Without saying anything, you place your hand across her pussy, and give it a gentle rub." - lun @ cheeks blush "Ooooh!" ("crooked_smile", "wide", "base", "stare") + lun "Ooooh!" - call lun_chibi_scene("inspect_lean_grope_vagina_naked") nar "A shudder passes through Luna's body from your initial touch." nar "You then begin moving your forefinger up and down her slit with increasing ease, as her pussy becomes wetter and wetter." - lun @ cheeks blush "*Ah*...{w=0.4} [name_genie_luna]...{w=0.4} This feels a lot different to you--{w=0.2} *Ah*...{w=0.4} Touching my breasts..." ("open", "wink", "base", "R") + lun "*Ah*...{w=0.4} [name_genie_luna]...{w=0.4} This feels a lot different to you--{w=0.2} *Ah*...{w=0.4} Touching my breasts..." gen "(You ain't seen nothing yet...)" ("base", xpos="far_left", ypos="head") nar "As you continue rubbing her, the excitement in her voice gnaws at your steadily decreasing patience..." - lun @ cheeks blush "*Ah*...{w=0.3} *Ah*...{w=0.3} *Ah*..." ("soft", "narrow", "base", "up") - gen "Ready, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "" ("soft", "narrow", "base", "up") #pleasure - pause .8 - gen "[name_luna_genie]?" ("base", xpos="far_left", ypos="head") - gen "..." ("base", xpos="far_left", ypos="head") - gen "(Fuck it...)" ("base", xpos="far_left", ypos="head") + lun "*Ah*...{w=0.3} *Ah*...{w=0.3} *Ah*..." + gen "Ready, [name_luna_genie]?" + + gen "[name_luna_genie]?" + gen "..." + gen "(Fuck it...)" play sound "sounds/slick_02.ogg" with kissiris pause .5 - call lun_chibi_scene("inspect_lean_idle_naked") - lun @ cheeks blush "..." ("scream", "wide", "base", "stare") #wide eyed - lun @ cheeks blush "[name_genie_luna]!" ("scream", "base", "base", "mid") + lun "..." + lun "[name_genie_luna]!" nar "As you penetrate Luna with your index finger, she clenches her legs together in surprise." - lun @ cheeks blush "[name_genie_luna]...{w=0.4} Your finger slipped inside of me..." ("clench", "wide", "base", "mid") - gen "I know..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "What do you--" ("clench", "narrow", "base", "mid") + lun "[name_genie_luna]...{w=0.4} Your finger slipped inside of me..." + gen "I know..." + lun "What do you--" - call lun_chibi_scene("inspect_lean_grope_vagina_naked") play background "sounds/slickloop.ogg" fadein 2 - nar "You begin moving your finger inside of Luna, slowly increasing the pace, her words soon replaced by the sounds of increasing pleasure." + nar "You begin moving your finger inside of Luna, slowly increasing the pace, her words are soon replaced by the sounds of increasing pleasure." - lun @ cheeks blush "*Ah*...{w=0.4} My word...{w=0.3} *Ah*...{w=0.4} I never...{w=0.3} *Ah*..." ("soft", "narrow", "base", "stare") - gen "(*Hmm*...{w=0.4} Perhaps I shouldn't go so hard on her...)" ("base", xpos="far_left", ypos="head") + lun "*Ah*...{w=0.4} My word...{w=0.3} *Ah*...{w=0.4} I never...{w=0.3} *Ah*..." + gen "(*Hmm*...{w=0.4} Perhaps I shouldn't go so hard on her...)" stop background fadeout 2 nar "You stop your movement for a second to give Luna some breathing room, but as you do, she starts moving her hips back and forth on her own." - gen "(Never mind, then...)" ("grin", xpos="far_left", ypos="head") - gen "*Tsk*... Such impatience with the youths these days..." ("grin", xpos="far_left", ypos="head") - lun @ cheeks blush "..." ("base", "narrow", "base", "up") #Looks back at you - gen "Very well [name_luna_genie]..." ("base", xpos="far_left", ypos="head") - gen "In that case I won't hold back on you." ("base", xpos="far_left", ypos="head") + gen "(Never mind, then...)" + gen "*Tsk*... Such impatience with the youths these days..." + lun "..." + gen "Very well [name_luna_genie]..." + gen "In that case, I won't hold back on you." play sound "sounds/slick_02.ogg" with kissiris - lun @ cheeks blush "*Ah*!!!" ("scream", "wide", "base", "stare") #Wide eyed + lun "*Ah*!!!" play background "sounds/slickloopfast.ogg" nar "You insert another finger and begin pumping them in and out, the walls of her pussy clinging onto your fingers with each insertion." - lun @ cheeks blush "*Ah*...{w=0.3} *Ah*...{w=0.3} *Ah*..." ("open", "happyCl", "base", "stare") + lun "*Ah*...{w=0.3} *Ah*...{w=0.3} *Ah*..." nar "Luna, now completely lost in pleasure, begins shaking slightly, prompting you to pick up the pace even further." play background "sounds/slickloopveryfast.ogg" - lun @ cheeks blush "[name_genie_luna]...{w=0.3} This...{w=0.3} is...{w=0.3} amazing...{w=0.3} I... {w=0.3} never...{w=0.3} thought--" ("soft", "happyCl", "base", "stare") - gen "Then don't...{w=0.3} Focus on the feeling!" ("angry", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ah*...{w=0.3} Yes...{w=0.3} [name_genie_luna]." ("soft", "closed", "base", "stare") - lun @ cheeks blush "*N-n-ngh*!!!" ("grin", "closed", "base", "mid") + lun "[name_genie_luna]...{w=0.3} This...{w=0.3} is...{w=0.3} amazing...{w=0.3} I... {w=0.3} never...{w=0.3} thought--" + gen "Then don't...{w=0.3} Focus on the feeling!" + lun "*Ah*...{w=0.3} Yes...{w=0.3} [name_genie_luna]." + lun "*N-n-ngh*!!!" nar "Not showing her any mercy, you continue pumping your fingers in and out of her rapidly." - lun @ cheeks blush "*Ah*...{w=0.5} [name_genie_luna]...{w=0.4} I think this is it!" ("mad", "narrow", "base", "stare") - lun @ cheeks blush "I'm...{w=0.3} *Ah*...{w=0.3} I'm--" ("open_tongue", "narrow", "base", "up") - gen "Yes girl, let all of it out!" ("angry", xpos="far_left", ypos="head") + lun "*Ah*...{w=0.5} [name_genie_luna]...{w=0.4} I think this is it!" + lun "I'm...{w=0.3} *Ah*...{w=0.3} I'm--" + gen "Yes girl, let all of it out!" nar "You insert your fingers one last time... As Luna's body finally gives in, her entire weight drops onto your hand and your fingers penetrates her down to the base." - lun @ cheeks blush "I'm cumming!!" ("mad", "base", "base", "ahegao") - lun @ cheeks blush "*Nngh*...{w=0.8}{nw}" ("clench", "base", "base", "ahegao") + lun "I'm cumming!!" + lun "*Nngh*...{w=0.8}{nw}" with kissiris stop background fadeout 2 play sound "sounds/slick_01.ogg" - lun @ cheeks blush "*Nngh*...{fast} *Ah*!" ("open_wide_tongue", "narrow", "base", "ahegao") + lun @ cheeks blush "*Nngh*...{fast} *Ah*!" - - call lun_chibi_scene("inspect_lean_idle_naked") - gen "(By the great--)" ("angry", xpos="far_left", ypos="head") + gen "(By the great--)" with kissiris play sound "sounds/slick_01.ogg" - lun @ cheeks blush "*AAAAAH*!!!" ("crooked_smile", "narrow", "base", "ahegao") + lun "*AAAAAH*!!!" nar "Your fingers now locked inside of Luna, you feel her entire body spasms as wave after wave of pleasure passes through her body." - lun @ cheeks blush "Wow...{w=0.5} That was--{w=0.8}{nw}" ("crooked_smile", "narrow", "base", "stare") + lun "Wow...{w=0.5} That was--{w=0.8}{nw}" with kissiris play sound "sounds/slick_01.ogg" - lun @ cheeks blush "Wow... That was--{fast} *Ah*..." ("open", "narrow", "base", "ahegao") + lun "Wow... That was--{fast} *Ah*..." - lun @ cheeks blush "*Mmm*...{w=0.4} You were right...{w=0.3} That...{w=0.3} That relief..." ("soft", "narrow", "base", "up") + lun "*Mmm*...{w=0.4} You were right...{w=0.3} That...{w=0.3} That relief..." show screen blkfade with d5 + #TODO hide CG + nar "Luna attempts to stand up, but her legs give way, and she slumps forward onto your desk, completely limp." nar "Luckily her grip around your fingers finally loosens enough for you to free yourself, and you swiftly pull them out, which causes her to shudder once more." @@ -923,7 +889,6 @@ label ll_pf_inspect_T2_E3_intro: centered "{size=+7}{color=#cbcbcb}Some time later...{/color}{/size}" call lun_chibi("stand", "desk", "base") - call lun_chibi_scene("reset") hide screen blkfade with d5 @@ -1000,104 +965,100 @@ label ll_pf_inspect_T2_E4_repeat: $ luna.strip("clothes") - #Fades back to Luna in your lap - call lun_chibi_scene("inspect_idle_naked") + #TODO Fades back to Luna in your lap CG hide screen blkfade with d5 - gen "Now then..." ("base", xpos="far_left", ypos="head") - gen "Time to get these spratters worked up..." ("base", xpos="far_left", ypos="head") + gen "Now then..." + gen "Time to get these spratters worked up..." - call lun_chibi_scene("inspect_grope_breasts_naked") nar "You grab onto Luna's breasts and begin massaging them." - lun "*Eeek*!!" ("clench", "wide", "base", "stare", xpos="mid", ypos="base", flip=True, trans=dissolve) - gen "[name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun "Oh...{w=0.2} Sorry, [name_genie_luna]!" ("angry", "happyCl", "base", "mid") - lun "Your hands are a bit cold." ("angry", "narrow", "base", "stare") - gen "Then let's get them warmed up, shall we?" ("base", xpos="far_left", ypos="head") + lun "*Eeek*!!" + gen "[name_luna_genie]?" + lun "Oh...{w=0.2} Sorry, [name_genie_luna]!" + lun "Your hands are a bit cold." + gen "Then let's get them warmed up, shall we?" nar "You spread your fingers apart and drag them across the sides of Luna's nipples, increasing your grip around them with each motion." - lun @ cheeks blush "*Ah*..." ("soft", "closed", "base", "mid") - gen "How's this, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - gen "Feeling any build up yet?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Mmm*...{w=0.4} Yes, [name_genie_luna]..." ("open", "closed", "base", "mid") - gen "Good..." ("base", xpos="far_left", ypos="head") + lun "*Ah*..." + gen "How's this, [name_luna_genie]?" + gen "Feeling any build up yet?" + lun "*Mmm*...{w=0.4} Yes, [name_genie_luna]..." + gen "Good..." nar "You begin moving your hands in a circular motion, squeezing her breasts together and pulling them apart over and over..." - lun @ cheeks blush "*Mmm*..." ("soft", "closed", "base", "mid") + lun "*Mmm*..." nar "Luna, whose thoughts are now enveloped by the sensations of your touch, pushes her crotch towards you once again, as if desperate to feel you inside of her..." - call lun_chibi_scene("inspect_lean_idle_naked") - with d3 + gen "*Hmm*...{w=0.4} Looks like someone's eager..." + gen "Very well then, [name_luna_genie]." - lun @ cheeks blush "" ("base", "closed", "base", "mid") - gen "*Hmm*...{w=0.4} Looks like someone's eager..." ("base", xpos="far_left", ypos="head") - gen "Very well then, [name_luna_genie]." ("base", xpos="far_left", ypos="head") + #Pose touch pussy - call lun_chibi_scene("inspect_lean_grope_vagina_naked") - lun @ cheeks blush "Ooooh..." ("grin", "narrow", "base", "up") + lun "Ooooh..." nar "Luna shivers slightly as your hand graces her pussy..." nar "You notice that she's already wet, as your fingers slide across her with ease..." - gen "Looks like someone's been looking forward to this..." ("base", xpos="far_left", ypos="head") - gen "Better not let you wait any further then." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "I--" ("base", "narrow", "base", "up") + gen "Looks like someone's been looking forward to this..." + gen "Better not let you wait any further then." + lun "I--" - call lun_chibi_scene("inspect_lean_idle_naked") play sound "sounds/slick_02.ogg" - with kissiris - lun @ cheeks blush "{heart}*Ngh*{heart}..." ("crooked_smile", "narrow", "base", "up") - gen "There we go..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "You're...{w=0.4} They're inside me again..." ("grin", "narrow", "base", "up") - gen "Yes indeed [name_luna_genie]..." ("base", xpos="far_left", ypos="head") - gen "And two fingers already...{w=0.4} Looks like you're getting better at this..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Oh...{w=0.4} Thank--" ("soft", "narrow", "base", "stare") + + lun "{heart}*Ngh*{heart}..." + gen "There we go..." + lun "You're...{w=0.4} They're inside me again..." + gen "Yes indeed [name_luna_genie]..." + gen "And two fingers already...{w=0.4} Looks like you're getting better at this..." + lun "Oh...{w=0.4} Thank--" play background "sounds/slickloop.ogg" fadein 2 - call lun_chibi_scene("inspect_lean_grope_vagina_naked") nar "You begin pumping your fingers quickly into Luna's pussy..." - lun @ cheeks blush "*Ah*!!!" ("clench", "base", "base", "stare") + lun "*Ah*!!!" nar "Taken by surprise, Luna clenches her thighs, which only strengthens her grip around your fingers..." - lun @ cheeks blush "*Ah*... [name_genie_luna]!" ("angry", "narrow", "base", "R") - gen "That's it [name_luna_genie]...{w=0.4} Keep that grip steady, and this will be over before you know it..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ah*...{w=0.3} *Ah*...{w=0.3} But [name_genie_luna]--" ("open", "happyCl", "base", "mid") + lun "*Ah*... [name_genie_luna]!" + gen "That's it [name_luna_genie]...{w=0.4} Keep that grip steady, and this will be over before you know it..." + lun "*Ah*...{w=0.3} *Ah*...{w=0.3} But [name_genie_luna]--" + nar "As you keep pumping your fingers repeatedly inside of Luna, you feel her grip loosen slightly..." - lun @ cheeks blush "I...{w=0.4} I..." ("upset", "happyCl", "base", "mid") - lun @ cheeks blush "{size=+5}I don't want it to be over!{/size}" ("scream", "narrow", "worried", "stare") - gen "Too bad!" ("base", xpos="far_left", ypos="head") + + lun "I...{w=0.4} I..." + lun "{size=+5}I don't want it to be over!{/size}" + gen "Too bad!" nar "Not showing any mercy on the girl, you keep pumping faster and faster in and out of her pussy." play background "sounds/slickloopfast.ogg" - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} No..." ("clench", "narrow", "base", "stare") - lun @ cheeks blush "Not yet!" ("mad", "happyCl", "base", "mid") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} No..." + lun "Not yet!" play background "sounds/slickloopveryfast.ogg" - nar "Luna, trying to keep that sensation going, tries to get a hold of herself as not to let herself cum." + nar "Luna, trying to keep that sensation going, attempts to get a hold of herself as not to let herself cum." - lun @ cheeks blush "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." ("open", "happyCl", "base", "mid") + lun "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." nar "Taking it as a challenge, you insert your fingers all the way in, which proves to be enough for the girl." - call lun_chibi_scene("inspect_lean_idle_naked") + #ahegao pose + lun @ cheeks blush "*Ah*...{w=0.2} No...{w=0.3} I'm cumming!!" ("clench", "happyCl", "worried", "mid") with kissiris play sound "sounds/slick_01.ogg" - lun @ cheeks blush "*AAAAAH*!!!" ("clench", "narrow", "base", "up") + lun "*AAAAAH*!!!" nar "Luna's thighs clench around you, as waves of pleasure washes over her." - lun @ cheeks blush "*Ah*...{w=0.2} I'm...{w=0.2} I'm--" ("mad", "narrow", "base", "stare") + lun "*Ah*...{w=0.2} I'm...{w=0.2} I'm--" with kissiris play sound "sounds/slick_01.ogg" stop background fadeout 2 - lun @ cheeks blush "*Ah*..." ("grin", "narrow", "base", "up") - lun @ cheeks blush "*Mmm*..." ("base", "happyCl", "low", "up") + lun "*Ah*..." + lun "*Mmm*..." show screen blkfade with d5 @@ -1112,8 +1073,8 @@ label ll_pf_inspect_T2_E4_repeat: centered "{size=+7}{color=#cbcbcb}Some time later...{/color}{/size}" call lun_chibi("stand", "desk", "base") - call lun_chibi_scene("reset") + #TODO hide CG hide screen blkfade with d5 @@ -1158,130 +1119,127 @@ label ll_pf_inspect_T3_E1_repeat: $ luna.strip("clothes") - #Fades back to Luna in your lap - call lun_chibi_scene("inspect_idle_naked") + if luna.is_any_worn("clothes"): + nar "Luna quickly rushes up to your desk, and begins undressing both you and herself..." + else: + nar "Luna quickly rushes up to your desk, and begins undressing you..." + + #Fades back to Luna in your lap CG hide screen blkfade with d5 - gen "You didn't even let me finish my sentence..." ("base", xpos="far_left", ypos="head") - lun "Oh...{w=0.4} Was this not what you meant, [name_genie_luna]?" ("angry", "base", "base", "R", xpos="mid", ypos="base", flip=True, trans=dissolve) - gen "That's not the...{w} Well I suppose..." ("base", xpos="far_left", ypos="head") - lun "I hope I'm not too much of a bother, [name_genie_luna]..." ("soft", "narrow", "worried", "downL") - lun "I know your time is valuable." ("open", "narrow", "base", "downL") - gen "Assisting my students is part of my job, [name_luna_genie]." ("base", xpos="far_left", ypos="head") + gen "You didn't even let me finish my sentence..." + lun "Oh...{w=0.4} Was this not what you meant, [name_genie_luna]?" + gen "That's not the...{w} Well I suppose..." + lun "I hope I'm not too much of a bother, [name_genie_luna]..." + lun "I know your time is valuable." + gen "Assisting my students is part of my job, [name_luna_genie]." if game.daytime: - gen "Even if that meant treating you for an entire day, then so be it..." ("base", xpos="far_left", ypos="head") + gen "Even if that meant treating you for an entire day, then so be it..." else: - gen "Even if that meant treating you all night, then so be it..." ("base", xpos="far_left", ypos="head") + gen "Even if that meant treating you all night, then so be it..." - lun "Really? You'd do that?" ("clench", "base", "base", "mid") - gen "If that's what is required of me..." ("base", xpos="far_left", ypos="head") - lun "*Hmm*..." ("annoyed", "narrow", "base", "downL") - gen "(Is she really considering it?)" ("base", xpos="far_left", ypos="head") - lun "I wouldn't want you to feel obligated just because it's part of your job..." ("open", "narrow", "base", "mid") - lun "I think I will still be fine with the amount of time we're spending on the treatment for now." ("base", "narrow", "base", "down") - gen "Good to hear." ("base", xpos="far_left", ypos="head") - gen "(I've got enough wankers cramp as it is...)" ("base", xpos="far_left", ypos="head") - gen "So, are you ready to begin your treatment?" ("base", xpos="far_left", ypos="head") - lun "Yes... Please go ahead [name_genie_luna]..." ("base", "base", "base", "mid") + lun "Really? You'd do that?" + gen "If that's what is required of me..." + lun "*Hmm*..." + gen "(Is she really considering it?)" + lun "I wouldn't want you to feel obligated just because it's part of your job..." + lun "I think I will still be fine with the amount of time we're spending on the treatment for now." + gen "Good to hear." + gen "(I've got enough wankers cramp as it is...)" + gen "So, are you ready to begin your treatment?" + lun "Yes... Please go ahead, [name_genie_luna]..." - gen "Then just relax, and let me take care of it." ("base", xpos="far_left", ypos="head") + gen "Then just relax, and let me take care of it." - call lun_chibi_scene("inspect_grope_breasts_naked") + #Pose groping breasts nar "Grabbing onto Luna's breasts, you begin massaging them gently." - lun "*Ah*..." ("open", "closed", "base", "mid") + lun "*Ah*..." nar "Luna immediately shudders, and lets out a soft moan as a response to your touch." - gen "(All day... Such a silly girl, I doubt she'd last an hour...)" ("base", xpos="far_left", ypos="head") + gen "(All day... Such a silly girl, I doubt she'd last an hour...)" nar "You let go of Luna's breasts and give her nipples a quick pinch." - lun "Ouch!" ("mad", "wide", "base", "up") - gen "Whops." ("base", xpos="far_left", ypos="head") + lun "Ouch!" + gen "Whops." menu: "-Pinch her again-": nar "You quickly pinch Luna's nipples again, and she jumps slightly by surprise." - lun @ cheeks blush "Ow, Ow, Ow!!" ("clench", "happyCl", "base", "mid") - lun @ cheeks blush "[name_genie_luna]!" ("mad", "narrow", "worried", "R") - gen "Just give it a moment... It will feel better soon..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Are you--" ("angry", "closed", "base", "down") + lun "Ow, Ow, Ow!!" + lun "[name_genie_luna]!" + gen "Just give it a moment... It will feel better soon..." + lun "Are you--" nar "You pinch her again, even harder this time, and Luna suddenly jerks her body forward." - call lun_chibi_scene("inspect_lean_idle_naked") - lun @ cheeks blush "Stop it [name_genie_luna]...{w=0.4} I can't..." ("mad", "happyCl", "worried", "mid") + lun "Stop it [name_genie_luna]...{w=0.4} I can't..." nar "As you let go of her tits, Luna's words trail off slightly..." - gen "Can't what, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "That's odd..." ("mad", "narrow", "base", "down") - lun @ cheeks blush "It feels kind of nice, after you let go of them." ("soft", "narrow", "base", "down") - gen "More sensitive?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Yes..." ("soft", "narrow", "base", "mid") - lun @ cheeks blush "Do it again [name_genie_luna]!" ("angry", "base", "base", "mid") - gen "Again?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Yes, again!" ("angry", "base", "base", "R") - gen "If you say so..." ("base", xpos="far_left", ypos="head") + gen "Can't what, [name_luna_genie]?" + lun "That's odd..." + lun "It feels kind of nice, after you let go of them." + gen "More sensitive?" + lun "Yes..." + lun "Do it again [name_genie_luna]!" + gen "Again?" + lun "Yes, again!" + gen "If you say so..." - call lun_chibi_scene("inspect_lean_grope_breasts_naked") nar "You pinch Luna's nipples again, and being fully ready for it this time, you only hear a short intake of breath." - lun @ cheeks blush "" ("soft", "base", "base", "up") + nar "Releasing your grip on her nipples, you begin brushing your fingertips along the sides of her breasts, up and around her nipples." - lun @ cheeks blush "*Ah*...{w=0.4} How...{w=0.4} How strange..." ("open", "closed", "base", "mid") + + lun "*Ah*...{w=0.4} How...{w=0.4} How strange..." nar "Luna, now enjoying the heightened sensitivity of her nipples, begins to relax, her breathing slowing down more and more." - lun @ cheeks blush "..." ("base", "closed", "base", "mid") - gen "(Am I just giving her a massage now?)" ("base", xpos="far_left", ypos="head") + lun "..." + gen "(Am I just giving her a massage now?)" "-Don't-": - lun @ cheeks blush "Please be careful [name_genie_luna]..." ("angry", "narrow", "base", "mid") + lun "Please be careful [name_genie_luna]..." nar "Trying not to give into the temptation, you resume massaging Luna's breasts." nar "Her breathing soon begins slowing down, and you feel her previously tense grip around your legs starting to relax." - lun @ cheeks blush "..." ("base", "closed", "base", "mid") + lun "..." - gen "*Hmm*..." ("base", xpos="far_left", ypos="head") - gen "(Am I just giving her a massage now?)" ("base", xpos="far_left", ypos="head") + gen "*Hmm*..." + gen "(Am I just giving her a massage now?)" - lun @ cheeks blush "*Ah*....." ("base", "closed", "base", "mid") + lun "*Ah*....." ("base", "closed", "base", "mid") nar "You suddenly feel her beginning to go limp in your hands, and realise that your grip is the only thing preventing her from slumping forward." - call lun_chibi_scene("inspect_lean_grope_breasts_naked") - with d3 - gen "*Err*... Are you--" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Mmm*..." ("base", "closed", "base", "mid") - gen "[name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "..." ("base", "closed", "base", "mid") - gen "[name_luna_genie]?" ("base", xpos="far_left", ypos="head") + gen "*Err*... Are you--" + lun "*Mmm*..." + gen "[name_luna_genie]?" + lun "..." + gen "[name_luna_genie]?" - call lun_chibi_scene("inspect_lean_idle_naked") nar "You let go of Luna's breasts, and she goes stiff, opening her eyes in confusion." - lun @ cheeks blush "*Huh*?" ("soft", "narrow", "base", "stare") - gen "I believe our purpose here isn't for me to massage you until you fall asleep..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Oh... Right..." ("base", "narrow", "base", "downL") + lun "*Huh*?" + gen "I believe our purpose here isn't for me to massage you until you fall asleep..." + lun "Oh... Right..." - call lun_chibi_scene("inspect_lean_grope_vagina_naked") nar "You stick your hand down between Luna's legs, and begin rubbing your fingers along her slit." - lun @ cheeks blush "*Ah*..." ("soft", "closed", "base", "mid") + lun "*Ah*..." nar "As you brush up against her, you notice how wet she is already." - gen "*Hmm*... Looks like that massage helped after all..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("open", "closed", "low", "mid") - nar "Moving your forefinger up and down against Luna, you hear her breathing becoming more and more erratic, and you feel your cock twitch slightly against your robes." - gen "(Time to bust this thing wide open...)" ("base", xpos="far_left", ypos="head") + gen "*Hmm*... Looks like that massage helped after all..." + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." + nar "Moving your forefinger up and down against Luna, you hear her breathing becoming more and more erratic, and you feel your cock twitch slightly against her." + gen "(Time to bust this thing wide open...)" nar "You stop your movements, giving Luna just a brief moment of anticipation before you push a finger inside." - call lun_chibi_scene("inspect_lean_idle_naked") play sound "sounds/slick_02.ogg" with kissiris - lun @ cheeks blush "{heart}*Ngh*{heart}..." ("grin", "closed", "base", "stare") + lun "{heart}*Ngh*{heart}..." play background "sounds/slickloop.ogg" fadein 2 - call lun_chibi_scene("inspect_lean_grope_vagina_naked") nar "You begin moving your finger inside Luna's pussy, as if playfully searching for her weak spot." - lun @ cheeks blush "*Ah*... What are... What are you doing [name_genie_luna]..." ("grin", "narrow", "base", "up") - gen "Oh... You know... Just looking for something..." ("base", xpos="far_left", ypos="head") + lun "*Ah*... What are... What are you doing [name_genie_luna]..." + gen "Oh... You know... Just looking for something..." - lun @ cheeks blush "*Ah*...{w=0.4} Looking...{w=0.4} *Ah*...{w=0.4} What are you--" ("grin", "narrow", "base", "up") + lun "*Ah*...{w=0.4} Looking...{w=0.4} *Ah*...{w=0.4} What are you--" gen "Why I'll never find it at this rate... Better get some of my friends to help." ("base", xpos="far_left", ypos="head") @@ -1289,42 +1247,46 @@ label ll_pf_inspect_T3_E1_repeat: play background "sounds/slickloopfast.ogg" nar "You push another finger inside her, and begin moving them around." - lun @ cheeks blush "*Ah*...{w=0.4} [name_genie_luna]..." ("soft", "narrow", "base", "up") - gen "*Hmm*... Some lousy friends they are... I still can't find it..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ah*...{w=0.3} *Ah*...{w=0.3} Are you...{w=0.3} Are you sure..." ("base", "narrow", "base", "up") + lun "*Ah*...{w=0.4} [name_genie_luna]..." + gen "*Hmm*... Some lousy friends they are... I still can't find it..." + lun "*Ah*...{w=0.3} *Ah*...{w=0.3} Are you...{w=0.3} Are you sure..." nar "You keep moving your fingers inside Luna, and as you do, you feel her clench around them slightly." - gen "Yes...{w=0.3} Although maybe it's just hiding..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ah*...{w=0.3} It...{w=0.3} What is--" ("soft", "narrow", "base", "up") - gen "Better call in an expert..." ("base", xpos="far_left", ypos="head") - nar "Keeping your fingers moving inside Luna, you move your thumb and press it up against her clit." - lun @ cheeks blush "*Oooooh*!!!" ("grin", "wide", "base", "up") - gen "There it is!" ("base", xpos="far_left", ypos="head") + gen "Yes...{w=0.3} Although maybe it's just hiding..." + #Pose, genie pulls out and pushes on her stomach + lun "*Ah*...{w=0.3} It...{w=0.3} What is--" + gen "I think it's around here!" + nar "You suddenly push hard against Luna's womb." + lun "*Oooooh*!!!" + gen "Seems like it... So, what do you say? Think I can reach all the way in here?" + + #Pose fingering play background "sounds/slickloopveryfast.ogg" - nar "You start rubbing your thumb against Luna's clit as your fingers move rapidly inside her." - lun @ cheeks blush "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." ("grin", "base", "base", "up") + + nar "You push your fingers deep inside Luna, then start pumping them quickly in and out." + lun "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." + nar "Luna's moans reverberates around your office, and you notice her legs beginning to shake slightly." + + #Pose closed legs nar "Luna's moans suddenly stops, and she clenches her thighs tight around your hand." - call lun_chibi_scene("inspect_lean_idle_naked") - lun @ cheeks blush "*Ah*...{w=0.2} I'm...{w=0.3} I'm cumming!!" ("grin", "happyCl", "base", "stare") + lun "*Ah*...{w=0.2} I'm...{w=0.3} I'm cumming!!" with kissiris play sound "sounds/slick_01.ogg" - lun @ cheeks blush "*AAAAAH*!!!" ("grin", "narrow", "base", "up") - nar "Even with your hand locked firmly between her thighs, you still manage to keep your fingers going." - - lun @ cheeks blush "*Ah*...{w=0.2} I'm...{w=0.2} I'm--" ("grin", "narrow", "base", "stare") - + #Pose ahegao with kissiris play sound "sounds/slick_01.ogg" stop background fadeout 2 + lun "*AAAAAH*!!!" + nar "Even with your hand locked firmly between her thighs, you still manage to keep your fingers going." - lun @ cheeks blush "*Ah*..." ("grin", "narrow", "base", "up") - lun @ cheeks blush "*Mmm*..." ("base", "closed", "low", "up") + lun "*Ah*...{w=0.2} I'm...{w=0.2} I'm--" + lun "*Mmm*..." show screen blkfade with d5 @@ -1338,18 +1300,17 @@ label ll_pf_inspect_T3_E1_repeat: hide luna_main call lun_chibi("stand", "desk", "base") - call lun_chibi_scene("reset") + #TODO hide CG hide screen blkfade with d5 gen "How was that, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") lun "How did you do that, [name_genie_luna]?" ("mad", "base", "base", "mid", xpos="base", ypos="base", flip=False, trans=dissolve) gen "Do what?" ("base", xpos="far_left", ypos="head") - lun "The thing you did with your thumb." ("angry", "base", "base", "mid") - gen "Oh that...{w=0.4} Well I just called in an expert didn't I?" ("base", xpos="far_left", ypos="head") - gen "Nice bloke to have at hand isn't he?" ("base", xpos="far_left", ypos="head") - lun "Very..." ("base", "narrow", "base", "stare") + lun "The thing you did... When you pushed near my stomach..." ("angry", "base", "base", "mid") + gen "Oh that...{w=0.4} Well, I can't reveal all my secrets, can I?" ("base", xpos="far_left", ypos="head") + lun "..." ("base", "narrow", "base", "stare") gen "So, feeling better now?" ("base", xpos="far_left", ypos="head") lun "Yes, [name_genie_luna]...{w=0.4} Thank you..." ("base", "base", "base", "mid") @@ -1366,3 +1327,273 @@ label ll_pf_inspect_T3_E1_repeat: call lun_walk(action="leave") jump ll_pf_inspect_end + +label ll_pf_inspect_T4_E1_repeat: + + call ll_pf_inspect + + gen "Need a hand?" ("base", xpos="far_left", ypos="head") + lun "A hand, [name_genie_luna]?" ("base", "base", "base", "mid") + gen "I thought you might be feeling the effects of the spurts... So, I figured you might want to sit in my lap and let me help you out for a bit." ("base", xpos="far_left", ypos="head") + lun "But, didn't you already teach me how to take care of them myself?" ("base", "base", "base", "mid") + gen "Yes, and I'm sure you've had a lot of practice, but since I'm available, there's the option of me helping out..." ("base", xpos="far_left", ypos="head") + gen "Or would you rather do it yourself?" ("base", xpos="far_left", ypos="head") + lun "Of course not!" ("base", "base", "base", "mid") + lun "I mean..." ("base", "base", "base", "mid") + lun "What about you, [name_genie_luna]?" ("base", "base", "base", "mid") + gen "This is as important for you, as it is for me." ("base", xpos="far_left", ypos="head") + lun "It is?" ("base", "base", "base", "mid") + gen "If the spurts manage to get to you, then you won't be able to assist me with my research at the required level." ("base", xpos="far_left", ypos="head") + lun "Required level?" ("base", "base", "base", "mid") + gen "See! You can't even focus, [name_luna_genie]!" ("base", xpos="far_left", ypos="head") + lun "But I am--" ("base", "base", "base", "mid") + gen "If you're unable to focus on the task, who knows what might happen!" ("base", xpos="far_left", ypos="head") + gen "The spurts could force you to slap my cheek!" ("base", xpos="far_left", ypos="head") + lun "Your cheek?!" ("base", "base", "base", "mid") + gen "My cheek!" ("base", xpos="far_left", ypos="head") + gen "Or even worse... Make you to pull my finger!" ("base", xpos="far_left", ypos="head") + lun "Really?!" ("base", "base", "base", "mid") + gen "Yes, and trust me... You'd want to avoid that at all cost." ("base", xpos="far_left", ypos="head") + lun "Why... What would--" ("base", "base", "base", "mid") + gen "Irreversible consequences!" ("base", xpos="far_left", ypos="head") + lun "!!!" ("base", "base", "base", "mid") + gen "Let's just say that the desert didn't used to be the wasteland that it is today." ("base", xpos="far_left", ypos="head") + lun "My heavens!" ("base", "base", "base", "mid") + + if luna.is_any_worn("clothes"): + hide luna_main + pause .5 + + $ _wearing_clothes = True + $ luna.strip("clothes") + lun "[name_genie_luna], help me before it's too late!" ("base", "base", "base", "mid") + gen "Whoa, how did you do that so fast?!" ("base", xpos="far_left", ypos="head") + + #Luna quickly walks up towards desk, fades to black + call lun_walk("desk", "base", speed=1.75) + show screen blkfade + with d5 + + nar "As you undress, Luna rushes up to your desk, and jumps into your lap with such force that you fall into the chair." + + #TODO Fade to CG Luna in lap + hide screen blkfade + with d5 + + lun "Hurry, [name_genie_luna]! Put your fingers inside me!" + gen "Already? But, what about the foreplay?" + gen "(Wait... Since when did I start caring about foreplay?)" + lun "Just do it already!" + gen "Suit yourself..." + + nar "You move your hand down to Luna's pussy and attempt to push a finger inside." + + lun "Ouch!" + lun "Wait! What's going on?!" + gen "I was trying to tell you..." + gen "Sometimes you're going to need a bit of--" + lun "It's the wrackspurts, and their naughty tricks!" + lun "They must be blocking the entrance somehow!" + gen "..." + lun "[name_genie_luna], we must lure them away from the entrance! Grab my breasts!" + gen "(By the great desert sands... What have I created...)" + + #Genie grabs Luna's breasts + + lun "Good...{w=0.4} Now if you massage them, I'm sure the wrackspurts--" + lun "Wait...{w=0.4} I'm so silly, why am I telling you what to do... Of course you already know!" + gen "Certainly, [name_luna_genie]... Although while you know that I know, how am I supposed to know that you know what I know?" + lun "*Huh*?" + gen "I'm proposing that you could be the one to instruct me what I'm supposed to do during this session." + gen "That way, I can ensure that you've remembered everything that I've shown you so far." + lun "Oh, good idea [name_genie_luna]!" + lun "Then massage my breasts!" + gen "One breast massage coming up." + gen "Or is it \"breasts\" massage, since you've got two of--" + lun "Hurry!" + gen "Righto..." + + #Genie massages breasts + nar "Following Luna's outcry, you begin gently massaging her breasts." + + lun "*Ah*...{w=0.4} I--{w=0.2} *Ngh*...{w=0.4} I think it's working." + lun "I can feel them gathering already." + gen "Truly?" + lun "*Ah*...{w=0.4} How...{w=0.4} How do you feel, [name_genie_luna]?" + gen "Me?" + lun "*Mmm*...{w=0.4} Yes, please tell me." + gen "I'm not sure what you're talking--" + lun "My breasts...{w=0.4} Do they feel nice?" + menu: + "\"Of course!\"": + gen "They're very pleasant." + "\"I've felt better.\"": + lun "Oh..." + gen "Your nipples must not be hard enough yet." + "\"If you can call these breasts...\"": + lun "W--{w=0.4} What?!" + gen "The word \"breasts\" is not enough to describe these glorious mounds of flesh!" + lun "*Ah*...{w=0.4} Really?" + lun "So...{w=0.4} What do you like about them exactly?" + gen "Well... They're soft, squishy, and fun to play with, there's nothing better than a good pair of--" + + nar "Luna suddenly clenches her ass around your cock, which makes you lose your focus for a moment." + + gen "*Ahem*...{w=0.4} That said, it is quite a contentious subject..." + lun "*Mhm*?" + gen "*Ah*...{w=0.4} Yes, some people prefer the roundness and firmness of an--" + lun "[name_genie_luna]?" + gen "Yes?" + lun "You've stopped massaging me." + gen "So I have..." + + #Genie massages breasts + + lun "*Mmm*..." + lun "So, you think my breasts are fun to play with?" + gen "Very much so." + lun "*Giggles*" + gen "What's so funny about that?" + lun "Well, it's just that I had never really considered playing with them..." + lun "Before you showed me, they were just sort of... There." + gen "I suppose the reason I find them fascinating and fun to play with is due to not having access to them at all times." + gen "I mean, it's all for the sake of research, of course.... I'm taking mental notes of all the differences between men and women... Yes, that's it..." + lun "In that case, should we to try to find out if there's a way to lure them away from your penis next?" + gen "*Err*..." + lun "I presume we wouldn't want your penis to get clogged up with spurts like what just happened to me, right?" + gen "Right... However, since I have you, I'm assured that won't happen." + lun "Let's hope..." + gen "Either way, let's not forget that we're focusing on you right now..." + lun "Oh, right..." + lun "In that case..." + lun "Could you perhaps assist me with testing the sensitivity of my nipples?" + gen "Certainly..." + + #Genie pinches nipples + nar "You give Luna's nipples a quick pinch, and in return, you feel her ass clench around your cock." + + lun "*Ngh*!" + gen "How was that?" + lun "*Ah*...{w=0.4} Very...{w=0.4} fun..." + gen "Truly?" + lun "Yes..." + gen "*Hmm*... Then let's try it again." + + nar "You pinch Luna's nipples again and feel her ass clench even harder around your cock." + + lun "Ouch!" + gen "How's that?" + lun "I...{w=0.4} Very, very fun, [name_genie_luna]!" + gen "There's no need to be untruthful with me, [name_luna_genie]..." + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} But, I am--" + gen "So, what now? Would you like me to move on to something else?" + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} You could--{w=0.2} Could you stroke my breasts for a bit, [name_genie_luna]?" + gen "Good idea...{w=0.4} We should take advantage of your heightened sensitivity..." + + #Genie strokes breasts + nar "Placing your fingers along the sides of her nipples, you begin brushing them gently against her skin." + + lun "*Mmm*..." + + nar "As you continue stroking her, you notice some wetness forming in-between Luna's legs." + + gen "*Ahem*...{w=0.4} [name_luna_genie]." + + nar "Luna, fully focused on the sensations of your fingers, begins shuffling around slightly in your lap." + + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." + gen "[name_luna_genie], don't you think you're--" + + #Pose ahegao + with kissiris + $ renpy.sound.play("sounds/slick_01.ogg") + stop bg_sounds fadeout 2 + lun "*Aaaah*!!!" + + nar "With a jolt, Luna's entire body suddenly starts shaking." + + gen "What the--" + lun "[name_genie_luna]!!!" + + lun "*Ah*..." + lun "What--{w=0.4} What just happened?" + gen "*Heh-heh*...{w=0.4} It appears you've managed to get there on your own." + lun "W--{w=0.2} What?!" + + show screen blkfade + with d5 + + nar "Luna suddenly jumps off your lap and turns around, and her eyes lock onto a wet patch on the top of your robes." + nar "Her legs still quivering from the intense pleasure she stumbles backwards a bit, then grabs a hold of the side of your desk." + nar "Finally, after catching her breath, she lets go and addresses the situation." + + call lun_chibi("stand", "desk", "base") + + #TODO hide CG + hide screen blkfade + with d5 + + lun "How...{w=0.4} How on earth did that happen?!" ("base", "base", "base", "mid") + gen "You may not have realised, but you were rubbing up against me for quite a while..." ("base", xpos="far_left", ypos="head") + lun "I--{w=0.2} I was?" ("base", "base", "base", "mid") + gen "Indeed... You almost had me going at one point." ("base", xpos="far_left", ypos="head") + lun "You... Going..." ("base", "base", "base", "mid") + gen "(Here we go...)" ("base", xpos="far_left", ypos="head") + lun "Going where?" ("base", "base", "base", "mid") + + if game.daytime: + gen "I think it's about time for you to head back to class..." ("base", xpos="far_left", ypos="head") + else: + gen "I think it's about time you went to bed..." ("base", xpos="far_left", ypos="head") + + lun "Oh...{w=0.4} Okay!" ("base", "base", "base", "mid") + + if _wearing_clothes: + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ luna.wear("all") + with d3 + pause .5 + + gen "Perhaps we should consider having you pick up \"English\" as a secondary subject." ("base", xpos="far_left", ypos="head") + lun "English?" ("base", "base", "base", "mid") + lun "But, [name_genie_luna]... There are no \"English\" classes at Hogwarts." ("base", "base", "base", "mid") + gen "What?!" ("base", xpos="far_left", ypos="head") + lun "Our mummies and daddies are meant to teach us certain subjects before we start proper schooling." ("base", "base", "base", "mid") + lun "Well... My daddy did in my case..." ("base", "base", "base", "mid") + gen "But, do your parents not need to work?" ("base", xpos="far_left", ypos="head") + lun "Well... There's also the option of private tutoring." ("base", "base", "base", "mid") + lun "And if you're muggle born, you are usually put in a muggle school before being transferred to Hogwarts." ("base", "base", "base", "mid") + gen "But what if you're not a muggle born, and you can't afford a private tutor?" ("base", xpos="far_left", ypos="head") + lun "I... I don't know." ("base", "base", "base", "mid") + gen "(How do they expect me to do my job when the system is flawed at its core...)" ("base", xpos="far_left", ypos="head") + gen "(Oh, well... It's clear that nobody else gives a rat's ass about the future of this country, so why should I...)" ("base", xpos="far_left", ypos="head") + lun "[name_genie_luna], why are you asking me these questions?" ("base", "base", "base", "mid") + gen "*Huh*?" ("base", xpos="far_left", ypos="head") + gen "Oh... *Err*... I just thought I'd show you how important it is to be able to identify and analyse the flaws in our society..." ("base", xpos="far_left", ypos="head") + gen "Identifying, analysing and finding solutions is needed... To progress as a species and all that..." ("base", xpos="far_left", ypos="head") + lun "I see... Finding solutions..." ("base", "base", "base", "mid") + lun "What if we established a system in which the affluent allocate a portion of their income to make resources such as private tutoring accessible to everyone, thereby guaranteeing a higher standard of education for all?" ("base", "base", "base", "mid") + gen "Good one." ("base", xpos="far_left", ypos="head") + lun "" ("base", "base", "base", "mid") #confused + call ctc + + gen "Anyhow... I presume you feel better now?" ("base", xpos="far_left", ypos="head") + lun "Oh... Yes, thank you, [name_genie_luna]!" ("base", "base", "base", "mid") + gen "You're very welcome." ("base", xpos="far_left", ypos="head") + if game.daytime: + lun "I better head to bed then." ("base", "base", "base", "mid") + gen "Don't you mean \"class\"?" ("base", xpos="far_left", ypos="head") + lun "Oh, yeah!" ("base", "base", "base", "mid") + lun "Bye!" ("base", "base", "base", "mid") + else: + lun "I better head back to class then." ("base", "base", "base", "mid") + gen "Don't you mean \"bed\"?" ("base", xpos="far_left", ypos="head") + lun "Oh, yeah...{w=0.4} Good night!" ("base", "base", "base", "mid") + + call lun_walk(action="leave") + + gen "(That girl is something else...)" ("base", xpos="far_left", ypos="head") + + $ _wearing_clothes = False + + jump ll_pf_inspect_end From 63a7a645dd7cd40136ed190ff8b99cad65f4ce53 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Mon, 22 Jan 2024 14:43:41 +0100 Subject: [PATCH 048/249] Improved Hermione Cumslut public requests - Split events into Tier 5 and 6 instead of sequential Tier 5 events, enabling players to explore every option in a single playthrough. - Enhanced and added writing, making it more suitable for each tier. - Adjusted cum locations to work better with the doll. - Added the option to set Hermione's clothing status during the event to ensure that players can experience every available option. - Added check so that Genie has to "finish" on Hermione's body during personal favours beforehand. --- .../characters/hermione/events/intro.rpy | 2 +- .../hermione/events/requests/wear_my_cum.rpy | 2241 ++++++++++------- game/scripts/characters/hermione/requests.rpy | 23 +- game/scripts/characters/hermione/vars.rpy | 1 + 4 files changed, 1397 insertions(+), 870 deletions(-) diff --git a/game/scripts/characters/hermione/events/intro.rpy b/game/scripts/characters/hermione/events/intro.rpy index ae22ed39..37bfeedb 100644 --- a/game/scripts/characters/hermione/events/intro.rpy +++ b/game/scripts/characters/hermione/events/intro.rpy @@ -14,7 +14,7 @@ label hermione_intro_E1: play sound "sounds/knocking.ogg" call bld "*Knock-knock-knock*" - gen "*huh*?" ("base", xpos="far_left", ypos="head") + gen "*Huh*?" ("base", xpos="far_left", ypos="head") play sound "sounds/knocking.ogg" "*Knock-knock-knock*" diff --git a/game/scripts/characters/hermione/events/requests/wear_my_cum.rpy b/game/scripts/characters/hermione/events/requests/wear_my_cum.rpy index 1b136af1..92ef0261 100644 --- a/game/scripts/characters/hermione/events/requests/wear_my_cum.rpy +++ b/game/scripts/characters/hermione/events/requests/wear_my_cum.rpy @@ -1,22 +1,811 @@ +### Leave office with cum on her ### + label start_hg_pr_cumslut: - # Public shaming: Wear cum - # TODO: Some events need to be rewritten so they follow cum layers limitations and actual game progression. - # Additionally, they should be converted into the event class. + #Setup $ current_payout = 50 if not _events_completed_any: gen "{size=-4}(Should I ask her to walk around with my cum on her?){/size}" ("base", xpos="far_left", ypos="head") - menu: "\"(Yes, let's do it!)\"": pass "\"(Not right now.)\"": $ _event.cancel() jump hermione_favor_menu + return +label hg_pr_cumslut: + + call start_hg_pr_cumslut + + her "" (xpos="mid", ypos="base", trans=fade) + + #Intro. + if not _events_completed_any: + gen "Today I have another small favour to ask of you." ("base", xpos="far_left", ypos="head") + her "What is it?" ("open", "base", "base", "mid") + gen "I'd like you to attend class..." ("base", xpos="far_left", ypos="head") + her "Right?" ("soft", "base", "base", "mid") + gen "After I cum on you." ("base", xpos="far_left", ypos="head") + + if not states.her.status.cumshot: + her "You want me to go to class...{w=0.4} With your cum on me?!?" ("angry", "wide", "base", "stare") + gen "That's right... So, why don't you jack me off and then--" ("base", xpos="far_left", ypos="head") + her "Are you crazy?!" ("disgust", "wide", "angry", "mid") + her "I think I better go..." ("disgust", "happyCl", "worried", "mid") + + call her_walk(action="leave") + + $ states.her.mood += 9 + + gen "(Perhaps I should show her the ropes before suggesting something like this.)" ("base", xpos="far_left", ypos="head") + gen "(*Heh-heh*...{w=0.4} Show her the ropes...)" ("grin", xpos="far_left", ypos="head") + + $ _event.cancel() + jump end_hermione_event + + if states.her.public_level < 15: + $ _event.cancel() + jump too_much_public + + play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed # Music + + if states.her.tier == 5: #Success + her "What?!?" ("angry", "base", "base", "stare") + her "You can't be serious!" ("angry", "squint", "base", "mid") + her "It's bad enough that I let you cum on me in private!" ("clench", "squint", "worried", "mid") + her @ cheeks blush "But you expect me to go out in public, with cum on my body?" ("angry", "narrow", "base", "R") + her @ cheeks blush "I think I better leave..." ("mad", "narrow", "base", "R") + gen "Wait!" ("base", xpos="far_left", ypos="head") + gen "What if nobody could see it?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "What do you mean by that? How would they not see it?" ("disgust", "narrow", "base", "mid") + gen "What if it was somewhere on your body where nobody would notice?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "If no one can see it, what's the point then?" ("disgust", "squint", "base", "mid") + gen "The point is, that you'll know that it's there." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Hmm*..." ("upset", "narrow", "base", "down") + gen "Go on, [name_hermione_genie]... Did you not let me cum on your body before?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "There's a difference... Previously, I was able to clean myself off before going out in public..." ("annoyed", "narrow", "base", "R") + her @ cheeks blush "...{w=0.4} If I were to accept this favour, I'd need to be greatly compensated for it." ("open", "closed", "worried", "mid") + gen "I'll give you thirty points." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Thirty?! I require at least seventy for such a filthy act!" ("scream", "squint", "base", "mid") + gen "Forty." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Sixty!" ("scream", "narrow", "base", "mid") + gen "Fifty points, final offer." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Fine...{w=0.4} Fifty it is." ("open", "narrow", "annoyed", "mid") + her @ cheeks blush "As long as nobody can see it." ("annoyed", "narrow", "base", "R") + else: + her @ cheeks blush "You want me to--" ("soft", "base", "base", "stare") + gen "Attend your classes, after I cum on your body..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "[name_genie_hermione]...{w=0.4} Don't you think it's enough that I let you cum on me in private?" ("open", "happy", "base", "mid") + gen "You tell me, [name_hermione_genie]...{w=0.4} I'm just coming up with new favours, so you can keep earning points." ("base", xpos="far_left", ypos="head") + gen "I'm sure you know how it works by now..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "But, everyone will see it!" ("angry", "happy", "base", "mid") + gen "Well, if that's the issue, then I'll be fine if I can finish somewhere on your body where it won't be so obvious..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("disgust", "base", "base", "mid") + her @ cheeks blush "Alright then...{w=0.4} I'll do it!" ("open", "happy", "base", "mid") + gen "Excellent..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "As long as you don't make a mess in plain sight..." ("open", "happy", "base", "mid") + gen "That will be up to you, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "[name_genie_hermione]?" ("soft", "base", "base", "mid") + gen "You'll be the one to decide where I finish." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Me? Why me?" ("angry", "base", "base", "stare") + gen "Would you rather I decide?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "No! I mean...{w=0.4} I just didn't expect you to--" ("disgust", "base", "base", "mid") + gen "I won't really have any choice either way, as you'll be the one to jerk me off." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Oh...{w=0.4} So, that's why..." ("soft", "narrow", "base", "down") + her @ cheeks blush "Alright fine...{w=0.4} If I get to decide, then I suppose I could...{w=0.4} \"Jerk you off\"." ("base", "narrow", "base", "R") + her "Oh, how many points would I receive for this by the way?" ("open", "base", "base", "mid") + gen "I was thinking thirty points, how does that sound?" ("base", xpos="far_left", ypos="head") + her "Just thirty?" ("annoyed", "happy", "base", "mid") + gen "Thirty points is generous enough." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Fifty points...{w=0.4} And I'll make sure that someone notices it." ("angry", "squint", "base", "mid") + gen "Really? Are you sure?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I--{w=0.2} Yes! As long as I don't have to make it too obvious..." ("angry", "squint", "base", "R") + gen "Alright then, fifty it is." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("base", "narrow", "base", "down") + + else: # Repeat Intro + random: + block: + gen "I've got a pearl necklace that I'd like you to wear around school today." ("base", xpos="far_left", ypos="head") + her "A pearl necklace?" ("soft", "base", "base", "mid") + gen "And by pearl necklace...{w=0.4} What I mean is semen." ("base", xpos="far_left", ypos="head") + block: + gen "There's a cake I'd like to be shown around school today." ("base", xpos="far_left", ypos="head") + her "A cake?" ("soft", "base", "base", "mid") + gen "Of course, I'll still need to decorate you a little bit before you head off, to make you presentable...." ("base", xpos="far_left", ypos="head") + her "Decorate...{w=0.4} Wait, are you calling me a cake?" ("angry", "base", "base", "stare") + gen "Of course, a delicious one at that! I mean, who wouldn't want a slice of such a stacked--" ("base", xpos="far_left", ypos="head") + her "Please, [name_genie_hermione]..." ("angry", "base", "base", "mid") + gen "A little bit of icing here or there should do the trick." ("base", xpos="far_left", ypos="head") + her "..." ("disgust", "base", "base", "mid") + gen "And by icing, I mean cum." ("base", xpos="far_left", ypos="head") + block: + gen "Have you been taking care of your body?" ("base", xpos="far_left", ypos="head") + her "My body, [name_genie_hermione]?" ("soft", "base", "base", "mid") + gen "Yes, [name_hermione_genie], your body." ("base", xpos="far_left", ypos="head") + her "I suppose...{w=0.4} I mean, I mean I clean myself regularly..." ("open", "base", "base", "mid") + gen "Well, not today, you won't." ("base", xpos="far_left", ypos="head") + gen "Today, I want you to head out to class with my cum on you." ("base", xpos="far_left", ypos="head") + + if states.her.tier == 5: + her "Again?" ("disgust", "base", "base", "mid") + her "Seriously?" ("disgust", "base", "base", "mid") + gen "Why not?" ("base", xpos="far_left", ypos="head") + her "And here I thought once would've been enough..." ("disgust", "base", "base", "R") + gen "Yes...{w=0.4} Perhaps I'm being too generous." ("base", xpos="far_left", ypos="head") + her "...{w=0.4} If I do this, can we agree you won't finish anywhere where people can see?" ("annoyed", "narrow", "base", "mid") + gen "That's up to you, [name_hermione_genie]...{w=0.4} You're the one who will be aiming the wand." ("base", xpos="far_left", ypos="head") + her "Right..." ("disgust", "narrow", "base", "mid") + else: + her "Oh...{w=0.4} I should've expected that's what you meant..." ("open", "base", "base", "R") + gen "And I expect you to make sure that at least someone notices it." ("base", xpos="far_left", ypos="head") + her "*Hmm*...{w=0.4} Alright then..." ("base", "narrow", "base", "R") + gen "Great, then let's get you ready..." ("base", xpos="far_left", ypos="head") + + +## Handjob section ## (Cum location choice, triggers subsequent return event for that tier) + + play music "music/(Orchestral) Playful Tension by Shadow16nh.ogg" fadein 1 if_changed + + $ _uniform = False #Puts on Uniform now. + $ _naked = False #Gets cum on her naked body, puts on uniform before she leaves. + + menu: + "\"You should probably be naked for this.\"": + her @ cheeks blush "Really?" ("open", "base", "base", "mid") + gen "Most certainly." ("base", xpos="far_left", ypos="head") + + $ _naked = True + "\"You should probably be clothed for this.\"": + her "Wearing my uniform?" ("base", "base", "base", "mid") + gen "That's right..." ("base", xpos="far_left", ypos="head") + + $ _uniform = True + + her @ cheeks blush "If you say so..." ("open", "closed", "base", "mid") + + stop music fadeout 4.0 + call hide_characters + show screen blkfade + with d3 + + if _uniform: + $ her_outfit_last.save() + $ hermione.equip(her_outfit_default) + else: #stripped + $ her_outfit_last.save() + $ hermione.strip("clothes") + + call her_chibi("stand",560,"base") + call gen_chibi("jerk_off",450,"base") + + hide screen blkfade + with fade + pause.8 + + + if states.her.tier == 5: + if not _events_completed_any: + gen "Splendid...{w=0.4} So, care to give me a hand?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "A hand?" ("open", "base", "base", "mid", xpos="base", ypos="base", flip=False) + gen "To get to the main part of the task, I'll need you to jerk me off." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "...{w=0.4} Why do you always do this, [name_genie_hermione]?" ("disgust", "narrow", "base", "mid") + gen "Do what?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Whenever I give you a finger, you take the whole hand. You're always up to some high jinks..." ("annoyed", "narrow", "base", "mid") + gen "I'm not sure whether I follow." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Weren't you supposed to just cum on me, and then send me out into the halls?" ("angry", "narrow", "base", "mid") + gen "First of all, I'm not making you do anything, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") + gen "Second of all, if I'm to produce said cum, then I require some effort on your part...{w=0.4} You should know how it works by now." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "{size=-4}Surely you should know how favour trading is supposed to work by now...{/size}" ("soft", "narrow", "base", "R") + gen "What was that?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Nothing..." ("open", "narrow", "base", "down") + gen "Alright then, time to paint the town white." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Ugh*...{w=0.4} Fine..." ("disgust", "narrow", "base", "mid") + + play music "music/(Orchestral) Playful Tension by Shadow16nh.ogg" fadein 1 if_changed # SEX THEME. + her @ cheeks blush "..........." ("upset", "narrow", "base", "down") + + nar "Hermione looks down at your dick, with an annoyed expression..." + + her @ cheeks blush "......................." ("angry", "narrow", "base", "down") + pause.1 + + call her_chibi_scene("hj_pause", trans=d9) + pause.8 + + nar "After a brief pause, she finally puts her slender hands around it and starts stroking..." + + call her_chibi_scene("hj", trans=d5) + call ctc + + gen "Very good [name_hermione_genie]..." ("base", xpos="far_left", ypos="head") + gen "Although, I must say that I expected a bit more enthusiasm..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I'm doing what you asked of me, [name_genie_hermione]... But I am not going to lie and say that I'm enthusiastic about it. That would cost you extra." ("open", "closed", "base", "mid") + gen "How could you possibly not feel enthusiastic? I'm already paying you a great amount of points, must you always be so greedy?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Hmph*... Nevermind then..." ("annoyed", "narrow", "base", "down") + gen "I'm sorry [name_hermione_genie], but if you can't show me some enthusiasm, then we won't be able to get to the main part of today's event...." ("base", xpos="far_left", ypos="head") + gen "If there's anything that can be done, then speak your mind." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("annoyed", "narrow", "base", "down") + her @ cheeks blush "You know, I was just thinking, that maybe just this once, I wasn't going to be the one ending up with the short end of the stick..." ("open", "closed", "base", "mid") + her @ cheeks blush "Yet, here I am, jerking you off...{w=0.4} Even though that wasn't a part of the agreement..." ("open", "narrow", "base", "down") + gen "I don't see how that equates to you receiving the short end of the stick..." ("base", xpos="far_left", ypos="head") + gen "On the contrary, I'd say you're receiving quite the long end of the stick..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Ugh*..." ("disgust", "narrow", "base", "R") + gen "..." ("base", xpos="far_left", ypos="head") + gen "*Hmm*... Tell you what..." ("base", xpos="far_left", ypos="head") + gen "What if you get to be the one to pick the target?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "You mean..." ("disgust", "squint", "base", "stare") + + nar "You feel Hermione's hands tense around your cock." + + her @ cheeks blush "You--{w=0.4} You're actually letting me decide..." ("angry", "narrow", "base", "down") + gen "Sure... You're holding it, after all." ("base", xpos="far_left", ypos="head") + if _uniform: + gen "As long as it's somewhere on you...{w=0.4} It can be on your shoes for all I care." ("base", xpos="far_left", ypos="head") + her "That's weird, but okay..." ("base", "base", "base", "mid") + gen "Shoes it is!" ("base", xpos="far_left", ypos="head") + else: + gen "As long as you let me finish on you...{w=0.4} It can be on your feet for all I care." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "That's weird, but okay..." ("angry", "narrow", "base", "down") + gen "Feet it is!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "No, that's not it! At least give me time to think it through!" ("angry", "happyCl", "base", "mid") + gen "Unless you want to be late for class, you better decide, and finish me off quickly." ("base", xpos="far_left", ypos="head") + + nar "Hermione increases her pace, jerking your cock with renewed vigour." + + gen "..." ("angry", xpos="far_left", ypos="head") + gen "So...{w=0.4} *Ngh*--{w=0.2} What are we thinking? A facial perhaps?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "A facial?!" ("angry", "base", "base", "mid") + her @ cheeks blush "No, it has to be somewhere where no one will be able to see it." ("angry", "narrow", "base", "mid") + gen "Ah...{w=0.4} Yes, of course...{w=0.4} So, why don't you make up your mind, I'm about to--" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Please [name_genie_hermione], I need some quiet so I can concentrate!" ("angry", "closed", "base", "down") + + nar "Hermione closes her eyes, trying to figure out the best location for your cum." + + gen "Too late! Here I come!" ("grin", xpos="far_left", ypos="head") + her @ cheeks blush "Already?! But I haven't--" ("angry", "base", "base", "stare") + else: + her @ cheeks blush "Another handjob then, I presume?" ("open", "base", "base", "R", xpos="base", ypos="base", flip=False) + gen "If you don't mind..." ("base", xpos="far_left", ypos="head") + + play music "music/(Orchestral) Playful Tension by Shadow16nh.ogg" fadein 1 if_changed # SEX THEME. + her @ cheeks blush "..........." ("soft", "narrow", "base", "down") + + nar "Hermione looks down at your dick..." + + her @ cheeks blush "......................." ("base", "narrow", "base", "down") + pause.1 + + call her_chibi_scene("hj_pause", trans=d9) + pause.8 + + nar "After a brief pause, she puts her slender hand around your member, and begins slowly stroking it..." + + call her_chibi_scene("hj", trans=d5) + call ctc + + gen "So, are you looking forward to attending your classes today?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I am...{w=0.4} I always enjoy the lectures." ("open", "closed", "base", "mid") + gen "That's not what I meant..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I know..." ("open", "happy", "base", "R") + + nar "Hermione slightly strengthens her grip around your cock, then picks up the pace." + + gen "Impatient, are we?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Oh...{w=0.4} Well, class is starting soon, and I'd rather not bring any unnecessary attention to myself by being late." ("angry", "narrow", "base", "R") + gen "Well then, in that case, there's no need to dilly-dally...{w=0.4} You've done this enough times to know what to do." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("angry", "narrow", "base", "down") + + nar "Hermione bends forward, giving the tip of your cock a quick kiss." + + play sound "sounds/kiss.ogg" + call her_chibi_scene("hj_kiss", trans=kissiris) + pause 2 + + call her_chibi_scene("hj", trans=d5) + pause.5 + + gen "*Ah*...{w=0.4} Yes, that's it [name_hermione_genie]...{w=0.4} You sure know how to give a cock the attention it deserves." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("disgust", "narrow", "base", "R") + + play sound "sounds/kiss.ogg" + call her_chibi_scene("hj_kiss", trans=kissiris) + pause 3 + + nar "As if reacting to your words, Hermione gives your cock another kiss..." + call ctc + + nar "This time her lips lingers for a moment..." + pause.5 + + gen "Very--{w=0.2} *Ngh*...{w=0.4} Very good, [name_hermione_genie]...{w=0.4} Now why don't you--" ("base", xpos="far_left", ypos="head") + + nar "Before finishing your sentence, you are interrupted by a slight tickle, as Hermione's tongue slides underneath the head of your cock." + + gen "*Ah*...{w=0.4} You're catching on quick..." ("base", xpos="far_left", ypos="head") + gen "Speaking off--{w=0.2} *Ngh*...{w=0.2} Catching on...{w=0.2} I'm about to finish!" ("base", xpos="far_left", ypos="head") + + nar "You look down at Hermione, who is still preoccupied, toying with the tip of your cock with her tongue..." + + gen "[name_hermione_genie]!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Mff*?" ("open_tongue", "closed", "base", "mid") + gen "I'm cumming!" ("base", xpos="far_left", ypos="head") + + call her_chibi_scene("hj", trans=d5) + pause.5 + + her @ cheeks blush "Wait, where was I supposed to--" ("angry", "base", "base", "stare") + + menu: + "\"Just put it under your top!\"" if _uniform: + # Cum under top + $ states.her.ev.hg_pf_cumslut.choice = "top" + + her @ cheeks blush "My top!" ("angry", "base", "base", "stare") + + stop music fadeout 1.0 + call her_chibi_scene("hj_cum_in_done", trans=d5) + pause.5 + + call cum_block + play sound "sounds/slick_01.ogg" + call her_chibi_scene("hj_cum_in", trans=d5) + pause.8 + + nar "Hermione swiftly pulls up her shirt, sliding your cock underneath...." + nar "The feeling of her soft skin rubbing against the tip of your cock makes you cum instantly..." + call ctc + + call her_chibi_scene("hj_cum_in_done", trans=d5) + + her @ cheeks blush "......." ("disgust", "squint", "base", "stare") + her @ cheeks blush "Well then...{w=0.4} That's that, I suppose..." ("disgust", "narrow", "base", "stare") + her @ cheeks blush "Hopefully no-one should notice it..." ("open", "closed", "base", "mid") + gen "Unless you've got swimming lessons today, I don't see how anyone would." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "We don't have swimming lessons..." ("annoyed", "narrow", "base", "mid") + gen "In any case... You better head off to class." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Right..." ("open", "squint", "base", "R") + + "\"Just figure it out, [name_hermione_genie]!\"" if _naked: + # Cum on naked body (under clothes) + $ states.her.ev.hg_pf_cumslut.choice = "clothes" + + nar "Trying her best to prevent the impending doom, you watch as Hermione's eyes dart between you and her body frantically." + gen "*Nnngh*--" ("angry", xpos="far_left", ypos="head") + her "Wait!" ("angry", "base", "base", "stare", cheeks="blush") + gen "{size=+5}*ARGH*!!! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") + + call her_chibi_scene("hj_cum_on") + call cum_block + + $ hermione.set_cum(breasts="light", body="light") + + her @ cheeks blush "!!!!!!!!!!!" ("angry", "happyCl", "base", "down") + + call cum_block + + $ hermione.set_cum(crotch="heavy") + + gen "That's it! All over your body!" ("base", xpos="far_left", ypos="head") + her "..." ("angry", "narrow", "base", "down") + + call her_chibi_scene("hj_cum_on_done") + call ctc + + her "So sticky...{w=0.4} Well, I suppose that's not a bad thing, considering..." ("angry", "narrow", "base", "down") + her "Is that all, [name_genie_hermione]?" ("soft", "narrow", "base", "R") + gen "Ah...{w=0.4} Yes, I'm spent...{w=0.4} Although I could go again, once I've had the chance to recharge..." ("base", xpos="far_left", ypos="head") + her "You're not actually being serious, are you?" ("angry", "base", "base", "mid") + gen "I don't suppose you could kiss it for good luck before you leave?" ("base", xpos="far_left", ypos="head") + her "I don't think so, [name_genie_hermione]... I believe I did more than what was decided upon already." ("open", "happy", "base", "R") + gen "Eager, to attend classes are we?" ("base", xpos="far_left", ypos="head") + her "That's not--" ("angry", "squint", "base", "mid") + gen "You're free to go, [name_hermione_genie]...{w=0.4} Dismissed." ("base", xpos="far_left", ypos="head") + her "...{w=0.4} Let me just hide this mess first." ("angry", "narrow", "base", "down", cheeks="none") + + "\"Just use your head!\"": + # Cum on hair + $ states.her.ev.hg_pf_cumslut.choice = "hair" + + her "What! But how is that going to--" ("angry", "base", "base", "mid", cheeks="blush") + gen "Now, [name_hermione_genie]! Or there'll be consequences!" ("angry", xpos="far_left", ypos="head") + her "!!!" ("clench", "squint", "base", "stare") + + nar "Hermione bends down and holds your cock in front of her face." + gen "Get ready [name_hermione_genie], here it comes!" ("base", xpos="far_left", ypos="head") + gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") + her "Wait, this isn't going to--" ("angry", "squint", "base", "stare") + + nar "Just before the first spurt manages to escape your magnificent pole, Hermione points it away from her face..." + nar "However, her elation of success doesn't last long as you erupt all over the top of her head, covering her hair in your spunk..." + + play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed + + call her_chibi_scene("hj_cum_on") + call cum_block + + $ hermione.set_cum(hair="light") + + her "!!!!!!!!!!!" ("shock", "base", "base", "up") + + call cum_block + + $ hermione.set_cum(hair="heavy") + + gen "Ah..." ("base", xpos="far_left", ypos="head") + her ".............." ("angry", "base", "worried", "mid") + + call her_chibi_scene("hj_cum_on_done") + call ctc + + her "How could you!?" ("scream", "happy", "annoyed", "mid") + gen "How could I, what?" ("base", xpos="far_left", ypos="head") + her "You told me to just use my--" ("open", "base", "annoyed", "mid") + her "Oh..." ("disgust", "base", "base", "stare") + gen "Yes?" ("base", xpos="far_left", ypos="head") + her "*Hmph*...{w=0.4} Nevermind..." ("annoyed", "narrow", "base", "R") + gen "Now that the pipe's been cleaned, I believe it's time for you to head off to class." ("base", xpos="far_left", ypos="head") + her "Right..." ("open", "squint", "base", "R", cheeks="none") + + hide hermione_main + stop music fadeout 4.0 + + show screen blkfade + with d5 + + if _uniform: + nar "You shimmy back towards your desk, tucking your cock back into your robes along the way." + else: + nar "As Hermione covers up, you begin shimmying back towards your desk, tucking your cock back into your robes along the way." + $ hermione.equip(her_outfit_default) + + call gen_chibi("sit_behind_desk") + call her_chibi("stand","desk","base") + + hide screen blkfade + with d5 + pause.2 + + play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed + + gen "Oh, and one more thing..." ("base", xpos="far_left", ypos="head") + if not _events_completed_any: + her "Yes?" ("open", "base", "base", "mid") + gen "I will need some proof to know you've completed the task, so make sure you do not clean yourself before returning to me." ("base", xpos="far_left", ypos="head") + her "I can try, but I cannot guarantee I won't wipe it off accidentally by then..." ("open", "narrow", "base", "mid") + gen "If that's the case, we can simply repeat the whole ordeal..." ("base", xpos="far_left", ypos="head") + her "Right...{w=0.4} See you in the evening then..." ("open", "narrow", "base", "R") + else: + her "You'll need me to keep it on me as proof... I remember." ("open", "base", "base", "mid") + gen "Good girl..." ("base", xpos="far_left", ypos="head") + her "See you in the evening then..." ("open", "narrow", "base", "R") + + gen "Have a good rest of your day, [name_hermione_genie]...{w=0.4} Now, off you go." ("base", xpos="far_left", ypos="head") + her "Thanks..." ("soft", "narrow", "base", "down") + + call her_walk(action="leave") + + jump end_hermione_event + else: #Tier 6 + gen "Go on then, you know what to do..." ("base", xpos="far_left", ypos="head") + + play music "music/(Orchestral) Playful Tension by Shadow16nh.ogg" fadein 1 if_changed # SEX THEME. + her @ cheeks blush "..........." ("base", "narrow", "base", "down", xpos="base", ypos="base", flip=False) + + nar "Hermione pretends to be nonchalant as she leans closer and wraps her fingers around your throbbing member, but her eyes lock onto your cock with an intense look of lust..." + + her @ cheeks blush "......................." ("base", "narrow", "base", "down") + pause.1 + + call her_chibi_scene("hj_pause", trans=d9) + pause.8 + + nar "Without any fuss, she begins moving her hand up and down..." + + call her_chibi_scene("hj", trans=d5) + call ctc + + gen "That's it, [name_hermione_genie]...{w=0.4} Stroke that cock for me." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("base", "narrow", "base", "down") + + nar "Hermione's gaze, still focused intently on your throbbing member, begins picking up the pace..." + + gen "Very good, [name_hermione_genie]..." ("base", xpos="far_left", ypos="head") + gen "Now..." ("base", xpos="far_left", ypos="head") + + menu: + "\"Give my cock a loving kiss!\"": + her @ cheeks blush "A Loving--" ("angry", "narrow", "base", "down") + gen "Yes! Kiss it like a lover would!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("base", "narrow", "base", "down") + + play sound "sounds/kiss.ogg" + call her_chibi_scene("hj_kiss", trans=kissiris) + pause 3 + + nar "Hermione puckers her lips and bends forward to give your cock a tender kiss..." + call ctc + + nar "Expecting Hermione to pull a way, you're surprised that she doesn't just keep her mouth there, but that she also begins wiggling her tongue, against the tip..." + pause.5 + + gen "That's it [name_hermione_genie]...{w=0.4} Now that's what I'd call a lover's kiss!" ("base", xpos="far_left", ypos="head") + + her @ cheeks blush "..." ("open_tongue", "happy", "base", "up") + nar "Hermione looks up at you with a hint of pride, wiggling her tongue playfully once more, sending shivers down your body." + + gen "*Ngh*!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("soft", "closed", "base", "down") + + call her_chibi_scene("hj", trans=d5) + pause.5 + + her @ cheeks blush "*Mwah*!" ("grin", "squint", "base", "mid") + her @ cheeks blush "Satisfied?" ("grin", "happy", "base", "mid") + gen "Very!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Great...{w=0.4} I was hoping--" ("base", "narrow", "base", "down") + gen "Now take my satisfaction!" ("base", xpos="far_left", ypos="head") + + "\"Tell me how much you want my cum!\"": + her @ cheeks blush "I..." ("soft", "narrow", "base", "down") + gen "Hurry up!!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I want your cum!" ("angry", "happyCl", "base", "mid") + gen "Yes, I knew you'd say it, you saucy--" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Please, give me your cum, [name_genie_hermione]!" ("open_wide_tongue", "happy", "base", "up") + gen "*Ah*...{w=0.4} Yes, I'll give it to you..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I need it [name_genie_hermione]...{w=0.4} I need you to cum on me..." ("angry", "squint", "base", "up") + gen "Tell me how much you need it!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I...{w=0.4} If you don't give it to me, I'll go crazy! Please, [name_genie_hermione]!" ("mad", "narrow", "worried", "down") + + nar "As if trying to impress you, Hermione continues her handjob with renewed effort." + + gen "That's right slut...{w=0.4} How could you have ever lived without it." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I don't know! I don't know how I could have lived without any of this!" ("angry", "narrow", "base", "down") + gen "How does it make you feel to know that soon you'll be walking around the school with my spunk on yourself?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I...{w=0.4} I can't wait!" ("grin", "closed", "worried", "down") + her @ cheeks blush "Just thinking about every student and teacher looking upon me..." ("angry", "closed", "worried", "mid") + her @ cheeks blush "Watching me, casually go about my day...{w=0.4} While covered in your cum!" ("angry", "closed", "worried", "mid") + gen "*Ah*...{w=0.4} *Ah*..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Please [name_genie_hermione]...{w=0.4} I need it!" ("angry", "squint", "worried", "mid") + gen "Yes, [name_hermione_genie]...{w=0.4} And--" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "{size=+4}Give it to me!{/size}" ("clench", "happyCl", "worried", "down") + gen "{size=+4}You shall have it!{/size}" ("base", xpos="far_left", ypos="head") + + "\"Tell them how much of a slut you are!\"": + her @ cheeks blush "What do you mean by \"them\"--" ("angry", "base", "base", "mid") + gen "Do it [name_hermione_genie]! Tell them why you're doing this!" ("base", xpos="far_left", ypos="head") + gen "Tell them what you really want!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Tell who--" ("angry", "squint", "base", "mid") + gen "Tell your classmates that you want them to see what you've done!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "My classmates?!" ("clench", "base", "base", "stare") + gen "Yes, tell them about all the filthy things you've done for them!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "But..." ("mad", "squint", "worried", "mid") + gen "Imagine all your friends and classmates here, right now, watching you jerk off your headmaster, and begging him to cover your body in cum!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "You mean...{w=0.4} Oh, I see..." ("angry", "base", "base", "stare") + gen "Yes, [name_hermione_genie]...{w=0.4} Everyone's listening...{w=0.4} Tell them why you're doing it!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "E--{w=0.2} Everyone...{w=0.4} It's...{w=0.4} It's all true, I've been selling sexual favours!" ("angry", "closed", "base", "mid") + gen "Everyone gasps in shock! The rumours...{w=0.4} They were all true!" ("base", xpos="far_left", ypos="head") + gen "Hermione Granger...{w=0.4} The most talented student of the Gryffindor house...{w=0.4} Is nothing but a slut!?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "What?! No, I just wanted to help our house!" ("angry", "base", "base", "stare") + gen "Help? How is this helping? You're just whoring yourself out, just like the Slytherin girls!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "No, I--{w=0.2} I just wanted to help Gryffindor win the cup!" ("angry", "narrow", "worried", "stare_soft") + gen "Then why would you let them see you like this? Why wouldn't you let them live in blissful ignorance?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I...{w=0.4} I just wanted..." ("disgust", "narrow", "worried", "stare") + her @ cheeks blush "I just wanted to finally get recognized!" ("angry", "happyCl", "worried", "mid") + her @ cheeks blush "Please!" ("angry", "narrow", "worried", "stare") + her @ cheeks blush "Please! Someone! Anyone! Realise what I've been doing! What I've done to help you all!" ("angry", "squint", "worried", "stare") + her @ cheeks blush "I've done so many dirty things for the headmaster!" ("angry", "happyCl", "base", "stare") + her @ cheeks blush "All for you!" ("open", "happyCl", "base", "down") + her @ cheeks blush "Even though I know you'd never appreciate it!" ("disgust", "closed", "worried", "mid") + gen "Faster [name_hermione_genie]! Get those arms moving!" ("base", xpos="far_left", ypos="head") + + nar "Hermione, annoyed at the imaginary crowd, begins jerking your cock with renewed effort." + + gen "That's it! You're just whoring yourself out, for the sake of Gryffindor pride!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes! For the sake of--" ("angry", "base", "base", "stare") + gen "But surely that can't be true! She must just be another slut!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "It is true! I'll do anything that the headmaster wants! All for Gryffindor!" ("angry", "base", "base", "stare") + gen "Then take my cum, like the whore you are!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes [name_genie_hermione], give it to--" ("angry", "wide", "worried", "mid") + + her @ cheeks blush "Wait, where am I supposed to aim--" ("angry", "wide", "base", "stare") + + menu: + "\"Just keep on jerking, [name_hermione_genie]!\"" if _uniform: + # Cum under top + $ states.her.ev.hg_pf_cumslut.choice = "top" + + nar "Hermione continues moving her fingers swiftly against your length, and you feel yourself getting closer to finishing by the second." + gen "Get ready whore, here I come!" ("angry", xpos="far_left", ypos="head") + her @ cheeks blush "Wait!" ("angry", "base", "base", "stare") + gen "{size=+5}*ARGH*! YES!!! RIGHT ON THOSE TITS!{/size}" ("grin", xpos="far_left", ypos="head") + + her @ cheeks blush "My tits!" ("angry", "base", "base", "stare") + + stop music fadeout 1.0 + call her_chibi_scene("hj_cum_in_done", trans=d5) + pause.5 + + call cum_block + play sound "sounds/slick_01.ogg" + call her_chibi_scene("hj_cum_in", trans=d5) + pause.8 + + nar "Pulling up her shirt in one motion, Hermione quickly slides your cock between her tits..." + nar "As the sensation of her soft skin moving across your member hits you, you instantly start shooting load after load of cum in-between her tits..." + call ctc + + call her_chibi_scene("hj_cum_in_done", trans=d5) + + her @ cheeks blush "......." ("soft", "narrow", "base", "up") + her @ cheeks blush "I...{w=0.4} I did it..." ("soft", "closed", "base", "mid") + gen "You sure did..." ("base", xpos="far_left", ypos="head") + gen "Although, I think you would've had an easier time making someone notice if you had taken it on your clothes..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Hmm*...{w=0.4} Well, if I had done that, then everyone would definitely notice..." ("angry", "narrow", "base", "down") + gen "Your point?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("disgust", "base", "base", "mid") + gen "Well then [name_hermione_genie], you better head off to class." ("base", xpos="far_left", ypos="head") + her @ cheeks none "Right..." ("open", "squint", "base", "R") + + "-Stay Silent-" if _naked: + # Cum on crotch (under clothes) + $ states.her.ev.hg_pf_cumslut.choice = "crotch" + + nar "You watch Hermione's eyes, anxiously darting around the room as your inevitable eruption looms closer." + gen "Get ready slut, here it comes!" ("angry", xpos="far_left", ypos="head") + her "Wait!" ("angry", "happyCl", "base", "mid", cheeks="blush") + gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") + + play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed + + call her_chibi_scene("hj_cum_on") + call cum_block + + $ hermione.set_cum(crotch="light") + + her "!!!!!!!!!!!" ("angry", "base", "base", "down") + + $ hermione.set_cum(crotch="light") + + gen "That's it, all over your pussy!" ("base", xpos="far_left", ypos="head") + her "..." ("soft", "base", "base", "down") + + call her_chibi_scene("hj_cum_on_done") + call ctc + + her "......" ("base", "base", "base", "mid") + her "Will that be all, [name_genie_hermione]?" ("open", "base", "base", "mid") + gen "Yes...{w=0.4} That was great, [name_hermione_genie]...{w=0.4} Although, I don't suppose you could kiss it, for good luck?" ("base", xpos="far_left", ypos="head") + her "......" ("base", "narrow", "base", "mid", cheeks="none") + + hide hermione_main + play sound "sounds/kiss.ogg" + with kissiris + + call her_chibi_scene("hj_cum_on_done") + gen "Good girl..." ("base", xpos="far_left", ypos="head") + + "\"On your face!\"": + # Cum on face + $ states.her.ev.hg_pf_cumslut.choice = "face" + + nar "Hermione bends down and holds your cock against her face." + + gen "Get ready slut, here it comes!" ("base", xpos="far_left", ypos="head") + her "..." ("angry", "happyCl", "worried", "mid", cheeks="blush") + gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") + + nar "You erupt onto her face, dousing it in your spunk." + + play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed + + call her_chibi_scene("hj_cum_on") + call cum_block + + $ hermione.set_cum(face="light") + + her "!!!!!!!!!!!" ("angry", "happyCl", "base", "mid") + + call cum_block + + $ hermione.set_cum(face="heavy", hair="light") + + + gen "Ah... Yes! I feel so much better now..." ("base", xpos="far_left", ypos="head") + her ".............." ("disgust", "squint", "base", "mid") + + call her_chibi_scene("hj_cum_on_done") + call ctc + + her "My face...{w=0.4} It's all covered..." ("disgust", "narrow", "base", "down") + her "How am I supposed to hide this..." ("disgust", "happyCl", "base", "mid") + gen "I don't really care if you hide it or not, just don't miss your lectures..." ("base", xpos="far_left", ypos="head") + her "..." ("annoyed", "narrow", "base", "mid", cheeks="none") + + "\"In your hair!\"": + $ states.her.ev.hg_pf_cumslut.choice = "hair" + + nar "Hermione bends down and aims your cock towards her hair." + + gen "That's it slut, time make that hair even more messy!" + her "My hair isn't--" ("angry", "base", "base", "stare", cheeks="blush") + gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") + + nar "You let our a torrent of cum, all over Hermione's hair." + + play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed + + call her_chibi_scene("hj_cum_on") + call cum_block + + $ hermione.set_cum(hair="light") + + her "!!!!!!!!!!!" ("angry", "base", "base", "up") + + call cum_block + + $ hermione.set_cum(hair="heavy") + + gen "Ah... That's the ticket..." ("base", xpos="far_left", ypos="head") + her ".............." ("disgust", "squint", "base", "up") + + call her_chibi_scene("hj_cum_on_done") + call ctc + + her "My hair... Is not messy..." ("annoyed", "squint", "base", "mid") + gen "I see it as a positive thing." ("base", xpos="far_left", ypos="head") + her "What is that supposed to mean?" ("angry", "base", "base", "mid") + gen "It makes it way less likely that my cum will slide off." ("base", xpos="far_left", ypos="head") + her "..." ("disgust", "base", "base", "mid", cheeks="none") + + + hide hermione_main + stop music fadeout 4.0 + + show screen blkfade + with d5 + + if _uniform: + nar "Tucking your penis back into your trousers, you shimmy over to your desk." + else: + nar "While Hermione focuses on getting dressed, you stow your wand away, and sit down in your chair." + $ hermione.equip(her_outfit_default) + + call gen_chibi("sit_behind_desk") + call her_chibi("stand","desk","base") + + hide screen blkfade + with d5 + pause.2 + + play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed + + gen "Oh, and just to be clear..." ("base", xpos="far_left", ypos="head") + if not _events_completed_any: + her "Yes?" ("open", "base", "base", "mid") + gen "If you return to this office after classes, without any cum on you, I'll be very upset." ("base", xpos="far_left", ypos="head") + her "Alright...{w=0.4} Hopefully it won't dissolve on its own before then." ("open", "base", "base", "R") + gen "I wouldn't worry about that..." ("base", xpos="far_left", ypos="head") + her "A potency potion, is it?" ("soft", "squint", "base", "mid") + gen "Yep, that's it..." ("base", xpos="far_left", ypos="head") + her "Alright...{w=0.4} I'll see you later then..." ("open", "base", "base", "mid") + gen "Have fun..." ("base", xpos="far_left", ypos="head") + her "..." ("soft", "squint", "base", "R") + else: + her "Don't worry... I won't clean it off until after I've returned to your office." ("open", "base", "base", "mid") + gen "Very good..." ("base", xpos="far_left", ypos="head") + + gen "Have fun..." ("base", xpos="far_left", ypos="head") + her "..." ("soft", "squint", "base", "R") + + call her_walk(action="leave") + + jump end_hermione_event + label hg_pr_cumslut_fail: call start_hg_pr_cumslut @@ -36,945 +825,673 @@ label hg_pr_cumslut_fail: jump too_much_public -label hg_pr_cumslut_e1: +## Return events ## - call start_hg_pr_cumslut +label hg_pr_cumslut_T5_return: - her "" (xpos="mid", ypos="base", trans=fade) + if states.her.ev.hg_pf_cumslut.choice == "top": + jump hg_pr_cumslut_T5_top + elif states.her.ev.hg_pf_cumslut.choice == "clothes": + jump hg_pr_cumslut_T5_clothes + elif states.her.ev.hg_pf_cumslut.choice == "hair": + jump hg_pr_cumslut_T5_hair - gen "[name_hermione_genie]?" ("base", xpos="far_left", ypos="head") - her @ cheeks base "Yes, [name_genie_hermione]." ("base", "base", "base", "mid") +label hg_pr_cumslut_T6_return: - play music "music/(Orchestral) Playful Tension by Shadow16nh.ogg" fadein 1 if_changed + if states.her.ev.hg_pf_cumslut.choice == "top": + jump hg_pr_cumslut_T6_top + elif states.her.ev.hg_pf_cumslut.choice == "crotch": + jump hg_pr_cumslut_T6_crotch + elif states.her.ev.hg_pf_cumslut.choice == "face": + jump hg_pr_cumslut_T6_face + elif states.her.ev.hg_pf_cumslut.choice == "hair": + jump hg_pr_cumslut_T6_hair - gen "Today I have another small favour to ask of you." ("base", xpos="far_left", ypos="head") - her "What is it?" ("soft", "base", "base", "mid") - gen "I'd like you to attend class..." ("base", xpos="far_left", ypos="head") - her "Of course, not a problem..." ("base", "happyCl", "base", "mid") - gen "Glazed with my cum!" ("grin", xpos="far_left", ypos="head") - her "What?!?" ("shock", "wide", "base", "stare") - her "You can't be serious!" ("angry", "base", "angry", "mid") - her "It's bad enough that I let you cum on me in the first place!" ("annoyed", "narrow", "annoyed", "mid") - her "But in public?" ("angry", "narrow", "annoyed", "mid", emote="angry") - her "I think I better leave..." ("annoyed", "base", "angry", "mid") - gen "Wait!" ("base", xpos="far_left", ypos="head") - gen "What if nobody could see it?" ("base", xpos="far_left", ypos="head") - her "You mean like a spell?" ("soft", "narrow", "annoyed", "mid") - gen "That, or I could dump my load somewhere discreet." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Well... I suppose that would be alright..." ("annoyed", "narrow", "annoyed", "R") - her "But what's the point of it all?" ("annoyed", "base", "worried", "R") - gen "You'll know it's there, and so will I." ("grin", xpos="far_left", ypos="head") - her "*Hmm*..." ("annoyed", "narrow", "angry", "L") - her "How much would I be paid for this?" ("annoyed", "squint", "base", "mid") - gen "Thirty points." ("base", xpos="far_left", ypos="head") - her "Thirty?! I expect at least seventy for such a filthy act!" ("angry", "happyCl", "worried", "mid") - gen "Forty." ("base", xpos="far_left", ypos="head") - her "Sixty!" ("open", "closed", "angry", "mid") - gen "Fifty points, my final offer." ("base", xpos="far_left", ypos="head") - her "Okay, I'll do it." ("annoyed", "base", "worried", "R") - gen "Really?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "If nobody can see it then I guess it's okay..." ("annoyed", "narrow", "angry", "R") - gen "Splendid. Care to lend me a hand?" ("base", xpos="far_left", ypos="head") - her "*sigh*..." ("soft", "narrow", "worried", "down") +label hg_pr_cumslut_T5_top: + # Cum under top, professor McGonagall notices a stain. + $ hermione.equip(her_outfit_default) + $ hermione.set_cum(breasts="light", body="light") - hide hermione_main - call blkfade + call her_walk(action="enter", xpos="mid", ypos="base") - call her_chibi_scene("hj", "desk", "base") + her "...{w=0.4} I did it, [name_genie_hermione]." ("open", "closed", "base", "mid", xpos="mid", ypos="base", trans=fade) + her "I've kept your cum under my top, all day." ("open", "closed", "base", "mid") - call hide_blkfade - call ctc + gen "I'll be the judge of that..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "[name_genie_hermione]?" ("angry", "base", "base", "mid") + gen "Remove your top and bra for me, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Oh...{w=0.4} Right..." ("disgust", "narrow", "base", "down") - her "Why are you making me do this, [name_genie_hermione]?" ("angry", "base", "worried", "mid", ypos="head", flip=False) - gen "What do you mean?" ("base", xpos="far_left", ypos="head") - her "Why are you making me jerk you off..." ("angry", "narrow", "base", "down") - gen "You know why..." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Are you trying to mark me as yours?" ("normal", "narrow", "annoyed", "mid") - her @ cheeks blush "Like some common beast?" ("normal", "narrow", "worried", "mid") - gen "I'm not doing anything, my hands are right here." ("grin", xpos="far_left", ypos="head") - her "That may be so, but if I stop, Gryffindor will lose the house cup." ("annoyed", "narrow", "worried", "mid") - gen "And?" ("base", xpos="far_left", ypos="head") - her "Harry and Ron will be so disappointed..." ("annoyed", "base", "worried", "mid") - gen "So that's why you are doing this? For those two boys?" ("base", xpos="far_left", ypos="head") - her "Sort of... I'm not sure that they'd be too upset, though." ("annoyed", "base", "worried", "R") - gen "Are you sure that's the only reason?" ("base", xpos="far_left", ypos="head") - her "What?" ("upset", "wink", "base", "mid") - gen "I mean, you're answering all my summon requests--" ("base", xpos="far_left", ypos="head") - gen "--Doing whatever I tell you to do, whenever I tell you." ("base", xpos="far_left", ypos="head") - gen "Performing in front of your peers, because I ask of you." ("base", xpos="far_left", ypos="head") - her "..." ("disgust", "narrow", "base", "down") - gen "Tell you what, I'll give you a choice." ("base", xpos="far_left", ypos="head") - gen "So long as I cum on you, and you parade around school smelling like a slut today, Gryffindor will get fifty points." ("base", xpos="far_left", ypos="head") - her "How is that any different from what we've already agreed on?" ("disgust", "narrow", "base", "mid_soft") - gen "Because I'll let you choose where to take my load." ("base", xpos="far_left", ypos="head") - nar "You feel her hands tense around your cock." - her "You're letting me choose?" ("open", "base", "base", "mid") - gen "Yep." ("base", xpos="far_left", ypos="head") - gen "As long as you let me cum on you. You can even choose your feet for all I care." ("base", xpos="far_left", ypos="head") - her "Okay..." ("crooked_smile", "narrow", "base", "mid") - gen "Well, hurry up then, [name_hermione_genie], classes will start soon." ("base", xpos="far_left", ypos="head") - nar "She starts jerking your cock with renewed vigour." - gen "So, what will be your choice?" ("base", xpos="far_left", ypos="head") - her "I'm not sure." ("upset", "wink", "base", "mid") - her "I'm trying to think of a place no one will be able to see..." ("angry", "base", "base", "mid") - gen "You better think of something soon!" ("base", xpos="far_left", ypos="head") - her "Why's that?" ("open", "wink", "worried", "mid") - gen "Because I'm about to cum!" ("grin", xpos="far_left", ypos="head") - her "Already?! But I still haven't--" ("angry", "wide", "base", "stare") + play sound "sounds/cloth_sound3.ogg" + $ hermione.strip("top", "bra") + pause.5 - menu: - #"-Stay Silent-": # TODO: rewrite so it doesn't require to be "under" shirt, but on top of the existing cloth (if any at all) - # Cum under shirt - #$ _cum_location = 1 + gen "*Hmm*...{w=0.4} Yes, that's cum alright...{w=0.4} I'd recognize that slimy consistency from a mile away..." ("base", xpos="far_left", ypos="head") + gen "Good job [name_hermione_genie], you've completed your task with flying colours." ("base", xpos="far_left", ypos="head") - #nar "Hermione swiftly pulls her shirt up..." - #nar "You can feel her incredibly soft tits rubbing against the tip of your cock, making you cum!" - #gen "{size=+5}*ARGH*! YES!!!{/size}" ("angry", xpos="far_left", ypos="head") + if _events_filtered_completed_all: + menu: + "\"Fifty points to Gryffindor!\"": + $ gryffindor += 50 + her "Thank you [name_genie_hermione]..." ("open", "base", "base", "mid") - #call her_chibi_scene("hj_cum_in") - #call cum_block + jump hg_pr_cumslut_T5_top.end - # TODO Cum under shirt layer - - #her "!!!!!!!!!!!" ("shock", "wide", "base", "stare", xpos="right", ypos="base") - - #call her_chibi_scene("hj_cum_in_done") - #call ctc - - #her "Well, this shouldn't be too bad..." ("upset", "wink", "base", "mid") - #gen "I'm sure no one will notice." ("base", xpos="far_left", ypos="head") - #her "They better not." ("angry", "base", "angry", "mid") - - "\"Just keep on jerking, [name_hermione_genie]!\"": - # Cum on skirt - $ _cum_location = "bottom" - - nar "Hermione keeps jerking your cock, her gaze wandering about her own body." - gen "Get ready, you whore, here it comes!!!" ("angry", xpos="far_left", ypos="head") - her "Wait, I need more time--" ("shock", "wide", "worried", "mid") - gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") - - play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed - - call her_chibi_scene("hj_cum_on") - call cum_block - - $ hermione.set_cum(crotch="light") - - her "!!!!!!!!!!!" ("shock", "wide", "base", "stare", xpos="right", ypos="base") - - $ hermione.set_cum(crotch="heavy") - - gen "That's it! All over you, slut!" ("angry", xpos="far_left", ypos="head") - her "..." ("shock", "base", "worried", "down") - - call her_chibi_scene("hj_cum_on_done") - call ctc - - her "Y-you came all over my bottom half..." ("angry", "narrow", "worried", "mid") - - her "Will that be all, [name_genie_hermione]?" ("angry", "narrow", "worried", "mid") - gen "I don't suppose you could kiss it for good luck?" ("base", xpos="far_left", ypos="head") - her "I don't think so." ("annoyed", "narrow", "angry", "R") - gen "Well then that should be all, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - - "\"Use your head, slut!\"": - # Cum on head - $ _cum_location = "face" - - nar "Hermione bends down and holds your cock in front of her face." - gen "Oh? Interesting! Get ready, here it comes!" ("base", xpos="far_left", ypos="head") - her "W-wait I--" ("scream", "wide", "base", "mid") - gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") - her "--I can't!" ("open", "wide", "worried", "mid") - - nar "Hermione moves your cock away from her face at the last second." - nar "You erupt all over the top of her head, covering her hair in your spunk." - - play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed - - call her_chibi_scene("hj_cum_on") - call cum_block - - $ hermione.set_cum(hair="light") - - her "!!!!!!!!!!!" ("shock", "wide", "base", "stare", xpos="right", ypos="base") - - $ hermione.set_cum(hair="heavy") - - gen "Yes! I Feel so much better now..." ("grin", xpos="far_left", ypos="head") - her ".............." ("normal", "happyCl", "worried", "mid") - - call her_chibi_scene("hj_cum_on_done") - call ctc - - her @ tears soft_blink "H-How could you!?" ("scream", "happyCl", "worried", "mid") - gen "How could I? What do you mean?" ("base", xpos="far_left", ypos="head") - her @ tears soft "You told me to use my head!" ("scream", "base", "angry", "mid") - gen "I did." ("base", xpos="far_left", ypos="head") - her @ tears soft_blink "Why would you do something like that then!?" ("mad", "happyCl", "worried", "mid") - gen "Sorry, what wrongdoing did I do?" ("base", xpos="far_left", ypos="head") - her @ tears soft "If I hadn't moved at the last second, my face would be covered!" ("angry", "base", "base", "mid") - gen "Don't blame me, that was your move, not mine." ("base", xpos="far_left", ypos="head") - her "What?" ("open", "base", "angry", "mid") - gen "I only said that you should use your head to think." ("base", xpos="far_left", ypos="head") - gen "I didn't mean it in a literal sense..." ("base", xpos="far_left", ypos="head") - her "You mean I didn't have to..." ("angry", "base", "worried", "R") - gen "Not at all." ("base", xpos="far_left", ypos="head") - gen "I thought you of all people would know what an idiom is." ("grin", xpos="far_left", ypos="head") - her "........." ("disgust", "narrow", "worried", "mid") - - hide hermione_main - call blkfade - - nar "You tuck your cock back into your robe." - - call gen_chibi("sit_behind_desk") - call her_chibi("stand","desk","base") - - call hide_blkfade - pause.2 - - call bld - gen "Oh, and one last thing before you head to class..." ("base", xpos="far_left", ypos="head") - her "What is it?" ("annoyed", "narrow", "annoyed", "mid") - gen "If you happen to report to me after class, with no traces of cum on you, Slytherin will get two hundred points." ("base", xpos="far_left", ypos="head") - her "{size=+10}Two hundred!? That is not fair!{/size}" ("shock", "wide", "base", "stare") - gen "It's unfair only if you cheat, and try washing it off." ("grin", xpos="far_left", ypos="head") - her "*tsk*!..." ("angry", "base", "angry", "mid") - - call her_walk(action="leave") - - gen "See you soon..." ("grin", xpos="far_left", ypos="head") - - jump end_hermione_event - -label hg_pr_cumslut_e2: - - call start_hg_pr_cumslut - - her "" (xpos="mid", ypos="base", trans=fade) - - her "Again?" ("angry", "wide", "base", "stare") - her "You cannot be serious!?" ("angry", "base", "angry", "mid") - her @ cheeks blush "I already let you do this to me once, isn't that enough?" ("annoyed", "narrow", "annoyed", "mid") - gen "It's enough when I say it's enough." ("base", xpos="far_left", ypos="head") - gen "Besides, was it really so bad the last time?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Well I guess not..." ("annoyed", "base", "angry", "R") - her "But will it still be hidden this time?" ("annoyed", "base", "worried", "mid") - gen "That's up to you." ("base", xpos="far_left", ypos="head") - her "*Hmm*..." ("annoyed", "narrow", "angry", "R") - - her "How much will I be paid this time then?" ("open", "squint", "base", "mid") - gen "Twenty points." ("base", xpos="far_left", ypos="head") - her "Twenty!? we agreed on fifty last time!" ("clench", "base", "angry", "mid") - gen "Forty." ("base", xpos="far_left", ypos="head") - her "Seventy!" ("scream", "closed", "angry", "mid") - gen "Fifty points then, final offer." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Eighty and I'll let people see it." ("grin", "narrow", "base", "mid_soft") - gen "Really?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "As long as it isn't too obvious..." ("base", "narrow", "worried", "down") - gen "Deal!" ("grin", xpos="far_left", ypos="head") - her "..." ("soft", "narrow", "worried", "down") - - hide hermione_main - call blkfade - - call her_chibi_scene("hj", "desk", "base") - call hide_blkfade - call ctc - - her "Why are we doing this again, [name_genie_hermione]?" ("annoyed", "base", "base", "mid", ypos="head", flip=False) - gen "Let me answer your question with one of my own." ("base", xpos="far_left", ypos="head") - her "Okay..." ("open", "base", "base", "mid") - gen "Why are you jerking me off, [name_hermione_genie]?" ("base", xpos="far_left", ypos="head") - her "Because you asked me to..." ("soft", "narrow", "annoyed", "mid") - gen "And that's all there is to it?" ("base", xpos="far_left", ypos="head") - her "Yes... I think?" ("open", "wink", "worried", "mid") - gen "Are you sure?" ("base", xpos="far_left", ypos="head") - her "I don't know..." ("open", "base", "worried", "R") - gen "What is your other reason?" ("base", xpos="far_left", ypos="head") - her "if I don't do this, Gryffindor will lose the house cup." ("angry", "happyCl", "worried", "mid") - gen "You said the same thing the last time, but I still don't buy it." ("base", xpos="far_left", ypos="head") - her "It's not a lie..." ("angry", "base", "worried", "mid") - gen "No, it's not, but it's not a complete truth either." ("base", xpos="far_left", ypos="head") - gen "If you had to choose, would you rather win the house cup, or--" ("base", xpos="far_left", ypos="head") - gen "Would you rather make me a happy man." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Can't I do both?" ("annoyed", "base", "worried", "R") - gen "You certainly can... But I want you to be honest." ("base", xpos="far_left", ypos="head") - gen "I'm going to give you another choice--" ("base", xpos="far_left", ypos="head") - gen "You can stop jerking me off right now, leave the room and I'll give you a hundred points. However, I'll be very upset." ("base", xpos="far_left", ypos="head") - her "..." ("open", "base", "base", "mid") - her "What's the other option?" ("soft", "base", "worried", "mid") - gen "Or, you can continue what you're doing, take my load on you, but you'll get no points whatsoever." ("base", xpos="far_left", ypos="head") - her "..." ("shock", "wide", "base", "mid") - her "NO POINTS?" ("angry", "wide", "worried", "mid") - gen "None. However, you will make me very happy." ("base", xpos="far_left", ypos="head") - her "But that's... Can't you just pay me like usual--" ("angry", "base", "worried", "mid", emote="sweat") - gen "No, I cannot." ("base", xpos="far_left", ypos="head") - gen "The choice is yours however." ("base", xpos="far_left", ypos="head") - nar "You feel Hermione's hand tense around your cock." - her "You're making me choose? Between getting a hundred points for doing nothing--" ("angry", "happyCl", "angry", "mid") - her "--Or getting paid nothing for being treated like some cumrag from slytherin?" ("angry", "narrow", "annoyed", "mid", emote="angry") - gen "I would've phrased it differently, but yes, these are your choices, [name_hermione_genie]." ("grin", xpos="far_left", ypos="head") - her "{size=-5}Some choices they are...{/size}" ("disgust", "narrow", "base", "R") - gen "You might wish to make up your mind soon, your classes are about to start." ("base", xpos="far_left", ypos="head") - nar "Hermione ponders for a minute, you study her face in great detail, wondering what's going through her head." - nar "You can see the wheels turning as she contemplates her choices, as ridiculous as they may be." - nar "Her face is beet red, eyes unfocused. You nod to yourself, you think you know the answer." - nar "She starts jerking your cock with renewed vigour." - her @ cheeks blush "..." ("annoyed", "narrow", "angry", "R") - her @ cheeks blush "You better appreciate this..." ("open", "narrow", "angry", "R") - gen "Oh, trust me, I am feeling {b}very{/b} happy!" ("grin", xpos="far_left", ypos="head") - her "Really?" ("open", "base", "base", "mid") - gen "You're about to see how much I'm appreciating this!" ("grin", xpos="far_left", ypos="head") - her "What, Already? Where should I--" ("angry", "wide", "base", "stare") - - menu: - "-Stay Silent-": - # Cum on legs - $ _cum_location = "legs" - - nar "Hermione tries to think, but her mind is too distracted to think quick enough." - gen "Get ready slut, here it comes!" ("angry", xpos="far_left", ypos="head") - her "Wait, where am I supposed to--" ("shock", "wide", "worried", "mid") - gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") - nar "Hermione aims your cock lower, aiming it at her legs." - - play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed - - call her_chibi_scene("hj_cum_on") - call cum_block - - $ hermione.set_cum(legs="light") - - her "!!!!!!!!!!!" ("shock", "wide", "base", "stare", xpos="right", ypos="base") - - $ hermione.set_cum(legs="heavy") - - gen "That's it, all over your milky thighs." ("angry", xpos="far_left", ypos="head") - her "..." ("shock", "narrow", "worried", "down") - - call her_chibi_scene("hj_cum_on_done") - call ctc - - her "Are you happy now?" ("soft", "narrow", "annoyed", "mid") - gen "I've never been happier, but..." ("base", xpos="far_left", ypos="head") - her "...but?" ("normal", "wink", "annoyed", "mid") - gen "I don't suppose you could give it a kiss, you know, for good luck?" ("base", xpos="far_left", ypos="head") - her "......*sigh*" ("soft", "closed", "base", "up") - - hide hermione_main - call her_chibi_scene("hj_kiss") - play sound "sounds/kiss.ogg" - with kissiris - call ctc - - $ states.her.ev.give_me_a_handy.cock_kiss = True - - call her_chibi_scene("hj_cum_on_done") - gen "Good girl." ("base", xpos="far_left", ypos="head") - - "\"Just keep on jerking, [name_hermione_genie]!\"": - # Cum on shirt - $ _cum_location = "chest" - - nar "Hermione keeps jerking your cock, her eyes focused intently on it." - gen "Get ready slut, here I come!" ("angry", xpos="far_left", ypos="head") - her "Please not on my--" ("shock", "base", "worried", "mid") - gen "{size=+5}*ARGH*! YES!!! RIGHT ON THOSE TITS!{/size}" ("grin", xpos="far_left", ypos="head") - - play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed - - call her_chibi_scene("hj_cum_on") - call cum_block - - $ hermione.set_cum(breasts="light", body="light") - - her "!!!!!!!!!!!" ("shock", "wide", "base", "stare", xpos="right", ypos="base") - - $ hermione.set_cum(breasts="heavy") - - gen "That's it! Let it soak, slut!" ("grin", xpos="far_left", ypos="head") - her "..." ("annoyed", "narrow", "worried", "down") - - call her_chibi_scene("hj_cum_on_done") - call ctc - - her "It's all over me..." ("angry", "narrow", "worried", "mid") - gen "Not quite, but good enough." ("base", xpos="far_left", ypos="head") - her "I think I should go now..." ("annoyed", "narrow", "worried", "down") - - "\"Take it on your face slut!\"": - # Cum on face - $ _cum_location = "face" - - nar "Hermione bends down and holds your cock in front of her face." - gen "Get ready, here it comes!" ("base", xpos="far_left", ypos="head") - her "..." ("angry", "happyCl", "base", "mid") - gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") - her "..." ("angry", "happyCl", "angry", "down") - nar "You erupt onto her face, dousing her in your seemingly infinite spunk." - - play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed - - call her_chibi_scene("hj_cum_on") - call cum_block - - $ hermione.set_cum(face="light") - - her "!!!!!!!!!!!" ("shock", "happyCl", "base", "stare", xpos="right", ypos="base") - - $ hermione.set_cum(face="heavy", hair="light") - - gen "I Feel so much lighter now..." ("grin", xpos="far_left", ypos="head") - her ".............." ("normal", "happyCl", "worried", "mid") - - call her_chibi_scene("hj_cum_on_done") - call ctc - - her "[name_genie_hermione]!!!" ("scream", "happyCl", "worried", "mid") - her "You came all over my face!" ("scream", "closed", "angry", "mid") - gen "That's very perceptive of you." ("base", xpos="far_left", ypos="head") - her @ tears soft_blink "Why would you ask me to do that!?" ("mad", "happyCl", "worried", "mid") - her @ tears soft "I'm completely covered in your cum!" ("angry", "base", "base", "mid") - gen "You didn't have to listen to me." ("base", xpos="far_left", ypos="head") - her "..." ("angry", "base", "worried", "mid") - her "You told me to do it though..." ("annoyed", "base", "worried", "R") - - hide hermione_main - call blkfade - - nar "You tuck your cock back into your robe." - - call gen_chibi("sit_behind_desk") - call her_chibi("stand","desk","base") - - hide screen blktone - hide screen bld1 - call hide_blkfade - pause.2 - - call bld - gen "Oh and one last thing before you head to class." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Yes, I know... Don't wash it off before reporting in..." ("annoyed", "narrow", "annoyed", "R", xpos="right", ypos="base") - gen "Good, you learn quick." ("Grin", xpos="far_left", ypos="head") - her "........." ("annoyed", "narrow", "base", "R") - gen "Have fun! Tell your friends that Dumbledork sends his regards." ("grin", xpos="far_left", ypos="head") - her "Very funny..." ("disgust", "narrow", "worried", "mid") - - call her_walk(action="leave") - - jump end_hermione_event - -label hg_pr_cumslut_e3: - - call start_hg_pr_cumslut - - her "" (xpos="mid", ypos="base", trans=fade) - - her "Again? I just took a shower not too long ago..." ("open", "base", "worried", "mid") - gen "No worries, [name_hermione_genie], I'll give you another shower." ("grin", xpos="far_left", ypos="head") - her "I'm not sure we're talking about the same thing..." ("disgust", "narrow", "base", "mid") - gen "Only one way to find out." ("base", xpos="far_left", ypos="head") - her "*sigh*... I hope I don't regret it..." ("soft", "narrow", "base", "R") - - hide hermione_main - call blkfade - - call her_chibi_scene("hj", "desk", "base") - - call hide_blkfade - call ctc - - call bld - gen "Gods, you're good at this, [name_hermione_genie]!" ("base", xpos="far_left", ypos="head") - her "Thank you... I've been thinking about what you asked me the last time..." ("angry", "wink", "base", "mid", ypos="head", flip=False) - gen "Oh?" ("base", xpos="far_left", ypos="head") - her "You asked me for the reason why I do all this... Why I sell you all these favours..." ("open", "base", "angry", "mid") - her "I think it's time for me to come clean..." ("open", "closed", "worried", "mid") - gen "(*heh*)" ("grin", xpos="far_left", ypos="head") - gen "(I'm itching to make a joke, but perhaps it'd be wiser to let her speak.)" ("base", xpos="far_left", ypos="head") - her "I didn't lie when I said it was just to get more house points, so that gryffindor could win the house cup..." ("angry", "wink", "worried", "mid") - her @ cheeks blush "At first. But lately..." ("base", "narrow", "worried", "down") - her @ cheeks blush "I think...{w=0.5} I think I'm starting to enjoy it, [name_genie_hermione]." ("soft", "narrow", "base", "mid_soft") - her @ cheeks blush "Because seeing you happy, makes me happy..." ("base", "happyCl", "base", "mid") - gen "That's great... But what would really make me happy right now is you focusing a little more on the task at hand..." ("base", xpos="far_left", ypos="head") - her "Oh! Of course, [name_genie_hermione]... Silly me!" ("angry", "happy", "worried", "mid") - her "I need to learn how to multitask." ("annoyed", "narrow", "base", "stare") - her "it would come in handy." ("open", "squint", "base", "down") - gen "(*heh-heh*)" ("grin", xpos="far_left", ypos="head") - her "I think something's wrong with me, [name_genie_hermione]." ("open", "narrow", "worried", "mid") - her "Ever since you asked me to parade with your cum in public, I think--" ("open", "narrow", "annoyed", "up") - her "--I think something changed in me." ("grin", "narrow", "base", "dead") - her "I thought I hated it but the truth is..." ("grin", "narrow", "base", "dead") - her "I'm kind of enjoying it." ("soft", "narrow", "annoyed", "up") - her "Is it weird? Does that make me a slut, [name_genie_hermione]?" ("soft", "narrow", "worried", "mid") - - if "slut" in name_hermione_genie.lower(): - gen "Is that a rhetorical question, [name_hermione_genie]?" ("base", xpos="far_left", ypos="head") - her "Right... I guess it was..." ("silly", "narrow", "annoyed", "up") + "\"Now, tell me about your day.\"": + pass else: - gen "No, [name_hermione_genie], it does not." ("base", xpos="far_left", ypos="head") - her "Really? I'm relie--" ("base", "closed", "base", "up") - gen "--It makes you a {b}cumslut{/b}." ("grin", xpos="far_left", ypos="head") - her "I'm a what?" ("open", "squint", "annoyed", "mid") - gen "A cumslut. A cum-loving jizz guzzler." ("grin", xpos="far_left", ypos="head") - her "...So there's something wrong with me after all..." ("angry", "narrow", "annoyed", "down") - gen "I didn't say that." ("grin", xpos="far_left", ypos="head") - her "...?" ("soft", "wink", "worried", "mid") - gen "You may be a cumslut, but you're also {b}my{/b} cumslut, first and foremost." ("grin", xpos="far_left", ypos="head") - her @ cheeks blush "*Ah*{heart} Y-Your cumslut...?" ("disgust", "squint", "worried", "mid") - gen "Yes, you're my favourite cum receptacle, the smartest cumslut on the block." ("grin", xpos="far_left", ypos="head") - her @ cheeks blush "I'm your favourite... The smartest...{heart}{heart}" ("silly", "narrow", "base", "dead") - her @ cheeks blush "In that case..." ("base", "narrow", "low", "mid") + gen "Now, tell me about your day..." ("base", xpos="far_left", ypos="head") - her "Would you be so kind and douse your favourite cumslut with a fresh layer of your nasty jizz?" ("open_wide_tongue", "narrow", "annoyed", "up") - gen "Oh that did it, you filthy slut!" ("grin", xpos="far_left", ypos="head") - gen "HERE IT COMES!!!" ("angry", xpos="far_left", ypos="head") - her "Shoot it wherever you want [name_genie_hermione]..." ("open_wide_tongue", "narrow", "worried", "mid") + her @ cheeks blush "Oh...{w=0.4} Well, it was a pretty normal day... For the most part..." ("angry", "narrow", "base", "R") + her @ cheeks blush "I had potions, and then transfiguration afterwards." ("open", "squint", "base", "R") + gen "Any inkling that Severus may have realised what kind of predicament you had put yourself in?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I don't think so, [name_genie_hermione]...{w=0.4} Luckily, today's lesson was a quiz, so Professor Snape didn't have any reason to go near me..." ("soft", "narrow", "base", "mid") + gen "A quiz?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes, [name_genie_hermione]...{w=0.4} Our lessons often involve quizzes, reading or tests." ("open", "base", "base", "mid") + gen "(That man really has mastered the art of laziness...)" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "That said, professor McGonagall did notice a bit of a stain, during transfiguration class." ("soft", "narrow", "base", "down") + her @ cheeks blush "She's quite strict about cleanliness, so she held me back and gave me a lecture about it after class." ("open", "narrow", "base", "down") + gen "Did she happen to inquire the source of this stain?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "She did..." ("angry", "narrow", "base", "down") + her @ cheeks blush "I told her that I had spilled some {i}Wiggenweld potion{/i} down my front during potions class." ("disgust", "narrow", "worried", "down") + her @ cheeks blush "Unfortunately, she didn't believe me immediately..." ("annoyed", "narrow", "base", "down") + her @ cheeks blush "Apparently some students have been caught, putting {i}Dizziness Draught{/i} in that same area, just so they could get high off the fumes." ("open", "closed", "angry", "mid") + gen "Of course they would...{w=0.4} Either it's glue or permanent markers, they always figure out a way..." ("base", xpos="far_left", ypos="head") + gen "So, how did you prove it to her that it wasn't some of that dank draft?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "She...{w=0.4} *Ahem*...{w=0.4} I allowed her to sniff my chest..." ("soft", "narrow", "base", "down") + gen "You did what?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "What else was I supposed to do?" ("angry", "squint", "worried", "mid") + gen "Good point..." ("base", xpos="far_left", ypos="head") + gen "So, how did it turn out? Did she finally believe what you told her?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I believe so...{w=0.4} At least she confirmed that it wasn't {i}Dizziness Draught{/i}, and sent me on my way..." ("open", "closed", "base", "mid") + gen "So, she didn't confirm what it actually--" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I felt so bad, having to lie to her...{w=0.4} I really would've preferred not to." ("open", "narrow", "worried", "down") + gen "You wanted to tell her the truth?" ("base", xpos="far_left", ypos="head") + gen "Now, I never expected that, especially from you, [name_hermione_genie]!" ("grin", xpos="far_left", ypos="head") + her @ cheeks blush "That's not--{w=0.2} I just don't like being put in a spot where I am forced to--" ("angry", "squint", "worried", "mid") + gen "Very cunning of you, [name_hermione_genie]...{w=0.4} Fifty points to Gryffindor." ("base", xpos="far_left", ypos="head") + $ gryffindor += 50 + her @ cheeks blush "...{w=0.4} Thank you [name_genie_hermione]." ("disgust", "squint", "base", "mid") - menu: - "\"Take it on your tits!\"": - # Cum on shirt - $ _cum_location = "chest" - her "Please cover my tits with your sticky semen! I need it, [name_genie_hermione]!" ("silly", "narrow", "annoyed", "up", ypos="head", flip=False) - nar "Hermione keeps jerking your cock with a smile." - gen "Get ready whore, here comes your reward!" ("angry", xpos="far_left", ypos="head") - her "...{heart}" ("silly", "narrow", "base", "dead") - nar "Hermione leans back, protruding her chest to give you a better target." - - play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed - - call her_chibi_scene("hj_cum_on") - call cum_block - - $ hermione.set_cum(breasts="light", body="light") - - her "{heart}{heart}{heart}" ("silly", "narrow", "worried", "down", xpos="right", ypos="base") - gen "{size=+5}*ARGH*! YES!!! RIGHT between your TITS!{/size}" ("grin", xpos="far_left", ypos="head") - - $ hermione.set_cum(breasts="heavy") - - gen "That's it! All over your tits!" ("base", xpos="far_left", ypos="head") - her "......" ("soft", "narrow", "annoyed", "up") - - call her_chibi_scene("hj_cum_on_done") - call ctc - - her "It's so warm...{heart}" ("grin", "narrow", "base", "dead") - gen "That it is." ("base", xpos="far_left", ypos="head") - - "\"Take it on your face, slut!\"": - # Cum on face - $ _cum_location = "face" - nar "Hermione bends down and holds your cock in front of her face." - gen "Get ready cumslut, I'm going to paint your pretty face white!" ("angry", xpos="far_left", ypos="head") - her "Please do! I need it, [name_genie_hermione]!" ("grin", "narrow", "annoyed", "up", ypos="head", flip=False) - gen "{size=+5}*ARGH*! YES!!!{/size}" ("grin", xpos="far_left", ypos="head") - her "..." ("open_wide_tongue", "narrow", "annoyed", "up") - nar "You erupt onto her, dousing her entire face in thick layers of spunk." - - play music "music/Chipper Doodle v2.ogg" fadein 1 if_changed - call her_chibi_scene("hj_cum_on") - call cum_block - - $ hermione.set_cum(face="light") - - her "*Ahhh* {i}it'shhh sho warm and shticky{/i}.{heart}{heart}{heart}" ("open_wide_tongue", "narrow", "annoyed", "up",xpos="right",ypos="base") - - $ hermione.set_cum(face="heavy", hair="light") - - gen "Yes... I Feel so much better now..." ("grin", xpos="far_left", ypos="head") - her "{size=-2}Me too...{/size}" ("silly", "narrow", "worried", "dead") - - call her_chibi_scene("hj_cum_on_done") - call ctc - - gen "You did great, [name_hermione_genie], excellent performance!" ("grin", xpos="far_left", ypos="head") - gen "But I think it's time for your classes." ("base", xpos="far_left", ypos="head") - her "*Huh*? Classes?" ("silly", "happyCl", "worried", "mid") - her "Oh no, what have I done!!" ("normal", "wide", "worried", "mid") - - if _cum_location == "face": - her "I can't attend classes with your cum on my face!" ("shock", "happyCl", "worried", "mid") - elif _cum_location == "chest": - her "I can't attend classes with your cum on my chest!" ("angry", "happyCl", "worried", "mid") - - gen "Not with that attitude." ("base", xpos="far_left", ypos="head") - gen "I chose where to cum, but it was you who gave me the choice." ("base", xpos="far_left", ypos="head") - gen "Learn to live with the consequences of your actions, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - her "But..." ("angry", "narrow", "worried", "mid") - gen "You're smart, you'll figure something out." ("base", xpos="far_left", ypos="head") - her "(......am I really, though?)" ("angry", "narrow", "worried", "down") + label .end: show screen blkfade - with d3 + with d5 - nar "You tuck your cock back into your robe." - - call her_chibi("stand", "desk", "base") - call gen_chibi("sit_behind_desk") - with d3 - pause.2 + $ hermione.wear("all") + stop music fadeout 5.0 + pause 1.5 hide screen blkfade - with d3 + with d5 - call bld - gen "I'll see you after classes. You know the drill." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "... Yes, [name_genie_hermione]..." ("soft", "narrow", "annoyed", "down", xpos="right", ypos="base") - - call her_walk("door") - - her "(What am I going to do now?...)" ("annoyed", "happyCl", "low", "dead") + her "If that's all, then I'm off to have a long shower before bed..." ("open", "base", "base", "R") + gen "Go ahead [name_hermione_genie], and goodnight..." ("base", xpos="far_left", ypos="head") + her "Good night [name_genie_hermione]." ("open", "squint", "base", "mid") call her_walk(action="leave") + $ hermione.equip(her_outfit_last) jump end_hermione_event -label hg_pr_cumslut_e1_return: +label hg_pr_cumslut_T5_clothes: + # Cum on body, Slytherin slut catches on to the scent. + $ hermione.equip(her_outfit_default) + $ hermione.set_cum(breasts="light", body="light", crotch="heavy") call her_walk(action="enter", xpos="mid", ypos="base") - #if _cum_location == 1: # TODO: No can do. Requires rewrite. - # Cum under shirt - #her "... I did it, [name_genie_hermione]." ("base", "happy", "base", "mid",xpos="right",ypos="base") - #her "I kept your cum on me all day." ("base", "base", "base", "R") + her "...{w=0.4} I did it [name_genie_hermione]." ("open", "base", "base", "R", xpos="mid", ypos="base", trans=fade) + her "I kept your cum on my body, all day." ("open", "base", "base", "mid") - #menu: - #"\"Fifty points to Gryffindor!\"": - #$ gryffindor += 50 - #her "Thank you [name_genie_hermione], will that be all?" ("soft", "base", "base", "mid") - #gen "Yes [name_hermione_genie], you may leave now." ("base", xpos="far_left", ypos="head") + gen "You say that, but I'd rather see it, and make sure for myself..." ("base", xpos="far_left", ypos="head") + her "Right..." ("soft", "narrow", "base", "down") - #"\"Tell me about your day.\"": - #her "It was a pretty normal day, I had potions class and then transfiguration." ("open", "closed", "base", "mid") - #gen "And do you think that anyone noticed?" ("base", xpos="far_left", ypos="head") - #her "I don't think so [name_genie_hermione]. Ginny Weasley asked me about it during transfiguration class though." ("soft", "base", "base", "mid") - #gen "And what did you tell her?" ("base", xpos="far_left", ypos="head") - #her "I just said that I spilled some {i}Wiggenweld potion{/i} on myself in potions class." ("open", "base", "base", "mid") - #gen "Very cunning of you. Fifty points to Gryffindor." ("base", xpos="far_left", ypos="head") - #$ gryffindor += 50 - #her "Thank you [name_genie_hermione], if that's all I might head to bed." ("soft", "base", "base", "mid") - #gen "Very well, goodnight [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - #her "Good night [name_genie_hermione]." ("base", "base", "base", "mid") + play sound "sounds/cloth_sound3.ogg" + $ hermione.strip("top", "bra") + pause.5 + call ctc - if _cum_location == "bottom": - # Cum on skirt + play sound "sounds/cloth_sound3.ogg" + $ hermione.strip("bottom", "panties") + pause.8 - $ hermione.set_cum(crotch="heavy") + gen "*Hmm*...{w=0.4} Yes, that's cum alright...{w=0.4} Either that, or some type of cornstarch mixture..." ("base", xpos="far_left", ypos="head") + her "You could smell it if you like..." ("annoyed", "narrow", "base", "mid") + gen "I'll pass on that for now, but thanks for the offer." ("base", xpos="far_left", ypos="head") + gen "Great job [name_hermione_genie], that's another favour, successfully completed." ("base", xpos="far_left", ypos="head") - her "... I did it [name_genie_hermione]." ("normal", "happyCl", "worried", "mid", xpos="mid", ypos="base", trans=fade) - her "I kept your cum on me all day!" ("angry", "happyCl", "worried", "mid",emote="sweat") - gen "(*Heh*, I would have never expected her to say that out loud...)" ("base", xpos="far_left", ypos="head") + if _events_filtered_completed_all: + menu: + "\"Fifty points to Gryffindor!\"": + $ gryffindor += 50 + her "Thank you [name_genie_hermione]..." ("open", "narrow", "base", "down") - if _events_filtered_completed_all: - menu: - "\"Fifty points to Gryffindor!\"": - $ gryffindor += current_payout - her "Thank you [name_genie_hermione], will that be all?" ("annoyed", "base", "worried", "R") - gen "Yes [name_hermione_genie], you may leave now." ("base", xpos="far_left", ypos="head") + jump hg_pr_cumslut_T5_clothes.end - jump hg_pr_cumslut_e1_return.end - - "\"Tell me about your day.\"": - pass - else: - gen "Tell me about your day, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - - her "It was a pretty normal day at first. For starters I had potions class and then transfiguration...--" ("open", "base", "worried", "R") - gen "I want you tell me about the deed, not your boring classes." ("base", xpos="far_left", ypos="head") - gen "Did anyone notice the gift I left on you?" ("base", xpos="far_left", ypos="head") - her "Oh..." ("soft", "base", "worried", "mid") - her "I think some people did, [name_genie_hermione]." ("angry", "happyCl", "worried", "mid") - her "I could hear The first years all whispering as I walked past." ("angry", "base", "worried", "down") - gen "And how did you feel?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Ashamed, but also a little excited. I just wish that they knew why I was doing this." ("angry", "narrow", "worried", "R") - gen "Speaking of which, fifty points to Gryffindor!" ("base", xpos="far_left", ypos="head") - $ gryffindor += current_payout - her "Oh, right the points, thank you [name_genie_hermione]." ("open", "narrow", "worried", "mid") - her "if that's all I might head to bed." ("normal", "narrow", "worried", "R") - gen "Very well, goodnight [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - her "Good night [name_genie_hermione]." ("upset", "base", "worried", "mid") + "\"Now, tell me about your day.\"": + pass else: - # Cum on hair + gen "Now, tell me about your day." ("base", xpos="far_left", ypos="head") - $ hermione.set_cum(hair="heavy") - - her @ tears mascara "... I did it [name_genie_hermione]." ("upset", "narrow", "base", "dead", xpos="mid", ypos="base", trans=fade) - her @ tears mascara_soft_blink "I kept your cum on me all day." ("upset", "happyCl", "worried", "mid") - - if _events_filtered_completed_all: - menu: - "\"Fifty points to Gryffindor!\"": - $ gryffindor += 50 - $ states.her.mood += 5 - her @ tears mascara_soft "..." ("annoyed", "narrow", "annoyed", "mid") - gen "Well [name_hermione_genie], you may leave now." ("base", xpos="far_left", ypos="head") - her @ tears mascara "*Hmph*..." ("angry", "narrow", "annoyed", "mid", emote="angry") - - jump hg_pr_cumslut_e1_return.end - - "\"Tell me about your day.\"": - pass - else: - gen "Tell me about your day, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - - $ states.her.mood += 10 - her @ tears mascara_soft_blink "My day..." ("normal", "happyCl", "worried", "mid") - her @ tears mascara_soft_blink "I've never been so ashamed!" ("angry", "happyCl", "worried", "mid",emote="sweat") - gen "Oh? Did your friends treat you poorly?" ("base", xpos="far_left", ypos="head") - her @ tears mascara_soft_blink "No! That's the worst part!" ("scream", "closed", "angry", "mid") - her @ tears mascara_soft_blink "I expected to be an outcast, to sit by myself and not have Ginny or Luna talk to me." ("annoyed", "base", "worried", "R") - her @ tears mascara "But they didn't even acknowledge the fact that I was covered in cum!" ("annoyed", "narrow", "angry", "R") - her @ tears mascara_soft_blink "They acted as if nothing was wrong." ("mad", "happyCl", "worried", "mid") - her @ tears mascara_soft_blink "Well... Maybe except for Luna, she was looking at me odd..." ("mad", "happyCl", "worried", "mid") - her @ tears mascara_soft_blink "At one point, she even tried to take a whiff at me... but Ginny..." ("mad", "happyCl", "worried", "mid") - her @ tears mascara_soft "I tried to provoke a response from Ginny by asking her what she thought of my hair!" ("angry", "base", "base", "mid") - gen "And what was her reaction?" ("base", xpos="far_left", ypos="head") - her @ tears mascara_soft_blink "She said that it suited me!" ("upset", "happyCl", "worried", "mid") - gen "Maybe they're just used to you acting like this." ("base", xpos="far_left", ypos="head") - her @ tears mascara_soft "That's the problem! They think that this slutty persona is who I am now!" ("angry", "base", "worried", "mid") - gen "Would it really be so bad if you let go for once? Take example from your friends." ("base", xpos="far_left", ypos="head") - her @ tears mascara "Let go... You tell me to--" ("angry", "wide", "worried", "mid") - her @ tears mascara "I'm leaving, [name_genie_hermione]." ("upset", "base", "angry", "R") + her "It was a pretty normal day, I had muggle studies and then astronomy." ("open", "squint", "base", "R") + gen "So, do you think that anyone noticed?" ("base", xpos="far_left", ypos="head") + her "I doubt it, [name_genie_hermione]...{w=0.4} It was spread out enough across my body, to not leave any obvious stains." ("open", "closed", "base", "mid") + gen "Oh...{w=0.4} Well that's rather anticlimactic... And somehow also ironic." ("base", xpos="far_left", ypos="head") + her "That said..." ("annoyed", "closed", "base", "mid") + gen "Oh?" ("base", xpos="far_left", ypos="head") + her "I think one of the Slytherin harlots may have caught a whiff of it." ("open", "happy", "base", "R") + gen "A whiff?" ("base", xpos="far_left", ypos="head") + her "Yes, [name_genie_hermione]...{w=0.4} It's quite pungent, after all..." + gen "Perhaps she thought it was a perfume." ("base", xpos="far_left", ypos="head") + her "She definitely knew that the smell wasn't a perfume, [name_genie_hermione]." ("disgust", "narrow", "base", "mid") + her "After all... The Slytherin harlots probably enjoy the scent of semen on the daily." ("grin", "closed", "annoyed", "mid") + gen "Just like a perfume!" ("base", xpos="far_left", ypos="head") + her "Sorry?" ("angry", "squint", "base", "mid") + gen "Just dilute it, throw a couple of French words in the title..." ("base", xpos="far_left", ypos="head") + her "..." ("disgust", "base", "base", "mid") + gen "And there you go... \"Fragrance de la ejaculate\"." ("base", xpos="far_left", ypos="head") + her "That...{w=0.4} Sounds so wrong." ("disgust", "closed", "base", "mid") + gen "Pardon my French." ("base", xpos="far_left", ypos="head") + gen "So, about this Slytherin girl..." ("base", xpos="far_left", ypos="head") + her "Harlot, [name_genie_hermione]." ("open", "narrow", "annoyed", "mid") + gen "Yes, Miss \"Harlot\"." ("base", xpos="far_left", ypos="head") + gen "I assume she confronted you about your scent, and then you let her smell your clothes?" ("base", xpos="far_left", ypos="head") + her "What?! Of course I didn't let her smell my clothes!" ("angry", "squint", "annoyed", "mid") + her "In fact, I didn't let her get anywhere near me!" ("open", "closed", "annoyed", "mid") + her "She was being so obvious when she first picked up the smell, I was able to get out of there before she got close." + gen "Like a bloodhound, tracking down its pray..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("angry", "closed", "annoyed", "mid") + gen "Well then, I better award you your points before we get off track...{w=0.4} Fifty points to Gryffindor!" ("base", xpos="far_left", ypos="head") + $ gryffindor += 50 + her "Thank you [name_genie_hermione]..." ("open", "narrow", "base", "down") label .end: + show screen blkfade + with d5 + + $ hermione.wear("all") + stop music fadeout 5.0 + pause 1.5 + + hide screen blkfade + with d5 + + her "If that's everything, then I better go and get this smell out of my clothes..." ("open", "base", "base", "R") + gen "Go ahead [name_hermione_genie], and goodnight..." ("base", xpos="far_left", ypos="head") + her "Good night [name_genie_hermione]." ("open", "squint", "base", "mid") + call her_walk(action="leave") + $ hermione.equip(her_outfit_last) jump end_hermione_event -label hg_pr_cumslut_e2_return: +label hg_pr_cumslut_T5_hair: + # Cum on hair, Hermione is mad as professor Binns brought it to attention, during History of magic. + $ hermione.equip(her_outfit_default) + $ hermione.set_cum(hair="heavy") call her_walk(action="enter", xpos="mid", ypos="base") - if _cum_location == "legs": - # Cum on legs + her "...{w=0.4} I did it [name_genie_hermione]." ("open", "narrow", "angry", "R", xpos="mid", ypos="base", trans=fade) + her "I kept your cum in my hair, all day." ("open", "narrow", "angry", "R") - $ hermione.set_cum(legs="heavy") + gen "Yes, I can certainly see that, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - her "... I did it, [name_genie_hermione]." ("annoyed", "happy", "base", "mid", xpos="mid", ypos="base", trans=fade) - her "I kept your cum on me all day." ("normal", "base", "base", "R") + if _events_filtered_completed_all: + menu: + "\"Fifty points to Gryffindor!\"": + $ gryffindor += 50 + her "Thank you [name_genie_hermione]..." ("open", "narrow", "angry", "down") - if _events_filtered_completed_all: - menu: - "\"Good Work!\"": - her "Thank you [name_genie_hermione], will that be all?" ("soft", "base", "base", "mid") - gen "Yes [name_hermione_genie], you may leave now." ("base", xpos="far_left", ypos="head") + jump hg_pr_cumslut_T5_hair.end - jump hg_pr_cumslut_e2_return.end - - "\"Tell me about your day.\"": - pass - - gen "Tell me how your day went." ("base", xpos="far_left", ypos="head") - her "It was a pretty normal day, well, except for Luna..." ("open", "closed", "worried", "mid") - gen "What happened with Miss Lovegood?" ("base", xpos="far_left", ypos="head") - her "She kept trying to tell me that a Cornish pixie had left me a 'present'." ("annoyed", "narrow", "angry", "R") - gen "I have been called many things, but a cornish pixie? That's a first." ("base", xpos="far_left", ypos="head") - her "I didn't know what she was talking about at first. Cornish pixies are nasty little things that would never do anything nice." ("disgust", "narrow", "base", "mid_soft") - gen "(I've walked into that one...)" ("base", xpos="far_left", ypos="head") - gen "Well, what happened afterwards?" ("base", xpos="far_left", ypos="head") - her "I asked her to explain herself, and then she ran a finger up my leg, scooping up some of your cum!" ("angry", "base", "base", "mid_soft") - gen "Really?" ("base", xpos="far_left", ypos="head") - her "That's not all--" ("angry", "narrow", "base", "mid_soft") - her "She then put the slimy finger in her mouth, and gave it a taste!" ("open_tongue", "narrow", "base", "mid_soft") - gen "I don't believe you." ("base", xpos="far_left", ypos="head") - her "Oh believe me, I was just as shocked as you are right now." ("open", "closed", "base", "mid") - gen "I'll say this, you certainly have made this old man very happy." ("grin", xpos="far_left", ypos="head") - her "I'm glad, [name_genie_hermione]..." ("soft", "narrow", "worried", "L") - - elif _cum_location == "chest": - # Cum on shirt - - $ hermione.set_cum(breasts="heavy", body="light") - - her "... I did it, [name_genie_hermione]." ("normal", "happyCl", "worried", "mid", xpos="mid", ypos="base", trans=fade) - her "I kept your cum on me all day." ("angry", "happyCl", "worried", "mid",emote="sweat") - - if _events_filtered_completed_all: - menu: - "\"Good Work!\"": - her "Thank you [name_genie_hermione], will that be all?" ("annoyed", "base", "worried", "R") - gen "Yes [name_hermione_genie], you may leave now." ("base", xpos="far_left", ypos="head") - - jump hg_pr_cumslut_e2_return.end - - "\"Tell me about your day.\"": - pass - - gen "Tell me how your day was." ("base", xpos="far_left", ypos="head") - her "I had Defence against the dark arts class and then Herbology." ("annoyed", "base", "worried", "R") - gen "..." ("base", xpos="far_left", ypos="head") - her "R-right... I'll get to the point." ("grin", "happyCl", "worried", "mid") - her "I think most people noticed the stains, [name_genie_hermione]. I'm not sure if they all knew it was cum, though." ("open", "narrow", "worried", "down") - gen "How did that make you feel?" ("base", xpos="far_left", ypos="head") - her "Cheap... Facing everyone pointing out the stains and me trying to explain them was hard..." ("disgust", "narrow", "worried", "L") - gen "Was it as difficult as making the choice to skip on free points?" ("base", xpos="far_left", ypos="head") - her "I suppose not... As long as it makes you happy." ("open", "narrow", "worried", "mid") - gen "I'm glad to hear it. You are dismissed." ("base", xpos="far_left", ypos="head") + "\"Now, tell me about your day.\"": + pass else: - # Cum on face + gen "Tell me about your day." ("base", xpos="far_left", ypos="head") - $ hermione.set_cum(face="heavy", hair="light") + $ states.her.mood += 10 - her @ tears mascara "... I did it, [name_genie_hermione]." ("normal", "narrow", "base", "mid", xpos="mid", ypos="base", trans=fade) - her @ tears mascara "I kept your cum on my face...{w=0.8} all day." ("soft", "narrow", "low", "mid") + her "My day..." ("open", "narrow", "base", "down") + her "It was the worst day of my life!" ("angry", "base", "annoyed", "mid") + her "I've never felt so ashamed!" ("open", "closed", "annoyed", "mid") + gen "Did your friends treat you poorly?" ("base", xpos="far_left", ypos="head") + her "That's not--{w=0.2} I'm talking about the cum in my hair!" ("angry", "base", "angry", "mid") + gen "I see...{w=0.4} So, you didn't manage to keep it hidden, I take it?" ("base", xpos="far_left", ypos="head") + her "How could I have ever thought that I'd be able to keep this hidden..." ("open", "squint", "angry", "up") + gen "It wasn't Severus who noticed it, was it?" ("base", xpos="far_left", ypos="head") + her "I wish!" ("annoyed", "base", "annoyed", "mid") + gen "Really?" ("base", xpos="far_left", ypos="head") + her "At least Snape wouldn't have dared to bring attention to it." ("open", "base", "angry", "R") + her "No, it was Professor Binns, during our last lesson of today...{w=0.4} History of magic." ("open", "closed", "annoyed", "mid") + her "I had managed to stay clear of any suspicion all day, and figured that I was finally safe, since most of the other students sleep during his lectures." ("annoyed", "base", "angry", "R") + her "But towards the end of the lecture, somehow he spotted it, and started droning on about ghost ectoplasm." ("angry", "base", "worried", "mid") + gen "Ectoplasm?" ("base", xpos="far_left", ypos="head") + her "He kept pointing towards my hair, and telling us about things like its \"historical significance\", and so on." ("open", "base", "worried", "mid") + gen "So, the other students--" ("base", xpos="far_left", ypos="head") + her @ tears soft_blink "They all saw that my hair was covered in semen!" ("angry", "happyCl", "worried", "mid") #starts crying + gen "But, don't you think they assumed--" ("base", xpos="far_left", ypos="head") + her @ tears mascara_crying "Who knows what they assumed! I mean, there's even a men's bathroom close-by, perhaps they thought--" ("angry", "base", "annoyed", "mid") #mascara + gen "*Ahem*...{w=0.4} You've got something on your face, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") + gen "Would you like me to--" ("base", xpos="far_left", ypos="head") + her @ tears mascara_crying "Semen, is it? No doubt it's found its way down to my face!" ("annoyed", "base", "annoyed", "mid") + gen "No, it's just--" ("base", xpos="far_left", ypos="head") + her @ tears mascara_crying "*Hmph*!" ("upset", "base", "angry", "mid") - if _events_filtered_completed_all: - menu: - "\"Good Work!\"": - her @ tears mascara "..." ("annoyed", "narrow", "base", "dead") - gen "Well [name_hermione_genie], you may leave now." ("base", xpos="far_left", ypos="head") - her @ tears mascara "Did I at least make you happy?" ("open", "narrow", "annoyed", "mid") - gen "You did." ("base", xpos="far_left", ypos="head") - her @ tears mascara "I'm glad..." ("annoyed", "closed", "base", "mid") + label .end: - jump hg_pr_cumslut_e2_return.end + show screen blkfade + with d5 - "\"Tell me about your day.\"": - pass + $ hermione.wear("all") + stop music fadeout 5.0 + pause 1.5 - gen "Are you alright?" ("base", xpos="far_left", ypos="head") - her @ tears mascara "What do you think.." ("angry", "narrow", "worried", "mid") - gen "......Could you tell me what happened?" ("base", xpos="far_left", ypos="head") - her @ tears mascara "You want to know what happened...?" ("angry", "happy", "angry", "mid") - her @ tears mascara "Oh, you know, it was a completely normal day!" ("angry", "narrow", "angry", "mid") - gen "Really? Nothing strange happened at all?" ("base", xpos="far_left", ypos="head") - her @ tears mascara "No. Everyone treated me how I deserved to be treated." ("scream", "closed", "angry", "mid") - gen "And how's that?" ("base", xpos="far_left", ypos="head") - her @ tears mascara "Like a slut..." ("disgust", "base", "angry", "mid") - her @ tears mascara "Boys catcalled me..." ("annoyed", "narrow", "angry", "R") - her @ tears mascara "Girls have mocked me... Put me down..." ("mad", "closed", "worried", "mid") - her @ tears mascara_soft "Snape made me stand in front of others during one of his classes." ("angry", "base", "base", "mid") - gen "What for? Did he ask you to do something?" ("base", xpos="far_left", ypos="head") - her @ tears mascara_soft_blink "No, he asked nothing of me... He just made me stood there, with everyone looking at me..." ("angry", "happyCl", "worried", "mid") - gen "Did your friends say anything?" ("base", xpos="far_left", ypos="head") - her @ tears mascara_soft "That's the worst part. They said nothing." ("angry", "base", "worried", "mid") - her @ tears mascara_soft_blink "It's like they don't even care what I'm doing for them." ("angry", "happyCl", "worried", "mid") - gen "......" ("base", xpos="far_left", ypos="head") - her @ tears mascara "......" ("annoyed", "closed", "worried", "mid") - her @ tears mascara_soft "Did I...{w=0.5} make you happy at least?" ("soft", "narrow", "worried", "mid") - gen "You did more than that, you've made me very proud." ("base", xpos="far_left", ypos="head") - her "Really?" ("base", "narrow", "worried", "mid", tears="mascara") - gen "Truly." ("base", xpos="far_left", ypos="head") + hide screen blkfade + with d5 - her "(............)" ("soft", "narrow", "worried", "mid") - gen "Do you have something more to say?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "N-no, have a goodnight, [name_genie_hermione]." ("open", "narrow", "worried", "R") + her "If you'll excuse me...{w=0.4} I'm going to go and clean this mess off my head!" ("open", "base", "annoyed", "up") + gen "Alright then...{w=0.4} Just make sure to use warm water, and--" ("base", xpos="far_left", ypos="head") + her "*Hmph*!" ("annoyed", "base", "annoyed", "mid") + + call her_walk(action="leave") + + $ hermione.equip(her_outfit_last) + jump end_hermione_event + +label hg_pr_cumslut_T6_crotch: + # Cum on crotch, Luna touches it. + $ hermione.equip(her_outfit_default) + $ hermione.set_cum(crotch="heavy") + + call her_walk(action="enter", xpos="mid", ypos="base") + + her "...{w=0.4} I did it, [name_genie_hermione]." ("open", "base", "base", "mid", xpos="mid", ypos="base", trans=fade) + her "I kept your cum between my legs, all day." ("soft", "narrow", "base", "down") + gen "Great, let me see it."("base", xpos="far_left", ypos="head") + + play sound "sounds/cloth_sound3.ogg" + $ hermione.strip("bottom", "stockings") + pause.5 + call ctc + + play sound "sounds/cloth_sound3.ogg" + $ hermione.strip("panties") + pause.5 + call ctc + + gen "*Hmm*...{w=0.4} Very good [name_hermione_genie]...{w=0.4} It appears to still be there." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Ehm*...{w=0.4} That's good, I suppose..." ("base", "narrow", "base", "down") + + if _events_filtered_completed_all: + menu: + "\"Fifty points to Gryffindor!\"": + $ gryffindor += 50 + her "Thank you [name_genie_hermione]..." ("open", "narrow", "base", "down") + + jump hg_pr_cumslut_T6_crotch.end + + "\"Now, tell me about your day.\"": + pass + else: + gen "Tell me about your day, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") + + her @ cheeks blush "It was a pretty normal day, well, except for Luna..." ("annoyed", "narrow", "base", "down") + gen "Loony?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Luna Lovegood, [name_genie_hermione]..." ("open", "base", "base", "mid") + gen "What happened to Miss Lovegood?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Well...{w=0.4} I figured, since I was going to let someone notice it..." ("angry", "narrow", "base", "R") + her @ cheeks blush "That Luna would be the perfect person to show it to...{w=0.4} As she'd be the least likely person to judge me..." ("angry", "base", "base", "mid") + gen "Is that so?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes, [name_genie_hermione]...{w=0.4} Even with her--{w=0.2} Unique personality..." ("open", "happy", "base", "mid") + her @ cheeks blush "She's never once done anything malicious towards me...{w=0.4} Not on purpose anyway..." ("open", "base", "base", "mid") + her @ cheeks blush "That said...{w=0.4} She's not always able to hold back, which caused me a bit of trouble today..." ("soft", "narrow", "base", "R") + gen "Do tell..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Well, we were sitting close to each other in the library, when I decided it was a good time to attempt completing today's favour..." ("open", "base", "base", "mid") + her @ cheeks blush "Knowing her, she'll do anything to try and be helpful, so I thought that if I dropped my quill on the ground...{w=0.4} Then she'd be able to see up my skirt." ("open", "base", "base", "mid") + her @ cheeks blush "So, I lifted up my skirt a little, and then dropped my quill." ("open", "happy", "base", "mid") + her @ cheeks blush "Of course, as soon as it hit the ground, she immediately dove down for it." ("open", "closed", "base", "mid") + gen "Let me guess...{w=0.4} She saw the cum and immediately gasped, which brought the attention of the other students." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Ehm*...{w=0.4} Well, you're half right [name_genie_hermione]...{w=0.4} She spotted it, but she wasn't the one who brought the attention of the other students..." ("angry", "narrow", "base", "mid") + gen "Oh?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Well...{w=0.4} She was down there for quite a bit of time, and just as I started wondering what was going on--" ("angry", "narrow", "base", "down") + her @ cheeks blush "She suddenly ran a finger between my legs!" ("disgust", "base", "base", "mid") + gen "*Heh-heh*...{w=0.4} Such a curious girl, that one." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes...{w=0.4} Almost to a fault..." ("disgust", "squint", "base", "R") + gen "So, do you think anyone realised what had happened?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Ehm*...{w=0.4} I'm not sure [name_genie_hermione]...{w=0.4} They most certainly heard my reaction..." ("annoyed", "squint", "base", "mid") + her @ cheeks blush "At the very least, they would've seen Luna, down on the floor, between my legs..." ("angry", "narrow", "base", "mid") + gen "And you, lifting your skirt up?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Well, I quickly let go of it when I gasped...{w=0.4} So, I hope not." ("angry", "narrow", "base", "mid") + gen "What about Miss Lovegood? Did she voice her discovery?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "No, I grabbed her by her hand and dragged her out of there, before she could cause any ruckus..." ("open", "happy", "base", "mid") + gen "...{w=0.4} Well, that's not going to help if you wanted to avoid any rumours..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I...{w=0.4} I didn't really think of that..." ("disgust", "base", "base", "mid") + her @ cheeks blush "I was more concerned about getting the cum off of her grubby fingers..." ("disgust", "narrow", "base", "down") + gen "I see...{w=0.4} You wanted to leave some for yourself, didn't you..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "...{w=0.4} Do you truly believe that the amount she had on her finger would even make a dent in the mess that you had made?" ("disgust", "narrow", "base", "mid") + gen "Of course not...{w=0.4} I just wanted you to say it." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("base", "narrow", "worried", "R") + gen "So, how many points did we decide on? Forty was it?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I...{w=0.4} Yes, I think so..." ("open", "base", "base", "mid") + $ gryffindor += 40 + gen "In that case...{w=0.4} Forty points to Gryffindor." ("base", xpos="far_left", ypos="head") + her "...{w=0.4} Thank you, [name_genie_hermione]." ("base", "base", "base", "mid") + + label .end: + + show screen blkfade + with d5 + + $ hermione.wear("all") + stop music fadeout 5.0 + pause 1.5 + + hide screen blkfade + with d5 + + her "*Hmm*... I better go clean this off, or I won't have enough time before curfew..." ("open", "base", "base", "R") + gen "Go ahead [name_hermione_genie], and goodnight..." ("base", xpos="far_left", ypos="head") + her "Good night [name_genie_hermione]." ("open", "squint", "base", "mid") + + call her_walk(action="leave") + + $ hermione.equip(her_outfit_last) + jump end_hermione_event + +label hg_pr_cumslut_T6_top: + # Cum under top, Tonks smells it. + $ hermione.equip(her_outfit_default) + $ hermione.set_cum(breasts="heavy", body="light") + + call her_walk(action="enter", xpos="mid", ypos="base") + + her "...{w=0.4} I did it, [name_genie_hermione]." ("open", "base", "base", "mid", xpos="mid", ypos="base", trans=fade) + her "I've kept your cum under my top, all day." ("soft", "narrow", "base", "down") + + gen "I'll be the judge of that..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "[name_genie_hermione]?" ("open", "base", "base", "mid") + gen "Remove your top and bra for me, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Oh...{w=0.4} Right..." ("base", "narrow", "base", "down") + + play sound "sounds/cloth_sound3.ogg" + $ hermione.strip("top", "bra") + pause.5 + + gen "*Hmm*...{w=0.4} Yes, that's cum alright..." ("base", xpos="far_left", ypos="head") + gen "Good job [name_hermione_genie], you've completed your task with flying colours." ("base", xpos="far_left", ypos="head") + + if _events_filtered_completed_all: + menu: + "\"Fifty points to Gryffindor!\"": + $ gryffindor += 50 + her "Thank you [name_genie_hermione]..." ("open", "narrow", "base", "down") + + jump hg_pr_cumslut_T6_top.end + + "\"Now, tell me about your day.\"": + pass + else: + gen "Now, why don't you tell me a bit about your day." ("base", xpos="far_left", ypos="head") + + gen "Did you make sure that someone noticed?" ("base", xpos="far_left", ypos="head") + her "*Hmm*...{w=0.4} Possibly..." ("open", "happy", "base", "mid") + gen "Possibly?" ("base", xpos="far_left", ypos="head") + her "I think professor Tonks may have realised something, during today's \"Defence Against the Dark Arts\" class." ("open", "squint", "base", "mid") + gen "Truly? She doesn't have some magical essence detector, does she? That would explain quite a few things." ("base", xpos="far_left", ypos="head") + her "No, that's not it...{w=0.4} Well, she might have...{w=0.4} But she wasn't using anything like that today, at least." ("open", "happy", "base", "R") + gen "Yet she still managed to...{w=0.4} Well, now you've got me even more curious..." ("base", xpos="far_left", ypos="head") + her "I suppose I'll just tell you... Although it requires a bit of a lead up." ("soft", "squint", "base", "mid") + gen "Go on..." ("base", xpos="far_left", ypos="head") + her "Well...{w=0.4} We have been taking turns, reading through the chapters of \"The Dark Forces: A Guide to Self-Protection\" out loud for the other students." ("open", "base", "base", "mid") + her "Today happened to be my turn, and we had just reached the chapter about werewolves, where the author talked about their methods of overpowering their prey." ("base", "base", "base", "mid") + her "While I was focused on reading, Professor Tonks was patrolling the class, walking by the rows of seats, making sure no one was misbehaving." ("open", "base", "base", "R") + her "Everything was moving along as usual, until..." ("disgust", "squint", "base", "R") + gen "Yes?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Until I reached the section that talked about how difficult it is to defend yourself against a werewolf attack." ("open", "happy", "base", "R") + her @ cheeks blush "It was at that point that Professor Tonks stopped right behind me." ("soft", "narrow", "base", "down") + her @ cheeks blush "She then pushed herself up against my back, and she either scoffed or giggled as I went through the list of possible werewolf deterrents." ("soft", "narrow", "base", "down") + her @ cheeks blush "Once the class had finished, she held me back, and asked if I would like to learn about a true and tested method on how to prevent a werewolf attack." ("open", "happy", "base", "mid") + gen "You obliged, I presume?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I did! Although I was a little bit confused at first as to why she wouldn't have just taught the whole class..." ("angry", "squint", "base", "mid") + her @ cheeks blush "Of course, my question was soon answered, once she brought out one of her notebooks..." ("soft", "narrow", "base", "down") + gen "Go on..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Well..." ("angry", "narrow", "base", "down") + her @ cheeks blush "Her notes went into vivid detail, talking about pheromones and how their smell affects the behaviour of a werewolf..." ("angry", "closed", "base", "mid") + gen "I see...{w=0.4} Very interesting..." ("base", xpos="far_left", ypos="head") + gen "Hold on...{w=0.4} What does all of this have to do with--{w=0.2} Oh, I see..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes, I believe that the main reason why she asked me to stay was because she had smelled something similar on me..." ("angry", "narrow", "base", "mid") + gen "So, you think that with her experience, she recognized the smell?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes, I believe that may have been the case..." ("open", "closed", "base", "mid") + gen "A semen demon, that one is...{w=0.4} She probably got drawn towards my manly scent, and couldn't help herself--" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "[name_genie_hermione]!" ("angry", "squint", "worried", "mid") + her @ cheeks blush "M--{w=0.2} Maybe she didn't know what it was! Yes, she probably asked me to stay because of my interest in learning!" ("disgust", "base", "worried", "down") + gen "Interest in learning, you say?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes [name_genie_hermione]! She must've just thought--" ("angry", "base", "base", "mid") + gen "Well, that's disappointing... Then perhaps I've been a bit too generous with the amount of points for this favour..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "The amount--{w=0.2} Oh wait!" ("angry", "base", "base", "stare") + her @ cheeks blush "No, she definitely knew [name_genie_hermione]! I'm sure of it!" ("grin", "base", "worried", "mid") + gen "Really? You didn't sound so certain, just a moment ago..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "No, she definitely knew! I could tell she was sniffing me while standing behind me, as I was reading!" ("grin", "happyCl", "worried", "mid") + gen "I knew it...{w=0.4} My manly musk is irresistible to any woman!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "..." ("grin", "narrow", "worried", "down") #Nervous smile + $ gryffindor += 50 + gen "Very well [name_hermione_genie], I shall award you the points...{w=0.4} Fifty points to Gryffindor!" ("base", xpos="far_left", ypos="head") + her "*Phew*... Thank you, [name_genie_hermione]..." ("base", "base", "base", "mid") + + label .end: + + show screen blkfade + with d5 + + $ hermione.wear("all") + stop music fadeout 5.0 + pause 1.5 + + hide screen blkfade + with d5 + + her "If that's all, then I should probably go and clean this off..." ("open", "base", "base", "R") + gen "Go ahead [name_hermione_genie], and goodnight..." ("base", xpos="far_left", ypos="head") + her "Good night [name_genie_hermione]." ("open", "squint", "base", "mid") + + call her_walk(action="leave") + + $ hermione.equip(her_outfit_last) + jump end_hermione_event + +label hg_pr_cumslut_T6_face: + # Cum on face + $ hermione.equip(her_outfit_default) + $ hermione.set_cum(face="heavy", hair="light") + + call her_walk(action="enter", xpos="mid", ypos="base") + + her @ tears mascara "...{w=0.4} I did it, [name_genie_hermione]." ("normal", "narrow", "base", "mid", xpos="mid", ypos="base", trans=fade) + her @ tears mascara "I kept your cum on my face...{w=0.8} all day." ("soft", "narrow", "worried", "mid") + + if _events_filtered_completed_all: + menu: + "\"Good Work!\"": + her @ tears mascara "..." ("annoyed", "narrow", "base", "dead") + gen "Well then... You may leave now." ("base", xpos="far_left", ypos="head") + her @ tears mascara "Did I complete my task?" ("open", "narrow", "annoyed", "mid") + gen "You did... Fifty points to Gryffindor!" ("base", xpos="far_left", ypos="head") + $ gryffindor += 50 + her @ tears mascara "I'm glad..." ("annoyed", "closed", "base", "mid") + + jump hg_pr_cumslut_T6_face.end + + "\"Tell me about your day.\"": + pass + + gen "Are you alright?" ("base", xpos="far_left", ypos="head") + her @ tears mascara "What do you think..." ("angry", "narrow", "worried", "mid") + gen "...... Could you tell me what happened?" ("base", xpos="far_left", ypos="head") + her @ tears mascara "You want to know what happened...?" ("angry", "happy", "angry", "mid") + her @ tears mascara "Oh, you know, it was a completely normal day!" ("angry", "narrow", "angry", "mid") + gen "Really? Nothing strange happened at all?" ("base", xpos="far_left", ypos="head") + her @ tears mascara "No. Everyone treated me how I deserved to be treated." ("scream", "closed", "angry", "mid") + gen "And how's that?" ("base", xpos="far_left", ypos="head") + her @ tears mascara "Like a slut..." ("disgust", "base", "angry", "mid") + her @ tears mascara "The boys catcalled me..." ("annoyed", "narrow", "angry", "R") + her @ tears mascara "The girls mocked me... Put me down..." ("mad", "closed", "worried", "mid") + her @ tears mascara_soft "Snape smirked and stopped me as I tried to rush past him in the dungeon." ("angry", "base", "base", "mid") + gen "What for? Did he ask you to do something?" ("base", xpos="far_left", ypos="head") + her @ tears mascara_soft_blink "No, he asked nothing of me... He just made me stand there, while he stared at my face..." ("angry", "happyCl", "worried", "mid") + gen "What about your friends?" ("base", xpos="far_left", ypos="head") + her @ tears mascara_soft "My... My friends..." ("angry", "base", "worried", "mid") + her @ tears mascara_soft_blink "I hope they'll appreciate what I'm doing for them." ("angry", "happyCl", "worried", "mid") + gen "That's not what I was---" ("base", xpos="far_left", ypos="head") + her @ tears mascara "......" ("annoyed", "closed", "worried", "mid") + gen "Ahem..." ("base", xpos="far_left", ypos="head") + $ gryffindor += 50 + gen "Very well [name_hermione_genie], I shall award you the points...{w=0.4} Fifty points to Gryffindor!" ("base", xpos="far_left", ypos="head") + her @ tears mascara "Thank you, [name_genie_hermione]..." ("open", "closed", "worried", "mid") + + label .end: + + show screen blkfade + with d5 + + $ hermione.wear("all") + stop music fadeout 5.0 + pause 1.5 + + her @ tears mascara "" ("soft", "narrow", "worried", "mid") + + hide screen blkfade + with d5 + + her @ tears mascara "(............)" ("soft", "narrow", "worried", "down") + gen "Something on your mind, [name_hermione_genie]?" ("base", xpos="far_left", ypos="head") + her @ tears mascara "N-no, have a good night, [name_genie_hermione]." ("open", "narrow", "worried", "R") gen "Goodnight, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - $ hermione.set_face(tears=False) - - label .end: - call her_walk(action="leave") + $ hermione.equip(her_outfit_last) jump end_hermione_event -label hg_pr_cumslut_e3_return: + +label hg_pr_cumslut_T6_hair: + # Cum on hair, Hippogriff licks it. + $ hermione.equip(her_outfit_default) + $ hermione.set_cum(hair="light") call her_walk(action="enter", xpos="mid", ypos="base") - if _cum_location == "chest": - # Cum on shirt + her "...{w=0.4} I did it, [name_genie_hermione]." ("open", "happy", "base", "mid", xpos="mid", ypos="base", trans=fade) + her "I kept your cum in my hair...{w=0.4} All day." ("soft", "closed", "base", "mid") + gen "Yes, I can certainly see that..." ("base", xpos="far_left", ypos="head") - $ hermione.set_cum(breasts="heavy") + if _events_filtered_completed_all: + menu: + "\"Fifty points to Gryffindor!\"": + $ gryffindor += 50 + her "Thank you [name_genie_hermione]..." ("open", "narrow", "base", "down") - nar "Hermione returns to your office, her breasts still stained with the remains of your mighty load." - her "......[name_genie_hermione]." ("annoyed", "squint", "angry", "R", xpos="mid", ypos="base", trans=fade) - gen "Oh, did you finish your task--" ("base", xpos="far_left", ypos="head") - her "What do you think?!" ("angry", "happyCl", "worried", "mid", emote="sweat") - gen "(*Hmm*)" ("base", xpos="far_left", ypos="head") + jump hg_pr_cumslut_T6_hair.end - if _events_filtered_completed_all: - menu: - "\"Good Work!\"": - her "......" ("base", "base", "base", "mid") - gen "You may leave now." ("base", xpos="far_left", ypos="head") - - jump hg_pr_cumslut_e3_return.end - - "\"Tell me about your day.\"": - pass - - gen "Tell me what's up." ("base", xpos="far_left", ypos="head") - her "Your school sucks, that's what is up!" ("annoyed", "narrow", "angry", "R") - gen "I guess school sucks for some more, while others do the sucking." ("grin", xpos="far_left", ypos="head") - her "...*glares*..." ("annoyed", "narrow", "annoyed", "mid") - gen "*Ahem* Please, go on." ("base", xpos="far_left", ypos="head") - her "After I left your office, I was close to having a panic attack, so I rushed towards the bathrooms." ("annoyed", "narrow", "angry", "R") - her "Unfortunately for me, the bathrooms were occupied by a bunch of sluts from Slytherin..." ("open", "narrow", "angry", "R") - gen "Interesting." ("base", xpos="far_left", ypos="head") - her "So, as soon as I entered, they noticed my state of disarray... And the white stains on my chest." ("angry", "narrow", "angry", "down") - her "I tried to hide it, and rush inside one of the stalls, but as soon as tried to go past them--" ("open", "narrow", "angry", "R") - her "--one of them grabbed me by the arm, and asked me if I blew a Gallopogriff, because, here I quote--" ("open", "narrow", "worried", "L") - her "\"nobody cums that much\"..." ("annoyed", "narrow", "angry", "mid") - gen "(Little do they know...)" ("base", xpos="far_left", ypos="head") - gen "What happened then?" ("base", xpos="far_left", ypos="head") - her "You won't believe it..." ("angry", "narrow", "angry", "R") - gen "Try me." ("base", xpos="far_left", ypos="head") - her "She... She started a conversation with me." ("upset", "narrow", "angry", "mid") - gen "That's all? She just wanted to have a chat with you?" ("base", xpos="far_left", ypos="head") - her "What do you mean 'that's all'?" ("open", "happy", "angry", "mid") - her "Me, a Gryffindor, chit-chatting with the enemy?!" ("angry", "happy", "angry", "mid") - gen "I think you're exaggerating a little..." ("base", xpos="far_left", ypos="head") - gen "She's still one of my students, you know." ("base", xpos="far_left", ypos="head") - her "True... But still..." ("annoyed", "narrow", "angry", "R") - gen "Anyway, what happened next?" ("base", xpos="far_left", ypos="head") - her "Well... I was so shooked that I didn't really know what to do so..." ("open", "narrow", "angry", "mid") - her @ cheeks blush "I went with the flow, and skipped class." ("annoyed", "narrow", "angry", "R") - gen "You \"went with the flow\", *huh*?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Y-yes, that's one of the expressions I learned from our interaction." ("annoyed", "narrow", "low", "R") - gen "Sounds to me like you've had a positive interaction with one of the Slytherins." ("base", xpos="far_left", ypos="head") - her @ cheeks blush "That may be true, but she's still a Slytherin, and one good egg doesn't make the others smell any less!" ("angry", "narrow", "angry", "R") - gen "It looks like you're deflecting the fact that not all Slytherins are bad, but if you say so." ("base", xpos="far_left", ypos="head") - her "*Hmph*..." ("annoyed", "narrow", "angry", "R") - gen "I think I've heard enough for now." ("base", xpos="far_left", ypos="head") - gen "Dismissed." ("base", xpos="far_left", ypos="head") + "\"Now, tell me about your day.\"": + pass else: - # Cum on face + gen "Tell me about your day, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - $ hermione.set_cum(face="heavy", hair="light") - - nar "Hermione returns to your office, her face caked with patches of cum." - her @ cheeks blush "I did it, [name_genie_hermione]." ("angry", "happy", "base", "down", xpos="mid", ypos="base", trans=fade) - her @ cheeks blush "I kept your cum on me all day." ("open", "narrow", "base", "R") - - if _events_filtered_completed_all: - - menu: - "\"Good Work!\"": - her "Thank you, [name_genie_hermione]. Is that everything?" ("soft", "happy", "base", "R") - gen "Yes [name_hermione_genie], you can go clean up now." ("base", xpos="far_left", ypos="head") - - jump hg_pr_cumslut_e3_return.end - - "\"Tell me about your day.\"": - pass - - her @ cheeks blush "As for my day..." ("upset", "happy", "base", "R") - her @ cheeks blush "It was a normal day [name_genie_hermione]. Well. Whatever the new normal is for me now." ("soft", "narrow", "annoyed", "R") - her @ cheeks blush "I got called names again, and some of the boys asked me if I wanted \"a refill\"." ("open", "narrow", "base", "L") - her @ cheeks blush "Cho Chang has caught a glimpse of me before class, and started laughing..." ("angry", "narrow", "worried", "down") - gen "And how did that make you feel?" ("base", xpos="far_left", ypos="head") - her @ cheeks blush "Embarrased..." ("disgust", "narrow", "base", "mid") - gen "Would it help knowing she went through the same thing?" ("base", xpos="far_left", ypos="head") - her "D-did she?" ("shock", "base", "worried", "mid") - gen "You know me. What do you think?" ("base", xpos="far_left", ypos="head") - her "... I guess that's a yes." ("grin", "narrow", "annoyed", "mid") - her "I'll throw it at her face the next time I see her! The slut will never see it coming!" ("grin", "narrow", "annoyed", "up") - gen "(I hope a little competition between them doesn't hurt...)" ("base", xpos="far_left", ypos="head") - gen "I think we're done here. Good work, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") - her "Thank you, [name_genie_hermione]." ("grin", "happy", "worried", "mid") + gen "Did anything noteworthy happen?" ("base", xpos="far_left", ypos="head") + her "Well..." ("disgust", "base", "base", "R") + her @ cheeks blush "Not really... Today was completely normal." ("upset", "squint", "base", "R") + gen "Truly? Nothing strange happened at all?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Ehm*...{w=0.4} No..." ("angry", "squint", "worried", "R") + gen "Somehow I don't believe you..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "How do you--" ("angry", "base", "worried", "mid") + gen "Well, your tone, for one." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Oh..." ("disgust", "happy", "base", "mid") + gen "And you also appear to have less cum in your hair than when you left my office..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Alright, fine, something did happen..." ("disgust", "narrow", "worried", "down") + gen "Great, and I assume someone took notice?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Ehm*...{w=0.4} Some... thing noticed, yes..." ("soft", "narrow", "worried", "R") + gen "\"Some... thing\", [name_hermione_genie]?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes [name_genie_hermione]... To be honest, I don't even know where to begin..." ("soft", "happy", "base", "mid") + gen "Well, now I'm even more curious..." ("base", xpos="far_left", ypos="head") + gen "Just start at the beginning." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Alright... Well...{w=0.4} In the morning, we had muggle studies..." ("open", "narrow", "base", "down") + her @ cheeks blush "We were going over muggle fashion, so I used that oportunity to cover my head with an old-fashioned top-hat..." ("open", "base", "base", "mid") + her @ cheeks blush "I even managed to convince the teacher to let me keep it, and I wore it, all throughout lunch and until our next lesson." ("angry", "narrow", "base", "down") + gen "You wore a top-hat during lunch?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "I...{w=0.4} Yes..." ("disgust", "narrow", "base", "mid") + gen "*Heh*...{w=0.4} That must've looked so silly!" ("grin", xpos="far_left", ypos="head") + her @ cheeks blush "[name_genie_hermione]!" ("angry", "narrow", "angry", "mid") + gen "Sorry...{w=0.4} Go on..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Once the lunch break finished, we had \"Care of magical creatures\"...{w=0.4} Which is when things took a turn..." ("angry", "squint", "worried", "R") + gen "Oh no..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "What do you--{w=0.2} No, gross! Nothing like that happened, [name_genie_hermione], I can assure you!" ("angry", "base", "worried", "mid") + gen "So, you're not telling me that some creature licked the cum off your hair?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Oh...{w=0.4} Yes, that is what happened..." ("disgust", "squint", "base", "mid") + gen "What did you think I was talking--" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Nothing!" ("angry", "happyCl", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + gen "So...{w=0.4} Would you like to elaborate?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Not in particular..." ("angry", "narrow", "base", "R") + menu: + "\"Will you, though?\"": + her @ cheeks blush "*Ugh*...{w=0.4} Fine..." ("disgust", "narrow", "base", "mid") + her @ cheeks blush "We were working with hippogriffs today..." ("open", "closed", "base", "mid") + her @ cheeks blush "As you already know, with hippogriffs, you're meant to show politeness before mounting them." ("open", "happy", "base", "R") + gen "Yes...{w=0.4} As any wizard should know." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Any--{w=0.2} I'm talking about riding it!" ("angry", "narrow", "angry", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "On its back!" ("open", "base", "angry", "mid") + gen "Bareback?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Argh*...{w=0.4} I can't believe how dirty your mind is!" ("open", "closed", "annoyed", "mid") + gen "I've not said anything [name_hermione_genie]...{w=0.4} You're the one making assumptions." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "But, you said...{w} Well, I suppose you didn't..." ("angry", "narrow", "base", "down") + gen "So, you removed the top-hat, and bowed to this creature, and then it licked some cum off your hair?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes [name_genie_hermione]...{w=0.4} That's precisely what happened." ("angry", "narrow", "base", "down") + gen "So, you're telling me that there's saliva in your hair?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Yes [name_genie_hermione]..." ("open", "narrow", "base", "down") + gen "Gross!" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "What do you mean?! How's that any different to having just cum in your hair!?" ("angry", "narrow", "angry", "mid") + gen "Cum...{w=0.4} Mixed with saliva of some creature..." ("base", xpos="far_left", ypos="head") + gen "You're lucky that nobody used an identify spell on it... That would've been hard to explain." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "A what, spell?" ("disgust", "narrow", "base", "mid") + gen "I suppose they would've had to touch it for that...{w=0.4} Anyway, I think I've heard enough, for today...{w=0.4} Unless you've got more to tell me?" ("base", xpos="far_left", ypos="head") + "\"Alright then...\"": + gen "I suppose I've heard enough, for today...{w=0.4} Unless you've got anything more to tell me?" ("base", xpos="far_left", ypos="head") + her @ cheeks blush "*Ehm*...{w=0.4} No, that's about it." ("soft", "squint", "base", "R") + gen "*Hmm*...{w=0.4} Well, that's unfortunate..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "[name_genie_hermione]?" ("soft", "base", "base", "mid") + gen "I thought you would've been able to complete any task I set for you by now..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "But, I thought I did--" ("angry", "base", "base", "mid") + gen "You were supposed to make sure that \"someone\" noticed it...{w=0.4} Not \"some thing\", [name_hermione_genie]..." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "...{w} I suppose I can't argue against that logic..." ("disgust", "narrow", "base", "down") + gen "Better luck next time, [name_hermione_genie]." ("base", xpos="far_left", ypos="head") + her @ cheeks blush "Next time..." ("angry", "narrow", "base", "down") + her @ cheeks blush "Alright then..." ("open", "narrow", "base", "down") label .end: + show screen blkfade + with d5 + + $ hermione.wear("all") + stop music fadeout 5.0 + pause 1.5 + + hide screen blkfade + with d5 + + her "If that's all, then I better go clean my hair..." ("open", "base", "base", "R") + gen "Go ahead [name_hermione_genie], and goodnight..." ("base", xpos="far_left", ypos="head") + her "Good night [name_genie_hermione]." ("open", "squint", "base", "mid") + call her_walk(action="leave") + $ hermione.equip(her_outfit_last) jump end_hermione_event + diff --git a/game/scripts/characters/hermione/requests.rpy b/game/scripts/characters/hermione/requests.rpy index 9dc1393b..a3a8c683 100644 --- a/game/scripts/characters/hermione/requests.rpy +++ b/game/scripts/characters/hermione/requests.rpy @@ -147,14 +147,23 @@ default her_ev_sex_public_t6_e1_hub = Event(id="her_ev_sex_public_t6_e1_hub", la default her_ev_sex_public_t6_e2_hub = Event(id="her_ev_sex_public_t6_e2_hub", label="hg_pr_sex", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_sex_public", subevents=["her_ev_sex_public_t6_e3"]) default her_ev_sex_public_t6_e3_hub = Event(id="her_ev_sex_public_t6_e3_hub", label="hg_pr_sex", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_sex_public", subevents=["her_ev_sex_public_t6_e4"]) -default her_ev_cumslut_public_t5_e1 = Event(id="her_ev_cumslut_public_t5_e1", label="hg_pr_cumslut_e1_return", req="game.daytime==False") -default her_ev_cumslut_public_t5_e2 = Event(id="her_ev_cumslut_public_t5_e2", label="hg_pr_cumslut_e2_return", req="game.daytime==False") -default her_ev_cumslut_public_t5_e3 = Event(id="her_ev_cumslut_public_t5_e3", label="hg_pr_cumslut_e3_return", req="game.daytime==False") +default her_ev_cumslut_public_t5_e1 = Event(id="her_ev_cumslut_public_t5_e1", label="hg_pr_cumslut_T5_return", req="game.daytime==False") +default her_ev_cumslut_public_t5_e2 = Event(id="her_ev_cumslut_public_t5_e2", label="hg_pr_cumslut_T5_return", req="game.daytime==False") +default her_ev_cumslut_public_t5_e3 = Event(id="her_ev_cumslut_public_t5_e3", label="hg_pr_cumslut_T5_return", req="game.daytime==False") +default her_ev_cumslut_public_t6_e1 = Event(id="her_ev_cumslut_public_t6_e1", label="hg_pr_cumslut_T6_return", req="game.daytime==False") +default her_ev_cumslut_public_t6_e2 = Event(id="her_ev_cumslut_public_t6_e2", label="hg_pr_cumslut_T6_return", req="game.daytime==False") +default her_ev_cumslut_public_t6_e3 = Event(id="her_ev_cumslut_public_t6_e3", label="hg_pr_cumslut_T6_return", req="game.daytime==False") +default her_ev_cumslut_public_t6_e4 = Event(id="her_ev_cumslut_public_t6_e4", label="hg_pr_cumslut_T6_return", req="game.daytime==False") default her_ev_cumslut_public_t1_to_t5 = Event(id="her_ev_cumslut_public_t1_to_t5", label="hg_pr_cumslut_fail", req="states.her.tier < 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public") -default her_ev_cumslut_public_t5_e1_hub = Event(id="her_ev_cumslut_public_t5_e1_hub", label="hg_pr_cumslut_e1", req="states.her.tier >= 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e1"]) -default her_ev_cumslut_public_t5_e2_hub = Event(id="her_ev_cumslut_public_t5_e2_hub", label="hg_pr_cumslut_e2", req="states.her.tier >= 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e2"]) -default her_ev_cumslut_public_t5_e3_hub = Event(id="her_ev_cumslut_public_t5_e3_hub", label="hg_pr_cumslut_e3", req="states.her.tier >= 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e3"]) +default her_ev_cumslut_public_t5_e1_hub = Event(id="her_ev_cumslut_public_t5_e1_hub", label="hg_pr_cumslut", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e1"]) +default her_ev_cumslut_public_t5_e2_hub = Event(id="her_ev_cumslut_public_t5_e2_hub", label="hg_pr_cumslut", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e2"]) +default her_ev_cumslut_public_t5_e3_hub = Event(id="her_ev_cumslut_public_t5_e3_hub", label="hg_pr_cumslut", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e3"]) +default her_ev_cumslut_public_t6_e1_hub = Event(id="her_ev_cumslut_public_t6_e1_hub", label="hg_pr_cumslut", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t6_e1"]) +default her_ev_cumslut_public_t6_e2_hub = Event(id="her_ev_cumslut_public_t6_e2_hub", label="hg_pr_cumslut", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t6_e2"]) +default her_ev_cumslut_public_t6_e3_hub = Event(id="her_ev_cumslut_public_t6_e3_hub", label="hg_pr_cumslut", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t6_e3"]) +default her_ev_cumslut_public_t6_e4_hub = Event(id="her_ev_cumslut_public_t6_e3_hub", label="hg_pr_cumslut", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t6_e4"]) + define hermione_requests = [ ("her_eventqueue_flirt_students", "Flirt with students!"), @@ -166,4 +175,4 @@ define hermione_requests = [ ("her_eventqueue_blowjob_public", "Give a blowjob!"), ("her_eventqueue_cumslut_public", "Act like a cumslut!"), ("her_eventqueue_sex_public", "Have sex!") -] \ No newline at end of file +] diff --git a/game/scripts/characters/hermione/vars.rpy b/game/scripts/characters/hermione/vars.rpy index 407315dd..c2def48b 100644 --- a/game/scripts/characters/hermione/vars.rpy +++ b/game/scripts/characters/hermione/vars.rpy @@ -125,6 +125,7 @@ default states.her.ev.potions.polyjuice_luna_nude = False default states.her.ev.maid.intro_complete = False default states.her.ev.talk_to_me.caught_masturbating = False default states.her.ev.flirt_with_students.done_before = False +default states.her.ev.hg_pf_cumslut.choice = None default her_level_up = None # TODO: This var is used in an overly complicated manner, it should be removed once the issues are resolved. default current_job = None # TODO: Jobs should be using event class with enqueue feature instead. From 35054294986d995c42612d6837959214d21a724e Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 22 Jan 2024 20:06:43 +0000 Subject: [PATCH 049/249] Luna Inspect CG - First implementation, Bug fixes, Version bump * Fixed multiple default parameters inside image definition (Thanks guv! :)) * Fixed missing module import causing linting to not work correctly for certain tasks. * Bumped game version to 1.46 * Added and implemented images for Luna Inspection events. --- ..._right_spread_legs_touch_pussy_frame0.webp | 3 + ..._right_spread_legs_touch_pussy_frame1.webp | 3 + .../lun_inspect_genie_arm_both_grab_tits.webp | 3 + .../lun_inspect_genie_arm_left_grab.webp | 3 + .../lun_inspect_genie_arm_left_hold.webp | 3 + .../lun_inspect_genie_arm_right_idle.webp | 3 + ...n_inspect_genie_arm_right_touch_mound.webp | 3 + ...ct_genie_arm_right_touch_pussy_frame0.webp | 3 + ...ct_genie_arm_right_touch_pussy_frame1.webp | 3 + ...lun_inspect_genie_arm_right_touch_tit.webp | 3 + .../genie/lun_inspect_genie_body.webp | 3 + .../genie/lun_inspect_genie_clothes.webp | 3 + .../genie/lun_inspect_genie_clothes_back.webp | 3 + .../genie/lun_inspect_genie_clothes_hood.webp | 3 + .../genie/lun_inspect_genie_head.webp | 3 + .../lun_inspect/lun_inspect_background.webp | 3 + .../lun_inspect_background_breastfix.webp | 3 + .../CG/lun_inspect/lun_inspect_chair.webp | 3 + .../CG/lun_inspect/lun_inspect_vignette.webp | 3 + ...head_back_legs_together_luna_arm_idle.webp | 3 + ...ect_head_back_legs_together_luna_body.webp | 3 + ...pect_head_back_legs_together_luna_bra.webp | 3 + ...ad_back_legs_together_luna_face_blush.webp | 3 + ...d_back_legs_together_luna_face_breath.webp | 3 + ...legs_together_luna_face_eyebrows_base.webp | 3 + ...gs_together_luna_face_eyes_base_right.webp | 3 + ..._legs_together_luna_face_eyes_base_up.webp | 3 + ...ogether_luna_face_eyes_base_up_hearts.webp | 3 + ...ck_legs_together_luna_face_mouth_open.webp | 3 + ..._together_luna_face_mouth_open_ahegao.webp | 3 + ...ther_luna_face_mouth_open_ahegao_spit.webp | 3 + ...ead_back_legs_together_luna_hair_back.webp | 3 + ...ad_back_legs_together_luna_hair_front.webp | 3 + ...t_head_back_legs_together_luna_shadow.webp | 3 + ...ct_head_back_legs_together_luna_shirt.webp | 3 + ...ct_head_back_legs_together_luna_skirt.webp | 3 + ...ead_back_legs_together_luna_stockings.webp | 3 + ...n_inspect_legs_together_luna_arm_idle.webp | 3 + ...t_head_back_spread_legs_luna_arm_idle.webp | 3 + ..._back_spread_legs_luna_arm_masturbate.webp | 3 + ...spect_head_back_spread_legs_luna_body.webp | 3 + ...nspect_head_back_spread_legs_luna_bra.webp | 3 + ...head_back_spread_legs_luna_face_blush.webp | 3 + ...ead_back_spread_legs_luna_face_breath.webp | 3 + ...k_spread_legs_luna_face_eyebrows_base.webp | 3 + ...spread_legs_luna_face_eyes_base_right.webp | 3 + ...ck_spread_legs_luna_face_eyes_base_up.webp | 3 + ...ad_legs_luna_face_eyes_base_up_hearts.webp | 3 + ...back_spread_legs_luna_face_mouth_open.webp | 3 + ...read_legs_luna_face_mouth_open_ahegao.webp | 3 + ...legs_luna_face_mouth_open_ahegao_spit.webp | 3 + ..._head_back_spread_legs_luna_hair_back.webp | 3 + ...head_back_spread_legs_luna_hair_front.webp | 3 + ...ct_head_back_spread_legs_luna_panties.webp | 3 + ...ect_head_back_spread_legs_luna_shadow.webp | 3 + ...pect_head_back_spread_legs_luna_shirt.webp | 3 + ...pect_head_back_spread_legs_luna_skirt.webp | 3 + ..._head_back_spread_legs_luna_stockings.webp | 3 + ...n_inspect_legs_together_luna_arm_idle.webp | 3 + ...ect_legs_together_luna_arm_masturbate.webp | 3 + .../lun_inspect_legs_together_luna_body.webp | 3 + ...nspect_legs_together_luna_clothes_bra.webp | 3 + ...t_legs_together_luna_clothes_bra_grab.webp | 3 + ...pect_legs_together_luna_clothes_shirt.webp | 3 + ...pect_legs_together_luna_clothes_skirt.webp | 3 + ..._legs_together_luna_clothes_stockings.webp | 3 + ...inspect_legs_together_luna_face_blush.webp | 3 + ...egs_together_luna_face_eyebrows_angry.webp | 3 + ...legs_together_luna_face_eyebrows_base.webp | 3 + ...gs_together_luna_face_eyebrows_raised.webp | 3 + ...s_together_luna_face_eyebrows_shocked.webp | 3 + ...s_together_luna_face_eyebrows_worried.webp | 3 + ...egs_together_luna_face_eyes_base_down.webp | 3 + ...egs_together_luna_face_eyes_base_left.webp | 3 + ...gs_together_luna_face_eyes_base_right.webp | 3 + ...s_together_luna_face_eyes_base_squint.webp | 3 + ...gs_together_luna_face_eyes_base_stare.webp | 3 + ..._legs_together_luna_face_eyes_base_up.webp | 3 + ...t_legs_together_luna_face_eyes_closed.webp | 3 + ..._together_luna_face_eyes_halflid_down.webp | 3 + ..._together_luna_face_eyes_halflid_left.webp | 3 + ...together_luna_face_eyes_halflid_right.webp | 3 + ...ogether_luna_face_eyes_halflid_squint.webp | 3 + ...together_luna_face_eyes_halflid_stare.webp | 3 + ...gs_together_luna_face_eyes_halflid_up.webp | 3 + ...egs_together_luna_face_eyes_wide_down.webp | 3 + ...egs_together_luna_face_eyes_wide_left.webp | 3 + ...gs_together_luna_face_eyes_wide_right.webp | 3 + ...s_together_luna_face_eyes_wide_squint.webp | 3 + ...gs_together_luna_face_eyes_wide_stare.webp | 3 + ..._legs_together_luna_face_eyes_wide_up.webp | 3 + ...legs_together_luna_face_mouth_annoyed.webp | 3 + ...ct_legs_together_luna_face_mouth_base.webp | 3 + ...ct_legs_together_luna_face_mouth_grin.webp | 3 + ...legs_together_luna_face_mouth_neutral.webp | 3 + ..._together_luna_face_mouth_neutral_cum.webp | 3 + ...ct_legs_together_luna_face_mouth_open.webp | 3 + ...egs_together_luna_face_mouth_open_cum.webp | 3 + ...gs_together_luna_face_mouth_open_spit.webp | 3 + ..._together_luna_face_mouth_open_tongue.webp | 3 + ...ther_luna_face_mouth_open_tongue_spit.webp | 3 + ...ct_legs_together_luna_face_mouth_soft.webp | 3 + ...ct_legs_together_luna_face_mouth_spit.webp | 3 + ...legs_together_luna_face_mouth_swallow.webp | 3 + ..._inspect_legs_together_luna_hair_back.webp | 3 + ...inspect_legs_together_luna_hair_front.webp | 3 + ...lun_inspect_legs_together_luna_shadow.webp | 3 + ...lun_inspect_spread_legs_luna_arm_idle.webp | 3 + ...spect_spread_legs_luna_arm_masturbate.webp | 3 + .../lun_inspect_spread_legs_luna_body.webp | 3 + ..._inspect_spread_legs_luna_clothes_bra.webp | 3 + ...ect_spread_legs_luna_clothes_bra_grab.webp | 3 + ...pect_spread_legs_luna_clothes_panties.webp | 3 + ...nspect_spread_legs_luna_clothes_shirt.webp | 3 + ...nspect_spread_legs_luna_clothes_skirt.webp | 3 + ...ct_spread_legs_luna_clothes_stockings.webp | 3 + ...n_inspect_spread_legs_luna_face_blush.webp | 3 + ..._spread_legs_luna_face_eyebrows_angry.webp | 3 + ...t_spread_legs_luna_face_eyebrows_base.webp | 3 + ...spread_legs_luna_face_eyebrows_raised.webp | 3 + ...pread_legs_luna_face_eyebrows_shocked.webp | 3 + ...pread_legs_luna_face_eyebrows_worried.webp | 3 + ..._spread_legs_luna_face_eyes_base_down.webp | 3 + ..._spread_legs_luna_face_eyes_base_left.webp | 3 + ...spread_legs_luna_face_eyes_base_right.webp | 3 + ...pread_legs_luna_face_eyes_base_squint.webp | 3 + ...spread_legs_luna_face_eyes_base_stare.webp | 3 + ...ct_spread_legs_luna_face_eyes_base_up.webp | 3 + ...ect_spread_legs_luna_face_eyes_closed.webp | 3 + ...read_legs_luna_face_eyes_halflid_down.webp | 3 + ...read_legs_luna_face_eyes_halflid_left.webp | 3 + ...ead_legs_luna_face_eyes_halflid_right.webp | 3 + ...ad_legs_luna_face_eyes_halflid_squint.webp | 3 + ...ead_legs_luna_face_eyes_halflid_stare.webp | 3 + ...spread_legs_luna_face_eyes_halflid_up.webp | 3 + ..._spread_legs_luna_face_eyes_wide_down.webp | 3 + ..._spread_legs_luna_face_eyes_wide_left.webp | 3 + ...spread_legs_luna_face_eyes_wide_right.webp | 3 + ...pread_legs_luna_face_eyes_wide_squint.webp | 3 + ...spread_legs_luna_face_eyes_wide_stare.webp | 3 + ...ct_spread_legs_luna_face_eyes_wide_up.webp | 3 + ...t_spread_legs_luna_face_mouth_annoyed.webp | 3 + ...pect_spread_legs_luna_face_mouth_base.webp | 3 + ...pect_spread_legs_luna_face_mouth_grin.webp | 3 + ...t_spread_legs_luna_face_mouth_neutral.webp | 3 + ...read_legs_luna_face_mouth_neutral_cum.webp | 3 + ...pect_spread_legs_luna_face_mouth_open.webp | 3 + ..._spread_legs_luna_face_mouth_open_cum.webp | 3 + ...spread_legs_luna_face_mouth_open_spit.webp | 3 + ...read_legs_luna_face_mouth_open_tongue.webp | 3 + ...legs_luna_face_mouth_open_tongue_spit.webp | 3 + ...pect_spread_legs_luna_face_mouth_soft.webp | 3 + ...pect_spread_legs_luna_face_mouth_spit.webp | 3 + ...t_spread_legs_luna_face_mouth_swallow.webp | 3 + ...nspect_spread_legs_luna_fluids_squirt.webp | 3 + ...n_inspect_spread_legs_luna_fluids_wet.webp | 3 + ...un_inspect_spread_legs_luna_hair_back.webp | 3 + ...n_inspect_spread_legs_luna_hair_front.webp | 3 + .../lun_inspect_spread_legs_luna_shadow.webp | 3 + game/scripts/cg/luna.rpy | 266 +++++++++++++++++- game/scripts/doll/face.rpy | 2 + game/scripts/options.rpy | 2 +- 162 files changed, 743 insertions(+), 4 deletions(-) create mode 100644 game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp create mode 100644 game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_grab.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_hold.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_idle.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_mound.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame0.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame1.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_tit.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_body.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes_back.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes_hood.webp create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_head.webp create mode 100644 game/images/CG/lun_inspect/lun_inspect_background.webp create mode 100644 game/images/CG/lun_inspect/lun_inspect_background_breastfix.webp create mode 100644 game/images/CG/lun_inspect/lun_inspect_chair.webp create mode 100644 game/images/CG/lun_inspect/lun_inspect_vignette.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_arm_idle.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_body.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_bra.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_blush.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_breath.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyebrows_base.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_right.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up_hearts.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao_spit.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_back.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_front.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shadow.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shirt.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_skirt.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_stockings.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_legs_together_luna_arm_idle.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_idle.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_masturbate.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_body.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_bra.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_blush.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_breath.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyebrows_base.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_right.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up_hearts.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao_spit.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_back.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_front.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_panties.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shadow.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shirt.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_skirt.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_stockings.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_idle.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_masturbate.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_body.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra_grab.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_shirt.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_skirt.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_stockings.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_blush.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_angry.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_base.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_raised.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_shocked.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_worried.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_down.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_left.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_right.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_squint.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_stare.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_up.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_closed.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_down.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_left.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_right.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_squint.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_stare.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_up.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_down.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_left.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_right.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_squint.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_stare.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_up.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_annoyed.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_base.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_grin.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral_cum.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_cum.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_spit.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue_spit.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_soft.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_spit.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_swallow.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_back.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_front.webp create mode 100644 game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_shadow.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_idle.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_masturbate.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_body.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra_grab.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_panties.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_shirt.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_skirt.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_stockings.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_blush.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_angry.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_base.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_raised.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_shocked.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_worried.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_down.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_left.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_right.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_squint.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_stare.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_up.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_closed.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_down.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_left.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_right.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_squint.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_stare.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_up.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_down.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_left.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_right.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_squint.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_stare.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_up.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_annoyed.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_base.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_grin.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral_cum.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_cum.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_spit.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue_spit.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_soft.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_spit.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_swallow.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_squirt.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_wet.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_back.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_front.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_shadow.webp diff --git a/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp new file mode 100644 index 00000000..64e1353b --- /dev/null +++ b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:684ac1f29bd480c8ae06172e348cb650cee4099a1fc7dc4ffe468644d5b56a12 +size 32856 diff --git a/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp new file mode 100644 index 00000000..025844cf --- /dev/null +++ b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdf19ee61cb3f529d09739a7b9d42e03fd020b16934da315cf2794d43eb54cb6 +size 35354 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp new file mode 100644 index 00000000..2d140cc8 --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d93e8b56992d2c19c8ef549740ed53647adc54cf5028e38ef96bf7b06372fbdf +size 182188 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_grab.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_grab.webp new file mode 100644 index 00000000..b3550d38 --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_grab.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dae47687c6a37eded724b4522cfde4503d44849bf65ec067740f4f42bc033b6d +size 141448 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_hold.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_hold.webp new file mode 100644 index 00000000..67fae023 --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_hold.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc61f35f0fcfafa2617831693fe86e7ae11ef884b43318619b96e65118b7ea2a +size 116874 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_idle.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_idle.webp new file mode 100644 index 00000000..7ef37213 --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36a9fb85545aca11578d31ac28ffd140f4c809935f7566d713316fc405761960 +size 60984 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_mound.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_mound.webp new file mode 100644 index 00000000..64cd2bd7 --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_mound.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c78b142c21696cb42f68a3c3878e69083020d872a9a1ff23110be7d078ff281 +size 41154 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame0.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame0.webp new file mode 100644 index 00000000..76f02210 --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6b5a3c0ddb6c4a27b094dd27e8e31c53dc55d476983d34048bc8a0ccef79722 +size 51568 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame1.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame1.webp new file mode 100644 index 00000000..1d40937a --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f2daa15d111d616356b1703b59ea914c1bd53137c788d5c5f731adcb3b8630f +size 57416 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_tit.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_tit.webp new file mode 100644 index 00000000..136eb86e --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_tit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fec207b20dbf049601b7b459a617f04086ebc617c955482e94042155a6d28f8a +size 38014 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_body.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_body.webp new file mode 100644 index 00000000..d5393322 --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_body.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68f3172ebd8b9ad63ddc6e49b9e090218daec45ca1ca5c70cac1191509a3d89f +size 133624 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes.webp new file mode 100644 index 00000000..7b49396b --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e37d1ee6647bcaef042b9fe1a26d51e7916ae9a7b0f6fcddd0297cf2fc4dc9c6 +size 271102 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes_back.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes_back.webp new file mode 100644 index 00000000..ec8953ef --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e228a7bfd27c1f7f28c77ec9a22b5515791d78e222bdaa6ebf10e424a9aa9941 +size 116752 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes_hood.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes_hood.webp new file mode 100644 index 00000000..4f539d0b --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_clothes_hood.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c003a684568a515866aaf259431d0bf7a526fb2612b62bb0a8fe3633aeabe44e +size 10572 diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_head.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_head.webp new file mode 100644 index 00000000..0ccef65c --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_head.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e2e1528071e31490419ffb4ef2513e2ba3582427e7f0c7f5d0a47c18b0eef7d +size 53632 diff --git a/game/images/CG/lun_inspect/lun_inspect_background.webp b/game/images/CG/lun_inspect/lun_inspect_background.webp new file mode 100644 index 00000000..e399d18d --- /dev/null +++ b/game/images/CG/lun_inspect/lun_inspect_background.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8f857d0bac3b2a9d56b9a4bc89e1c25fc396e3ca60792d33309ffa2c96d864e +size 1126912 diff --git a/game/images/CG/lun_inspect/lun_inspect_background_breastfix.webp b/game/images/CG/lun_inspect/lun_inspect_background_breastfix.webp new file mode 100644 index 00000000..726b9201 --- /dev/null +++ b/game/images/CG/lun_inspect/lun_inspect_background_breastfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e86972fe80e3b24b35bc3f8b70d7f5f519abe9ec1b92008e8f3ebf3728cde2f6 +size 9512 diff --git a/game/images/CG/lun_inspect/lun_inspect_chair.webp b/game/images/CG/lun_inspect/lun_inspect_chair.webp new file mode 100644 index 00000000..7e3c4438 --- /dev/null +++ b/game/images/CG/lun_inspect/lun_inspect_chair.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f52dae3f50766d4f498c2ed5ad606fa46493ec3538bacaea446116cc063473e3 +size 575354 diff --git a/game/images/CG/lun_inspect/lun_inspect_vignette.webp b/game/images/CG/lun_inspect/lun_inspect_vignette.webp new file mode 100644 index 00000000..9cb96a35 --- /dev/null +++ b/game/images/CG/lun_inspect/lun_inspect_vignette.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5b6bc985c2a8dfb0ee5c9da2b353f1dc734ceb68a16c9885337d4cb0ab8a446 +size 679282 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_arm_idle.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_arm_idle.webp new file mode 100644 index 00000000..f298811f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_arm_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84a06bd4a10141813db675e44280ce3221e7331d9ca441d7ddebda2bebff66c5 +size 34430 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_body.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_body.webp new file mode 100644 index 00000000..4451e420 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_body.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fab281e185cb457cf75ddffa360208ad11315bdd097c9e0d5e76739faf1e11bb +size 245088 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_bra.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_bra.webp new file mode 100644 index 00000000..91c1ecea --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_bra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:618f642a2c7f12f5f14dbdc6024dc824496e2d37444f52df7a33b722cb08f855 +size 96642 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_blush.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_blush.webp new file mode 100644 index 00000000..f6767d68 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_blush.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a2522a514f746dcfc292e2f26276500442b0bde3e0a744870e0aa5d4fe6431 +size 28820 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_breath.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_breath.webp new file mode 100644 index 00000000..5f3feffb --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_breath.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:577f9c62d5d885d760d362f3eaca293684c627fc6f844386583947c2c737f088 +size 12190 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyebrows_base.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyebrows_base.webp new file mode 100644 index 00000000..0934894f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de040d4b077b1a0065ea63bb6192d9bce468bc88542ad68f2088038d5a1b84b2 +size 11946 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_right.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_right.webp new file mode 100644 index 00000000..c1a8af1f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:891591d60ecd743a260fd819a8da88ef4612097823f2af859b8af56f6b645821 +size 13648 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up.webp new file mode 100644 index 00000000..9e04fc56 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2cd8b7a6f59d28aa611ec2aec23c88a91598a1f0f13b9e09934fcb370a0b5be +size 14230 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up_hearts.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up_hearts.webp new file mode 100644 index 00000000..971a3b56 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:809a6879fef667279139dbc46e50ea70048c4d7d5d8da9f10d6db9e63dd7d3b5 +size 14956 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open.webp new file mode 100644 index 00000000..599ef341 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7b89338ab8f7056145146de1ad1c083db7addf389e78f05a0beab565e427b49 +size 17008 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao.webp new file mode 100644 index 00000000..2ec69f06 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6232e37db0961ac9a7ebe9374eb030699dd383b8e8b87bdc5a7771f7a01e45b2 +size 18942 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao_spit.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao_spit.webp new file mode 100644 index 00000000..47dba993 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0714193d15ee27ed2678683e75f23f2c6966242e02c4e55dc6067c7073924d0 +size 24590 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_back.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_back.webp new file mode 100644 index 00000000..ef8c9286 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:563b8ac2ba6d4844ab980eef2eb588f748df459e35797e24e469f2ddbb957436 +size 106950 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_front.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_front.webp new file mode 100644 index 00000000..a5401f1e --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_front.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bc33ce4e0b529b5e67fe3a0be84c1fc8f42f0d6f1c442b237c4c04776b7f997 +size 129406 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shadow.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shadow.webp new file mode 100644 index 00000000..ed59f455 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shadow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07cabd4a6255162f97d55a36925ff2643dd8cd09280acb028e564a9daaf12479 +size 23070 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shirt.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shirt.webp new file mode 100644 index 00000000..d43b963f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd4862bf901141695c65d6a6b6eb16278170c57de609dc26d8d5f71a3e1ace3f +size 161344 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_skirt.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_skirt.webp new file mode 100644 index 00000000..b6f22853 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_skirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da445676f5fac1aea0e06e73c0e8fc9041d1d916eb8e6af2f88962fef91a2320 +size 107120 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_stockings.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_stockings.webp new file mode 100644 index 00000000..38ce1c14 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_stockings.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27a7bbac33c35f4cfb68287d312da2d672d40d9e42a21895a1d8221c3cd38922 +size 75936 diff --git a/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_legs_together_luna_arm_idle.webp b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_legs_together_luna_arm_idle.webp new file mode 100644 index 00000000..f298811f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_legs_together_luna_arm_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84a06bd4a10141813db675e44280ce3221e7331d9ca441d7ddebda2bebff66c5 +size 34430 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_idle.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_idle.webp new file mode 100644 index 00000000..f298811f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84a06bd4a10141813db675e44280ce3221e7331d9ca441d7ddebda2bebff66c5 +size 34430 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_masturbate.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_masturbate.webp new file mode 100644 index 00000000..de6d50ce --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_masturbate.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:394f8eff25d7b0fdddacc0d19f78dedd90f8613a4a7cdea01b7b4e4a182afcd7 +size 44068 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_body.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_body.webp new file mode 100644 index 00000000..00929a65 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_body.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b41820d877e13fb7123c9d591d1e9f144325c41369047aefb5e6befa0198a825 +size 266000 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_bra.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_bra.webp new file mode 100644 index 00000000..91c1ecea --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_bra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:618f642a2c7f12f5f14dbdc6024dc824496e2d37444f52df7a33b722cb08f855 +size 96642 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_blush.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_blush.webp new file mode 100644 index 00000000..f6767d68 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_blush.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a2522a514f746dcfc292e2f26276500442b0bde3e0a744870e0aa5d4fe6431 +size 28820 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_breath.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_breath.webp new file mode 100644 index 00000000..5f3feffb --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_breath.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:577f9c62d5d885d760d362f3eaca293684c627fc6f844386583947c2c737f088 +size 12190 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyebrows_base.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyebrows_base.webp new file mode 100644 index 00000000..0934894f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de040d4b077b1a0065ea63bb6192d9bce468bc88542ad68f2088038d5a1b84b2 +size 11946 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_right.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_right.webp new file mode 100644 index 00000000..c1a8af1f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:891591d60ecd743a260fd819a8da88ef4612097823f2af859b8af56f6b645821 +size 13648 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up.webp new file mode 100644 index 00000000..9e04fc56 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2cd8b7a6f59d28aa611ec2aec23c88a91598a1f0f13b9e09934fcb370a0b5be +size 14230 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up_hearts.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up_hearts.webp new file mode 100644 index 00000000..971a3b56 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up_hearts.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:809a6879fef667279139dbc46e50ea70048c4d7d5d8da9f10d6db9e63dd7d3b5 +size 14956 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open.webp new file mode 100644 index 00000000..599ef341 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7b89338ab8f7056145146de1ad1c083db7addf389e78f05a0beab565e427b49 +size 17008 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao.webp new file mode 100644 index 00000000..2ec69f06 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6232e37db0961ac9a7ebe9374eb030699dd383b8e8b87bdc5a7771f7a01e45b2 +size 18942 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao_spit.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao_spit.webp new file mode 100644 index 00000000..47dba993 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0714193d15ee27ed2678683e75f23f2c6966242e02c4e55dc6067c7073924d0 +size 24590 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_back.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_back.webp new file mode 100644 index 00000000..ef8c9286 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:563b8ac2ba6d4844ab980eef2eb588f748df459e35797e24e469f2ddbb957436 +size 106950 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_front.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_front.webp new file mode 100644 index 00000000..a5401f1e --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_front.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bc33ce4e0b529b5e67fe3a0be84c1fc8f42f0d6f1c442b237c4c04776b7f997 +size 129406 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_panties.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_panties.webp new file mode 100644 index 00000000..6b4cd686 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_panties.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1070306b035ebd879805476e2dee0aa3c9cb81677f52823457359b416a211674 +size 62412 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shadow.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shadow.webp new file mode 100644 index 00000000..0532a76c --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shadow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c52e4da0432c36782de9ef219ed710e2154010c7401afbe16d0dcd830790ed3 +size 32262 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shirt.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shirt.webp new file mode 100644 index 00000000..d43b963f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd4862bf901141695c65d6a6b6eb16278170c57de609dc26d8d5f71a3e1ace3f +size 161344 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_skirt.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_skirt.webp new file mode 100644 index 00000000..4ff1d24e --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_skirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:803519b0ea89f554ec8d0106ec36e393cc748039bb57f8d7f94af538400a5865 +size 107458 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_stockings.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_stockings.webp new file mode 100644 index 00000000..6f31da51 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_stockings.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:061808e0789cd47cd1ce0913b68ec215ed49f3cc4e43cfe4fb51bae66dc1bacf +size 63476 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_idle.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_idle.webp new file mode 100644 index 00000000..f298811f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84a06bd4a10141813db675e44280ce3221e7331d9ca441d7ddebda2bebff66c5 +size 34430 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_masturbate.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_masturbate.webp new file mode 100644 index 00000000..de6d50ce --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_masturbate.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:394f8eff25d7b0fdddacc0d19f78dedd90f8613a4a7cdea01b7b4e4a182afcd7 +size 44068 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_body.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_body.webp new file mode 100644 index 00000000..dec901d7 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_body.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f7dc1fd1907d1c0ff421f0959137ff15d972869eec331ae94e2b301fb7c7c91 +size 245684 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra.webp new file mode 100644 index 00000000..91c1ecea --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:618f642a2c7f12f5f14dbdc6024dc824496e2d37444f52df7a33b722cb08f855 +size 96642 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra_grab.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra_grab.webp new file mode 100644 index 00000000..b4ef0cd2 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra_grab.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4630957c5fa7a9b744d52c0acddaa170f56dfae9804e138fd6b81e68dc7fdeb7 +size 96712 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_shirt.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_shirt.webp new file mode 100644 index 00000000..d43b963f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_shirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd4862bf901141695c65d6a6b6eb16278170c57de609dc26d8d5f71a3e1ace3f +size 161344 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_skirt.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_skirt.webp new file mode 100644 index 00000000..b6f22853 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_skirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da445676f5fac1aea0e06e73c0e8fc9041d1d916eb8e6af2f88962fef91a2320 +size 107120 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_stockings.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_stockings.webp new file mode 100644 index 00000000..38ce1c14 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_stockings.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27a7bbac33c35f4cfb68287d312da2d672d40d9e42a21895a1d8221c3cd38922 +size 75936 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_blush.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_blush.webp new file mode 100644 index 00000000..54c69966 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_blush.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04dac1cd99bf852ec17ab1a1e9054cb5d8242391e5cd12717529dead3e671dd6 +size 27746 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_angry.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_angry.webp new file mode 100644 index 00000000..aa43bdbe --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67f07d5bfe960d61d0b3e88453e1273b8b2d83146a41352e53ad568f7d287aec +size 11346 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_base.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_base.webp new file mode 100644 index 00000000..53d5ae1b --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41606f502d250d631e36178dc525205108c6394aff6b260cc68a6b665acb89c8 +size 11464 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_raised.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_raised.webp new file mode 100644 index 00000000..51a2580b --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_raised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ee315bcbf5dc6fae123e78fc87bbcd5c40c4722dd1fe0b9c180969b1aedcda3 +size 11804 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_shocked.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_shocked.webp new file mode 100644 index 00000000..5028f52e --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_shocked.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ad3018e808ab4bc2b19b670685568fc0c53c4dc1e25f53dff65ba3f9f064136 +size 12284 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_worried.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_worried.webp new file mode 100644 index 00000000..a7afd3db --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_worried.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d358807c24139bde7576e55fe8ac5166f1835fba362373a6d33ec6de4922ac1a +size 11290 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_down.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_down.webp new file mode 100644 index 00000000..a984fe25 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a365c9c88bee02b9e8738d89145d4446f2a34c97daa30c4677eac0671d372848 +size 14646 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_left.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_left.webp new file mode 100644 index 00000000..33685930 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9b69c8c86de0911c12c74bd88c30103686f40f93c4a346689f659998efcea7d +size 15404 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_right.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_right.webp new file mode 100644 index 00000000..cf34b3c4 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dce74a94c1a936ef03eca6ecafe4600e0ff5d1004ed12d0bbadbdd4779ba7db8 +size 14874 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_squint.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_squint.webp new file mode 100644 index 00000000..43fd2abf --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8e45483b9cd71915f164e45dcf45890e4a3029677ce5be0a7fd95c0672ed52 +size 14978 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_stare.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_stare.webp new file mode 100644 index 00000000..33036854 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e292d4cc488984aee9ddac5aae145defdd9f9fe846a33ab09831ca277d712c40 +size 15106 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_up.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_up.webp new file mode 100644 index 00000000..5a9f77b7 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e5695bcf080632e01f3eb03428d4fd78660e9fdbebf4111ec6232203b68c0d +size 14966 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_closed.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_closed.webp new file mode 100644 index 00000000..7472e530 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11fea23ca1e17b76fc4b47396877b34b10982296e62570de7f6f8802f39b75f0 +size 11526 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_down.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_down.webp new file mode 100644 index 00000000..64e083ec --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bd78c56eaa1076cc4d5d83a97de74b1fa74acf1515c27b0f4676883a17d79ee +size 12798 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_left.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_left.webp new file mode 100644 index 00000000..8ba44e25 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb04c8658b09c71ecab904f1a66f3e81ff21b4b84f322c6b8f1e628e2f7420f0 +size 13998 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_right.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_right.webp new file mode 100644 index 00000000..c462004c --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d4922e22b1f455dcd3cc0fb6db86df32ffb80572fc2e2df4004771d6191a783 +size 13364 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_squint.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_squint.webp new file mode 100644 index 00000000..8068f9e8 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dec4f5e47ee4361b37ac5759cc242ae4ff160ccfe4b83a1e5e23aced9e763b0 +size 13268 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_stare.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_stare.webp new file mode 100644 index 00000000..dd62d54b --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d6a27715a87160d64236a4fe431c02cd83b6687890df37379ee914864cf37e6 +size 13772 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_up.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_up.webp new file mode 100644 index 00000000..d7b9d6e3 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:609cd9ae62b7f810a0291f103174dc2ea97e00d20b044ccb46f3e8c353bdc685 +size 13868 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_down.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_down.webp new file mode 100644 index 00000000..12cee79a --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:248a3a12ac16da1e8fa2e7d01f7326bf6a691e60494384f247bc2d411577b375 +size 15788 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_left.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_left.webp new file mode 100644 index 00000000..d6d24a5a --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f39f9a6d54ab7f2a675cf160ed5f0945584289977a29df11349d32ab01c8d55 +size 16488 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_right.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_right.webp new file mode 100644 index 00000000..60caab00 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66cf9efc6b28e8a399e7b5faac911b47971281ed1b83cfcb5828622c5055b9e9 +size 16434 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_squint.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_squint.webp new file mode 100644 index 00000000..a1fcf340 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94a18146ab96a9ff43aca6d0f891053ef78efc20fb2cb26eaed3758e4fb68fc9 +size 15726 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_stare.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_stare.webp new file mode 100644 index 00000000..854f96aa --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:661f6e7773134eb647b76a808c371e282d93e663af5d8c15f1a401c3b49997cd +size 16184 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_up.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_up.webp new file mode 100644 index 00000000..c6cb1e85 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f17638f071085889b444b38acc15194ad239abf389a5f5e0d37731ea9ce072f4 +size 15938 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_annoyed.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_annoyed.webp new file mode 100644 index 00000000..55bc6026 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_annoyed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:599e1c4a1fe6c0557ba8fd878b3f600ec801120da3329f9e4c0197dfad7baf6c +size 6146 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_base.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_base.webp new file mode 100644 index 00000000..bd0d08f0 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44e59f9d4b2fe44a170534037a0cc7b1b86d4c26e8efef57784cfd3353ff7b5a +size 6668 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_grin.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_grin.webp new file mode 100644 index 00000000..89253069 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_grin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85822db91f83e91eff5bc16a6939c6786e889572ffd9d0df87dac12303075831 +size 10866 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral.webp new file mode 100644 index 00000000..e38d5096 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e2835fb2ebb43636b529cc4ffd1c216c504ac0ea94582557cd589f647713f45 +size 6422 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral_cum.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral_cum.webp new file mode 100644 index 00000000..5b5ea6de --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral_cum.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d8e8d940456be81e7ad186ed2229fd5bf12f6036c5d3e0061226ca0d6d962be +size 7956 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open.webp new file mode 100644 index 00000000..a18482a4 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a801bf0a9c685947536881bacce4ebb7861f47ad6dab33e9561689e182e2f01 +size 10428 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_cum.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_cum.webp new file mode 100644 index 00000000..58857233 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_cum.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56bdc9ce445fa1933e43869d779d33f12a9ba260ff470cf79f74f748dacb0da5 +size 14466 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_spit.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_spit.webp new file mode 100644 index 00000000..12a52797 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0f5e3e1628353369c93d57233e7bf2a802aa43c213451954978fd9287c63164 +size 10746 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue.webp new file mode 100644 index 00000000..06aaadd5 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1789ff941a69889c4680e9218a30d2e4adef6ba1667250e57663cda012317dd +size 10912 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue_spit.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue_spit.webp new file mode 100644 index 00000000..17f9252f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bec444c3c98f5c4033dd4eb3bedbe8e9734be05163ca28d7ecad750f3c32ccf7 +size 11678 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_soft.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_soft.webp new file mode 100644 index 00000000..a3985c79 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_soft.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f914feb48d38e9b51dc641a5cf1c2a980280f68e874d004baee832a11e329d5 +size 8422 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_spit.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_spit.webp new file mode 100644 index 00000000..eeba74f6 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22613aec6ee40e76796d5b81039ba78ce5e3e4226ca61b0da2ea4b39ba5908e3 +size 10142 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_swallow.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_swallow.webp new file mode 100644 index 00000000..7ad65e6f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_swallow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:646e3d8f72969f36e37574141678ee11f786abb0393ffe3154ced8f63ee60659 +size 21188 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_back.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_back.webp new file mode 100644 index 00000000..1369b54e --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5db59a209ee336a9b394b3557a7ab8022c5ccd50419677196261821cb942d89b +size 140016 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_front.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_front.webp new file mode 100644 index 00000000..bf0fb8f7 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_front.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b932893f780511852111ed00c14c80514124b0f63dcc83e0100c244656c7106 +size 206840 diff --git a/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_shadow.webp b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_shadow.webp new file mode 100644 index 00000000..e9316f66 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_shadow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57f840aa9b22260af3b146c554bd4aa807a155902c7c5b4ffaae1f79d73846d5 +size 22238 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_idle.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_idle.webp new file mode 100644 index 00000000..f298811f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84a06bd4a10141813db675e44280ce3221e7331d9ca441d7ddebda2bebff66c5 +size 34430 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_masturbate.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_masturbate.webp new file mode 100644 index 00000000..de6d50ce --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_masturbate.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:394f8eff25d7b0fdddacc0d19f78dedd90f8613a4a7cdea01b7b4e4a182afcd7 +size 44068 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_body.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_body.webp new file mode 100644 index 00000000..89cda03c --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_body.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60b436ae115ec27c9024f3eab9324e3e5648d93d97d3e96de751cfd39fb9636a +size 257526 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra.webp new file mode 100644 index 00000000..91c1ecea --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:618f642a2c7f12f5f14dbdc6024dc824496e2d37444f52df7a33b722cb08f855 +size 96642 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra_grab.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra_grab.webp new file mode 100644 index 00000000..b4ef0cd2 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra_grab.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4630957c5fa7a9b744d52c0acddaa170f56dfae9804e138fd6b81e68dc7fdeb7 +size 96712 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_panties.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_panties.webp new file mode 100644 index 00000000..6b4cd686 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_panties.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1070306b035ebd879805476e2dee0aa3c9cb81677f52823457359b416a211674 +size 62412 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_shirt.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_shirt.webp new file mode 100644 index 00000000..d43b963f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_shirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd4862bf901141695c65d6a6b6eb16278170c57de609dc26d8d5f71a3e1ace3f +size 161344 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_skirt.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_skirt.webp new file mode 100644 index 00000000..4ff1d24e --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_skirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:803519b0ea89f554ec8d0106ec36e393cc748039bb57f8d7f94af538400a5865 +size 107458 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_stockings.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_stockings.webp new file mode 100644 index 00000000..6f31da51 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_stockings.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:061808e0789cd47cd1ce0913b68ec215ed49f3cc4e43cfe4fb51bae66dc1bacf +size 63476 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_blush.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_blush.webp new file mode 100644 index 00000000..54c69966 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_blush.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04dac1cd99bf852ec17ab1a1e9054cb5d8242391e5cd12717529dead3e671dd6 +size 27746 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_angry.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_angry.webp new file mode 100644 index 00000000..aa43bdbe --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67f07d5bfe960d61d0b3e88453e1273b8b2d83146a41352e53ad568f7d287aec +size 11346 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_base.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_base.webp new file mode 100644 index 00000000..53d5ae1b --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41606f502d250d631e36178dc525205108c6394aff6b260cc68a6b665acb89c8 +size 11464 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_raised.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_raised.webp new file mode 100644 index 00000000..51a2580b --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_raised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ee315bcbf5dc6fae123e78fc87bbcd5c40c4722dd1fe0b9c180969b1aedcda3 +size 11804 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_shocked.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_shocked.webp new file mode 100644 index 00000000..5028f52e --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_shocked.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ad3018e808ab4bc2b19b670685568fc0c53c4dc1e25f53dff65ba3f9f064136 +size 12284 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_worried.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_worried.webp new file mode 100644 index 00000000..a7afd3db --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_worried.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d358807c24139bde7576e55fe8ac5166f1835fba362373a6d33ec6de4922ac1a +size 11290 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_down.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_down.webp new file mode 100644 index 00000000..a984fe25 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a365c9c88bee02b9e8738d89145d4446f2a34c97daa30c4677eac0671d372848 +size 14646 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_left.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_left.webp new file mode 100644 index 00000000..33685930 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9b69c8c86de0911c12c74bd88c30103686f40f93c4a346689f659998efcea7d +size 15404 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_right.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_right.webp new file mode 100644 index 00000000..cf34b3c4 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dce74a94c1a936ef03eca6ecafe4600e0ff5d1004ed12d0bbadbdd4779ba7db8 +size 14874 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_squint.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_squint.webp new file mode 100644 index 00000000..43fd2abf --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8e45483b9cd71915f164e45dcf45890e4a3029677ce5be0a7fd95c0672ed52 +size 14978 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_stare.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_stare.webp new file mode 100644 index 00000000..33036854 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e292d4cc488984aee9ddac5aae145defdd9f9fe846a33ab09831ca277d712c40 +size 15106 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_up.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_up.webp new file mode 100644 index 00000000..5a9f77b7 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e5695bcf080632e01f3eb03428d4fd78660e9fdbebf4111ec6232203b68c0d +size 14966 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_closed.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_closed.webp new file mode 100644 index 00000000..7472e530 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11fea23ca1e17b76fc4b47396877b34b10982296e62570de7f6f8802f39b75f0 +size 11526 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_down.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_down.webp new file mode 100644 index 00000000..64e083ec --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bd78c56eaa1076cc4d5d83a97de74b1fa74acf1515c27b0f4676883a17d79ee +size 12798 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_left.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_left.webp new file mode 100644 index 00000000..8ba44e25 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb04c8658b09c71ecab904f1a66f3e81ff21b4b84f322c6b8f1e628e2f7420f0 +size 13998 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_right.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_right.webp new file mode 100644 index 00000000..c462004c --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d4922e22b1f455dcd3cc0fb6db86df32ffb80572fc2e2df4004771d6191a783 +size 13364 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_squint.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_squint.webp new file mode 100644 index 00000000..8068f9e8 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dec4f5e47ee4361b37ac5759cc242ae4ff160ccfe4b83a1e5e23aced9e763b0 +size 13268 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_stare.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_stare.webp new file mode 100644 index 00000000..dd62d54b --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d6a27715a87160d64236a4fe431c02cd83b6687890df37379ee914864cf37e6 +size 13772 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_up.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_up.webp new file mode 100644 index 00000000..d7b9d6e3 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:609cd9ae62b7f810a0291f103174dc2ea97e00d20b044ccb46f3e8c353bdc685 +size 13868 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_down.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_down.webp new file mode 100644 index 00000000..12cee79a --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:248a3a12ac16da1e8fa2e7d01f7326bf6a691e60494384f247bc2d411577b375 +size 15788 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_left.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_left.webp new file mode 100644 index 00000000..d6d24a5a --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f39f9a6d54ab7f2a675cf160ed5f0945584289977a29df11349d32ab01c8d55 +size 16488 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_right.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_right.webp new file mode 100644 index 00000000..60caab00 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66cf9efc6b28e8a399e7b5faac911b47971281ed1b83cfcb5828622c5055b9e9 +size 16434 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_squint.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_squint.webp new file mode 100644 index 00000000..a1fcf340 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_squint.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94a18146ab96a9ff43aca6d0f891053ef78efc20fb2cb26eaed3758e4fb68fc9 +size 15726 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_stare.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_stare.webp new file mode 100644 index 00000000..854f96aa --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:661f6e7773134eb647b76a808c371e282d93e663af5d8c15f1a401c3b49997cd +size 16184 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_up.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_up.webp new file mode 100644 index 00000000..c6cb1e85 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f17638f071085889b444b38acc15194ad239abf389a5f5e0d37731ea9ce072f4 +size 15938 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_annoyed.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_annoyed.webp new file mode 100644 index 00000000..55bc6026 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_annoyed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:599e1c4a1fe6c0557ba8fd878b3f600ec801120da3329f9e4c0197dfad7baf6c +size 6146 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_base.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_base.webp new file mode 100644 index 00000000..bd0d08f0 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44e59f9d4b2fe44a170534037a0cc7b1b86d4c26e8efef57784cfd3353ff7b5a +size 6668 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_grin.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_grin.webp new file mode 100644 index 00000000..89253069 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_grin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85822db91f83e91eff5bc16a6939c6786e889572ffd9d0df87dac12303075831 +size 10866 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral.webp new file mode 100644 index 00000000..e38d5096 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e2835fb2ebb43636b529cc4ffd1c216c504ac0ea94582557cd589f647713f45 +size 6422 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral_cum.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral_cum.webp new file mode 100644 index 00000000..5b5ea6de --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral_cum.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d8e8d940456be81e7ad186ed2229fd5bf12f6036c5d3e0061226ca0d6d962be +size 7956 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open.webp new file mode 100644 index 00000000..a18482a4 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a801bf0a9c685947536881bacce4ebb7861f47ad6dab33e9561689e182e2f01 +size 10428 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_cum.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_cum.webp new file mode 100644 index 00000000..58857233 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_cum.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56bdc9ce445fa1933e43869d779d33f12a9ba260ff470cf79f74f748dacb0da5 +size 14466 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_spit.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_spit.webp new file mode 100644 index 00000000..12a52797 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0f5e3e1628353369c93d57233e7bf2a802aa43c213451954978fd9287c63164 +size 10746 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue.webp new file mode 100644 index 00000000..06aaadd5 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1789ff941a69889c4680e9218a30d2e4adef6ba1667250e57663cda012317dd +size 10912 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue_spit.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue_spit.webp new file mode 100644 index 00000000..17f9252f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bec444c3c98f5c4033dd4eb3bedbe8e9734be05163ca28d7ecad750f3c32ccf7 +size 11678 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_soft.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_soft.webp new file mode 100644 index 00000000..a3985c79 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_soft.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f914feb48d38e9b51dc641a5cf1c2a980280f68e874d004baee832a11e329d5 +size 8422 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_spit.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_spit.webp new file mode 100644 index 00000000..eeba74f6 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_spit.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22613aec6ee40e76796d5b81039ba78ce5e3e4226ca61b0da2ea4b39ba5908e3 +size 10142 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_swallow.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_swallow.webp new file mode 100644 index 00000000..7ad65e6f --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_swallow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:646e3d8f72969f36e37574141678ee11f786abb0393ffe3154ced8f63ee60659 +size 21188 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_squirt.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_squirt.webp new file mode 100644 index 00000000..00b11a64 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_squirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c4be7a18a4024ed5dfd48cdd9a5c2e15b61d82b2b900377b172fdcd10c18b35 +size 4438 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_wet.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_wet.webp new file mode 100644 index 00000000..f3db02e1 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_wet.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac17ad94f99dde8a539f09b1ae6fb6dfd3e6b979396557c5ec75cb46aa439931 +size 7628 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_back.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_back.webp new file mode 100644 index 00000000..1369b54e --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5db59a209ee336a9b394b3557a7ab8022c5ccd50419677196261821cb942d89b +size 140016 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_front.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_front.webp new file mode 100644 index 00000000..bf0fb8f7 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_front.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b932893f780511852111ed00c14c80514124b0f63dcc83e0100c244656c7106 +size 206840 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_shadow.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_shadow.webp new file mode 100644 index 00000000..0532a76c --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_shadow.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c52e4da0432c36782de9ef219ed710e2154010c7401afbe16d0dcd830790ed3 +size 32262 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 6700a54e..fb648493 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -340,9 +340,9 @@ layeredimage lun_grind: group body: attribute idle "lun_grind_idle" default - attribute grind "lun_grind_grind" default - attribute spread "lun_grind_spread" default - attribute cumshot "lun_grind_cumshot" default + attribute grind "lun_grind_grind" + attribute spread "lun_grind_spread" + attribute cumshot "lun_grind_cumshot" image lun_grind_idle: Fixed( @@ -410,3 +410,263 @@ image lun_grind_cumshot: pause 1 repeat + +layeredimage lun_inspect spread_legs: + fit "contain" + fit_first True + + always "lun_inspect_background" + always "lun_inspect_chair" + always "lun_inspect_genie_body" + + attribute genie_clothes_back "lun_inspect_genie_clothes_back" if_all ["genie_clothes"] default + + always "lun_inspect_spread_legs_luna_shadow" if_not ["genie_clothes"] + always "lun_inspect_spread_legs_luna_hair_back" + always "lun_inspect_spread_legs_luna_body" + + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab"] + + group luna_arm prefix "luna_arm" auto: + attribute idle default + + group luna_fluids auto + + group luna_clothes variant "luna_clothes" multiple: + attribute stockings + attribute panties + attribute bra if_not ["luna_shirt", "arms_grab"] + attribute shirt + attribute skirt + + attribute blush "lun_inspect_spread_legs_luna_face_blush" + + group luna_face_mouth prefix "mouth" auto: + attribute base default + + group luna_face_eyebrows prefix "eyes" auto: + attribute base default + + group luna_face_eyes prefix "eyes" auto: + attribute base_stare default + + always "lun_inspect_spread_legs_luna_hair_front" + + attribute genie_clothes_hood "lun_inspect_genie_clothes_hood" if_all ["genie_clothes"] default + + always "lun_inspect_genie_head" + + group genie_arm_right prefix "arm_right" if_not ["arms_grab"]: + attribute idle "lun_inspect_genie_arm_right_idle" default + attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" + attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" + attribute touch_pussy "lun_inspect_arm_right_touch_pussy" + attribute down null + + group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: + attribute hold "lun_inspect_genie_arm_left_hold" default + attribute grab "lun_inspect_genie_arm_left_grab" + + group genie_arms prefix "arms": + attribute grab "lun_inspect_genie_arm_both_grab_tits" + + attribute genie_clothes_front "lun_inspect_genie_clothes" if_all ["genie_clothes"] default + + attribute luna_bra "lun_inspect_spread_legs_luna_bra_grab" if_any ["arms_grab"] + + always "lun_inspect_vignette" + + attribute genie_clothes null + +layeredimage lun_inspect legs_together: + fit "contain" + fit_first True + + always "lun_inspect_background" + always "lun_inspect_chair" + always "lun_inspect_genie_body" + + attribute genie_clothes_back "lun_inspect_genie_clothes_back" if_all ["genie_clothes"] default + + always "lun_inspect_legs_together_luna_shadow" if_not ["genie_clothes"] + always "lun_inspect_legs_together_luna_hair_back" + always "lun_inspect_legs_together_luna_body" + + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab"] + + group luna_arm prefix "luna_arm" auto: + attribute idle default + + group luna_clothes variant "luna_clothes" multiple: + attribute stockings + attribute panties + attribute bra if_not ["luna_shirt", "arms_grab"] + attribute shirt + attribute skirt + + attribute blush "lun_inspect_legs_together_luna_face_blush" + + group luna_face_mouth prefix "mouth" auto: + attribute base default + + group luna_face_eyebrows prefix "eyes" auto: + attribute base default + + group luna_face_eyes prefix "eyes" auto: + attribute base_stare default + + always "lun_inspect_legs_together_luna_hair_front" + + attribute genie_clothes_hood "lun_inspect_genie_clothes_hood" if_all ["genie_clothes"] default + + always "lun_inspect_genie_head" + + group genie_arm_right prefix "arm_right" if_not ["arms_grab"]: + attribute idle "lun_inspect_genie_arm_right_idle" default + attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" + attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" + attribute touch_pussy "lun_inspect_arm_right_touch_pussy" + attribute down null + + group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: + attribute hold "lun_inspect_genie_arm_left_hold" default + attribute grab "lun_inspect_genie_arm_left_grab" + + group genie_arms prefix "arms": + attribute grab "lun_inspect_genie_arm_both_grab_tits" + + attribute genie_clothes_front "lun_inspect_genie_clothes" if_all ["genie_clothes"] default + + attribute luna_bra "lun_inspect_legs_together_luna_bra_grab" if_any ["arms_grab"] + + always "lun_inspect_vignette" + + attribute genie_clothes null + +layeredimage lun_inspect head_back_spread_legs: + fit "contain" + fit_first True + + always "lun_inspect_background" + always "lun_inspect_chair" + always "lun_inspect_genie_body" + + always "lun_inspect_head_back_spread_legs_luna_shadow" if_not ["genie_clothes"] + always "lun_inspect_head_back_spread_legs_luna_hair_back" + always "lun_inspect_head_back_spread_legs_luna_body" + + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab"] + + group luna_arm prefix "luna_arm" auto: + attribute idle default + + group luna_clothes variant "luna_clothes" multiple: + attribute stockings + attribute panties + attribute bra if_not ["luna_shirt", "arms_grab"] + attribute shirt + attribute skirt + + attribute blush "lun_inspect_head_back_spread_legs_luna_face_blush" + + group luna_face_mouth prefix "mouth" auto: + attribute open default + + group luna_face_eyebrows prefix "eyes" auto: + attribute base default + + group luna_face_eyes prefix "eyes" auto: + attribute base_right default + + always "lun_inspect_head_back_spread_legs_luna_hair_front" + + always "lun_inspect_genie_head" + + group genie_arm_right prefix "arm_right" if_not ["arms_grab"]: + # attribute idle "lun_inspect_genie_arm_right_idle" default + attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" default + attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" + attribute touch_pussy "lun_inspect_arm_right_touch_pussy" + attribute down null + + group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: + attribute hold "lun_inspect_genie_arm_left_hold" default + attribute grab "lun_inspect_genie_arm_left_grab" + + group genie_arms prefix "arms": + attribute grab "lun_inspect_genie_arm_both_grab_tits" + + attribute luna_bra "lun_inspect_head_back_spread_legs_luna_bra_grab" if_any ["arms_grab"] + + always "lun_inspect_vignette" + +layeredimage lun_inspect head_back_legs_together: + fit "contain" + fit_first True + + always "lun_inspect_background" + always "lun_inspect_chair" + always "lun_inspect_genie_body" + + always "lun_inspect_head_back_legs_together_luna_shadow" if_not ["genie_clothes"] + always "lun_inspect_head_back_legs_together_luna_hair_back" + always "lun_inspect_head_back_legs_together_luna_body" + + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab"] + + group luna_arm prefix "luna_arm" auto: + attribute idle default + + group luna_clothes variant "luna_clothes" multiple: + attribute stockings + attribute panties + attribute bra if_not ["luna_shirt", "arms_grab"] + attribute shirt + attribute skirt + + attribute blush "lun_inspect_head_back_legs_together_luna_face_blush" + + group luna_face_mouth prefix "mouth" auto: + attribute open default + + group luna_face_eyebrows prefix "eyes" auto: + attribute base default + + group luna_face_eyes prefix "eyes" auto: + attribute base_right default + + always "lun_inspect_head_back_legs_together_luna_hair_front" + + always "lun_inspect_genie_head" + + group genie_arm_right prefix "arm_right" if_not ["arms_grab"]: + # attribute idle "lun_inspect_genie_arm_right_idle" default + # attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" + attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" default + attribute touch_pussy "lun_inspect_arm_right_touch_pussy_alt" + attribute down null + + group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: + attribute hold "lun_inspect_genie_arm_left_hold" default + attribute grab "lun_inspect_genie_arm_left_grab" + + group genie_arms prefix "arms": + attribute grab "lun_inspect_genie_arm_both_grab_tits" + + attribute luna_bra "lun_inspect_head_back_legs_together_luna_bra_grab" if_any ["arms_grab"] + + always "lun_inspect_vignette" + +image lun_inspect_arm_right_touch_pussy: + "lun_inspect_genie_arm_right_touch_pussy_frame0" + pause 0.5 + "lun_inspect_genie_arm_right_touch_pussy_frame1" + pause 0.5 + repeat + +image lun_inspect_arm_right_touch_pussy_alt: + "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0" + pause 0.5 + "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" + pause 0.5 + repeat diff --git a/game/scripts/doll/face.rpy b/game/scripts/doll/face.rpy index ee86294c..c655ea91 100644 --- a/game/scripts/doll/face.rpy +++ b/game/scripts/doll/face.rpy @@ -1,4 +1,6 @@ init python: + import os + class DollFace(DollMethods): layer_types = { "eyemask": -1, diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index 69442165..a32c4828 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -37,7 +37,7 @@ define config.debug = config.developer or prerelease define config.console = True # Game version and naming -define config.version = "1.45.3" +define config.version = "1.46" define compatible_version = 1.451 define config.name = "Witch Trainer Silver" From e7c1095176e508940934f381dfe902e27ed73131 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 22 Jan 2024 20:14:53 +0000 Subject: [PATCH 050/249] Save Compatibility * Partial patch to enable 1.45.X compatibility for 1.46 update. --- game/scripts/utility/updater.rpy | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index e48a1589..cd28784f 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -166,6 +166,17 @@ init python: if k.modpath: k.modpath = "mods/" + k.modpath.split("/")[-1] + if current < 1.46: + getattr(store, "her_ev_cumslut_public_t5_e1").label = "hg_pr_cumslut_T5_return" + getattr(store, "her_ev_cumslut_public_t5_e2").label = "hg_pr_cumslut_T5_return" + getattr(store, "her_ev_cumslut_public_t5_e3").label = "hg_pr_cumslut_T5_return" + getattr(store, "her_ev_cumslut_public_t5_e1_hub").label = "hg_pr_cumslut" + getattr(store, "her_ev_cumslut_public_t5_e2_hub").label = "hg_pr_cumslut" + getattr(store, "her_ev_cumslut_public_t5_e3_hub").label = "hg_pr_cumslut" + getattr(store, "her_ev_cumslut_public_t5_e1_hub").req = "states.her.tier == 5" + getattr(store, "her_ev_cumslut_public_t5_e2_hub").req = "states.her.tier == 5" + getattr(store, "her_ev_cumslut_public_t5_e3_hub").req = "states.her.tier == 5" + if current > latest: raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest)) From 9c41933179ff2b117050187f95346f22358d273a Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 22 Jan 2024 21:23:35 +0000 Subject: [PATCH 051/249] Save Compatibility --- game/scripts/utility/updater.rpy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index cd28784f..8bbb3cfd 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -177,6 +177,11 @@ init python: getattr(store, "her_ev_cumslut_public_t5_e2_hub").req = "states.her.tier == 5" getattr(store, "her_ev_cumslut_public_t5_e3_hub").req = "states.her.tier == 5" + for i in states.dolls: + doll = getattr(store, i) + + doll.body.matrix = IdentityMatrix() + if current > latest: raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest)) From edaec46c86bf4cdc3706a1a49fedc5fa62d33a08 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 22 Jan 2024 21:33:01 +0000 Subject: [PATCH 052/249] Save Compatibility * Added edge case handling for missing label, and point of no return in case of a save file update. * Refactoring --- game/scripts/utility/devtools.rpy | 16 ++++++++++++---- game/scripts/utility/updater.rpy | 7 +++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/game/scripts/utility/devtools.rpy b/game/scripts/utility/devtools.rpy index cefccce1..538df6e2 100644 --- a/game/scripts/utility/devtools.rpy +++ b/game/scripts/utility/devtools.rpy @@ -141,19 +141,27 @@ label missing_label(): $ renpy.choice_for_skipping() $ err_msg1 = systemerror[0] $ err_msg2 = systemerror[1] - "{color=#7a0000}System{/color}" "Uh-oh. Looks like you've encountered a bug. Don't worry, we will try to return you back to the office after displaying the error message, your save file won't be affected." - "{color=#7a0000}System{/color}" "{color=#7a0000}Error:{/color} [err_msg1] '{color=#7a0000}[err_msg2]{/color}'\n\n\n{size=-4}You can report this bug on our {a=https://discord.gg/7PD57yt}discord{/a}.{/size}" + + if not _savecompat: + # Suppress debug on save update, it's normal. + "{color=#7a0000}System{/color}" "Uh-oh. Looks like you've encountered a bug. Don't worry, we will try to return you back to the office after displaying the error message, your save file won't be affected." + "{color=#7a0000}System{/color}" "{color=#7a0000}Error:{/color} [err_msg1] '{color=#7a0000}[err_msg2]{/color}'\n\n\n{size=-4}You can report this bug on our {a=https://discord.gg/7PD57yt}discord{/a}.{/size}" $ states.last_girl = None $ states.active_girl = None $ systemerror = [None, None] + $ _savecompat = False jump main_room label missing_return(): $ renpy.choice_for_skipping() - "{color=#7a0000}System{/color}" "Uh-oh. Looks like you've encountered a bug. Don't worry, we will try to return you back to the office after displaying the error message, your save file won't be affected." - "{color=#7a0000}System{/color}" "{color=#7a0000}Error:{/color} Point of no return.\n\n\n{size=-4}You can report this bug on our {a=https://discord.gg/7PD57yt}discord{/a}.{/size}" + + if not _savecompat: + # Suppress debug on save update, it's normal. + "{color=#7a0000}System{/color}" "Uh-oh. Looks like you've encountered a bug. Don't worry, we will try to return you back to the office after displaying the error message, your save file won't be affected." + "{color=#7a0000}System{/color}" "{color=#7a0000}Error:{/color} Point of no return.\n\n\n{size=-4}You can report this bug on our {a=https://discord.gg/7PD57yt}discord{/a}.{/size}" $ states.last_girl = None $ states.active_girl = None + $ _savecompat = False jump main_room screen placeholder(): diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 8bbb3cfd..992393f4 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -94,6 +94,8 @@ init python: control, major, *minor = version.split(" ")[0].split(".") return float("{}.{}{}".format(control, major, "".join(minor))) + _savecompat = False + def version_patch(): if renpy.is_init_phase(): # Don't update save files from when game recovers from a crash. @@ -101,7 +103,7 @@ init python: latest = version_float() # For unknown reasons, sometimes version is missing from the save, so we need a fallback - current = getattr(renpy.store, "version", latest) + current = getattr(store, "version", latest) if current < 1.452: @@ -186,7 +188,8 @@ init python: raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest)) if current < latest: - setattr(renpy.store, "version", latest) + setattr(store, "version", latest) + setattr(store, "_savecompat", True) message = "Have fun!" achievements.attempt_repair() From 3e45dda2bb27e62e658d040ce0d1ffe64ae56a33 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Fri, 26 Jan 2024 15:22:28 +0100 Subject: [PATCH 053/249] Luna T4 Masturbate for me * Added and posed T4 Luna masturbate writing. * Fixed inconsistent faceblush during masturbate events. * Removed T3 Luna "End of content" call. --- .../luna/events/favors/masturbate_for_me.rpy | 749 ++++++++++++------ 1 file changed, 526 insertions(+), 223 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy index 7b820ef6..dbcb985a 100644 --- a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy +++ b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy @@ -60,7 +60,7 @@ label ll_pf_masturbate_T3_E1_intro: call ll_pf_masturbate gen "So, have the wickerspats finally left you alone [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun "Not at all, [name_genie_luna]... In fact... They've been worse than ever." ("angry", "narrow", "base", "downL", trans=dissolve) + lun "Not at all, [name_genie_luna]... In fact... They've been worse than ever." ("angry", "narrow", "base", "downL", xpos="base", ypos="base", trans=d3) gen "Really?" ("base", xpos="far_left", ypos="head") nar "Luna shifts her thighs together uncomfortably." lun "Yes..." ("annoyed", "narrow", "base", "mid") #seductive @@ -109,9 +109,9 @@ label ll_pf_masturbate_T3_E1_intro: gen "Good..." gen "Now then..." gen "Let's try some self-applied massage to start with." - lun @ cheeks blush "A--{w=0.2} Alright." ("soft", "narrow", "base", "down") + lun "A--{w=0.2} Alright." ("soft", "narrow", "base", "down",cheeks="blush") gen "Don't worry, I'll be here to give you some guidance." - lun @ cheeks blush "Thank you, [name_genie_luna]." ("base", "narrow", "base", "down") + lun "Thank you, [name_genie_luna]." ("base", "narrow", "base", "down") show screen blkfade @@ -124,133 +124,133 @@ label ll_pf_masturbate_T3_E1_intro: hide screen blkfade with d3 - lun @ cheeks blush "*Ah*..." ("open", "narrow", "base", "up") + lun "*Ah*..." ("open", "narrow", "base", "up") gen "Is everything alright, [name_luna_genie]?" - lun @ cheeks blush "*Ah*...{w=0.3} of course, [name_genie_luna]!" ("soft", "narrow", "base", "stare") - lun @ cheeks blush "My fingers are just a bit cold..." ("normal", "narrow", "base", "mid") + lun "*Ah*...{w=0.3} of course, [name_genie_luna]!" ("soft", "narrow", "base", "stare") + lun "My fingers are just a bit cold..." ("normal", "narrow", "base", "mid") gen "That's fine... Just try rubbing yourself, and your fingers will warm up in just a moment." - lun @ cheeks blush "*Ah*...{w=0.3} Yes [name_genie_luna]..." ("angry", "narrow", "low", "stare") + lun "*Ah*...{w=0.3} Yes [name_genie_luna]..." ("angry", "narrow", "low", "stare") gen "..." - lun @ cheeks blush "*Ah*...{w=0.3} is this how it should be done?" ("soft", "base", "base", "mid") + lun "*Ah*...{w=0.3} is this how it should be done?" ("soft", "base", "base", "mid") gen "As long as it's feeling good, then I'm sure it's working. Just keep going, and you'll soon be rid of those nasty Wickerspoons." - lun @ cheeks blush "I'm glad..." ("base", "narrow", "base", "down") - lun @ cheeks blush "Although it feels a bit different compared to when you helped me..." ("annoyed", "narrow", "base", "down") + lun "I'm glad..." ("base", "narrow", "base", "down") + lun "Although it feels a bit different compared to when you helped me..." ("annoyed", "narrow", "base", "down") gen "That's to be expected... Another person's touch will always feel different to your own." - lun @ cheeks blush "Okay..." ("upset", "base", "base", "down") + lun "Okay..." ("upset", "base", "base", "down") nar "Luna moves her hand around beneath her skirt before stopping again." - lun @ cheeks blush "It's just..." ("upset", "narrow", "base", "mid") - lun @ cheeks blush "As nice as this massage feels..." ("soft", "narrow", "base", "mid") - lun @ cheeks blush "It's not really scratching that same itch, [name_genie_luna]..." ("annoyed", "narrow", "base", "mid") + lun "It's just..." ("upset", "narrow", "base", "mid") + lun "As nice as this massage feels..." ("soft", "narrow", "base", "mid") + lun "It's not really scratching that same itch, [name_genie_luna]..." ("annoyed", "narrow", "base", "mid") gen "I guess I do have that slight magic touch..." gen "*Hmm*..." - lun @ cheeks blush "Am I doing it wrong, [name_genie_luna]?" ("upset", "narrow", "base", "down") + lun "Am I doing it wrong, [name_genie_luna]?" ("upset", "narrow", "base", "down") gen "Certainly not, but this might be trickier than I initially thought..." - lun @ cheeks blush "Really?" ("soft", "base", "base", "mid") + lun "Really?" ("soft", "base", "base", "mid") gen "It would seem that those nasty critters are trying to hide!" - lun @ cheeks blush "Hide? But I thought touching myself would lure them--" ("mad", "narrow", "base", "down") + lun "Hide? But I thought touching myself would lure them--" ("mad", "narrow", "base", "down") gen "Don't worry [name_luna_genie]... As long as you're still feeling that itch, then they can't have gone far." gen "Although this means you'll have to chase them down." - lun @ cheeks blush "Chase them down?" ("angry", "narrow", "base", "down") + lun "Chase them down?" ("angry", "narrow", "base", "down") gen "I'll be here to guide you through it of course..." - lun @ cheeks blush "Okay..." ("soft", "base", "base", "mid") + lun "Okay..." ("soft", "base", "base", "mid") gen "Ready?" - lun @ cheeks blush "Yes." ("angry", "base", "base", "mid") + lun "Yes." ("angry", "base", "base", "mid") gen "Close your eyes..." - lun @ cheeks blush "" ("normal", "closed", "base", "mid") #eyes closed + lun "" ("normal", "closed", "base", "mid") #eyes closed call ctc gen "Very good...{w} Now I want you to block out everything else." - lun @ cheeks blush "Alright, [name_genie_luna]..." ("open", "closed", "base", "mid") + lun "Alright, [name_genie_luna]..." ("open", "closed", "base", "mid") gen "Imagine standing alone in your bedroom..." - lun @ cheeks blush "" ("normal", "closed", "base", "mid") + lun "" ("normal", "closed", "base", "mid") call ctc gen "Empty your mind of all intrusive thoughts..." - lun @ cheeks blush "" ("normal", "closed", "annoyed", "mid") + lun "" ("normal", "closed", "annoyed", "mid") call ctc gen "Now... Focus on where the itch is coming from..." - lun @ cheeks blush "" ("upset", "closed", "annoyed", "mid") + lun "" ("upset", "closed", "annoyed", "mid") call ctc gen "Then once you've found it, I want you to chase down that feeling with your fingers." - lun @ cheeks blush "" ("annoyed", "closed", "annoyed", "mid") + lun "" ("annoyed", "closed", "annoyed", "mid") call ctc gen "And catch it!" - lun @ cheeks blush "I-- I can't... I can't find it..." ("angry", "closed", "base", "mid") + lun "I-- I can't... I can't find it..." ("angry", "closed", "base", "mid") - lun @ cheeks blush "It's like trying to grab rays of sunlight..." ("angry", "closed", "base", "mid") + lun "It's like trying to grab rays of sunlight..." ("angry", "closed", "base", "mid") gen "Don't try to grab a hold of it, just brush against it with the tips of your fingers." - lun @ cheeks blush "" ("soft", "closed", "annoyed", "mid") + lun "" ("soft", "closed", "annoyed", "mid") call ctc - lun @ cheeks blush "" ("normal", "closed", "annoyed", "mid") + lun "" ("normal", "closed", "annoyed", "mid") call ctc nar "Luna desperately moves her hand around beneath her skirt." - lun @ cheeks blush "I... I think I've lost them again, [name_genie_luna]..." ("angry", "closed", "base", "mid") + lun "I... I think I've lost them again, [name_genie_luna]..." ("angry", "closed", "base", "mid") gen "Try moving your hand up a bit more..." - lun @ cheeks blush "Up a bit--" ("angry", "closed", "low", "mid") + lun "Up a bit--" ("angry", "closed", "low", "mid") - lun @ cheeks blush "*Ah*..." ("grin", "closed", "worried", "mid") - lun @ cheeks blush "*Mmm*..." ("base", "closed", "base", "mid") + lun "*Ah*..." ("grin", "closed", "worried", "mid") + lun "*Mmm*..." ("base", "closed", "base", "mid") nar "Luna gives off a soft moan under her breath." gen "(There we go...)" - lun @ cheeks blush "This... This area is even more itchy, [name_genie_luna]..." ("base", "closed", "low", "mid") + lun "This... This area is even more itchy, [name_genie_luna]..." ("base", "closed", "low", "mid") gen "Excellent... That means you've managed to chase them down." gen "Just keep your eyes closed and begin gently moving your fingers in a circular motion over the area." - lun @ cheeks blush "Oooh! {heart}" ("grin", "closed", "base", "mid") - lun @ cheeks blush "*Ah*...{w=0.3} Yes...{w=0.3} I think it's working, [name_genie_luna]!" ("grin", "closed", "annoyed", "mid") + lun "Oooh! {heart}" ("grin", "closed", "base", "mid") + lun "*Ah*...{w=0.3} Yes...{w=0.3} I think it's working, [name_genie_luna]!" ("grin", "closed", "annoyed", "mid") gen "*Shhh*...{w=0.3} Don't speak...{w=0.3} Just focus." - lun @ cheeks blush "" ("grin", "closed", "base", "mid") + lun "" ("grin", "closed", "base", "mid") gen "Empty your mind and only think about what makes you feel good..." - lun @ cheeks blush "Okay..." ("base", "closed", "base", "mid") - lun @ cheeks blush "" ("soft", "closed", "low", "mid") + lun "Okay..." ("base", "closed", "base", "mid") + lun "" ("soft", "closed", "low", "mid") call ctc - lun @ cheeks blush "*Ah*..." ("open", "closed", "base", "mid") - lun @ cheeks blush "[name_genie_luna]..." ("soft", "closed", "base", "mid") - lun @ cheeks blush "*Ah*...{w=0.3} [name_genie_luna]..." ("soft", "closed", "base", "mid") - lun @ cheeks blush "I think..." ("open", "closed", "base", "mid") - lun @ cheeks blush "*Ah*..." ("open", "closed", "base", "mid") - lun @ cheeks blush "I think I've almost..." ("soft", "closed", "base", "mid") + lun "*Ah*..." ("open", "closed", "base", "mid") + lun "[name_genie_luna]..." ("soft", "closed", "base", "mid") + lun "*Ah*...{w=0.3} [name_genie_luna]..." ("soft", "closed", "base", "mid") + lun "I think..." ("open", "closed", "base", "mid") + lun "*Ah*..." ("open", "closed", "base", "mid") + lun "I think I've almost..." ("soft", "closed", "base", "mid") gen "*Shhh*..." nar "You see Luna's hand move swiftly beneath her skirt." - lun @ cheeks blush "*Mmmm*..." ("base", "closed", "base", "mid") - lun @ cheeks blush "*Ah*..." ("open", "closed", "base", "mid") - lun @ cheeks blush "*A-ah*..." ("grin", "closed", "base", "mid") - lun @ cheeks blush "Yes..." ("grin", "closed", "low", "mid") - lun @ cheeks blush "*Ah*... *Ah*...{heart}" ("grin", "closed", "low", "mid") - lun @ cheeks blush "{size=+4}*Mmm*...{w=0.3} Yes...{heart}{/size}" ("crooked_smile", "narrow", "base", "up") - lun @ cheeks blush "{size=+8}*Ah*...{w=0.3} *Ah*...{/size}" ("crooked_smile", "narrow", "base", "up") + lun "*Mmmm*..." ("base", "closed", "base", "mid") + lun "*Ah*..." ("open", "closed", "base", "mid") + lun "*A-ah*..." ("grin", "closed", "base", "mid") + lun "Yes..." ("grin", "closed", "low", "mid") + lun "*Ah*... *Ah*...{heart}" ("grin", "closed", "low", "mid") + lun "{size=+4}*Mmm*...{w=0.3} Yes...{heart}{/size}" ("crooked_smile", "narrow", "base", "up") + lun "{size=+8}*Ah*...{w=0.3} *Ah*...{/size}" ("crooked_smile", "narrow", "base", "up") gen "That's it--" nar "Luna now desperately trying to cum, moves her hand even faster." lun @ cheeks blush "*Ah*! I think they're attacking me, [name_genie_luna]!" ("crooked_smile", "base", "base", "up") - lun @ cheeks blush "I... I can't stop moving my--" ("grin", "happyCl", "base", "mid") - gen "Keep going, you're doing it!" - lun @ cheeks blush "*Ah*...{w=0.4} Yes [name_genie_luna]...{heart}" ("crooked_smile", "happyCl", "base", "up") - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*...{w=0.4}" ("soft", "happyCl", "base", "up") - lun @ cheeks blush "*Ngh*... It's...{w=0.3} I'm--" ("grin", "happyCl", "base", "mid") + lun "I... I can't stop moving my--" ("grin", "happyCl", "base", "mid") + gen "Keep going! You're doing it!" + lun "*Ah*...{w=0.4} Yes [name_genie_luna]...{heart}" ("crooked_smile", "happyCl", "base", "up") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*...{w=0.4}" ("soft", "happyCl", "base", "up") + lun "*Ngh*... It's...{w=0.3} I'm--" ("grin", "happyCl", "base", "mid") play sound "sounds/slick_01.ogg" with kissiris - lun @ cheeks blush "*Ah*!" ("grin", "narrow", "base", "ahegao") + lun "*Ah*!" ("grin", "narrow", "base", "ahegao") - lun @ cheeks blush "*Mmm*..." ("grin", "narrow", "base", "up") + lun "*Mmm*..." ("grin", "narrow", "base", "up") gen "Well done--" play sound "sounds/slick_01.ogg" with kissiris - lun @ cheeks blush "*Ah*!" ("crooked_smile", "narrow", "base", "up") + lun "*Ah*!" ("crooked_smile", "narrow", "base", "up") - lun @ cheeks blush "..." ("soft", "narrow", "base", "stare") - lun @ cheeks blush "{size=-5}*Sigh*...{/size}" ("base", "closed", "low", "mid") + lun "..." ("soft", "narrow", "base", "stare") + lun "{size=-5}*Sigh*...{/size}" ("base", "closed", "low", "mid") #end of masturbate section (Cuts to Normal office screen with blkfade) show screen blkfade @@ -267,38 +267,38 @@ label ll_pf_masturbate_T3_E1_intro: gen "Well, will you look at that... You're a natural..." ("grin", xpos="far_left", ypos="head") gen "So, the {i}wickspots{/i} have left you alone now, I take it?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "I...{w=0.4} I believe so, [name_genie_luna]..." ("open", "narrow", "base", "down", xpos="mid", ypos="base", trans=dissolve) - lun @ cheeks blush "At least that nasty itch appears to have gone away." ("base", "narrow", "base", "down") + lun "I...{w=0.4} I believe so, [name_genie_luna]..." ("open", "narrow", "base", "down", xpos="mid", ypos="base", trans=dissolve) + lun "At least that nasty itch appears to have gone away." ("base", "narrow", "base", "down") gen "Excellent!" ("grin", xpos="far_left", ypos="head") gen "Then my work here is done!" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Oh*..." ("soft", "base", "base", "mid") - lun @ cheeks blush "You want me to leave already, [name_genie_luna]?" ("open", "base", "base", "mid") + lun "*Oh*..." ("soft", "base", "base", "mid") + lun "You want me to leave already, [name_genie_luna]?" ("open", "base", "base", "mid") gen "If there's nothing else I can help you with?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ehm*...{w=0.4} Well, I was just wondering..." ("soft", "narrow", "base", "R") - lun @ cheeks blush "What do I do if the feeling comes back, [name_genie_luna]?" ("angry", "narrow", "base", "mid") - lun @ cheeks blush "Do I just get rid of them myself from now on?" ("soft", "narrow", "base", "mid") + lun "*Ehm*...{w=0.4} Well, I was just wondering..." ("soft", "narrow", "base", "R") + lun "What do I do if the feeling comes back, [name_genie_luna]?" ("angry", "narrow", "base", "mid") + lun "Do I just get rid of them myself from now on?" ("soft", "narrow", "base", "mid") gen "Certainly not!" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "..." ("base", "base", "base", "mid") #happy + lun "..." ("base", "base", "base", "mid") #happy gen "I need to supervise every development until you've mastered the art of masturbation." ("base", xpos="far_left", ypos="head") gen "Preventing this outbreak is now my top priority." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Really? Thank you so much, [name_genie_luna]." ("base", "happyCl", "base", "mid") + lun "Really? Thank you so much, [name_genie_luna]." ("base", "happyCl", "base", "mid") gen "Certainly." ("base", xpos="far_left", ypos="head") gen "Bestow shall I in you, my teaching of all, young padawan!" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Sorry?" ("soft", "base", "base", "mid") - lun @ cheeks blush "I'm not sure exactly what you mean, [name_genie_luna]." ("angry", "narrow", "base", "mid") + lun "Sorry?" ("soft", "base", "base", "mid",cheeks="none") + lun "I'm not sure exactly what you mean, [name_genie_luna]." ("angry", "narrow", "base", "mid") gen "Yes, Indeed... You still have more to learn before reaching your true potential..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Huh*?" ("upset", "narrow", "base", "mid") + lun "*Huh*?" ("upset", "narrow", "base", "mid") gen "Once you've learned how to control the force, I shall bestow on you my saber of light." ("base", xpos="far_left", ypos="head") gen "And as my meta chlorines flow through your body--" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "[name_genie_luna]?" ("angry", "base", "base", "mid") + lun "[name_genie_luna]?" ("angry", "base", "base", "mid") gen "Oh yeah, that's not canon anymore is it..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "..." ("annoyed", "base", "base", "mid") #Confused + lun "..." ("annoyed", "base", "base", "mid") #Confused gen "..." ("base", xpos="far_left", ypos="head") gen "That shall do for today, [name_luna_genie]..." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Okay..." ("base", "narrow", "base", "mid") + lun "Okay..." ("base", "narrow", "base", "mid") gen "Off you pop." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Right." ("open", "base", "base", "mid") - lun @ cheeks blush "Bye then..." ("base", "base", "base", "mid") + lun "Right." ("open", "base", "base", "mid") + lun "Bye then..." ("base", "base", "base", "mid") call lun_walk(action="leave") @@ -314,7 +314,7 @@ label ll_pf_masturbate_T3_E2_intro: call ll_pf_masturbate gen "[name_luna_genie], tell me how you've been." ("base", xpos="far_left", ypos="head") - lun "I've been okay [name_genie_luna]... But it appears the wrackspurts have come back again..." ("open", "narrow", "base", "down", trans=dissolve) + lun "I've been okay [name_genie_luna]... But it appears the wrackspurts have come back again..." ("open", "narrow", "base", "down", xpos="base", ypos="base", trans=d3) gen "Oh no... Such a shame!" ("base", xpos="far_left", ypos="head") lun "Every time I think about the things we've done in here..." ("soft", "narrow", "base", "down") lun "It just makes them feel so much... Stronger..." ("angry", "narrow", "base", "mid") @@ -380,7 +380,7 @@ label ll_pf_masturbate_T3_E2_intro: $ luna.set_cum(pussy="wet") with d3 - lun @ cheeks blush "Finally..." ("angry", "narrow", "base", "down") + lun "Finally..." ("angry", "narrow", "base", "down",cheeks="blush") gen "You seem relieved." gen "(And rather wet...)" @@ -393,61 +393,61 @@ label ll_pf_masturbate_T3_E2_intro: $ luna.set_pose("hand_on_pussy_and_breast") $ luna.strip("bottom", "panties") - lun @ cheeks blush "*Ah*..." ("grin", "narrow", "base", "up") - lun @ cheeks blush "I've not been able to stop thinking about this since last time..." ("grin", "narrow", "base", "stare") - lun @ cheeks blush "I worry those slimy wrackspurts have infested the dormitories, because I'm having trouble sleeping as well..." ("angry", "narrow", "base", "down") + lun "*Ah*..." ("grin", "narrow", "base", "up") + lun "I've not been able to stop thinking about this since last time..." ("grin", "narrow", "base", "stare") + lun "I worry those slimy wrackspurts have infested the dormitories, because I'm having trouble sleeping as well..." ("angry", "narrow", "base", "down") gen "That's quite possible..." - lun @ cheeks blush "It's--{w=0.2} *Ah*...{w=0.3} It's weird...{w=0.3} I almost feel glad I've got them..." ("angry", "closed", "base", "mid") - lun @ cheeks blush "Getting rid of them feels...{w=0.4} so...{w=0.3} so...{w=0.3}{nw}" ("angry", "closed", "low", "mid") - lun @ cheeks blush "Getting rid of them feels... so... so...{fast} good..." ("grin", "narrow", "base", "stare") + lun "It's--{w=0.2} *Ah*...{w=0.3} It's weird...{w=0.3} I almost feel glad I've got them..." ("angry", "closed", "base", "mid") + lun "Getting rid of them feels...{w=0.4} so...{w=0.3} so...{w=0.3}{nw}" ("angry", "closed", "low", "mid") + lun "Getting rid of them feels... so... so...{fast} good..." ("grin", "narrow", "base", "stare") gen "The positive feelings must be your body telling you that you're doing the right thing, by expelling them..." - lun @ cheeks blush "*Ah*..." ("grin", "narrow", "base", "up") - lun @ cheeks blush "I must be...{w=0.3} *Ah*...{w=0.3} Expelling a lot of them then..." ("base", "narrow", "base", "stare") - lun @ cheeks blush "*Ah*... [name_genie_luna], I'm feeling hot all over..." ("angry", "happyCl", "base", "mid") - lun @ cheeks blush "And that itch... It's all over my--" ("angry", "narrow", "base", "down") - lun @ cheeks blush "*Ah*..." ("soft", "happyCl", "base", "down") + lun "*Ah*..." ("grin", "narrow", "base", "up") + lun "I must be...{w=0.3} *Ah*...{w=0.3} Expelling a lot of them then..." ("base", "narrow", "base", "stare") + lun "*Ah*... [name_genie_luna], I'm feeling hot all over..." ("angry", "happyCl", "base", "mid") + lun "And that itch... It's all over my--" ("angry", "narrow", "base", "down") + lun "*Ah*..." ("soft", "happyCl", "base", "down") gen "That means your body is ready for the next step..." - lun @ cheeks blush "[name_genie_luna]...{w=0.3} *Ah*... I'm not sure I'm ready..." ("angry", "happyCl", "base", "mid") + lun "[name_genie_luna]...{w=0.3} *Ah*... I'm not sure I'm ready..." ("angry", "happyCl", "base", "mid") gen "Nonsense..." gen "Just take it slow and gently push a finger in..." - lun @ cheeks blush "*Ah*...{w=0.3} *Ah*...{w=0.3} Alright..." ("open", "happyCl", "base", "mid") + lun "*Ah*...{w=0.3} *Ah*...{w=0.3} Alright..." ("open", "happyCl", "base", "mid") nar "Luna begins rubbing a finger across her slit... Still a little apprehensive about putting it inside..." - lun @ cheeks blush "*Ah*...{w=0.3} [name_genie_luna]..." ("soft", "happyCl", "base", "mid") + lun "*Ah*...{w=0.3} [name_genie_luna]..." ("soft", "happyCl", "base", "mid") gen "Gently..." - lun @ cheeks blush "Gently...{w=0.4} Okay..." ("angry", "closed", "base", "mid") - lun @ cheeks blush "*Nnnngh*..." ("clench", "happyCl", "base", "mid") + lun "Gently...{w=0.4} Okay..." ("angry", "closed", "base", "mid") + lun "*Nnnngh*..." ("clench", "happyCl", "base", "mid") #Finger inserted play sound "sounds/slick_02.ogg" with kissiris - lun @ cheeks blush "*Ah*..." ("base", "narrow", "base", "up") - lun @ cheeks blush "I...{w=0.3} I did it, [name_genie_luna]..." ("grin", "narrow", "base", "up") + lun "*Ah*..." ("base", "narrow", "base", "up") + lun "I...{w=0.3} I did it, [name_genie_luna]..." ("grin", "narrow", "base", "up") gen "How does it feel?" - lun @ cheeks blush "It...{w=0.3} Good...{w=0.5} Just a bit strange..." ("soft", "narrow", "base", "stare") + lun "It...{w=0.3} Good...{w=0.5} Just a bit strange..." ("soft", "narrow", "base", "stare") gen "Try moving it in and out." - lun @ cheeks blush "Alright..." ("soft", "narrow", "base", "down") + lun "Alright..." ("soft", "narrow", "base", "down") play background "sounds/slickloop.ogg" fadein 2 #Luna fingering nar "Luna starts pushing her fingers in and out, the sounds of her moaning becoming more and more shallow as she goes on." - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("open", "closed", "base", "mid") - lun @ cheeks blush "How--{w=0.2} *Ah*...{w=0.4} How is it looking?" ("soft", "closed", "base", "up") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("open", "closed", "base", "mid") + lun "How--{w=0.2} *Ah*...{w=0.4} How is it looking?" ("soft", "closed", "base", "up") gen "Very good [name_luna_genie]... You're very pretty..." - lun @ cheeks blush "*Ah*...{w=0.3} I'm--{w=0.2} *Ah*...{w=0.4} I'm pretty, [name_genie_luna]?" ("angry", "narrow", "base", "stare") + lun "*Ah*...{w=0.3} I'm--{w=0.2} *Ah*...{w=0.4} I'm pretty, [name_genie_luna]?" ("angry", "narrow", "base", "stare") gen "Why yes, [name_luna_genie]. Your body is very nice..." - lun @ cheeks blush "[name_genie_luna]--{w=0.2} *Ah*...{w=0.4} That's not what I--{w=0.4}{nw}" ("angry", "narrow", "base", "mid") - lun @ cheeks blush "[name_genie_luna]-- *Ah*... That's not what I--{fast} *Ah*..." ("angry", "closed", "base", "mid") - lun @ cheeks blush "I merely wanted to know if I was doing it right..." ("soft", "closed", "base", "mid") + lun "[name_genie_luna]--{w=0.2} *Ah*...{w=0.4} That's not what I--{w=0.4}{nw}" ("angry", "narrow", "base", "mid") + lun "[name_genie_luna]-- *Ah*... That's not what I--{fast} *Ah*..." ("angry", "closed", "base", "mid") + lun "I merely wanted to know if I was doing it right..." ("soft", "closed", "base", "mid") gen "I know." - lun @ cheeks blush "*Ah*...{w=0.3} [name_genie_luna]?" ("soft", "narrow", "base", "stare") - gen "Take your top off for me will you..." - lun @ cheeks blush "*Ah*...{w=0.3} *Ah*...{w=0.3} Okay..." ("open", "narrow", "base", "up") + lun "*Ah*...{w=0.3} [name_genie_luna]?" ("soft", "narrow", "base", "stare") + gen "Take your top off for me, will you..." + lun "*Ah*...{w=0.3} *Ah*...{w=0.3} Okay..." ("open", "narrow", "base", "up") #Luna takes out finger stop background fadeout 2 - lun @ cheeks blush "" ("base", "narrow", "base", "stare") + lun "" ("base", "narrow", "base", "stare") $ luna.set_pose("default") pause 1 @@ -455,73 +455,73 @@ label ll_pf_masturbate_T3_E2_intro: $ luna.strip("top", "bra") with d5 - lun @ cheeks blush "" ("grin", "narrow", "base", "down") + lun "" ("grin", "narrow", "base", "down") pause 1 - lun @ cheeks blush "" ("grin", "narrow", "base", "mid") + lun "" ("grin", "narrow", "base", "mid") call ctc gen "Now keep going, [name_luna_genie]..." - lun @ cheeks blush "Yes [name_genie_luna]..." ("grin", "narrow", "base", "mid") + lun "Yes [name_genie_luna]..." ("grin", "narrow", "base", "mid") $ luna.set_pose("hand_on_pussy_and_breast") #Luna rubs herself again - lun @ cheeks blush "*Mmm*..." ("base", "closed", "base", "mid") + lun "*Mmm*..." ("base", "closed", "base", "mid") gen "That's it... Keep rubbing that cute slit of yours..." - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4}*Ah*..." ("soft", "closed", "base", "down") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4}*Ah*..." ("soft", "closed", "base", "down") gen "Look at me [name_luna_genie]." - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("soft", "narrow", "base", "mid") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("soft", "narrow", "base", "mid") gen "Show me your tongue..." - lun @ cheeks blush "*Ah*...{w=0.4} My...{w=0.4} My tongue?" ("angry", "base", "base", "mid") - lun @ cheeks blush "Is this part of our research?" ("angry", "base", "base", "R") + lun "*Ah*...{w=0.4} My...{w=0.4} My tongue?" ("angry", "base", "base", "mid") + lun "Is this part of our research?" ("angry", "base", "base", "R") gen "Yes... Open your mouth as wide as you can please." - lun @ cheeks blush "But--" ("open", "base", "base", "mid") + lun "But--" ("open", "base", "base", "mid") gen "Say \"Aaaa\"..." - lun @ cheeks blush "*Aaaa*...{w=0.1}{nw}" ("open", "closed", "base", "mid") - lun @ cheeks blush "*Aaaa*...{fast}{w=0.1}{nw}" ("open_tongue", "closed", "base", "mid") - lun @ cheeks blush "*Aaaa*...{fast}" ("open_wide_tongue", "closed", "base", "mid") + lun "*Aaaa*...{w=0.1}{nw}" ("open", "closed", "base", "mid") + lun "*Aaaa*...{fast}{w=0.1}{nw}" ("open_tongue", "closed", "base", "mid") + lun "*Aaaa*...{fast}" ("open_wide_tongue", "closed", "base", "mid") gen "Good..." gen "I want you to know how much I appreciate that you chose to come to me with this problem of yours [name_luna_genie]..." #Luna stops - lun @ cheeks blush "" ("soft", "narrow", "base", "mid") + lun "" ("soft", "narrow", "base", "mid") call ctc - lun @ cheeks blush "[name_genie_luna] I--" ("angry", "narrow", "base", "mid") + lun "[name_genie_luna] I--" ("angry", "narrow", "base", "mid") gen "Keep going... Put a finger in again..." - lun @ cheeks blush "Yes [name_genie_luna]..." ("angry", "narrow", "base", "down") + lun "Yes [name_genie_luna]..." ("angry", "narrow", "base", "down") #Luna puts finger in again play sound "sounds/slick_02.ogg" with kissiris - lun @ cheeks blush "*Mmm*..." ("soft", "narrow", "base", "up") + lun "*Mmm*..." ("soft", "narrow", "base", "up") gen "Good girl... Now get it moving... Get those spurts out..." - lun @ cheeks blush "" ("base", "narrow", "base", "up") + lun "" ("base", "narrow", "base", "up") call ctc play background "sounds/slickloop.ogg" fadein 2 #Luna fingering - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("open", "closed", "base", "mid") - lun @ cheeks blush "[name_genie_luna]... *Ah*...{w=0.3} I feel them building up again..." ("soft", "closed", "base", "mid") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("open", "closed", "base", "mid") + lun "[name_genie_luna]... *Ah*...{w=0.3} I feel them building up again..." ("soft", "closed", "base", "mid") gen "Good girl, then try going a bit faster..." - lun @ cheeks blush "Oh-- Okay..." ("soft", "closed", "base", "mid") + lun "Oh-- Okay..." ("soft", "closed", "base", "mid") play background "sounds/slickloopfast.ogg" - lun @ cheeks blush "*Ah*...{w=0.2}*Ah*...{w=0.2}*Ah*..." ("open", "narrow", "base", "up") - lun @ cheeks blush "I think...{w=0.3} *Ah*...{w=0.3} I'm about to...{w=0.3} *Ah*..." ("angry", "narrow", "base", "up") + lun "*Ah*...{w=0.2}*Ah*...{w=0.2}*Ah*..." ("open", "narrow", "base", "up") + lun "I think...{w=0.3} *Ah*...{w=0.3} I'm about to...{w=0.3} *Ah*..." ("angry", "narrow", "base", "up") gen "Oh, are you cumming already?" - lun @ cheeks blush "*Ah*... Yes, I'm--" ("angry", "narrow", "base", "stare") - lun @ cheeks blush "*Ah*...{w=0.3} I'm cumming [name_genie_luna]!!{heart}{heart}" ("grin", "happyCl", "base", "up") + lun "*Ah*... Yes, I'm--" ("angry", "narrow", "base", "stare") + lun "*Ah*...{w=0.3} I'm cumming [name_genie_luna]!!{heart}{heart}" ("grin", "happyCl", "base", "up") play sound "sounds/slick_01.ogg" with kissiris - lun @ cheeks blush "*Ah*!{heart}" ("grin", "narrow", "base", "up") + lun "*Ah*!{heart}" ("grin", "narrow", "base", "up") nar "You see a flush of red roll over Luna's face as her body twitches from the throes of her orgasm." @@ -529,7 +529,7 @@ label ll_pf_masturbate_T3_E2_intro: with kissiris $ luna.set_cum(pussy="squirt_post") - lun @ cheeks blush "*Ah*...{heart}" ("open_tongue", "narrow", "base", "ahegao") + lun "*Ah*...{heart}" ("open_tongue", "narrow", "base", "ahegao") nar "Despite this, her fingers remain a flurry of movement until a final wave of pleasure washes over her." play sound "sounds/slick_01.ogg" @@ -537,7 +537,7 @@ label ll_pf_masturbate_T3_E2_intro: stop background fadeout 2 #Finger stops moving - lun @ cheeks blush "*Mmm*...{heart}" ("base", "happyCl", "base", "mid") + lun "*Mmm*...{heart}" ("base", "happyCl", "base", "mid") hide cg show screen blkfade @@ -559,20 +559,21 @@ label ll_pf_masturbate_T3_E2_intro: call weather_sound gen "It seems those Wickedspots have been giving you a fair bit of grief, haven't they?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ah*...{w=0.3} {heart}yes{heart}..." ("base", "narrow", "base", "down", xpos="mid", ypos="base", trans=dissolve) + lun "*Ah*...{w=0.3} {heart}yes{heart}..." ("base", "narrow", "base", "down", xpos="mid", ypos="base", trans=dissolve) gen "Don't worry, that should sort them out for now..." ("base", xpos="far_left", ypos="head") gen "Feeling better?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Yes... I'm feeling much better now... Thank you [name_genie_luna]." ("base", "base", "base", "mid") + lun "Yes... I'm feeling much better now... Thank you [name_genie_luna]." ("base", "base", "base", "mid") gen "I take it my words of encouragement were effective?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "I...{w=0.4} Yes [name_genie_luna]..." ("soft", "narrow", "base", "R") + lun "I...{w=0.4} Yes [name_genie_luna]..." ("soft", "narrow", "base", "R") gen "Excellent." ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Ehm*..." ("soft", "narrow", "base", "down") - lun @ cheeks blush "So the things you said..." ("open", "narrow", "base", "down") - lun @ cheeks blush "About me being pretty..." ("normal", "narrow", "base", "down") + lun "*Ehm*..." ("soft", "narrow", "base", "down") + lun "So the things you said..." ("open", "narrow", "base", "down") + lun "About me being pretty..." ("normal", "narrow", "base", "down") gen "Yes?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Was that just to help me with..." ("soft", "narrow", "base", "downL") - lun @ cheeks blush "Actually... Forget I asked [name_genie_luna]..." ("angry", "narrow", "base", "downL") - lun @ cheeks blush "I... I'll just head back to my dorms now..." ("angry", "base", "base", "R") + lun "Was that just to help me with..." ("soft", "narrow", "base", "downL") + lun "Actually... Forget I asked, [name_genie_luna]..." ("angry", "narrow", "base", "downL") + lun "I... I'll just head back to my dorms now..." ("angry", "base", "base", "R") + lun "" ("mad", "base", "base", "R",cheeks="none") gen "Of course, good job today--" ("base", xpos="far_left", ypos="head") call lun_walk(action="leave") @@ -589,7 +590,7 @@ label ll_pf_masturbate_T3_E3_intro: call ll_pf_masturbate gen "Alright then, time for you to--" ("base", xpos="far_left", ypos="head") - lun "Finally..." ("mad", "base", "base", "mid", trans=dissolve) + lun "Finally..." ("mad", "base", "base", "mid", xpos="base", ypos="base", trans=d3) call lun_walk("desk", "base") pause .3 @@ -605,7 +606,7 @@ label ll_pf_masturbate_T3_E3_intro: $ luna.set_cum(pussy="wet") $ luna.strip("clothes") - lun @ cheeks blush "" ("grin", "narrow", "base", "mid") + lun "" ("grin", "narrow", "base", "mid",cheeks="blush") stop weather fadeout 4 @@ -616,11 +617,11 @@ label ll_pf_masturbate_T3_E3_intro: # hand moving slow - lun @ cheeks blush "*Ah*... {heart} Yes..." ("grin", "narrow", "base", "up") + lun "*Ah*... {heart} Yes..." ("grin", "narrow", "base", "up") gen "By the great desert sands! You're sopping wet!" - lun @ cheeks blush "I'm sorry [name_genie_luna]... I just...{w=0.3} Need this really bad...{heart}" ("mad", "happyCl", "base", "stare") - lun @ cheeks blush "These wrackspurts...{w=0.4} *Ah*..." ("upset", "happyCl", "base", "mid") - lun @ cheeks blush "They've been very tiresome..." ("angry", "narrow", "base", "up") + lun "I'm sorry [name_genie_luna]... I just...{w=0.3} Need this really bad...{heart}" ("mad", "happyCl", "base", "stare") + lun "These wrackspurts...{w=0.4} *Ah*..." ("upset", "happyCl", "base", "mid") + lun "They've been very tiresome..." ("angry", "narrow", "base", "up") nar "Without being prompted, Luna pushes a finger inside her and starts fingering herself." @@ -628,48 +629,48 @@ label ll_pf_masturbate_T3_E3_intro: play sound "sounds/slick_02.ogg" with kissiris - lun @ cheeks blush "*Ah*...{heart}" ("grin", "narrow", "base", "up") + lun "*Ah*...{heart}" ("grin", "narrow", "base", "up") #Luna fingering play background "sounds/slickloop.ogg" fadein 2 - lun @ cheeks blush "" ("grin", "closed", "base", "mid") + lun "" ("grin", "closed", "base", "mid") gen "You're becoming quite the expert at this..." - lun @ cheeks blush "*Ah*...{w=0.4} I'm just doing--{w=0.2} *Ah*...{w=0.4} What you've taught me [name_genie_luna]..." ("soft", "closed", "base", "mid") + lun "*Ah*...{w=0.4} I'm just doing--{w=0.2} *Ah*...{w=0.4} What you've taught me [name_genie_luna]..." ("soft", "closed", "base", "mid") gen "Don't be so modest [name_luna_genie]... It takes a lot of willpower and determination to get to where you are." - lun @ cheeks blush "*Ah*... Really?" ("soft", "narrow", "base", "stare") + lun "*Ah*... Really?" ("soft", "narrow", "base", "stare") gen "Absolutely...{w=0.4} You're a natural!" gen "I'd even go as far to say that you were born to do this." - lun @ cheeks blush "*Mmm*..." ("base", "narrow", "base", "stare") + lun "*Mmm*..." ("base", "narrow", "base", "stare") - lun @ cheeks blush "Well, I'm not so sure about that..." ("base", "closed", "base", "mid") - lun @ cheeks blush "Although I must say...{w=0.4} *Ah*...{w=0.4} I've been enjoying these sessions a fair bit, [name_genie_luna]..." ("open", "closed", "base", "mid") - lun @ cheeks blush "They are starting to become all I can think about..." ("base", "closed", "base", "mid") + lun "Well, I'm not so sure about that..." ("base", "closed", "base", "mid") + lun "Although I must say...{w=0.4} *Ah*...{w=0.4} I've been enjoying these sessions a fair bit, [name_genie_luna]..." ("open", "closed", "base", "mid") + lun "They are starting to become all I can think about..." ("base", "closed", "base", "mid") gen "*Hmm*...{w=0.3} Do you think that's a bad thing?" - lun @ cheeks blush "*Ah*...{w=0.3} of course not!" ("grin", "closed", "base", "mid") - lun @ cheeks blush "It just...*Hngh*{w=0.3} means that it's working..." ("grin", "happyCl", "base", "mid") - lun @ cheeks blush "If only I could spend all day up here..." ("base", "narrow", "base", "up") + lun "*Ah*...{w=0.3} of course not!" ("grin", "closed", "base", "mid") + lun "It just...*Hngh*{w=0.3} means that it's working..." ("grin", "happyCl", "base", "mid") + lun "If only I could spend all day up here..." ("base", "narrow", "base", "up") gen "Do you think a full day of treatment would get rid of them?" - lun @ cheeks blush "*Ah*..." ("soft", "narrow", "base", "up") - lun @ cheeks blush "I don't know..." ("open", "narrow", "base", "up") - lun @ cheeks blush "But..." ("upset", "narrow", "base", "up") - lun @ cheeks blush "I think It'd probably feel--{w=0.2} *Ah*..." ("soft", "narrow", "base", "up") - lun @ cheeks blush "Nice...{heart}{heart}{heart}" ("base", "narrow", "base", "stare") + lun "*Ah*..." ("soft", "narrow", "base", "up") + lun "I don't know..." ("open", "narrow", "base", "up") + lun "But..." ("upset", "narrow", "base", "up") + lun "I think It'd probably feel--{w=0.2} *Ah*..." ("soft", "narrow", "base", "up") + lun "Nice...{heart}{heart}{heart}" ("base", "narrow", "base", "stare") nar "Luna moans softly under her breath." - lun @ cheeks blush "{heart}{heart}{heart}" ("base", "closed", "base", "mid") - lun @ cheeks blush "You, watching me while I do this... For some reason--" ("grin", "narrow", "base", "mid") + lun "{heart}{heart}{heart}" ("base", "closed", "base", "mid") + lun "You, watching me while I do this... For some reason--" ("grin", "narrow", "base", "mid") gen "*Shhh*... Focus [name_luna_genie]..." - lun @ cheeks blush "Yes [name_genie_luna]..." ("base", "narrow", "base", "down") - lun @ cheeks blush "*Ah*...{w=0.3} *Ah*...{w=0.3} *Ah*..." ("base", "closed", "base", "mid") - lun @ cheeks blush "I think..." ("grin", "closed", "base", "stare") - lun @ cheeks blush "*Ah*..." ("grin", "narrow", "base", "up") - lun @ cheeks blush "I think I've almost got them, [name_genie_luna]..." ("crooked_smile", "narrow", "base", "up") + lun "Yes [name_genie_luna]..." ("base", "narrow", "base", "down") + lun "*Ah*...{w=0.3} *Ah*...{w=0.3} *Ah*..." ("base", "closed", "base", "mid") + lun "I think..." ("grin", "closed", "base", "stare") + lun "*Ah*..." ("grin", "narrow", "base", "up") + lun "I think I've almost got them, [name_genie_luna]..." ("crooked_smile", "narrow", "base", "up") gen "(Already? She's faster than I am!)" - lun @ cheeks blush "[name_genie_luna]... Please..." ("crooked_smile", "narrow", "base", "up") + lun "[name_genie_luna]... Please..." ("crooked_smile", "narrow", "base", "up") play background "sounds/slickloopfast.ogg" - lun @ cheeks blush "*Ah*...{w=0.3} Tell me...{w=0.3} Tell me I'm pretty." ("mad", "closed", "base", "stare") + lun "*Ah*...{w=0.3} Tell me...{w=0.3} Tell me I'm pretty." ("mad", "closed", "base", "stare") gen "What?" label .choice: @@ -677,35 +678,35 @@ label ll_pf_masturbate_T3_E3_intro: menu: "-Tell her-": gen "You're very pretty, [name_luna_genie]." - lun @ cheeks blush "*Mmm*..." ("base", "narrow", "base", "up") + lun "*Mmm*..." ("base", "narrow", "base", "up") "-Don't-": random: - lun @ cheeks blush "Hurry...{w=0.3} I'm...{w=0.3} I'm almost there..." ("grin", "happyCl", "base", "up") + lun "Hurry...{w=0.3} I'm...{w=0.3} I'm almost there..." ("grin", "happyCl", "base", "up") block: gen "You're going to need to learn how to do this without my help [name_luna_genie]..." - lun @ cheeks blush "Please, [name_genie_luna]..." ("angry", "happyCl", "base", "mid") + lun "Please, [name_genie_luna]..." ("angry", "happyCl", "base", "mid") block: gen "Tell you..." - lun @ cheeks blush "Tell me I'm pretty, [name_genie_luna]..." ("grin", "narrow", "base", "up") + lun "Tell me I'm pretty, [name_genie_luna]..." ("grin", "narrow", "base", "up") # Menu opens again until you've told her she's pretty jump ll_pf_masturbate_T3_E3_intro.choice play background "sounds/slickloopveryfast.ogg" - lun @ cheeks blush "" ("grin", "closed", "base", "up") + lun "" ("grin", "closed", "base", "up") nar "Luna, revelling in your praise, closes her eyes and begins furiously pumping her fingers in and out." - lun @ cheeks blush "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." ("grin", "closed", "base", "mid") #Eyes closed - lun @ cheeks blush "{size=+4}*Mmm*...{w=0.4}{/size}{nw}" ("base", "closed", "base", "mid") - lun @ cheeks blush "{size=+4}*Mmm*...{fast} Yes...{heart}{/size}" ("crooked_smile", "closed", "base", "mid") - lun @ cheeks blush "*Ah*...{w=0.3}{nw}" ("crooked_smile", "closed", "base", "mid") - lun @ cheeks blush "*Ah*...{fast} [name_genie_luna], I think I'm..." ("crooked_smile", "narrow", "base", "stare") + lun "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." ("grin", "closed", "base", "mid") #Eyes closed + lun "{size=+4}*Mmm*...{w=0.4}{/size}{nw}" ("base", "closed", "base", "mid") + lun "{size=+4}*Mmm*...{fast} Yes...{heart}{/size}" ("crooked_smile", "closed", "base", "mid") + lun "*Ah*...{w=0.3}{nw}" ("crooked_smile", "closed", "base", "mid") + lun "*Ah*...{fast} [name_genie_luna], I think I'm..." ("crooked_smile", "narrow", "base", "stare") nar "Luna's fingers move in a flurry, as she continues pumping them into her needy slit." lun @ cheeks blush "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*...{heart}" ("crooked_smile", "narrow", "base", "up") gen "Good girl...{w=0.3} Now--" - lun @ cheeks blush "*AAAAH*!!!" ("scream", "happyCl", "base", "up") + lun "*AAAAH*!!!" ("scream", "happyCl", "base", "up") play sound "sounds/slick_01.ogg" #Luna Squirts @@ -715,23 +716,23 @@ label ll_pf_masturbate_T3_E3_intro: pause .8 #Non luna squirt $ luna.set_cum(pussy="squirt_post") - lun @ cheeks blush "" ("grin", "wide", "base", "up") + lun "" ("grin", "wide", "base", "up") gen "By the great--" - lun @ cheeks blush "{size=+4}*Nnngh*--{/size}" ("angry", "narrow", "base", "up") + lun "{size=+4}*Nnngh*--{/size}" ("angry", "narrow", "base", "up") play sound "sounds/slick_01.ogg" stop background fadeout 2 #Luna Squirts with kissiris $ luna.set_cum(pussy="squirt") - lun @ cheeks blush "{size=+4}*Nnngh*--{fast} *AH*!!{heart}{/size}{w=0.3}{nw}" ("scream", "narrow", "base", "ahegao") + lun "{size=+4}*Nnngh*--{fast} *AH*!!{heart}{/size}{w=0.3}{nw}" ("scream", "narrow", "base", "ahegao") #Non luna squirt $ luna.set_cum(pussy="squirt_post") - lun @ cheeks blush "{size=+4}*Nnngh*--{fast} *AH*!!{heart}{/size}{fast}" ("scream", "narrow", "base", "ahegao") + lun "{size=+4}*Nnngh*--{fast} *AH*!!{heart}{/size}{fast}" ("scream", "narrow", "base", "ahegao") - lun @ cheeks blush "*Ah*..." ("base", "narrow", "base", "up") - lun @ cheeks blush "Thank you, [name_genie_luna]..." ("base", "closed", "base", "mid") + lun "*Ah*..." ("base", "narrow", "base", "up") + lun "Thank you, [name_genie_luna]..." ("base", "closed", "base", "mid") hide cg show screen blkfade @@ -753,11 +754,11 @@ label ll_pf_masturbate_T3_E3_intro: call weather_sound gen "Now I didn't take you for a squirter, [name_luna_genie]..." ("grin", xpos="far_left", ypos="head") - lun @ cheeks blush "..." ("soft", "base", "base", "down", xpos="mid", ypos="base", trans=dissolve) + lun "..." ("soft", "base", "base", "down", xpos="mid", ypos="base", trans=dissolve) gen "Is everything okay?" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "Look at all these wrackspurts!" ("mad", "base", "base", "down") + lun "Look at all these wrackspurts!" ("mad", "base", "base", "down") gen "..." ("base", xpos="far_left", ypos="head") - lun "I didn't think I'd be able to release this many at once." ("smile", "narrow", "base", "down") + lun "I didn't think I'd be able to release this many at once." ("smile", "narrow", "base", "down",cheeks="none") gen "Sure took me by surprise..." ("grin", xpos="far_left", ypos="head") lun "Am I a master baiter now?" ("crooked_smile", "base", "base", "mid") @@ -812,7 +813,7 @@ label ll_pf_masturbate_T3_E4_repeat: call ll_pf_masturbate gen "Ready to avert the spurts?" ("base", xpos="far_left", ypos="head") - lun "Avert them, [name_genie_luna]?" ("soft", "base", "base", "mid", trans=dissolve) + lun "Avert them, [name_genie_luna]?" ("soft", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "Ready to insert until you spurt and squirt?" ("base", xpos="far_left", ypos="head") lun "Oh!{w=0.4} Yes, I am ready!" ("base", "base", "base", "mid") gen "Great, then show me how it's done, master baiter!" ("base", xpos="far_left", ypos="head") @@ -887,7 +888,7 @@ label ll_pf_masturbate_T3_E4_repeat: $ luna.strip("clothes") with d3 - lun @ cheeks blush "" ("base", "closed", "base", "mid") + lun "" ("base", "closed", "base", "mid",cheeks="blush") nar "Luna slides the rest of her clothes off and begins rubbing herself." #Hand on pussy @@ -901,41 +902,41 @@ label ll_pf_masturbate_T3_E4_repeat: play sound "sounds/slick_02.ogg" with kissiris - lun @ cheeks blush "*Ah*..." ("base", "narrow", "base", "up") + lun "*Ah*..." ("base", "narrow", "base", "up") #Luna fingering play background "sounds/slickloop.ogg" fadein 2 - lun @ cheeks blush "*Mmm*..." ("base", "closed", "base", "mid") + lun "*Mmm*..." ("base", "closed", "base", "mid") gen "Good..." gen "You sure seem to have found a way to keep yourself focused on the task, [name_luna_genie]..." - lun @ cheeks blush "*Mmm*... Yes, [name_genie_luna]..." ("open", "closed", "base", "mid") + lun "*Mmm*... Yes, [name_genie_luna]..." ("open", "closed", "base", "mid") gen "You should feel very proud of your accomplishments." - lun @ cheeks blush "*Ah*...{w=0.4} Yes...{w=0.4} I feel it inside of me [name_genie_luna]..." ("soft", "closed", "base", "mid") + lun "*Ah*...{w=0.4} Yes...{w=0.4} I feel it inside of me [name_genie_luna]..." ("soft", "closed", "base", "mid") play background "sounds/slickloopfast.ogg" - lun @ cheeks blush "" ("soft", "narrow", "base", "mid") + lun "" ("soft", "narrow", "base", "mid") nar "Luna begins moving her fingers faster inside her as she stares at you intently." gen "I was very impressed with how quickly you got there last time..." gen "You've got to tell me your tricks, did you think of something in particular?" $ luna.set_cum(pussy="wet") - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} [name_genie_luna]..." ("base", "narrow", "base", "stare") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} [name_genie_luna]..." ("base", "narrow", "base", "stare") gen "My apologies, I'll let you get on with it..." nar "You watch in silence as Luna fingers herself... Her heavy breathing, now being the only thing filling your chambers." - lun @ cheeks blush "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*...{w=0.4}" ("grin", "narrow", "base", "up") + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*...{w=0.4}" ("grin", "narrow", "base", "up") gen "(Look at those fingers go... Now that's a girl with purpose.)" play background "sounds/slickloopveryfast.ogg" - lun @ cheeks blush "" ("grin", "narrow", "base", "mid") + lun "" ("grin", "narrow", "base", "mid") nar "Looking at you once again, Luna starts moving her fingers even faster..." - lun @ cheeks blush "*Ah*...{w=0.2} *Ah*...{w=0.2} [name_genie_luna]..." ("grin", "narrow", "base", "mid") + lun "*Ah*...{w=0.2} *Ah*...{w=0.2} [name_genie_luna]..." ("grin", "narrow", "base", "mid") gen "Yes, [name_luna_genie]?" - lun @ cheeks blush "*Aaaah*!!!" ("crooked_smile", "narrow", "base", "up") + lun "*Aaaah*!!!" ("crooked_smile", "narrow", "base", "up") play sound "sounds/slick_01.ogg" with kissiris @@ -954,7 +955,7 @@ label ll_pf_masturbate_T3_E4_repeat: #Non luna squirt $ luna.set_cum(pussy="squirt_post") - lun @ cheeks blush "*[name_genie_luna]*!!{heart}" ("scream", "narrow", "base", "up") + lun "[name_genie_luna]!!{heart}" ("scream", "narrow", "base", "up") play sound "sounds/slick_01.ogg" stop background fadeout 2 @@ -964,20 +965,20 @@ label ll_pf_masturbate_T3_E4_repeat: pause .6 #Non luna squirt $ luna.set_cum(pussy="squirt_post") - lun @ cheeks blush "" ("crooked_smile", "narrow", "base", "stare") + lun "" ("crooked_smile", "narrow", "base", "stare") - lun @ cheeks blush "*Ah*...{heart}" ("grin", "narrow", "base", "up") + lun "*Ah*...{heart}" ("grin", "narrow", "base", "up") $ luna.set_pose(None) $ luna.strip("clothes") #Luna normal doll pose - lun @ cheeks blush "*Mmm*..." ("base", "closed", "base", "mid") - lun @ cheeks blush "Did I do good, [name_genie_luna]?" ("soft", "narrow", "base", "up") + lun "*Mmm*..." ("base", "closed", "base", "mid") + lun "Did I do good, [name_genie_luna]?" ("soft", "narrow", "base", "up") gen "Very good, [name_luna_genie]..." - lun @ cheeks blush "*Ah*...{w=0.4} I'm glad..." ("base", "narrow", "base", "up") - lun @ cheeks blush "..." ("base", "narrow", "base", "down") #More focused - lun @ cheeks blush "Oh, no! Look at what has happened to your floor!" ("mad", "narrow", "base", "down") + lun "*Ah*...{w=0.4} I'm glad..." ("base", "narrow", "base", "up") + lun "..." ("base", "narrow", "base", "down") #More focused + lun "Oh, no! Look at what has happened to your floor!" ("mad", "narrow", "base", "down") gen "I'm sure it's fine, it has seen worse I'm--" show CG lun_intro luna bendover naked as cg zorder 17: @@ -985,7 +986,7 @@ label ll_pf_masturbate_T3_E4_repeat: easein_quad 10.0 zoom 1.0 pos (-1040, -600) #Luna naked bent over pose - lun "Now where did I put my spectrespecs..." ("base", "base", "base", "mid") + lun "Now where did I put my spectrespecs..." ("base", "base", "base", "mid",cheeks="none") nar "Luna bends down and begins checking around the floor for her glasses." gen "Very fine indeed..." @@ -1074,8 +1075,310 @@ label ll_pf_masturbate_T3_E4_repeat: call lun_walk(action="leave") - if states.lun.level < 24: - $ states.lun.level = 24 - call end_of_content + jump ll_pf_masturbate_end + +label ll_pf_masturbate_T4_E1_repeat: + + call ll_pf_masturbate + + gen "I hope you remember everything I've taught you about touching yourself." ("base", xpos="far_left", ypos="head") + lun "Of course I remember!" ("grin", "base", "base", "mid", xpos="base", ypos="base", trans=d3) + gen "Are you sure?" ("base", xpos="far_left", ypos="head") + lun "Most certainly!" ("smile", "closed", "base", "mid") + gen "*Hmm*... I don't know... You are a bit forgetful at times..." ("base", xpos="far_left", ypos="head") + lun "I do remember, I really do!" ("clench", "base", "base", "mid") + gen "Great!" ("base", xpos="far_left", ypos="head") + gen "Then I'd like you to prove it to me!" ("base", xpos="far_left", ypos="head") + lun "Okay!" ("smile", "base", "base", "mid") + + call lun_walk("desk", "base") + pause 0.3 + + show screen blkfade + with d3 + + $ luna.set_face(mouth="base", eyes="base", eyebrows="base", pupils="mid") + stop weather fadeout 4 + + hide screen blkfade + show CG luna as cg zorder 17: + zoom 0.5 + with fade + + #Start of masturbate section + + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ luna.strip("top", "bra") + with d3 + + gen "Not so fast, [name_luna_genie]... I'll need you to walk me through it." + lun "Walk you through it, [name_genie_luna]?" ("angry", "base", "raised", "mid") + gen "To ensure that you've been paying attention, I require you to describe each of your actions and their purpose." + lun "Hold on... Are you saying this is a test, [name_genie_luna]?" ("open", "base", "raised", "mid") + gen "Precisely." + lun "Oooooh... What's it called?" ("smile", "base", "base", "mid") + gen "What's it...{w=0.4} called?" + lun "The test! Does it have a name? Like the \"O.W.L's\"!" ("grin", "base", "raised", "mid") + gen "There's an owl test?" + lun "*Hah-Hah*! Very funny [name_genie_luna]!" ("smile", "happyCl", "base", "mid") + gen "..." + lun "The acronym for \"Ordinary Wizarding Level\" does spell out owl!" ("smile", "happyCl", "base", "mid") + lun "*Snort*" ("grin", "happyCl", "base", "mid") + gen "*Heh*...{w=0.4} Yeah, sure does..." + lun "Hold on...{w=0.4} Do all tests at Hogwarts have an acronym? Please tell me they do!" ("grin", "base", "raised", "mid") + gen "Oh...{w=0.4} *Err*...{w=0.4} Yeah, they certainly do!" + lun "Really? Wow! So, what's this one called?" ("base", "base", "base", "mid") + gen "*Err*..." + menu: + "\"C.U.M\"": + lun "Oooh!" ("soft", "base", "base", "stare") + lun "What does that stand for?" ("soft", "base", "base", "mid") + gen "Complete understanding of masturbation." + lun "Neat!" ("grin", "base", "base", "mid") + "\"F.U.C.K\"": + lun "Fuck?" ("soft", "base", "raised", "mid") + lun "What does that stand for?" ("soft", "base", "base", "mid") + gen "Female utilizing common knowledge." + lun "I see!" ("grin", "base", "base", "mid") + "\"P.U.S.S.Y\"": + lun "Like a cat?!" ("grin", "base", "base", "mid") + gen "Sure." + lun "What does it stand for?" ("base", "base", "base", "mid") + gen "Perfectly understanding that stimulation satisfies you." + lun "Nice!" ("grin", "base", "base", "mid") + "\"G.U.S.H.E.R.S\"": + lun "What does that stand for?" ("soft", "base", "raised", "mid") + gen "General Understanding of Stimulation; Holes, Ejaculations, and Rewarding Squirts!" + lun "Yes, they are little rascals aren't they!" ("grin", "base", "base", "mid") + "\"R.U.B\"": + lun "What does that stand for?" ("soft", "base", "raised", "mid") + gen "Relentless user of body." + lun "Oh! That makes sense!" ("grin", "base", "base", "mid") + + lun "I never realised that the tests at Hogwarts just happened to have acronyms, that's fascinating!" ("grin", "base", "base", "mid") + gen "Yep... I'm sure some writer didn't spend hours coming up with those." + lun "*Huh*?" ("soft", "base", "raised", "mid") + gen "Anyway...{w=0.4} Now that that's established, you may begin the test." + lun "Oh, alright!" ("base", "base", "base", "mid") + gen "Why don't you start off with the thought process behind the removal of your top." + lun "Oh! Oh! I know that!" ("smile", "base", "base", "stare") + lun "I did it so that I could touch my breast directly!" ("smile", "base", "base", "mid") + lun "..." ("smile", "base", "base", "mid") #smiling + gen "And the reason for that, is..." + lun "Oh, am I supposed to explain everything?" ("clench", "base", "base", "mid") + gen "Yes [name_luna_genie]... It's a test." + gen "If you could, I'd like you to show me what I've taught you, while explaining each step, in detail..." + lun "Right." ("mad", "base", "base", "mid") + lun "..." ("soft", "narrow", "base", "down") + gen "So, the purpose of you touching your breast are..." + lun "Oh! Because it feels really nice!" ("grin", "base", "base", "mid") + lun "I mean-- It's because the wrackspurts in there gets excited when I do!" ("angry", "base", "base", "up") + gen "..." + lun "*Ehm*..." ("angry", "base", "base", "mid") + gen "So, you touch your breasts because you want to excite the spurts?" + lun "That's right!" ("angry", "base", "base", "mid") + gen "Why would you want to do that?" + lun "Oh!" ("smile", "base", "base", "stare") + lun "So that I may reach the point where I expel them from my body, of course!" ("smile", "base", "base", "mid") + gen "So, you squirt them out from your breasts?" + lun "Yes I--{w=0.4} No... Hold on..." ("open", "base", "base", "mid") + lun "No, to expel them I also have to touch this area down here!" ("soft", "base", "base", "down") + + nar "Luna quickly moves her hand to lift her skirt..." + + $ luna.set_pose("hand_on_pussy_and_breast") + $ luna.strip("top", "bra") + nar "While doing so, she also pinches her nipple with the other." + + lun "*Ah*...{heart}" ("smile", "closed", "base", "mid",cheeks="blush") + lun "*Mmm*..." ("grin", "narrow", "base", "mid") + gen "I'm going to need you to be a bit more descriptive than that..." + lun "*Mmm*... Oh, sorry [name_genie_luna]... I'm not the best at multitasking..." ("angry", "narrow", "base", "mid") + gen "Practice makes perfect, [name_luna_genie]... I'm certain that one day you'll be able to have full-on intelligent and thought-out conversations..." + lun "While touching myself?" ("soft", "narrow", "base", "mid") + gen "Oh, yes... That's what I meant to say." + gen "Moving on...{w=0.4} Why don't you simplify things by getting fully undressed?" + lun "Oh, right... Why didn't I think of that..." ("grin", "narrow", "base", "down") + + $ luna.set_pose(None) + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ luna.strip("clothes") + with d3 + + gen "Of course, undressing may not always be an option." + lun "You mean..." ("soft", "base", "base", "mid") + lun "There might be a situation where I'm unable to use my hands, such as if someone were to cast Petrificus Totalus on me?" ("soft", "base", "base", "mid") + gen "(What on earth is she on about?)" + lun "Hold on... If that was the case, then I wouldn't be able to touch myself either!" ("soft", "base", "base", "stare") + lun "Unless..." ("annoyed", "base", "base", "down") + gen "Unless?" + lun "Is it possible to concentrate sufficiently on a specific area to expel wrackspurts without physical contact?" ("annoyed", "base", "base", "down") + gen "*Err*... Let's continue with the test..." + lun "Okay." ("base", "base", "base", "mid") + lun "Where was I... Oh, now I remember! I'm supposed to rub myself like this." ("grin", "narrow", "base", "down") + + $ luna.set_pose("hand_on_pussy_and_breast") + $ luna.strip("clothes") + nar "Luna quickly moves her hands back to her sensitive areas..." + nar "Your eyes lock onto her pussy, and you watch has she begins rubbing herself across the length of her slit..." + + lun "*Mmm*..." ("base", "narrow", "base", "stare") + gen "Excellent..." + gen "So... Rubbing yourself excites the spurts... And?" + + nar "While awaiting a response, you glance up at Luna's face and notice that her eyes have once again taken on a distant glaze..." + + lun "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." ("grin", "narrow", "base", "stare") + gen "[name_luna_genie]?" + gen "(Figured...)" + + nar "You lean back in your chair, as the sounds of Luna's heavy breathing fills the room..." + + gen "(I suppose I did teach her to project her thoughts towards her sensitive areas...)" + lun "*Mmm*..." ("base", "closed", "base", "mid") #closed eyes + gen "(In retrospect, I should've foreseen there might be a point where she'd start projecting all her thoughts...)" + gen "(Can't say that I'm not jealous...)" + + nar "Not paying mind nor care towards her surroundings, you notice that Luna has closed her eyes and that a smile has spread across her face." + nar "Looking down again, you're met with the sight of Luna prodding her index finger against her slit." + nar "Each prod is quickly followed by an intake of breath, and looking at Luna's face, she radiates a mixture of anticipation and excitement." + nar "Just as you're about to comment on it, she gives off a small giggle and then pushes the finger inside." + + $ renpy.sound.play("sounds/slick_02.ogg") + with kissiris + lun "{size=+4}*Ah*...{/size}" ("open_tongue", "closed", "base", "mid") + + #Luna fingering + play background "sounds/slickloop.ogg" fadein 2 + nar "Without hesitation, she starts pumping her fingers in and out rapidly..." + + lun "*Ah*...{w=0.4} Yes...{w=0.4} So good..." ("grin", "closed", "base", "mid") + + nar "Absorbed in her own excitement, she suddenly begins talking to herself..." + nar "You ponder whether you should say something to spare her embarrassment, but then you remember who's in front of you...." + + lun "*Mmm*...{w=0.4} Perhaps...{w=0.4} A bit deeper...{w=0.4} Just to make sure..." ("base", "closed", "base", "mid") + + nar "You watch, unsure if what you're feeling is arousal, bemusement or both, as Luna slows her pace down to push her fingers even deeper." + + lun "*Ngh*!" ("angry", "closed", "base", "mid") + + nar "With a squeal, she pulls them back out slightly...{w=0.4} Now covered in her own juices, she resumes fingering herself as if her life depended on it." + + play background "sounds/slickloopfast.ogg" + + lun "*Ah*...{w=0.2}*Ah*...{w=0.2}*Ah*..." ("grin", "closed", "base", "mid") + lun "That's it... That's how you do it..." ("angry", "closed", "base", "mid") + gen "..." + lun "*Ngh*...{w=0.4} Pretty girl..." ("angry", "closed", "base", "mid") + gen "Pretty girl?" + lun "{size=+4}{heart}{heart}*Aaaaah*!!!!{heart}{heart}{/size}" ("smile", "base", "base", "ahegao") + + $ renpy.sound.play("sounds/slick_01.ogg") + with kissiris + #Luna Squirts + + $ luna.set_cum(pussy="squirt") + pause .6 + #Non luna squirt + $ luna.set_cum(pussy="squirt_post") + + $ renpy.sound.play("sounds/slick_01.ogg") + with kissiris + #Luna Squirts + $ luna.set_cum(pussy="squirt") + pause .6 + #Non luna squirt + $ luna.set_cum(pussy="squirt_post") + + lun "*Nnngh*!" + + $ renpy.sound.play("sounds/slick_01.ogg") + stop background fadeout 2 + with kissiris + #Luna Squirts + $ luna.set_cum(pussy="squirt") + pause .6 + #Non luna squirt + $ luna.set_cum(pussy="squirt_post") + lun "" ("crooked_smile", "narrow", "base", "stare") + + lun "*Ah*...{heart}" ("grin", "narrow", "base", "up", cheeks="none") + + # End of masturbate section + + hide cg + show screen blkfade + with d5 + + $ luna.set_pose(None) + $ luna.strip("clothes") + #Luna normal doll pose + + hide screen blkfade + with d5 + + call weather_sound + + nar "After some time, Luna returns to her senses, and starts looking around the office." + + lun "What...{w=0.4} What just happened?" ("angry", "base", "base", "R", xpos="mid", ypos="base", trans=dissolve) + gen "Someone got a little bit carried away during their assignment." ("base", xpos="far_left", ypos="head") + lun "Someone...{w=0.4} Oh, no!" ("angry", "base", "base", "stare") + gen "So, since you've reached the end of the test, I'll give you--" ("base", xpos="far_left", ypos="head") + menu: + "\"An A\"": + lun "An \"A\"? What does that mean?" ("angry", "base", "base", "mid") + gen "Or a \"D\"!" ("base", xpos="far_left", ypos="head") + lun "A \"D\"?!" ("angry", "base", "raised", "mid") + gen "A \"D\" in the \"A\"!" ("grin", xpos="far_left", ypos="head") + "\"A B\"": + lun "A \"B\"? What does that mean?" ("angry", "base", "base", "mid") + gen "A beating--{w=0.2} I mean...{w=0.4} Brofist!" ("grin", xpos="far_left", ypos="head") + lun "A... Brofist?" ("soft", "base", "base", "mid") + gen "Good job, [name_luna_genie]!" ("base", xpos="far_left", ypos="head") + gen "*Holds up fist*" ("base", xpos="far_left", ypos="head") + "\"A C\"": + lun "A \"C\"? What does that mean?" ("angry", "base", "base", "mid") + gen "Air-conditioning Unit." ("base", xpos="far_left", ypos="head") + lun "*Huh*?" ("disgust", "base", "base", "mid") + gen "It gets pretty hot in the summer without one." ("base", xpos="far_left", ypos="head") + "\"A D\"": + lun "A \"D\"? What does that mean?" ("angry", "base", "base", "mid") + gen "After death." ("base", xpos="far_left", ypos="head") + lun "After... Death, [name_genie_luna]?" ("disgust", "base", "base", "mid") + gen "Yep." ("base", xpos="far_left", ypos="head") + lun "..." ("angry", "narrow", "base", "mid") + "\"An F\"": + lun "An \"F\"? What does that mean?" ("angry", "base", "base", "mid") + gen "\"F\" is for friends." ("base", xpos="far_left", ypos="head") + lun "F--{w=0.2} Friends?" ("soft", "base", "base", "mid") + gen "\"U\" is for you and me." ("base", xpos="far_left", ypos="head") + gen "Did they never teach you that?" ("base", xpos="far_left", ypos="head") + + lun "I'm confused..." ("disgust", "narrow", "base", "mid") + lun "Does this mean I've failed the test?" ("disgust", "narrow", "base", "R") + gen "Your grading is pretty clear in that regard, is it not?" ("base", xpos="far_left", ypos="head") + lun "*Ehm*... I suppose..." ("annoyed", "narrow", "base", "down") + if game.daytime: + gen "Well then, I think you better head back to class." ("base", xpos="far_left", ypos="head") + else: + gen "Well then, I think you better head to bed." ("base", xpos="far_left", ypos="head") + lun "Oh, right!" ("angry", "base", "base", "mid") + + hide luna_main + with d3 + + $ luna.wear("all") + $ luna.set_cum(None) + + #Luna turns to door + call lun_chibi(flip=True) + pause .5 + + lun "Bye then, [name_genie_luna]." ("base", "base", "base", "mid", trans=fade, flip=True) + gen "Until next time..." ("base", xpos="far_left", ypos="head") + + call lun_walk(action="leave") jump ll_pf_masturbate_end From adcfa2b5116cd9bb1316312ff753ccacb4ac71c6 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Fri, 26 Jan 2024 17:07:50 +0000 Subject: [PATCH 054/249] Quality Assurance * Fixed minor issues with artwork during Luna's blowjob scene. --- .../pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp | 4 ++-- .../pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp | 4 ++-- .../lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp | 4 ++-- .../lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp index 6eb18161..3e5c4d5c 100644 --- a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6dc395f1cecec31839cf3cbe3184b41649e32670b3fc50504bedc85e0b8353c0 -size 30500 +oid sha256:e0e8fb1119cf57c91a4934bd81d5f16f53ac128df90e447b4d0aefab0045943c +size 29996 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp index b58b4b04..64485d7d 100644 --- a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ef54f60867d398aebb656403ea88dd1e43929a2549f55fd729afbfe4be3ffe2 -size 27468 +oid sha256:37f235892470e30c45344c2171f6c35a125e683a6c977f048b259bba53bafc7e +size 27480 diff --git a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp index 94ab520c..8b4752fe 100644 --- a/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp +++ b/game/images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af1399282b81e2cd43c070a66f59ba21365d42a3b925be300582c8124207380a -size 29424 +oid sha256:de9fb319d62e656cfcee4189d61ef2ff2e41f033678ae77e226f5ed124c9a1ae +size 29416 diff --git a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp index 58936f42..6506a4da 100644 --- a/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp +++ b/game/images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ce9984025f5730a1e399b53ebf9e2611720bfc2a1eeae9122e751dbdd664318 -size 25344 +oid sha256:121c3037b119949b9fa1cd2d502f8cd0236e7dd02b508a954c94ab6f4aa0d5ba +size 25206 From dc2cc3f72b916bbb8172298b39de8c880f4d4630 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Fri, 26 Jan 2024 17:25:15 +0000 Subject: [PATCH 055/249] Save Compatibility and Event Class * Added reset method for the Event class. * Updated save compatibility to reset the state of the modified events on update. --- game/scripts/events/queue.rpy | 5 +++++ game/scripts/utility/updater.rpy | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/game/scripts/events/queue.rpy b/game/scripts/events/queue.rpy index 2af20593..070aa351 100644 --- a/game/scripts/events/queue.rpy +++ b/game/scripts/events/queue.rpy @@ -220,6 +220,11 @@ init -1 python: self.queued = False + def reset(self): + self.started = False + self.completed = False + self.completed_failed = False + def requirements_met(self): if self.req: try: diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 992393f4..6bbe5398 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -170,14 +170,23 @@ init python: if current < 1.46: getattr(store, "her_ev_cumslut_public_t5_e1").label = "hg_pr_cumslut_T5_return" + getattr(store, "her_ev_cumslut_public_t5_e1").reset() + getattr(store, "her_ev_cumslut_public_t5_e1").dequeue() getattr(store, "her_ev_cumslut_public_t5_e2").label = "hg_pr_cumslut_T5_return" + getattr(store, "her_ev_cumslut_public_t5_e2").reset() + getattr(store, "her_ev_cumslut_public_t5_e2").dequeue() getattr(store, "her_ev_cumslut_public_t5_e3").label = "hg_pr_cumslut_T5_return" + getattr(store, "her_ev_cumslut_public_t5_e3").reset() + getattr(store, "her_ev_cumslut_public_t5_e3").dequeue() getattr(store, "her_ev_cumslut_public_t5_e1_hub").label = "hg_pr_cumslut" - getattr(store, "her_ev_cumslut_public_t5_e2_hub").label = "hg_pr_cumslut" - getattr(store, "her_ev_cumslut_public_t5_e3_hub").label = "hg_pr_cumslut" getattr(store, "her_ev_cumslut_public_t5_e1_hub").req = "states.her.tier == 5" + getattr(store, "her_ev_cumslut_public_t5_e1_hub").reset() + getattr(store, "her_ev_cumslut_public_t5_e2_hub").label = "hg_pr_cumslut" getattr(store, "her_ev_cumslut_public_t5_e2_hub").req = "states.her.tier == 5" + getattr(store, "her_ev_cumslut_public_t5_e2_hub").reset() + getattr(store, "her_ev_cumslut_public_t5_e3_hub").label = "hg_pr_cumslut" getattr(store, "her_ev_cumslut_public_t5_e3_hub").req = "states.her.tier == 5" + getattr(store, "her_ev_cumslut_public_t5_e3_hub").reset() for i in states.dolls: doll = getattr(store, i) From a739d97d58f69f7f58d4e0a59fbdaf3ef9afa6c5 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Fri, 26 Jan 2024 17:41:08 +0000 Subject: [PATCH 056/249] Night Filter * Added night filter for Luna's blowjob scene --- .../characters/luna/events/favors/suck_it.rpy | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 11b6dd24..b2a8819f 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -123,7 +123,11 @@ label ll_pf_blowjob_T4_E1_intro: nar "Luna hurriedly makes her way around your desk and crawls underneath..." gen "*Err*... It's probably not the best idea to go under my--" - show lun_blowjob_personal_pose1 as cg + if game.daytime: + show lun_blowjob_personal_pose1 as cg + else: + show lun_blowjob_personal_pose1 as cg at color_temperature(1.0) + hide screen blkfade with d5 @@ -546,7 +550,11 @@ label ll_pf_blowjob_T4_E2_intro: else: nar "Luna quickly makes her way around your desk, and crawls underneath." - show lun_blowjob_personal_pose1 as cg + if game.daytime: + show lun_blowjob_personal_pose1 as cg + else: + show lun_blowjob_personal_pose1 as cg at color_temperature(1.0) + hide screen blkfade with d5 @@ -931,7 +939,11 @@ label ll_pf_blowjob_T4_E3_intro: lun "I like it down here..." gen "Very well..." - show lun_blowjob_personal_pose1 no_trousers eyebrows_angry eyes_halflid_down_hearts mouth_base as cg + if game.daytime: + show lun_blowjob_personal_pose1 no_trousers eyebrows_angry eyes_halflid_down_hearts mouth_base as cg + else: + show lun_blowjob_personal_pose1 no_trousers eyebrows_angry eyes_halflid_down_hearts mouth_base as cg at color_temperature(1.0) + hide screen blkfade with d5 @@ -1181,7 +1193,10 @@ label ll_pf_blowjob_T4_E4_repeat: $ _wearing_clothes = True $ luna.strip("clothes") - show lun_blowjob_personal_pose1 eyes_closed mouth_soft as cg + if game.daytime: + show lun_blowjob_personal_pose1 eyes_closed mouth_soft as cg + else: + show lun_blowjob_personal_pose1 eyes_closed mouth_soft as cg at color_temperature(1.0) hide screen blkfade with d5 From e959bd243fbc9b995157abe5dab5c303fd725b0b Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Fri, 26 Jan 2024 21:43:29 +0100 Subject: [PATCH 057/249] Luna T4 Masturbate for me additions * Additional writing. --- .../luna/events/favors/masturbate_for_me.rpy | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy index dbcb985a..cf94f56b 100644 --- a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy +++ b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy @@ -1133,18 +1133,18 @@ label ll_pf_masturbate_T4_E1_repeat: "\"C.U.M\"": lun "Oooh!" ("soft", "base", "base", "stare") lun "What does that stand for?" ("soft", "base", "base", "mid") - gen "Complete understanding of masturbation." + gen "Complete Understanding of Masturbation." lun "Neat!" ("grin", "base", "base", "mid") "\"F.U.C.K\"": lun "Fuck?" ("soft", "base", "raised", "mid") lun "What does that stand for?" ("soft", "base", "base", "mid") - gen "Female utilizing common knowledge." + gen "Female Utilizing Common Knowledge." lun "I see!" ("grin", "base", "base", "mid") "\"P.U.S.S.Y\"": lun "Like a cat?!" ("grin", "base", "base", "mid") gen "Sure." lun "What does it stand for?" ("base", "base", "base", "mid") - gen "Perfectly understanding that stimulation satisfies you." + gen "Perfectly Understanding that Stimulation Satisfies You." lun "Nice!" ("grin", "base", "base", "mid") "\"G.U.S.H.E.R.S\"": lun "What does that stand for?" ("soft", "base", "raised", "mid") @@ -1152,8 +1152,18 @@ label ll_pf_masturbate_T4_E1_repeat: lun "Yes, they are little rascals aren't they!" ("grin", "base", "base", "mid") "\"R.U.B\"": lun "What does that stand for?" ("soft", "base", "raised", "mid") - gen "Relentless user of body." + gen "Relentless User of Body." lun "Oh! That makes sense!" ("grin", "base", "base", "mid") + "\"S.M.A.S.H\"": + lun "What does that stand for?" ("soft", "base", "raised", "mid") + random: + gen "Sensual Maestro of Autoerotic Skills and Hedonism." + gen "Skilled Masturbatory Aficionado, Specialized in Handling." + lun "Neat!" ("grin", "base", "base", "mid") + "\"S.Q.U.I.R.T.E.R\"": + lun "What does that stand for?" ("soft", "base", "raised", "mid") + gen "Scholar of Quivers, Undeniably and Indisputably Resulting in Tremendous Euphoric Raptures." + lun "Marvellous!" ("grin", "base", "base", "mid") lun "I never realised that the tests at Hogwarts just happened to have acronyms, that's fascinating!" ("grin", "base", "base", "mid") gen "Yep... I'm sure some writer didn't spend hours coming up with those." @@ -1240,9 +1250,9 @@ label ll_pf_masturbate_T4_E1_repeat: gen "(Can't say that I'm not jealous...)" nar "Not paying mind nor care towards her surroundings, you notice that Luna has closed her eyes and that a smile has spread across her face." - nar "Looking down again, you're met with the sight of Luna prodding her index finger against her slit." - nar "Each prod is quickly followed by an intake of breath, and looking at Luna's face, she radiates a mixture of anticipation and excitement." - nar "Just as you're about to comment on it, she gives off a small giggle and then pushes the finger inside." + nar "Upon glancing down once more, your gaze lands on Luna's index finger, which is gently prodding against her slit." + nar "Each prod is quickly followed by a faint, lustful sigh, and you can almost feel the air vibrating with a blend of anticipation and excitement." + nar "But before you can make any comment, Luna lets out a short giggle and then pushes the finger inside." $ renpy.sound.play("sounds/slick_02.ogg") with kissiris From b0b01503e7f75de6bad6dbf0123d645aad0e19fa Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Mon, 29 Jan 2024 17:26:38 +0100 Subject: [PATCH 058/249] Fix --- .../scripts/characters/luna/events/favors/masturbate_for_me.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy index cf94f56b..db43cc1f 100644 --- a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy +++ b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy @@ -1159,7 +1159,7 @@ label ll_pf_masturbate_T4_E1_repeat: random: gen "Sensual Maestro of Autoerotic Skills and Hedonism." gen "Skilled Masturbatory Aficionado, Specialized in Handling." - lun "Neat!" ("grin", "base", "base", "mid") + lun "Neat!" ("grin", "base", "base", "mid") "\"S.Q.U.I.R.T.E.R\"": lun "What does that stand for?" ("soft", "base", "raised", "mid") gen "Scholar of Quivers, Undeniably and Indisputably Resulting in Tremendous Euphoric Raptures." From 4e57faac8c5e8c13e5b7e2998406d144476d855e Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 29 Jan 2024 17:56:23 +0000 Subject: [PATCH 059/249] Quality Assurance * Added requested changes to the image --- .../genie/lun_inspect_genie_arm_both_touch_tits.webp | 3 +++ game/scripts/cg/luna.rpy | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_touch_tits.webp diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_touch_tits.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_touch_tits.webp new file mode 100644 index 00000000..cf44619a --- /dev/null +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_touch_tits.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f8f02bdcf4d83db8cce17e7d0e75dc6b4160342694b3439d5ae9ad7977fdaa9 +size 177576 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index fb648493..108f4778 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -465,10 +465,11 @@ layeredimage lun_inspect spread_legs: group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: attribute hold "lun_inspect_genie_arm_left_hold" default - attribute grab "lun_inspect_genie_arm_left_grab" + attribute touch_tit "lun_inspect_genie_arm_left_grab" group genie_arms prefix "arms": attribute grab "lun_inspect_genie_arm_both_grab_tits" + attribute touch_tits "lun_inspect_genie_arm_both_touch_tits" attribute genie_clothes_front "lun_inspect_genie_clothes" if_all ["genie_clothes"] default From a32e5a2d94cec1e092a22ab60d84ecc9b9945c66 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 29 Jan 2024 17:57:35 +0000 Subject: [PATCH 060/249] Quality Assurance --- game/scripts/cg/luna.rpy | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 108f4778..166ef0f9 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -531,10 +531,11 @@ layeredimage lun_inspect legs_together: group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: attribute hold "lun_inspect_genie_arm_left_hold" default - attribute grab "lun_inspect_genie_arm_left_grab" + attribute touch_tit "lun_inspect_genie_arm_left_grab" group genie_arms prefix "arms": attribute grab "lun_inspect_genie_arm_both_grab_tits" + attribute touch_tits "lun_inspect_genie_arm_both_touch_tits" attribute genie_clothes_front "lun_inspect_genie_clothes" if_all ["genie_clothes"] default @@ -592,10 +593,11 @@ layeredimage lun_inspect head_back_spread_legs: group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: attribute hold "lun_inspect_genie_arm_left_hold" default - attribute grab "lun_inspect_genie_arm_left_grab" + attribute touch_tit "lun_inspect_genie_arm_left_grab" group genie_arms prefix "arms": attribute grab "lun_inspect_genie_arm_both_grab_tits" + attribute touch_tits "lun_inspect_genie_arm_both_touch_tits" attribute luna_bra "lun_inspect_head_back_spread_legs_luna_bra_grab" if_any ["arms_grab"] @@ -649,10 +651,11 @@ layeredimage lun_inspect head_back_legs_together: group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: attribute hold "lun_inspect_genie_arm_left_hold" default - attribute grab "lun_inspect_genie_arm_left_grab" + attribute touch_tit "lun_inspect_genie_arm_left_grab" group genie_arms prefix "arms": attribute grab "lun_inspect_genie_arm_both_grab_tits" + attribute touch_tits "lun_inspect_genie_arm_both_touch_tits" attribute luna_bra "lun_inspect_head_back_legs_together_luna_bra_grab" if_any ["arms_grab"] From 394f715fb9c184199c2d360cae7573ed14009a32 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 29 Jan 2024 18:14:46 +0000 Subject: [PATCH 061/249] Bug fix * Fixed image fit for the new scene. --- game/scripts/cg/luna.rpy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 166ef0f9..1b26b281 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -412,7 +412,7 @@ image lun_grind_cumshot: repeat layeredimage lun_inspect spread_legs: - fit "contain" + fit "cover" fit_first True always "lun_inspect_background" @@ -480,7 +480,7 @@ layeredimage lun_inspect spread_legs: attribute genie_clothes null layeredimage lun_inspect legs_together: - fit "contain" + fit "cover" fit_first True always "lun_inspect_background" @@ -546,7 +546,7 @@ layeredimage lun_inspect legs_together: attribute genie_clothes null layeredimage lun_inspect head_back_spread_legs: - fit "contain" + fit "cover" fit_first True always "lun_inspect_background" @@ -604,7 +604,7 @@ layeredimage lun_inspect head_back_spread_legs: always "lun_inspect_vignette" layeredimage lun_inspect head_back_legs_together: - fit "contain" + fit "cover" fit_first True always "lun_inspect_background" From 2f3e727f3eb2eaf2dbc15848c9bd319e4bf0d17e Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Tue, 30 Jan 2024 12:43:21 +0100 Subject: [PATCH 062/249] Bug fix * Fixed mislabeled image prefix --- game/scripts/cg/luna.rpy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 1b26b281..d6915bd4 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -444,7 +444,7 @@ layeredimage lun_inspect spread_legs: group luna_face_mouth prefix "mouth" auto: attribute base default - group luna_face_eyebrows prefix "eyes" auto: + group luna_face_eyebrows prefix "eyebrows" auto: attribute base default group luna_face_eyes prefix "eyes" auto: @@ -510,7 +510,7 @@ layeredimage lun_inspect legs_together: group luna_face_mouth prefix "mouth" auto: attribute base default - group luna_face_eyebrows prefix "eyes" auto: + group luna_face_eyebrows prefix "eyebrows" auto: attribute base default group luna_face_eyes prefix "eyes" auto: @@ -574,7 +574,7 @@ layeredimage lun_inspect head_back_spread_legs: group luna_face_mouth prefix "mouth" auto: attribute open default - group luna_face_eyebrows prefix "eyes" auto: + group luna_face_eyebrows prefix "eyebrows" auto: attribute base default group luna_face_eyes prefix "eyes" auto: @@ -632,7 +632,7 @@ layeredimage lun_inspect head_back_legs_together: group luna_face_mouth prefix "mouth" auto: attribute open default - group luna_face_eyebrows prefix "eyes" auto: + group luna_face_eyebrows prefix "eyebrows" auto: attribute base default group luna_face_eyes prefix "eyes" auto: From 53f0de2b602fb8da1177fa87af861bb26d933d1e Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 31 Jan 2024 23:37:18 +0000 Subject: [PATCH 063/249] Quality Assurance * Added touch_pussy_pause frame * Fixed arms_touch_tits layering issues --- game/scripts/cg/luna.rpy | 44 ++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index d6915bd4..d1b87799 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -425,7 +425,7 @@ layeredimage lun_inspect spread_legs: always "lun_inspect_spread_legs_luna_hair_back" always "lun_inspect_spread_legs_luna_body" - attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab"] + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "touch_tits"] group luna_arm prefix "luna_arm" auto: attribute idle default @@ -435,7 +435,7 @@ layeredimage lun_inspect spread_legs: group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties - attribute bra if_not ["luna_shirt", "arms_grab"] + attribute bra if_not ["luna_shirt", "arms_grab", "touch_tits"] attribute shirt attribute skirt @@ -456,14 +456,15 @@ layeredimage lun_inspect spread_legs: always "lun_inspect_genie_head" - group genie_arm_right prefix "arm_right" if_not ["arms_grab"]: + group genie_arm_right prefix "arm_right" if_not ["arms_grab", "touch_tits"]: attribute idle "lun_inspect_genie_arm_right_idle" default attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" attribute touch_pussy "lun_inspect_arm_right_touch_pussy" + attribute touch_pussy_pause "lun_inspect_genie_arm_right_touch_pussy_frame0" attribute down null - group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: + group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: attribute hold "lun_inspect_genie_arm_left_hold" default attribute touch_tit "lun_inspect_genie_arm_left_grab" @@ -473,7 +474,7 @@ layeredimage lun_inspect spread_legs: attribute genie_clothes_front "lun_inspect_genie_clothes" if_all ["genie_clothes"] default - attribute luna_bra "lun_inspect_spread_legs_luna_bra_grab" if_any ["arms_grab"] + attribute luna_bra "lun_inspect_spread_legs_luna_bra_grab" if_any ["arms_grab", "touch_tits"] always "lun_inspect_vignette" @@ -493,7 +494,7 @@ layeredimage lun_inspect legs_together: always "lun_inspect_legs_together_luna_hair_back" always "lun_inspect_legs_together_luna_body" - attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab"] + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "touch_tits"] group luna_arm prefix "luna_arm" auto: attribute idle default @@ -501,7 +502,7 @@ layeredimage lun_inspect legs_together: group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties - attribute bra if_not ["luna_shirt", "arms_grab"] + attribute bra if_not ["luna_shirt", "arms_grab", "touch_tits"] attribute shirt attribute skirt @@ -522,14 +523,15 @@ layeredimage lun_inspect legs_together: always "lun_inspect_genie_head" - group genie_arm_right prefix "arm_right" if_not ["arms_grab"]: + group genie_arm_right prefix "arm_right" if_not ["arms_grab", "touch_tits"]: attribute idle "lun_inspect_genie_arm_right_idle" default attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" attribute touch_pussy "lun_inspect_arm_right_touch_pussy" + attribute touch_pussy_pause "lun_inspect_genie_arm_right_touch_pussy_frame0" attribute down null - group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: + group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: attribute hold "lun_inspect_genie_arm_left_hold" default attribute touch_tit "lun_inspect_genie_arm_left_grab" @@ -539,7 +541,7 @@ layeredimage lun_inspect legs_together: attribute genie_clothes_front "lun_inspect_genie_clothes" if_all ["genie_clothes"] default - attribute luna_bra "lun_inspect_legs_together_luna_bra_grab" if_any ["arms_grab"] + attribute luna_bra "lun_inspect_legs_together_luna_bra_grab" if_any ["arms_grab", "touch_tits"] always "lun_inspect_vignette" @@ -557,7 +559,7 @@ layeredimage lun_inspect head_back_spread_legs: always "lun_inspect_head_back_spread_legs_luna_hair_back" always "lun_inspect_head_back_spread_legs_luna_body" - attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab"] + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "touch_tits"] group luna_arm prefix "luna_arm" auto: attribute idle default @@ -565,7 +567,7 @@ layeredimage lun_inspect head_back_spread_legs: group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties - attribute bra if_not ["luna_shirt", "arms_grab"] + attribute bra if_not ["luna_shirt", "arms_grab", "touch_tits"] attribute shirt attribute skirt @@ -584,14 +586,15 @@ layeredimage lun_inspect head_back_spread_legs: always "lun_inspect_genie_head" - group genie_arm_right prefix "arm_right" if_not ["arms_grab"]: + group genie_arm_right prefix "arm_right" if_not ["arms_grab", "touch_tits"]: # attribute idle "lun_inspect_genie_arm_right_idle" default attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" default attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" attribute touch_pussy "lun_inspect_arm_right_touch_pussy" + attribute touch_pussy_pause "lun_inspect_genie_arm_right_touch_pussy_frame0" attribute down null - group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: + group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: attribute hold "lun_inspect_genie_arm_left_hold" default attribute touch_tit "lun_inspect_genie_arm_left_grab" @@ -599,7 +602,7 @@ layeredimage lun_inspect head_back_spread_legs: attribute grab "lun_inspect_genie_arm_both_grab_tits" attribute touch_tits "lun_inspect_genie_arm_both_touch_tits" - attribute luna_bra "lun_inspect_head_back_spread_legs_luna_bra_grab" if_any ["arms_grab"] + attribute luna_bra "lun_inspect_head_back_spread_legs_luna_bra_grab" if_any ["arms_grab", "touch_tits"] always "lun_inspect_vignette" @@ -615,7 +618,7 @@ layeredimage lun_inspect head_back_legs_together: always "lun_inspect_head_back_legs_together_luna_hair_back" always "lun_inspect_head_back_legs_together_luna_body" - attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab"] + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "touch_tits"] group luna_arm prefix "luna_arm" auto: attribute idle default @@ -623,7 +626,7 @@ layeredimage lun_inspect head_back_legs_together: group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties - attribute bra if_not ["luna_shirt", "arms_grab"] + attribute bra if_not ["luna_shirt", "arms_grab", "touch_tits"] attribute shirt attribute skirt @@ -642,14 +645,15 @@ layeredimage lun_inspect head_back_legs_together: always "lun_inspect_genie_head" - group genie_arm_right prefix "arm_right" if_not ["arms_grab"]: + group genie_arm_right prefix "arm_right" if_not ["arms_grab", "touch_tits"]: # attribute idle "lun_inspect_genie_arm_right_idle" default # attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" default attribute touch_pussy "lun_inspect_arm_right_touch_pussy_alt" + attribute touch_pussy_pause "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0" attribute down null - group genie_arm_left prefix "arm_left" if_not ["arms_grab"]: + group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: attribute hold "lun_inspect_genie_arm_left_hold" default attribute touch_tit "lun_inspect_genie_arm_left_grab" @@ -657,7 +661,7 @@ layeredimage lun_inspect head_back_legs_together: attribute grab "lun_inspect_genie_arm_both_grab_tits" attribute touch_tits "lun_inspect_genie_arm_both_touch_tits" - attribute luna_bra "lun_inspect_head_back_legs_together_luna_bra_grab" if_any ["arms_grab"] + attribute luna_bra "lun_inspect_head_back_legs_together_luna_bra_grab" if_any ["arms_grab", "touch_tits"] always "lun_inspect_vignette" From 74d0c4b0d3f5a1ffd997f371d58b2fde8952440a Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Thu, 1 Feb 2024 11:34:16 +0100 Subject: [PATCH 064/249] Quality Assurance * Fixed touch_pussy filenames * Added touch_pussy_inserted frame --- ...t_genie_arm_right_touch_pussy_frame0.webp} | 0 ...t_genie_arm_right_touch_pussy_frame1.webp} | 0 ...right_spread_legs_touch_pussy_frame0.webp} | 0 ...right_spread_legs_touch_pussy_frame1.webp} | 0 game/scripts/cg/luna.rpy | 24 +++++++++++-------- 5 files changed, 14 insertions(+), 10 deletions(-) rename game/images/CG/lun_inspect/genie/alt/{lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp => lun_inspect_genie_arm_right_touch_pussy_frame0.webp} (100%) rename game/images/CG/lun_inspect/genie/alt/{lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp => lun_inspect_genie_arm_right_touch_pussy_frame1.webp} (100%) rename game/images/CG/lun_inspect/genie/{lun_inspect_genie_arm_right_touch_pussy_frame0.webp => lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp} (100%) rename game/images/CG/lun_inspect/genie/{lun_inspect_genie_arm_right_touch_pussy_frame1.webp => lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp} (100%) diff --git a/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame0.webp similarity index 100% rename from game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp rename to game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame0.webp diff --git a/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame1.webp similarity index 100% rename from game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp rename to game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame1.webp diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame0.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp similarity index 100% rename from game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame0.webp rename to game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame1.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp similarity index 100% rename from game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_pussy_frame1.webp rename to game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index d1b87799..61e74a23 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -461,7 +461,8 @@ layeredimage lun_inspect spread_legs: attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" attribute touch_pussy "lun_inspect_arm_right_touch_pussy" - attribute touch_pussy_pause "lun_inspect_genie_arm_right_touch_pussy_frame0" + attribute touch_pussy_pause "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0" + attribute touch_pussy_inserted "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" attribute down null group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: @@ -527,8 +528,9 @@ layeredimage lun_inspect legs_together: attribute idle "lun_inspect_genie_arm_right_idle" default attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" - attribute touch_pussy "lun_inspect_arm_right_touch_pussy" + attribute touch_pussy "lun_inspect_arm_right_touch_pussy_alt" attribute touch_pussy_pause "lun_inspect_genie_arm_right_touch_pussy_frame0" + attribute touch_pussy_inserted "lun_inspect_genie_arm_right_touch_pussy_frame1" attribute down null group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: @@ -591,7 +593,8 @@ layeredimage lun_inspect head_back_spread_legs: attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" default attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" attribute touch_pussy "lun_inspect_arm_right_touch_pussy" - attribute touch_pussy_pause "lun_inspect_genie_arm_right_touch_pussy_frame0" + attribute touch_pussy_pause "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0" + attribute touch_pussy_inserted "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" attribute down null group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: @@ -651,6 +654,7 @@ layeredimage lun_inspect head_back_legs_together: attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" default attribute touch_pussy "lun_inspect_arm_right_touch_pussy_alt" attribute touch_pussy_pause "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0" + attribute touch_pussy_inserted "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" attribute down null group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: @@ -666,15 +670,15 @@ layeredimage lun_inspect head_back_legs_together: always "lun_inspect_vignette" image lun_inspect_arm_right_touch_pussy: - "lun_inspect_genie_arm_right_touch_pussy_frame0" - pause 0.5 - "lun_inspect_genie_arm_right_touch_pussy_frame1" - pause 0.5 - repeat - -image lun_inspect_arm_right_touch_pussy_alt: "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0" pause 0.5 "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" pause 0.5 repeat + +image lun_inspect_arm_right_touch_pussy_alt: + "lun_inspect_genie_arm_right_touch_pussy_frame0" + pause 0.5 + "lun_inspect_genie_arm_right_touch_pussy_frame1" + pause 0.5 + repeat From 8598e58446a51386e544589829572d9806d0cdda Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Thu, 1 Feb 2024 11:41:25 +0100 Subject: [PATCH 065/249] Fix * Fixed naming "arms_touch_tits" naming in some places. --- game/scripts/cg/luna.rpy | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 61e74a23..5f2f4e7f 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -425,7 +425,7 @@ layeredimage lun_inspect spread_legs: always "lun_inspect_spread_legs_luna_hair_back" always "lun_inspect_spread_legs_luna_body" - attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "touch_tits"] + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "arms_touch_tits"] group luna_arm prefix "luna_arm" auto: attribute idle default @@ -435,7 +435,7 @@ layeredimage lun_inspect spread_legs: group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties - attribute bra if_not ["luna_shirt", "arms_grab", "touch_tits"] + attribute bra if_not ["luna_shirt", "arms_grab", "arms_touch_tits"] attribute shirt attribute skirt @@ -456,7 +456,7 @@ layeredimage lun_inspect spread_legs: always "lun_inspect_genie_head" - group genie_arm_right prefix "arm_right" if_not ["arms_grab", "touch_tits"]: + group genie_arm_right prefix "arm_right" if_not ["arms_grab", "arms_touch_tits"]: attribute idle "lun_inspect_genie_arm_right_idle" default attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" @@ -465,7 +465,7 @@ layeredimage lun_inspect spread_legs: attribute touch_pussy_inserted "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" attribute down null - group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: + group genie_arm_left prefix "arm_left" if_not ["arms_grab", "arms_touch_tits"]: attribute hold "lun_inspect_genie_arm_left_hold" default attribute touch_tit "lun_inspect_genie_arm_left_grab" @@ -475,7 +475,7 @@ layeredimage lun_inspect spread_legs: attribute genie_clothes_front "lun_inspect_genie_clothes" if_all ["genie_clothes"] default - attribute luna_bra "lun_inspect_spread_legs_luna_bra_grab" if_any ["arms_grab", "touch_tits"] + attribute luna_bra "lun_inspect_spread_legs_luna_bra_grab" if_any ["arms_grab", "arms_touch_tits"] always "lun_inspect_vignette" @@ -495,7 +495,7 @@ layeredimage lun_inspect legs_together: always "lun_inspect_legs_together_luna_hair_back" always "lun_inspect_legs_together_luna_body" - attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "touch_tits"] + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "arms_touch_tits"] group luna_arm prefix "luna_arm" auto: attribute idle default @@ -503,7 +503,7 @@ layeredimage lun_inspect legs_together: group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties - attribute bra if_not ["luna_shirt", "arms_grab", "touch_tits"] + attribute bra if_not ["luna_shirt", "arms_grab", "arms_touch_tits"] attribute shirt attribute skirt @@ -524,7 +524,7 @@ layeredimage lun_inspect legs_together: always "lun_inspect_genie_head" - group genie_arm_right prefix "arm_right" if_not ["arms_grab", "touch_tits"]: + group genie_arm_right prefix "arm_right" if_not ["arms_grab", "arms_touch_tits"]: attribute idle "lun_inspect_genie_arm_right_idle" default attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" @@ -533,7 +533,7 @@ layeredimage lun_inspect legs_together: attribute touch_pussy_inserted "lun_inspect_genie_arm_right_touch_pussy_frame1" attribute down null - group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: + group genie_arm_left prefix "arm_left" if_not ["arms_grab", "arms_touch_tits"]: attribute hold "lun_inspect_genie_arm_left_hold" default attribute touch_tit "lun_inspect_genie_arm_left_grab" @@ -543,7 +543,7 @@ layeredimage lun_inspect legs_together: attribute genie_clothes_front "lun_inspect_genie_clothes" if_all ["genie_clothes"] default - attribute luna_bra "lun_inspect_legs_together_luna_bra_grab" if_any ["arms_grab", "touch_tits"] + attribute luna_bra "lun_inspect_legs_together_luna_bra_grab" if_any ["arms_grab", "arms_touch_tits"] always "lun_inspect_vignette" @@ -561,7 +561,7 @@ layeredimage lun_inspect head_back_spread_legs: always "lun_inspect_head_back_spread_legs_luna_hair_back" always "lun_inspect_head_back_spread_legs_luna_body" - attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "touch_tits"] + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "arms_touch_tits"] group luna_arm prefix "luna_arm" auto: attribute idle default @@ -569,7 +569,7 @@ layeredimage lun_inspect head_back_spread_legs: group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties - attribute bra if_not ["luna_shirt", "arms_grab", "touch_tits"] + attribute bra if_not ["luna_shirt", "arms_grab", "arms_touch_tits"] attribute shirt attribute skirt @@ -588,7 +588,7 @@ layeredimage lun_inspect head_back_spread_legs: always "lun_inspect_genie_head" - group genie_arm_right prefix "arm_right" if_not ["arms_grab", "touch_tits"]: + group genie_arm_right prefix "arm_right" if_not ["arms_grab", "arms_touch_tits"]: # attribute idle "lun_inspect_genie_arm_right_idle" default attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" default attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" @@ -597,7 +597,7 @@ layeredimage lun_inspect head_back_spread_legs: attribute touch_pussy_inserted "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" attribute down null - group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: + group genie_arm_left prefix "arm_left" if_not ["arms_grab", "arms_touch_tits"]: attribute hold "lun_inspect_genie_arm_left_hold" default attribute touch_tit "lun_inspect_genie_arm_left_grab" @@ -605,7 +605,7 @@ layeredimage lun_inspect head_back_spread_legs: attribute grab "lun_inspect_genie_arm_both_grab_tits" attribute touch_tits "lun_inspect_genie_arm_both_touch_tits" - attribute luna_bra "lun_inspect_head_back_spread_legs_luna_bra_grab" if_any ["arms_grab", "touch_tits"] + attribute luna_bra "lun_inspect_head_back_spread_legs_luna_bra_grab" if_any ["arms_grab", "arms_touch_tits"] always "lun_inspect_vignette" @@ -621,7 +621,7 @@ layeredimage lun_inspect head_back_legs_together: always "lun_inspect_head_back_legs_together_luna_hair_back" always "lun_inspect_head_back_legs_together_luna_body" - attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "touch_tits"] + attribute breastfix "lun_inspect_background_breastfix" default if_any ["luna_bra", "arms_grab", "arms_touch_tits"] group luna_arm prefix "luna_arm" auto: attribute idle default @@ -629,7 +629,7 @@ layeredimage lun_inspect head_back_legs_together: group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties - attribute bra if_not ["luna_shirt", "arms_grab", "touch_tits"] + attribute bra if_not ["luna_shirt", "arms_grab", "arms_touch_tits"] attribute shirt attribute skirt @@ -648,7 +648,7 @@ layeredimage lun_inspect head_back_legs_together: always "lun_inspect_genie_head" - group genie_arm_right prefix "arm_right" if_not ["arms_grab", "touch_tits"]: + group genie_arm_right prefix "arm_right" if_not ["arms_grab", "arms_touch_tits"]: # attribute idle "lun_inspect_genie_arm_right_idle" default # attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" default @@ -657,7 +657,7 @@ layeredimage lun_inspect head_back_legs_together: attribute touch_pussy_inserted "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" attribute down null - group genie_arm_left prefix "arm_left" if_not ["arms_grab", "touch_tits"]: + group genie_arm_left prefix "arm_left" if_not ["arms_grab", "arms_touch_tits"]: attribute hold "lun_inspect_genie_arm_left_hold" default attribute touch_tit "lun_inspect_genie_arm_left_grab" @@ -665,7 +665,7 @@ layeredimage lun_inspect head_back_legs_together: attribute grab "lun_inspect_genie_arm_both_grab_tits" attribute touch_tits "lun_inspect_genie_arm_both_touch_tits" - attribute luna_bra "lun_inspect_head_back_legs_together_luna_bra_grab" if_any ["arms_grab", "touch_tits"] + attribute luna_bra "lun_inspect_head_back_legs_together_luna_bra_grab" if_any ["arms_grab", "arms_touch_tits"] always "lun_inspect_vignette" From 6c936ce5c4d40cfeb36858c584f870f75da9666e Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Thu, 1 Feb 2024 16:41:57 +0100 Subject: [PATCH 066/249] Luna Inspect body CG posing PT1 * Posed part of the events. * Fixed missing shading on "grab_tits" image. --- .../lun_inspect_genie_arm_both_grab_tits.webp | 4 +- game/scripts/cg/luna.rpy | 10 +- .../luna/events/favors/inspect_her_body.rpy | 146 ++++++++++++++---- 3 files changed, 124 insertions(+), 36 deletions(-) diff --git a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp index 2d140cc8..c791284b 100644 --- a/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp +++ b/game/images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d93e8b56992d2c19c8ef549740ed53647adc54cf5028e38ef96bf7b06372fbdf -size 182188 +oid sha256:bb50d6733bfddc5aa2329981a436c47e7211b1d97a042e024e567d026ecff668 +size 185358 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 5f2f4e7f..a3034666 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -374,27 +374,27 @@ image lun_grind_cumshot: "lun_grind_penis_grind_frame1", "lun_grind_cumshot_frame0") - pause 0.12 + pause 0.2 Fixed( "lun_grind_body_spread", "lun_grind_penis_grind_frame1", "lun_grind_cumshot_frame1") - pause 0.12 + pause 0.2 Fixed( "lun_grind_body_spread", "lun_grind_penis_grind_frame1", "lun_grind_cumshot_frame2") - pause 0.12 + pause 0.2 Fixed( "lun_grind_body_spread", "lun_grind_penis_grind_frame1", "lun_grind_cumshot_frame3") - pause 0.12 + pause 0.2 Fixed( "lun_grind_body_spread", @@ -408,8 +408,6 @@ image lun_grind_cumshot: "lun_grind_penis_grind_frame1", "lun_grind_cumshot_frame5") - pause 1 - repeat layeredimage lun_inspect spread_legs: fit "cover" diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index d0d725b5..b516bdca 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -42,7 +42,7 @@ label ll_pf_inspect_T2_E1_intro: call ll_pf_inspect gen "Ready for your physical, [name_luna_genie]?" ("grin", xpos="far_left", ypos="head") - lun "My physical, [name_genie_luna]?" ("open", "base", "raised", "mid") + lun "My physical, [name_genie_luna]?" ("open", "base", "raised", "mid", xpos="base", ypos="base", trans=d3) gen "Your inspection!" ("grin", xpos="far_left", ypos="head") lun "Oooh...{w=0.3} The inspection!" ("grin", "base", "base", "mid") lun "Yes, I'm ready!" ("base", "base", "base", "mid") @@ -394,7 +394,7 @@ label ll_pf_inspect_T2_E2_intro: call ll_pf_inspect gen "Alright, time to give those spurts a run for their money..." ("base", xpos="far_left", ypos="head") - lun "Finally!" ("clench", "narrow", "base", "down") + lun "Finally!" ("clench", "narrow", "base", "down", xpos="base", ypos="base", trans=d3) gen "Now, are you sure you're ready for this--" ("base", xpos="far_left", ypos="head") if luna.is_any_worn("robe", "accessory"): @@ -458,62 +458,137 @@ label ll_pf_inspect_T2_E2_intro: nar "You get out of your clothes, as Luna rushes up to you..." nar "Without any further instructions, she plants her cheeks firmly in your lap, waiting for your next move expectantly." - #TODO Luna CG in Genie lap + #Luna CG in Genie lap + if game.daytime: + show lun_inspect legs_together eyes_closed as cg zorder 16 + else: + show lun_inspect legs_together eyes_closed as cg zorder 16 at color_temperature(1.0) + hide screen blkfade with d5 nar "Before moving on, you can't help but pick up the sounds of her shallow breaths and the unusual warmth, despite her current state of undress, coming off her body." nar "You feel your cock twitch slightly, as if signalling your eagerness to let it press up in between the girl's cheeks." gen "*Ahem*...{w=0.4} So...{w} The sensitive areas we discussed previously." + + show lun_inspect mouth_soft as cg with d3 + lun "*Mmm*..." gen "[name_luna_genie]?" + + show lun_inspect eyes_halflid_up mouth_base as cg with d3 + lun "(His breath on the back of my neck... It's making me all tingly again...)" - gen "Luna?" ("base", xpos="far_left", ypos="head") + gen "Luna?" gen "I guess we'll start with your breasts then..." - #Pose + show lun_inspect arms_touch_tits eyebrows_shocked eyes_wide_up mouth_grin as cg with d3 lun "Ooooh!" + + show lun_inspect eyebrows_base eyes_base_stare as cg with d3 + + gen "*Hmm*... You're remarkably more sensitive than I thought..." + + show lun_inspect eyebrows_raised eyes_base_right mouth_open as cg with d3 + + lun "I am? Is that a good thing?" + gen "It certainly shows great promise..." + + show lun_inspect eyebrows_base eyes_base_down mouth_base as cg with d3 + + lun "I'm glad..." + gen "Now then... Let's try something..." + + show lun_inspect eyes_base_right mouth_open as cg with d3 + + lun "What are you--" + + show lun_inspect arms_grab eyebrows_angry eyes_closed mouth_grin as cg with d3 + lun "*Ah*...{w=0.8}{nw}" + show lun_inspect arms_touch_tits eyebrows_base as cg + + lun "*Ah*...{fast}{w=0.4}{nw}" + + show lun_inspect eyes_halflid_down as cg + + lun "*Ah*...{fast}" nar "You give Luna's breasts a light squeeze, which causes a shudder to go down her spine..." gen "How did that feel?" + + show lun_inspect eyes_halflid_right blush mouth_base as cg with d3 + lun "*Ehm*..." gen "Good?" - lun "I...{w=0.4} Yes...{w=0.4} I wasn't sure if good was the right word--" + + show lun_inspect eyebrows_shocked eyes_base_down as cg with d3 + + lun "I...{w=0.4} Yes...{w=0.4} I wasn't sure if \"good\" was the right word--" gen "Excellent...{w=0.4} Then focus on that feeling..." - #Pose + show lun_inspect arms_grab eyebrows_base eyes_closed as cg with d3 - nar "You begin kneading Luna's breasts... Her nipples firmly locked between your fingers." + nar "You begin kneading Luna's breasts... Her nipples gracing the sides your fingers." + + show lun_inspect mouth_soft as cg with d3 lun "*Ah*..." + + show lun_inspect eyes_halflid_right mouth_soft as cg with d3 + lun "[name_genie_luna]...{w=0.4} I think it's working...{w=0.4} I feel a lot more sensitive than before..." + + show lun_inspect arms_touch_tits as cg with d3 gen "Good...{w=0.4} That means the spurts are building up." + + show lun_inspect mouth_base as cg with d3 + lun "*Ah*...{w=0.4} Finally...{w=0.4} Keep going, [name_genie_luna]..." nar "You stop your kneading and give her another squeeze, just slightly harder than previously." - #Ass shot Overlay, cock against butthole + show lun_inspect arms_grab eyebrows_angry eyes_base_stare mouth_grin as cg with d3 + pause 0.4 + show lun_inspect -arms_grab arm_right_down arm_left_hold eyebrows_base eyes_base_stare mouth_open as cg with d3 - nar "Luna tightens her thighs around your legs, and subconsciously pushes her ass back towards your abdomen." + nar "As you do, Luna jerks her body, and you quickly let go of her breasts." + + #Ass shot Overlay + #TODO add dark overlay across base CG + show lun_inspect as cg zorder 15 + #TODO cock against butthole + if game.daytime: + show lun_grind grind as cg2 zorder 16 + with d4 + else: + show lun_grind grind as cg2 zorder 16 at color_temperature(1.0) + with d4 + + nar "Suddenly, Luna's thighs tighten around your legs, as she pushes her ass back towards your abdomen." nar "Her cheeks lightly grace your hardening cock, and as they do, it manages to wiggle its way to rest against her butthole." + nar "Luna, doesn't seem to care that you've let go of her breasts and is instead staring intently into your eyes." - lun "*Mmm*...{w=0.4} [name_genie_luna]..." - gen "You're doing a great job [name_luna_genie]..." - gen "Make sure to keep focusing on that feeling." - lun "[name_genie_luna], I think I feel something--" + lun "[name_genie_luna]..." + lun "[name_genie_luna], I think I'm sensing something different..." + + nar "As Luna calls for you, a pulse races down your cock, tickling her tight butthole." lun "*Ah*..." - nar "As Luna lets out another moan, she puts more of her weight onto you, heightening the pleasurable sensation at the tip of your cock." + nar "As Luna lets out another moan, she instinctively puts more of her weight onto you, heightening the pleasurable sensation at the tip of your cock." - gen "*Ngh*--" + #TODO spreads ass while dick pokes butthole + gen "(*Ngh*... If only I could--)" + + #TODO Penis tip springs up behind butthole, and scene continues to grinding animation + play sound "sounds/boing02.ogg" nar "Just as you start feeling yourself getting engulfed, Luna starts rubbing her ass against you, causing your cock to slide out and rest against her back." + call ctc lun "*Ah*...{w=0.4} Yes, I'm definitely feeling something...{w=0.4} *Mmm*..." lun "But I'm not sensing that--{w=0.2} *Ah*...{w=0.4} Relief you mentioned..." lun "My body still feels as if--{w=0.2} *Ah*...{w=0.4} As if I'm on fire, [name_genie_luna]..." - gen "(If this keeps going, then this bitch in heat will make me bust before she does...)" lun "I think something is happening...{w=0.4} I feel woozy, [name_genie_luna]..." @@ -523,29 +598,40 @@ label ll_pf_inspect_T2_E2_intro: nar "Luna's cheeks pushes against your cock once more, which is enough to bring you over the edge." - gen "*ARGH*!!!" gen "(You've done it now slut!)" gen "(Take this!)" + gen "*ARGH*!!!" - #Pose Genie cums + show lun_grind cumshot as cg2 with d3 + pause 1 - nar "With a rush of pleasure, you unload a torrent of semen across Lunas back, completely covering it with your seed." - - lun "(What's he--)" + nar "You grab Luna's ass, and as a rush of of pleasure courses through your body, you unload a torrent of semen all over it." + lun "(What did he just--)" gen "*Ah*..." - nar "And with a soft groan, you let out a final spurt, emptying your entire sack on the girl..." nar "Returning to your senses, you watch as your semen slowly begins sliding down her crack." - #Back to Base CG or start blkfade here + show lun_inspect eyebrows_shocked eyes_halflid_right as cg + hide cg2 with d3 + #TODO hide dark overlay gen "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." + + show lun_inspect eyebrows_worried eyes_halflid_down mouth_soft as cg with d3 + lun "[name_genie_luna], I think...{w=0.4} I feel a bit faint..." gen "*Ah*...{w=0.4} No, you just need to--{w=0.2} *Ah*...{w=0.4} To push through--" + + show lun_inspect eyebrows_worried eyes_halflid_right mouth_open as cg with d3 lun "No [name_genie_luna]...{w=0.4} It's as if a chill is going down my spine...{w=0.4} It doesn't feel right." + + show lun_inspect eyes_halflid_down as cg with d3 lun "It's nowhere near the feeling of relief that you described..." + gen "*Err*...{w=0.4} Well I--" + + show lun_inspect eyes_closed mouth_soft as cg with d3 lun "I think I need to--" gen "No, wait!" @@ -553,9 +639,10 @@ label ll_pf_inspect_T2_E2_intro: with d5 nar "Luna, now shaking slightly, stands up and makes her way to the front of your desk, leaving a noticeable wet streak across your legs." - nar "You both begin begin dressing yourselves, and you can't help but notice that Luna is keeping her eyes on the floor the entire time." + nar "You both begin dressing yourselves, and you can't help but notice that Luna is keeping her eyes on the floor the entire time." $ luna.wear("all") hide luna_main + hide cg call lun_chibi("stand", "desk", "base") hide screen blkfade @@ -647,7 +734,7 @@ label ll_pf_inspect_T2_E3_intro: call ll_pf_inspect gen "Ready for another attempt?" ("base", xpos="far_left", ypos="head") - lun "I...{w=0.3} Yes [name_genie_luna], I believe so..." ("open", "narrow", "base", "downL") + lun "I...{w=0.3} Yes [name_genie_luna], I believe so..." ("open", "narrow", "base", "downL", xpos="base", ypos="base", trans=d3) #Luna walks towards desk and it fades to black call lun_walk("desk") @@ -778,6 +865,9 @@ label ll_pf_inspect_T2_E3_intro: lun "Ooooh!" nar "A shudder passes through Luna's body from your initial touch." + + show lun_inspect legs_together arm_right_touch_pussy as cg with d3 #fingering loop + nar "You then begin moving your forefinger up and down her slit with increasing ease, as her pussy becomes wetter and wetter." lun "*Ah*...{w=0.4} [name_genie_luna]...{w=0.4} This feels a lot different to you--{w=0.2} *Ah*...{w=0.4} Touching my breasts..." @@ -946,7 +1036,7 @@ label ll_pf_inspect_T2_E4_repeat: gen "How are you feeling, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") gen "Have those spratters been bothering you any further?" ("base", xpos="far_left", ypos="head") - lun "I'm feeling a little bit better, [name_genie_luna]." ("soft", "narrow", "low", "down") + lun "I'm feeling a little bit better, [name_genie_luna]." ("soft", "narrow", "low", "down", xpos="base", ypos="base", trans=d3) lun "Although I began feeling them move around again once I was on the way to my dorm, just thinking about our last session." ("upset", "narrow", "base", "downL") gen "Well, that's to be expected." ("base", xpos="far_left", ypos="head") @@ -1333,7 +1423,7 @@ label ll_pf_inspect_T4_E1_repeat: call ll_pf_inspect gen "Need a hand?" ("base", xpos="far_left", ypos="head") - lun "A hand, [name_genie_luna]?" ("base", "base", "base", "mid") + lun "A hand, [name_genie_luna]?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "I thought you might be feeling the effects of the spurts... So, I figured you might want to sit in my lap and let me help you out for a bit." ("base", xpos="far_left", ypos="head") lun "But, didn't you already teach me how to take care of them myself?" ("base", "base", "base", "mid") gen "Yes, and I'm sure you've had a lot of practice, but since I'm available, there's the option of me helping out..." ("base", xpos="far_left", ypos="head") From 40d782db77c1a09ce654117b3a36eb3eb6d3a1be Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Fri, 2 Feb 2024 18:44:11 +0100 Subject: [PATCH 067/249] Luna Inspect body CG posing PT2 * Posed part of the events. --- game/scripts/cg/luna.rpy | 4 +- .../luna/events/favors/inspect_her_body.rpy | 241 ++++++++++++++++-- 2 files changed, 215 insertions(+), 30 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index a3034666..bd9fc5b2 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -651,8 +651,8 @@ layeredimage lun_inspect head_back_legs_together: # attribute touch_mound "lun_inspect_genie_arm_right_touch_mound" attribute touch_tit "lun_inspect_genie_arm_right_touch_tit" default attribute touch_pussy "lun_inspect_arm_right_touch_pussy_alt" - attribute touch_pussy_pause "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0" - attribute touch_pussy_inserted "lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1" + attribute touch_pussy_pause "lun_inspect_genie_arm_right_touch_pussy_frame0" + attribute touch_pussy_inserted "lun_inspect_genie_arm_right_touch_pussy_frame1" attribute down null group genie_arm_left prefix "arm_left" if_not ["arms_grab", "arms_touch_tits"]: diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index b516bdca..de009aca 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -743,111 +743,238 @@ label ll_pf_inspect_T2_E3_intro: nar "As you disrobe, Luna absent-mindedly walks up and scoots in front of you." + #Luna CG in Genie lap + + if luna.is_worn("top"): + show lun_inspect spread_legs shirt as cg + else: + show lun_inspect spread_legs bra as cg + if luna.is_worn("bottom"): + show lun_inspect spread_legs skirt as cg + if luna.is_worn("stockings"): + show lun_inspect spread_legs stockings as cg + + if game.daytime: + show lun_inspect spread_legs eyebrows_worried eyes_halflid_stare mouth_soft bra panties arm_right_down as cg + else: + show lun_inspect spread_legs eyebrows_worried eyes_halflid_stare mouth_soft bra panties arm_right_down as cg at color_temperature(1.0) + hide screen blkfade with d5 #TODO Luna on lap CG, either check clothing status or not, depending what works best, (she will always wear underwear at this stage.) gen "*Err*...{w=0.3} I think you've forgotten something, [name_luna_genie]." + + show lun_inspect eyebrows_shocked eyes_halflid_right as cg with d3 lun "*Huh*?" - if luna.is_any_worn("top", "bottom", "robe", "stockings"): + if luna.is_any_worn("top", "bottom", "stockings"): gen "Your clothes..." else: gen "Your underwear..." + show lun_inspect eyebrows_base eyes_halflid_down mouth_open as cg with d3 + lun "Oh...{w=0.3} Right..." gen "You seem awfully distracted today." + + show lun_inspect eyebrows_worried eyes_halflid_down mouth_annoyed as cg with d3 + lun "*Ehm*...{w=0.3} To tell you the truth...{w=0.3} I'm a bit worried that it's not going to work again, [name_genie_luna]." gen "Now, I wouldn't worry about that...{w=0.3} I'm confident it will work this time." + + show lun_inspect eyes_base_right as cg with d3 + lun "But how can you be so sure, [name_genie_luna]?" + + show lun_inspect eyebrows_base mouth_open as cg with d3 + lun "Maybe it's different for us women, maybe we aren't able to expel the wrackspurts like you men do." gen "I'm quite certain that the process isn't too dissimilar...{w=0.3} I'm confident that with my help--" + + show lun_inspect eyebrows_worried as cg with d3 + lun "But {i}how{/i} do you know, [name_genie_luna]?" - gen "Just trust me on this one [name_luna_genie]." + gen "Just trust me on this one, [name_luna_genie]." + + show lun_inspect eyes_halflid_down mouth_neutral as cg with d3 + lun "*Hmm*..." gen "(She doesn't seem convinced.)" gen "(Oh, wait...{w=0.3} I know!)" - gen "*Ahem*...{w=0.3} [name_luna_genie]?" + + show lun_inspect mouth_open as cg with d3 + lun "Yes [name_genie_luna]?" gen "Tell me...{w=0.3} How were those spratters described in your father's paper again?" - lun "Let me think.{w=0.5} They're invisible creatures that enter inside your ears and make your brain go all fuzzy." + + show lun_inspect eyebrows_raised mouth_soft as cg with d3 + + lun "Let me think...{w=0.5} They're invisible creatures that enter inside your ears and make your brain go all fuzzy." gen "And...{w=0.3} Wasn't there an instruction on how to expel them?" + + show lun_inspect eyebrows_shocked eyes_base_down as cg with d3 + lun "Why yes, by thinking positively..." + + show lun_inspect eyes_base_right mouth_annoyed as cg with d3 + lun "But that's not working, [name_genie_luna]...{w=0.3} It isn't my brain that's getting all fuzzy because of them..." gen "Then tell me...{w=0.3} What else have we learned about them thus far?" + + show lun_inspect eyes_base_up as cg with d3 + lun "*Uhm*..." + + show lun_inspect eyes_base_right mouth_open as cg with d3 + lun "We have learned that you can lure them out to a particularly sensitive body area, through positive thoughts. Then, you need to rub that spot energetically to finally expel them..." + + show lun_inspect eyebrows_angry eyes_halflid_right mouth_open as cg with d3 + lun "But we have already tried that [name_genie_luna], and it didn't work!" gen "I managed to do it by myself...{w=0.3} So you must have done something wrong..." + + show lun_inspect eyes_halflid_down mouth_annoyed as cg with d3 + lun "*Hmm*..." gen "(Putting the pieces together...{w=0.3} And...)" + + show lun_inspect eyebrows_shocked eyes_wide_stare mouth_open as cg with d3 + lun "Oh! I know!" + + show lun_inspect eyes_wide_right as cg with d3 + lun "I was possibly thinking too much about the wrackspurts, and how glad I'd be to finally get rid of them." + + show lun_inspect eyebrows_base eyes_base_right mouth_base as cg with d3 + lun "What I should have done instead was project positive thoughts onto the area itself!" gen "Exactly!" gen "Ignore intrusive thoughts that may pop into your head, and just focus on your body, on how it feels..." gen "Let the sensations engulf you completely, until your mind is clear..." - gen "Leave the rest to the fate..." + gen "Leave the rest to fate..." + + show lun_inspect mouth_grin as cg with d3 + lun "That's smart, [name_genie_luna], maybe I should try that." gen "Now then... Ready for another try?" + + show lun_inspect eyes_base_down mouth_base as cg with d3 + lun "Yes, I'm ready [name_genie_luna]!" - if luna.is_any_worn("robe", "top", "bottom", "stockings"): + if luna.is_any_worn("top", "bottom", "stockings"): gen "Let's get you out of those clothes first, shall we..." else: gen "Now, let me help you get you out of those pesky undergarments..." - if luna.is_any_worn("robe", "top", "bottom", "stockings"): + if luna.is_any_worn("top", "bottom", "stockings"): + show lun_inspect eyebrows_angry mouth_annoyed as cg with d3 + nar "Luna shuffles around for a bit, attempting to get out of her clothing. The limited space between you and the desk is making it somewhat difficult." + show lun_inspect eyebrows_base eyes_halflid_down mouth_soft as cg with d3 + lun "It's a bit cramped in here, [name_genie_luna]...{w=0.4} Should I scoot out and--" gen "No, that won't be necessary, [name_luna_genie]...{w=0.4} Let me help you." - - #if luna.is_worn("robe"): - #nar "You unclasp Luna's outerwear and let it drop to the ground." + else: + gen "Allow me..." if luna.is_worn("top"): nar "You swiftly pull Luna's top over her head...{w=0.4} Her breasts bounce a little, then settle still as the offending piece of clothing is taken off." + + play sound "sounds/cloth_sound3.ogg" play sound "sounds/boing02.ogg" + show lun_inspect spread_legs eyes_wide_down mouth_open -shirt as cg with d3 pause .4 lun "Whoa!" #Luna always wears underwear at this stage nar "You unhook Luna's bra with ease, and let it drop to the floor, right in front of her." + play sound "sounds/cloth_sound3.ogg" + show lun_inspect spread_legs -bra as cg with d3 + + show lun_inspect spread_legs blush eyes_halflid_right mouth_soft as cg with d3 + nar "She glances back at you, her cheeks flushed, and a look of surprise painted across her face, caused by your unusual dexterity." + show lun_inspect spread_legs mouth_open as cg with d3 + lun "Have you done this before, [name_genie_luna]?" gen "Let's not make this about me, [name_luna_genie]. Free your mind of intrusive thoughts." + + show lun_inspect spread_legs eyes_halflid_down mouth_base as cg with d3 lun "Okay, I'll try." if luna.is_worn("bottom", "panties"): - nar "Noticing Luna's ever-increasing excitement, you put your hands on either side of her hips, and pull both fabrics down, in one singular motion..." - $ luna.strip("bottom", "panties") + nar "Noticing Luna's ever-increasing excitement, you put your hands on either side of her hips and pull both fabrics down, in one singular motion..." + play sound "sounds/cloth_sound3.ogg" + show lun_inspect spread_legs -skirt -panties as cg with d3 + pause 0.5 elif luna.is_worn("panties"): nar "You ogle at Luna's underwear, before swiftly pulling them down right to her ankles..." + play sound "sounds/cloth_sound3.ogg" + show lun_inspect spread_legs -panties as cg with d3 + pause 0.5 + + + show lun_inspect spread_legs eyebrows_shocked eyes_wide_down mouth_open as cg with d3 lun "[name_genie_luna]!" gen "Yes, [name_luna_genie]?" + + show lun_inspect spread_legs eyebrows_base eyes_halflid_left mouth_soft as cg with d3 + lun "*Ehm*...{w=0.4} Never mind..." gen "Okay. In that case, let the exorcism commence--." gen "--*Err*, I mean the expulsion." - lun "..." + if luna.is_worn("stockings"): + + show lun_inspect spread_legs eyebrows_raised eyes_halflid_right as cg with d3 + + lun "What about my socks?" + gen "Your--{w=0.2} Oh, right! Get those grippers out for me, will you?" + + show lun_inspect spread_legs eyebrows_raised eyes_halflid_down as cg with d3 + + nar "Luna looks slightly confused for a second about what you meant, but then she shrugs it off and quickly takes off her socks..." + play sound "sounds/cloth_sound3.ogg" + show lun_inspect spread_legs -stockings as cg with d3 + + else: + show lun_inspect spread_legs eyebrows_raised eyes_halflid_down as cg with d3 + lun "..." + + show lun_inspect spread_legs eyebrows_shocked eyebrows_shocked eyes_wide_stare arms_grab mouth_grin as cg with d3 nar "Without hesitation, you reach forward and grab and start fondling Luna's breasts." + + show lun_inspect spread_legs eyebrows_base eyes_halflid_stare mouth_base as cg with d3 + nar "As she feels your touch, any doubts in Luna's mind are washed away, letting the sensations overtake her." + show lun_inspect spread_legs eyes_closed mouth_soft as cg with d3 + lun "*Ah*...{w=0.4} [name_genie_luna]..." + show lun_inspect spread_legs arms_touch_tits as cg with d3 + nar "You move your attention towards Luna's sensitive areas... Gently sliding your fingers across her nipples, then across the sides of her breasts and back again." + show lun_inspect spread_legs eyebrows_worried mouth_base as cg with d3 + lun "*Mmm*..." nar "You continue massaging Luna's breasts and the silence is only broken by her moans as your fingers pass across her nipples." + show lun_inspect spread_legs mouth_open as cg with d3 + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Mmmm*..." nar "Luna, getting more and more excited by your touch, pushes her ass towards you once more." @@ -855,115 +982,170 @@ label ll_pf_inspect_T2_E3_intro: gen "(Nnnn-{w=0.2} Not today!)" + show lun_inspect legs_together mouth_soft as cg with d3 + nar "Determined to keep your composure this time, you move your gaze down to see Luna rubbing her thighs together." gen "(Well then...{w=0.4} Looks like she's ready.)" + show lun_inspect legs_together -arms_touch_tits arm_right_down arm_left_hold eyes_halflid_right as cg with d3 + nar "As you remove your hands from Luna's breasts, she opens her eyes, confused as to why you stopped." + + show lun_inspect legs_together arm_right_touch_pussy_pause as cg with d3 + nar "Without saying anything, you place your hand across her pussy, and give it a gentle rub." - lun "Ooooh!" + show lun_inspect legs_together eyebrows_shocked eyes_wide_stare mouth_grin as cg with d3 + lun "Ooooh!" nar "A shudder passes through Luna's body from your initial touch." show lun_inspect legs_together arm_right_touch_pussy as cg with d3 #fingering loop nar "You then begin moving your forefinger up and down her slit with increasing ease, as her pussy becomes wetter and wetter." + show lun_inspect legs_together eyebrows_base eyes_base_right as cg with d3 lun "*Ah*...{w=0.4} [name_genie_luna]...{w=0.4} This feels a lot different to you--{w=0.2} *Ah*...{w=0.4} Touching my breasts..." - gen "(You ain't seen nothing yet...)" ("base", xpos="far_left", ypos="head") + gen "(You ain't seen nothing yet...)" + + show lun_inspect legs_together eyes_closed mouth_base as cg with d3 + pause 1 nar "As you continue rubbing her, the excitement in her voice gnaws at your steadily decreasing patience..." - lun "*Ah*...{w=0.3} *Ah*...{w=0.3} *Ah*..." - gen "Ready, [name_luna_genie]?" + show lun_inspect spread_legs arm_right_touch_pussy_pause as cg with d3 + nar "As if by instinct, Luna spreads her legs once more, allowing you even easier access." + gen "Ready, [name_luna_genie]?" + lun "*Mmm*..." gen "[name_luna_genie]?" gen "..." gen "(Fuck it...)" play sound "sounds/slick_02.ogg" + show lun_inspect legs_together arm_right_touch_pussy_inserted eyebrows_shocked eyes_wide_stare mouth_open as cg with d3 with kissiris pause .5 - lun "..." lun "[name_genie_luna]!" + nar "As you begin penetrating Luna with your index finger, she clenches her legs together in surprise." - nar "As you penetrate Luna with your index finger, she clenches her legs together in surprise." + show lun_inspect legs_together eyebrows_base eyes_wide_right mouth_soft as cg with d3 lun "[name_genie_luna]...{w=0.4} Your finger slipped inside of me..." gen "I know..." lun "What do you--" play background "sounds/slickloop.ogg" fadein 2 + show lun_inspect legs_together arm_right_touch_pussy as cg with d3 + nar "You begin moving your finger inside of Luna, slowly increasing the pace, her words are soon replaced by the sounds of increasing pleasure." + show lun_inspect legs_together eyes_closed mouth_open as cg with d3 + lun "*Ah*...{w=0.4} My word...{w=0.3} *Ah*...{w=0.4} I never...{w=0.3} *Ah*..." gen "(*Hmm*...{w=0.4} Perhaps I shouldn't go so hard on her...)" stop background fadeout 2 - nar "You stop your movement for a second to give Luna some breathing room, but as you do, she starts moving her hips back and forth on her own." + + show lun_inspect spread_legs arm_right_touch_pussy_pause mouth_soft as cg with d3 + nar "You stop your movement for a second to give Luna some breathing room, but as you do, she spreads her legs once more." gen "(Never mind, then...)" gen "*Tsk*... Such impatience with the youths these days..." + + show lun_inspect spread_legs eyes_halflid_down as cg with d3 + lun "..." - gen "Very well [name_luna_genie]..." + gen "Very well, [name_luna_genie]..." gen "In that case, I won't hold back on you." play sound "sounds/slick_02.ogg" + show lun_inspect spread_legs arm_right_touch_pussy_inserted eyes_halflid_up mouth_open_tongue as cg with d3 with kissiris + pause 1 lun "*Ah*!!!" play background "sounds/slickloopfast.ogg" - nar "You insert another finger and begin pumping them in and out, the walls of her pussy clinging onto your fingers with each insertion." + show lun_inspect spread_legs arm_right_touch_pussy as cg with d3 + nar "You insert a finger and begin pumping it in and out, the walls of her pussy clinging on to it with each insertion." + pause 1 + + show lun_inspect spread_legs eyes_halflid_up as cg with d3 lun "*Ah*...{w=0.3} *Ah*...{w=0.3} *Ah*..." nar "Luna, now completely lost in pleasure, begins shaking slightly, prompting you to pick up the pace even further." play background "sounds/slickloopveryfast.ogg" + show lun_inspect spread_legs mouth_open as cg with d3 + lun "[name_genie_luna]...{w=0.3} This...{w=0.3} is...{w=0.3} amazing...{w=0.3} I... {w=0.3} never...{w=0.3} thought--" gen "Then don't...{w=0.3} Focus on the feeling!" + + show lun_inspect spread_legs eyes_halflid_down as cg with d3 + lun "*Ah*...{w=0.3} Yes...{w=0.3} [name_genie_luna]." + + show lun_inspect spread_legs eyes_closed mouth_soft as cg with d3 + lun "*N-n-ngh*!!!" - nar "Not showing her any mercy, you continue pumping your fingers in and out of her rapidly." + nar "Not showing her any mercy, you continue pumping your finger in and out of her rapidly." + + show lun_inspect spread_legs eyebrows_worried mouth_open as cg with d3 lun "*Ah*...{w=0.5} [name_genie_luna]...{w=0.4} I think this is it!" + + show lun_inspect spread_legs eyebrows_angry as cg with d3 + lun "I'm...{w=0.3} *Ah*...{w=0.3} I'm--" gen "Yes girl, let all of it out!" - nar "You insert your fingers one last time... As Luna's body finally gives in, her entire weight drops onto your hand and your fingers penetrates her down to the base." + show lun_inspect legs_together arm_right_touch_pussy_inserted eyebrows_worried mouth_grin as cg with d3 + nar "You insert your fingers one last time... As Luna's body finally gives in, she locks her legs onto your hand and your finger penetrates her down to the base." + + show lun_inspect legs_together eyebrows_angry eyes_base_up as cg with d3 lun "I'm cumming!!" + + show lun_inspect legs_together eyes_closed as cg with d3 lun "*Nngh*...{w=0.8}{nw}" with kissiris stop background fadeout 2 play sound "sounds/slick_01.ogg" - lun @ cheeks blush "*Nngh*...{fast} *Ah*!" + + show lun_inspect head_back_legs_together eyes_base_up mouth_open_ahegao as cg with d3 + lun "*Nngh*...{fast} *Ah*!" gen "(By the great--)" with kissiris play sound "sounds/slick_01.ogg" + show lun_inspect head_back_legs_together eyes_base_up_hearts mouth_open_ahegao_spit as cg with d3 + lun "*AAAAAH*!!!" nar "Your fingers now locked inside of Luna, you feel her entire body spasms as wave after wave of pleasure passes through her body." + + show lun_inspect legs_together eyes_closed mouth_base as cg with d3 + nar "Finally after the last wave hits her, she settles down..." lun "Wow...{w=0.5} That was--{w=0.8}{nw}" with kissiris play sound "sounds/slick_01.ogg" + show lun_inspect legs_together eyes_halflid_up mouth_grin as cg lun "Wow... That was--{fast} *Ah*..." + show lun_inspect legs_together eyes_closed as cg with d3 lun "*Mmm*...{w=0.4} You were right...{w=0.3} That...{w=0.3} That relief..." show screen blkfade with d5 - #TODO hide CG - nar "Luna attempts to stand up, but her legs give way, and she slumps forward onto your desk, completely limp." nar "Luckily her grip around your fingers finally loosens enough for you to free yourself, and you swiftly pull them out, which causes her to shudder once more." @@ -979,6 +1161,7 @@ label ll_pf_inspect_T2_E3_intro: centered "{size=+7}{color=#cbcbcb}Some time later...{/color}{/size}" call lun_chibi("stand", "desk", "base") + hide cg hide screen blkfade with d5 @@ -1131,10 +1314,12 @@ label ll_pf_inspect_T2_E4_repeat: nar "Taking it as a challenge, you insert your fingers all the way in, which proves to be enough for the girl." - #ahegao pose + #ahegao pose spread legs lun @ cheeks blush "*Ah*...{w=0.2} No...{w=0.3} I'm cumming!!" ("clench", "happyCl", "worried", "mid") + #squirt + with kissiris play sound "sounds/slick_01.ogg" From 042846b92854e82b1cdf1e5f516dbef47ef5296e Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sat, 3 Feb 2024 21:36:26 +0000 Subject: [PATCH 068/249] Quality Assurance and Bug fix * Added two penis positions for grinding CG * Fixed nickname reference during Hermione's titjob favour --- .../lun_grind_penis_tease_frame0.webp | 3 +++ .../lun_grind_penis_tease_frame1.webp | 3 +++ game/scripts/cg/luna.rpy | 27 ++++++++++++++++--- .../events/favors/give_me_a_tittyjob.rpy | 2 +- 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 game/images/CG/lun_grind/lun_grind_penis_tease_frame0.webp create mode 100644 game/images/CG/lun_grind/lun_grind_penis_tease_frame1.webp diff --git a/game/images/CG/lun_grind/lun_grind_penis_tease_frame0.webp b/game/images/CG/lun_grind/lun_grind_penis_tease_frame0.webp new file mode 100644 index 00000000..2c70e789 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_penis_tease_frame0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a39639b8587133c4f55c521136d998ef8172ec58ed10ec8266d6048ec523e367 +size 68994 diff --git a/game/images/CG/lun_grind/lun_grind_penis_tease_frame1.webp b/game/images/CG/lun_grind/lun_grind_penis_tease_frame1.webp new file mode 100644 index 00000000..1d079dd9 --- /dev/null +++ b/game/images/CG/lun_grind/lun_grind_penis_tease_frame1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:103954709faa7daf5990443dbe5483a04f78463465d3eb1a43c5a571b724b15e +size 65446 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index bd9fc5b2..dd99de3d 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -340,15 +340,22 @@ layeredimage lun_grind: group body: attribute idle "lun_grind_idle" default - attribute grind "lun_grind_grind" - attribute spread "lun_grind_spread" - attribute cumshot "lun_grind_cumshot" + attribute grind "lun_grind_grind" # animation + attribute spread "lun_grind_spread" # animation + attribute cumshot "lun_grind_cumshot" # animation + attribute resting "lun_grind_resting" + attribute tease "lun_grind_tease" # animation image lun_grind_idle: Fixed( "lun_grind_body_idle", "lun_grind_penis_grind_frame0") +image lun_grind_resting: + Fixed( + "lun_grind_body_idle", + "lun_grind_penis_tease_frame0") + image lun_grind_grind: Fixed( "lun_grind_body_idle", @@ -363,6 +370,20 @@ image lun_grind_grind: pause 0.44 repeat +image lun_grind_tease: + Fixed( + "lun_grind_body_idle", + "lun_grind_penis_tease_frame0") + + pause 0.44 + + Fixed( + "lun_grind_body_grind", + "lun_grind_penis_tease_frame1") + + pause 0.44 + repeat + image lun_grind_spread: Fixed( "lun_grind_body_spread", diff --git a/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy b/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy index 220d0e09..ab71bb33 100644 --- a/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy +++ b/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy @@ -993,7 +993,7 @@ label hg_pf_titjob_2_continue: her "And that's about--" ("base", "narrow", "worried", "down") gen "And your friends... Tell me about your friends..." ("base", xpos="far_left", ypos="head") her "My friends?!" ("angry", "narrow", "worried", "mid") - gen "Yes, [name_genie_hermione], your friends... Tell me how you use those tits to tease them..." ("base", xpos="far_left", ypos="head") + gen "Yes, [name_hermione_genie], your friends... Tell me how you use those tits to tease them..." ("base", xpos="far_left", ypos="head") her "But..." ("angry", "narrow", "worried", "mid") gen "Anything... Just say anything that you can think of..." ("base", xpos="far_left", ypos="head") her "Alright... Give me a moment to think..." ("angry", "narrow", "worried", "mid") From 45ddbb73218c0ffc94e767dbe03c473d8458f874 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Mon, 5 Feb 2024 18:00:43 +0100 Subject: [PATCH 069/249] Luna Inspect body CG posing PT3 * Posed part of the events. * Added/adjusted animations. * Added "moist" fluids image. --- ...ad_back_spread_legs_luna_fluids_moist.webp | 3 + ...d_back_spread_legs_luna_fluids_squirt.webp | 3 + ...head_back_spread_legs_luna_fluids_wet.webp | 3 + ...inspect_spread_legs_luna_fluids_moist.webp | 3 + game/scripts/cg/luna.rpy | 33 ++- .../luna/events/favors/inspect_her_body.rpy | 205 +++++++++++++----- 6 files changed, 183 insertions(+), 67 deletions(-) create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_moist.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_squirt.webp create mode 100644 game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_wet.webp create mode 100644 game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_moist.webp diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_moist.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_moist.webp new file mode 100644 index 00000000..756ad113 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_moist.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67ebfe2a0071a4bf7ccfe91266993ac0dd05091f22f9a2782b7e0dc9493a447e +size 3934 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_squirt.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_squirt.webp new file mode 100644 index 00000000..00b11a64 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_squirt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c4be7a18a4024ed5dfd48cdd9a5c2e15b61d82b2b900377b172fdcd10c18b35 +size 4438 diff --git a/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_wet.webp b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_wet.webp new file mode 100644 index 00000000..f3db02e1 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_wet.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac17ad94f99dde8a539f09b1ae6fb6dfd3e6b979396557c5ec75cb46aa439931 +size 7628 diff --git a/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_moist.webp b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_moist.webp new file mode 100644 index 00000000..756ad113 --- /dev/null +++ b/game/images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_moist.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67ebfe2a0071a4bf7ccfe91266993ac0dd05091f22f9a2782b7e0dc9493a447e +size 3934 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index dd99de3d..f345cfb6 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -344,7 +344,8 @@ layeredimage lun_grind: attribute spread "lun_grind_spread" # animation attribute cumshot "lun_grind_cumshot" # animation attribute resting "lun_grind_resting" - attribute tease "lun_grind_tease" # animation + attribute resting_spread "lun_grind_resting_spread" + attribute spring_out "lun_grind_spring_out" # animation image lun_grind_idle: Fixed( @@ -356,6 +357,11 @@ image lun_grind_resting: "lun_grind_body_idle", "lun_grind_penis_tease_frame0") +image lun_grind_resting_spread: + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_tease_frame1") + image lun_grind_grind: Fixed( "lun_grind_body_idle", @@ -370,19 +376,22 @@ image lun_grind_grind: pause 0.44 repeat -image lun_grind_tease: +image lun_grind_spring_out: Fixed( - "lun_grind_body_idle", - "lun_grind_penis_tease_frame0") - - pause 0.44 - - Fixed( - "lun_grind_body_grind", + "lun_grind_body_spread", "lun_grind_penis_tease_frame1") - pause 0.44 - repeat + pause 0.3 + + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_tease_frame0") + + pause 0.3 + + Fixed( + "lun_grind_body_spread", + "lun_grind_penis_grind_frame1") image lun_grind_spread: Fixed( @@ -585,6 +594,8 @@ layeredimage lun_inspect head_back_spread_legs: group luna_arm prefix "luna_arm" auto: attribute idle default + group luna_fluids auto + group luna_clothes variant "luna_clothes" multiple: attribute stockings attribute panties diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index de009aca..c699a0f2 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -368,7 +368,7 @@ label ll_pf_inspect_T2_E1_intro: hide screen blkfade with d5 - lun "" ("base", "base", "base", "mid", xpos="base", ypos="base", flip=False, trans=dissolve) + lun "" ("base", "base", "base", "mid", xpos="base", ypos="base", flip=False, trans=d3) pause .2 if game.daytime: @@ -554,11 +554,11 @@ label ll_pf_inspect_T2_E2_intro: nar "As you do, Luna jerks her body, and you quickly let go of her breasts." #Ass shot Overlay - #TODO add dark overlay across base CG + #TODO add dark overlay across base CG, add borders around Ass shot CG show lun_inspect as cg zorder 15 #TODO cock against butthole if game.daytime: - show lun_grind grind as cg2 zorder 16 + show lun_grind resting as cg2 zorder 16 with d4 else: show lun_grind grind as cg2 zorder 16 at color_temperature(1.0) @@ -577,17 +577,26 @@ label ll_pf_inspect_T2_E2_intro: nar "As Luna lets out another moan, she instinctively puts more of her weight onto you, heightening the pleasurable sensation at the tip of your cock." - #TODO spreads ass while dick pokes butthole + show lun_grind resting_spread as cg2 with d3 gen "(*Ngh*... If only I could--)" - #TODO Penis tip springs up behind butthole, and scene continues to grinding animation + show lun_grind spring_out as cg2 with d3 play sound "sounds/boing02.ogg" + pause 0.8 - nar "Just as you start feeling yourself getting engulfed, Luna starts rubbing her ass against you, causing your cock to slide out and rest against her back." + nar "Just as you start feeling yourself getting engulfed, your cock slides out to rest against Luna's crack." + + show lun_grind idle as cg2 with d3 + + gen "(Damn it...)" + + show lun_grind grind as cg2 with d3 + + nar "With the sensation gone, Luna starts rubbing up against you." call ctc - lun "*Ah*...{w=0.4} Yes, I'm definitely feeling something...{w=0.4} *Mmm*..." - lun "But I'm not sensing that--{w=0.2} *Ah*...{w=0.4} Relief you mentioned..." + lun "*Ah*...{w=0.4} I definitely felt something happening for a moment..." + lun "Although, I'm not sensing that--{w=0.2} *Ah*...{w=0.4} Relief you mentioned..." lun "My body still feels as if--{w=0.2} *Ah*...{w=0.4} As if I'm on fire, [name_genie_luna]..." gen "(If this keeps going, then this bitch in heat will make me bust before she does...)" lun "I think something is happening...{w=0.4} I feel woozy, [name_genie_luna]..." @@ -610,7 +619,7 @@ label ll_pf_inspect_T2_E2_intro: lun "(What did he just--)" gen "*Ah*..." - nar "Returning to your senses, you watch as your semen slowly begins sliding down her crack." + nar "While you return to your senses, your semen slowly begins sliding down her crack." show lun_inspect eyebrows_shocked eyes_halflid_right as cg hide cg2 with d3 @@ -656,7 +665,7 @@ label ll_pf_inspect_T2_E2_intro: gen "(Good job me...{w=0.4} I have royally fucked it up this time.)" ("base", xpos="far_left", ypos="head") gen "(Of course, me of all people would blow my load too soon!)" ("base", xpos="far_left", ypos="head") gen "Look, accidents happen to the best of--" ("base", xpos="far_left", ypos="head") - lun "I'm sorry [name_genie_luna]!" ("angry", "narrow", "worried", "mid", xpos="base", ypos="base", flip=False, trans=dissolve) + lun "I'm sorry [name_genie_luna]!" ("angry", "narrow", "worried", "mid", xpos="mid", ypos="base", flip=False, trans=dissolve) gen "..." ("angry", xpos="far_left", ypos="head") lun "You were right..." ("upset", "narrow", "worried", "down") lun "I guess I wasn't ready..." ("open", "closed", "worried", "down") @@ -762,8 +771,6 @@ label ll_pf_inspect_T2_E3_intro: hide screen blkfade with d5 - #TODO Luna on lap CG, either check clothing status or not, depending what works best, (she will always wear underwear at this stage.) - gen "*Err*...{w=0.3} I think you've forgotten something, [name_luna_genie]." show lun_inspect eyebrows_shocked eyes_halflid_right as cg with d3 @@ -953,7 +960,7 @@ label ll_pf_inspect_T2_E3_intro: show lun_inspect spread_legs eyebrows_shocked eyebrows_shocked eyes_wide_stare arms_grab mouth_grin as cg with d3 - nar "Without hesitation, you reach forward and grab and start fondling Luna's breasts." + nar "Without hesitation, you reach around Luna and start fondling her breasts." show lun_inspect spread_legs eyebrows_base eyes_halflid_stare mouth_base as cg with d3 @@ -1154,19 +1161,20 @@ label ll_pf_inspect_T2_E3_intro: nar "Admiring your work, you watch as a streak of liquid runs down her leg before settling on the floor." - lun @ cheeks blush "[name_genie_luna]..." ("base", "base", "base", "mid", xpos="base", ypos="base", flip=False, trans=dissolve) + lun "[name_genie_luna]..." $ luna.wear("all") + hide luna_main + hide cg centered "{size=+7}{color=#cbcbcb}Some time later...{/color}{/size}" call lun_chibi("stand", "desk", "base") - hide cg hide screen blkfade with d5 lun "[name_genie_luna], that was incredible!" ("base", "narrow", "base", "mid") - lun "Did you see how many wrackspurts I expelled?" ("crooked_smile", "base", "raised", "mid") + lun "Did you see how many wrackspurts I expelled?" ("crooked_smile", "base", "raised", "mid", xpos="mid", ypos="base", flip=False) gen "Very impressive indeed." ("base", xpos="far_left", ypos="head") lun "I can't believe we finally did it!" ("crooked_smile", "happyCl", "base", "mid") lun "Finally, a foolproof way of expelling wrackspurts from other areas than your brain!" ("crooked_smile", "narrow", "base", "mid") @@ -1236,9 +1244,14 @@ label ll_pf_inspect_T2_E4_repeat: show screen blkfade with d5 - $ luna.strip("clothes") + nar "Luna quickly rushes up to your desk, and begins undressing both you and herself..." + + #Luna CG in Genie lap + if game.daytime: + show lun_inspect legs_together eyes_halflid_right arm_right_down as cg zorder 16 + else: + show lun_inspect legs_together eyes_halflid_right arm_right_down as cg zorder 16 at color_temperature(1.0) - #TODO Fades back to Luna in your lap CG hide screen blkfade with d5 @@ -1247,115 +1260,186 @@ label ll_pf_inspect_T2_E4_repeat: nar "You grab onto Luna's breasts and begin massaging them." - lun "*Eeek*!!" + show lun_inspect legs_together arms_grab eyebrows_angry eyes_closed mouth_soft as cg with d3 + pause 0.8 + + lun "*Eeek*!!{w=0.4}{nw}" + + show lun_inspect legs_together -arms_grab arm_right_down arm_left_hold eyebrows_angry eyes_wide_stare mouth_open as cg + + lun "*Eeek*!!{fast}" + gen "[name_luna_genie]?" + + show lun_inspect legs_together eyebrows_worried eyes_wide_right mouth_open as cg with d3 + lun "Oh...{w=0.2} Sorry, [name_genie_luna]!" + + show lun_inspect legs_together eyebrows_worried eyes_base_right mouth_grin as cg with d3 + lun "Your hands are a bit cold." gen "Then let's get them warmed up, shall we?" + + show lun_inspect legs_together arms_touch_tits eyes_halflid_right mouth_soft as cg with d3 + nar "You spread your fingers apart and drag them across the sides of Luna's nipples, increasing your grip around them with each motion." + nar "You sense the firmness of Luna's nipples soften slightly as your hands begin to warm up." + + show lun_inspect legs_together blush eyes_halflid_up mouth_open as cg with d3 + lun "*Ah*..." gen "How's this, [name_luna_genie]?" gen "Feeling any build up yet?" + + show lun_inspect legs_together eyebrows_base mouth_soft as cg with d3 + lun "*Mmm*...{w=0.4} Yes, [name_genie_luna]..." gen "Good..." + + show lun_inspect legs_together arms_grab as cg with d3 + nar "You begin moving your hands in a circular motion, squeezing her breasts together and pulling them apart over and over..." + + show lun_inspect legs_together eyes_closed mouth_base as cg with d3 + lun "*Mmm*..." - nar "Luna, whose thoughts are now enveloped by the sensations of your touch, pushes her crotch towards you once again, as if desperate to feel you inside of her..." + show lun_inspect spread_legs moist as cg with d3 + pause 1 + + nar "Luna, whose thoughts are now enveloped by the sensations of your touch, spreads her legs open, as if desperate to feel you inside of her..." gen "*Hmm*...{w=0.4} Looks like someone's eager..." gen "Very well then, [name_luna_genie]." #Pose touch pussy + show lun_inspect spread_legs -arms_grab arm_right_touch_pussy_pause eyes_halflid_up mouth_grin as cg with d3 lun "Ooooh..." nar "Luna shivers slightly as your hand graces her pussy..." nar "You notice that she's already wet, as your fingers slide across her with ease..." gen "Looks like someone's been looking forward to this..." gen "Better not let you wait any further then." - lun "I--" play sound "sounds/slick_02.ogg" + show lun_inspect spread_legs arm_right_touch_pussy_inserted eyebrows_shocked eyes_wide_stare mouth_soft as cg with d3 with kissiris - lun "{heart}*Ngh*{heart}..." + lun "{heart}*Oooooh*{heart}..." gen "There we go..." - lun "You're...{w=0.4} They're inside me again..." - gen "Yes indeed [name_luna_genie]..." - gen "And two fingers already...{w=0.4} Looks like you're getting better at this..." + + show lun_inspect spread_legs eyes_wide_right mouth_grin as cg with d3 + + lun "You're...{w=0.4} It slid inside me again..." + gen "Yes indeed, [name_luna_genie]..." + gen "And quite easily, I might add..." + gen "It seems as if you've gotten quite used to this already..." + + show lun_inspect spread_legs eyebrows_base mouth_base as cg with d3 + lun "Oh...{w=0.4} Thank--" play background "sounds/slickloop.ogg" fadein 2 + show lun_inspect spread_legs arm_right_touch_pussy as cg with d3 + + nar "You begin pumping your finger quickly into Luna's pussy..." + + show lun_inspect legs_together eyebrows_shocked eyes_wide_up mouth_open_tongue as cg with d3 - nar "You begin pumping your fingers quickly into Luna's pussy..." lun "*Ah*!!!" - nar "Taken by surprise, Luna clenches her thighs, which only strengthens her grip around your fingers..." + nar "Taken by surprise, Luna clenches her thighs, which only strengthens her grip around your finger..." + + show lun_inspect legs_together eyebrows_base eyes_halflid_up mouth_open as cg with d3 + lun "*Ah*... [name_genie_luna]!" gen "That's it [name_luna_genie]...{w=0.4} Keep that grip steady, and this will be over before you know it..." + + show lun_inspect legs_together eyebrows_worried mouth_soft as cg with d3 + lun "*Ah*...{w=0.3} *Ah*...{w=0.3} But [name_genie_luna]--" - nar "As you keep pumping your fingers repeatedly inside of Luna, you feel her grip loosen slightly..." + show lun_inspect spread_legs as cg with d3 + + nar "As you keep pumping your finger repeatedly inside of Luna, you feel her grip loosen slightly..." + + show lun_inspect spread_legs eyebrows_angry eyes_closed as cg with d3 lun "I...{w=0.4} I..." + + show lun_inspect spread_legs eyebrows_angry eyes_halflid_up mouth_open_tongue_spit as cg with d3 + lun "{size=+5}I don't want it to be over!{/size}" gen "Too bad!" nar "Not showing any mercy on the girl, you keep pumping faster and faster in and out of her pussy." play background "sounds/slickloopfast.ogg" + show lun_inspect spread_legs eyebrows_worried as cg with d3 lun "*Ah*...{w=0.4} *Ah*...{w=0.4} No..." + + stop background + show lun_inspect legs_together arm_right_touch_pussy_inserted eyebrows_angry eyes_closed mouth_neutral as cg with d3 + lun "Not yet!" + nar "Luna, trying to keep that sensation going, clamps her legs together as not to let herself cum." play background "sounds/slickloopveryfast.ogg" + show lun_inspect legs_together arm_right_touch_pussy as cg with d3 - nar "Luna, trying to keep that sensation going, attempts to get a hold of herself as not to let herself cum." + nar "Refusing to admit defeat, you begin wiggling your finger inside her with increased ferocity." - lun "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." + show lun_inspect legs_together eyebrows_worried mouth_soft as cg with d3 - nar "Taking it as a challenge, you insert your fingers all the way in, which proves to be enough for the girl." + lun "[name_genie_luna]...{w=0.2} *Ah*...{w=0.2} Please..." - #ahegao pose spread legs + nar "Taking her pleas as a challenge, you insert your finger all the way in, which proves to be enough for the girl." + + show lun_inspect legs_together eyes_halflid_up mouth_open_tongue_spit as cg with d3 lun @ cheeks blush "*Ah*...{w=0.2} No...{w=0.3} I'm cumming!!" ("clench", "happyCl", "worried", "mid") - #squirt - - with kissiris + show lun_inspect head_back_spread_legs squirt eyes_base_up_hearts mouth_open_ahegao_spit as cg with d3 play sound "sounds/slick_01.ogg" + pause 0.6 - lun "*AAAAAH*!!!" - nar "Luna's thighs clench around you, as waves of pleasure washes over her." + lun "*AAAAAH*!!!{w=0.4}{nw}" + show lun_inspect head_back_spread_legs -squirt as cg + lun "*AAAAAH*!!!{fast}" - lun "*Ah*...{w=0.2} I'm...{w=0.2} I'm--" + nar "Luna's pussy convulses against your finger, as waves of pleasure washes over her." with kissiris play sound "sounds/slick_01.ogg" stop background fadeout 2 + show lun_inspect head_back_legs_together arm_right_touch_pussy_pause mouth_open as cg with d3 + lun "*Ah*..." + + show lun_inspect legs_together eyes_closed mouth_base as cg with d3 + lun "*Mmm*..." show screen blkfade with d5 $ luna.wear("all") + hide luna_main nar "Luna, completely exhausted, slumps onto your desk once again." nar "You pull your chair back to give her some space." - lun @ cheeks blush "*Mmm*..." ("base", "narrow", "base", "down", xpos="base", ypos="base", flip=False, trans=dissolve) - centered "{size=+7}{color=#cbcbcb}Some time later...{/color}{/size}" call lun_chibi("stand", "desk", "base") - #TODO hide CG + hide cg hide screen blkfade with d5 gen "Well done, [name_luna_genie]!" ("base", xpos="far_left", ypos="head") gen "Looks like you managed to spurt even more than last time!" ("base", xpos="far_left", ypos="head") - lun @ cheeks blush "*Mmm*...{w=0.4} Thank you, [name_genie_luna]." ("base", "closed", "base", "mid") + lun @ cheeks blush "*Mmm*...{w=0.4} Thank you, [name_genie_luna]." ("base", "closed", "base", "mid", xpos="mid", ypos="base", flip=False, trans=d3) gen "Holding them in for as long as possible was very clever!" ("base", xpos="far_left", ypos="head") lun @ cheeks blush "Oh-- I...{w=0.3} Yes, thank you!" ("soft", "narrow", "base", "downR") gen "Are you okay, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") @@ -1435,6 +1519,9 @@ label ll_pf_inspect_T3_E1_repeat: nar "Luna immediately shudders, and lets out a soft moan as a response to your touch." gen "(All day... Such a silly girl, I doubt she'd last an hour...)" nar "You let go of Luna's breasts and give her nipples a quick pinch." + + #White flash + lun "Ouch!" gen "Whops." menu: @@ -1567,21 +1654,20 @@ label ll_pf_inspect_T3_E1_repeat: with d5 $ luna.wear("all") + hide luna_main nar "Luna's legs buckle completely as she puts her full weight onto your desk." nar "You watch her body move up and down for a while, her legs twitching slightly every now and then as liquid runs down her legs." nar "After some time, she manages to push herself up and get off your desk." - - hide luna_main call lun_chibi("stand", "desk", "base") - #TODO hide CG + hide cg hide screen blkfade with d5 gen "How was that, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun "How did you do that, [name_genie_luna]?" ("mad", "base", "base", "mid", xpos="base", ypos="base", flip=False, trans=dissolve) + lun "How did you do that, [name_genie_luna]?" ("mad", "base", "base", "mid", xpos="mid", ypos="base", flip=False, trans=d3) gen "Do what?" ("base", xpos="far_left", ypos="head") lun "The thing you did... When you pushed near my stomach..." ("angry", "base", "base", "mid") gen "Oh that...{w=0.4} Well, I can't reveal all my secrets, can I?" ("base", xpos="far_left", ypos="head") @@ -1744,7 +1830,7 @@ label ll_pf_inspect_T4_E1_repeat: lun "Could you perhaps assist me with testing the sensitivity of my nipples?" gen "Certainly..." - #Genie pinches nipples + #Genie pinches nipples, white flash nar "You give Luna's nipples a quick pinch, and in return, you feel her ass clench around your cock." lun "*Ngh*!" @@ -1754,6 +1840,8 @@ label ll_pf_inspect_T4_E1_repeat: lun "Yes..." gen "*Hmm*... Then let's try it again." + #Genie pinches nipples, white flash + nar "You pinch Luna's nipples again and feel her ass clench even harder around your cock." lun "Ouch!" @@ -1771,13 +1859,19 @@ label ll_pf_inspect_T4_E1_repeat: lun "*Mmm*..." nar "As you continue stroking her, you notice some wetness forming in-between Luna's legs." + nar "You feel your dick twitch slightly beneath her, and decide to try and move things along swiftly." gen "*Ahem*...{w=0.4} [name_luna_genie]." - nar "Luna, fully focused on the sensations of your fingers, begins shuffling around slightly in your lap." + #Luna starts touching her pussy + + nar "Luna, fully focused on the sensations of your fingers, begins rubbing her pussy on her own." + nar "You start feeling yourself getting hard, and your dick soon presses up against her underside." lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." - gen "[name_luna_genie], don't you think you're--" + gen "[name_luna_genie], what if I tried inserting--" + + nar "Suddenly, and with a jolt, Luna's entire body suddenly starts shaking." #Pose ahegao with kissiris @@ -1785,8 +1879,6 @@ label ll_pf_inspect_T4_E1_repeat: stop bg_sounds fadeout 2 lun "*Aaaah*!!!" - nar "With a jolt, Luna's entire body suddenly starts shaking." - gen "What the--" lun "[name_genie_luna]!!!" @@ -1803,15 +1895,16 @@ label ll_pf_inspect_T4_E1_repeat: nar "Finally, after catching her breath, she lets go and addresses the situation." call lun_chibi("stand", "desk", "base") + hide luna_main - #TODO hide CG + hide cg hide screen blkfade with d5 - lun "How...{w=0.4} How on earth did that happen?!" ("base", "base", "base", "mid") - gen "You may not have realised, but you were rubbing up against me for quite a while..." ("base", xpos="far_left", ypos="head") - lun "I--{w=0.2} I was?" ("base", "base", "base", "mid") - gen "Indeed... You almost had me going at one point." ("base", xpos="far_left", ypos="head") + lun "How...{w=0.4} How on earth did that happen?!" ("base", "base", "base", "mid", xpos="mid", ypos="base", flip=False, trans=d3) + gen "You may not have realised, but you started touching yourself..." ("base", xpos="far_left", ypos="head") + lun "I--{w=0.2} I did?" ("base", "base", "base", "mid") + gen "Indeed... You almost had me going as well." ("base", xpos="far_left", ypos="head") lun "You... Going..." ("base", "base", "base", "mid") gen "(Here we go...)" ("base", xpos="far_left", ypos="head") lun "Going where?" ("base", "base", "base", "mid") From f88f036ea26b061deef3afb6b2c12f7683875c75 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 5 Feb 2024 20:02:32 +0000 Subject: [PATCH 070/249] Alternate styling * Implemented alternate styling for the say window used during CG scenes --- game/scripts/gui/_styles_.rpy | 13 ++++++++ game/scripts/gui/say.rpy | 57 ++++++++++++++++++++++++++--------- 2 files changed, 56 insertions(+), 14 deletions(-) diff --git a/game/scripts/gui/_styles_.rpy b/game/scripts/gui/_styles_.rpy index 3366f3aa..ae89c717 100644 --- a/game/scripts/gui/_styles_.rpy +++ b/game/scripts/gui/_styles_.rpy @@ -210,6 +210,8 @@ style dark_say_label: style light_say_label: color settings.get('text_color_day') +style say_label_alt is say_dialogue_alt + # Say dialogue style say_dialogue is default: @@ -221,6 +223,10 @@ style dark_say_dialogue: style light_say_dialogue: color settings.get('text_color_day') +style say_dialogue_alt: + color "#ffffff" + outlines [(1, "#000000", 1, 0)] + style say_thought is say_dialogue style dark_say_thought is dark_say_dialogue style light_say_thought is light_say_dialogue @@ -255,6 +261,10 @@ style light_say_window is light_window: take say_window background "interface/frames/gold/frame.webp" +style say_window_alt: + take say_window + background "fade_gradient" + # Namebox style namebox is gui_frame: @@ -272,6 +282,9 @@ style light_namebox is light_gui_frame: take namebox # background Transform(Frame("gui/light_namebox.png", 8, 8)) +style namebox_alt: + take namebox + # Text style dark_text: diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index 64425a70..5b176fb2 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -38,6 +38,8 @@ screen say(who, what, side_image=None, icon=None): if text_inner_thought(what) and not renpy.showing("cg"): add "fade_gradient" + elif renpy.showing("cg"): + add "interface/bld.webp" if side_image: add side_image yalign 1.0 yanchor 1.0 zoom 0.5 @@ -45,25 +47,39 @@ screen say(who, what, side_image=None, icon=None): add SideImage() window id "window": - style gui.theme("say_window") + if renpy.showing("cg"): + style "say_window_alt" + + if who: + window: + id "namebox" + style "namebox_alt" + text who: + style "say_label_alt" + + text what: + id "what" + style "say_dialogue_alt" + else: + style gui.theme("say_window") + + if who: + window: + id "namebox" + style gui.theme("namebox") + text who: + style gui.theme("say_label") + + text what: + id "what" + style gui.theme("say_dialogue") if _windows_hidden: - ypos 1000 + ypos 1000 if _game_menu_screen: use quick_menu - if who: - window: - id "namebox" - style gui.theme("namebox") - text who: - style gui.theme("say_label") - - text what: - id "what" - style gui.theme("say_dialogue") - if renpy.android: button: style "empty" @@ -90,7 +106,10 @@ screen say(who, what, side_image=None, icon=None): screen quick_menu(): hbox: - style_prefix "quick" + if renpy.showing("cg"): + style_prefix "quick_alt" + else: + style_prefix "quick" xalign 1.0 yoffset -30 @@ -114,6 +133,16 @@ style quick_button_text is default: selected_hover_color "#cc0" insensitive_color "#4448" +style quick_alt_button is quick_button + +style quick_alt_button_text: + take quick_button_text + idle_color "#8888" + hover_color "#fff" + idle_outlines [(1, "#0008", 1, 1)] + hover_outlines [(1, "#000", 1, 1)] + + # Choice screen # # This screen is used to display the in-game choices presented by the menu From 02dbe988f7584b1e73abaccf424ba24f20a08509 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 7 Feb 2024 16:55:09 +0100 Subject: [PATCH 071/249] Luna Inspect body CG posing PT3 * Posed part of the events. --- ...ct_genie_arm_right_touch_pussy_frame0.webp | 4 +- ...ct_genie_arm_right_touch_pussy_frame1.webp | 4 +- game/scripts/cg/luna.rpy | 4 +- .../luna/events/favors/inspect_her_body.rpy | 196 ++++++++++++++---- 4 files changed, 162 insertions(+), 46 deletions(-) diff --git a/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame0.webp b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame0.webp index 025844cf..64e1353b 100644 --- a/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame0.webp +++ b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame0.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdf19ee61cb3f529d09739a7b9d42e03fd020b16934da315cf2794d43eb54cb6 -size 35354 +oid sha256:684ac1f29bd480c8ae06172e348cb650cee4099a1fc7dc4ffe468644d5b56a12 +size 32856 diff --git a/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame1.webp b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame1.webp index 64e1353b..025844cf 100644 --- a/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame1.webp +++ b/game/images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame1.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:684ac1f29bd480c8ae06172e348cb650cee4099a1fc7dc4ffe468644d5b56a12 -size 32856 +oid sha256:fdf19ee61cb3f529d09739a7b9d42e03fd020b16934da315cf2794d43eb54cb6 +size 35354 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index f345cfb6..d1b45b75 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -458,7 +458,7 @@ layeredimage lun_inspect spread_legs: group luna_arm prefix "luna_arm" auto: attribute idle default - group luna_fluids auto + group luna_fluids auto multiple group luna_clothes variant "luna_clothes" multiple: attribute stockings @@ -594,7 +594,7 @@ layeredimage lun_inspect head_back_spread_legs: group luna_arm prefix "luna_arm" auto: attribute idle default - group luna_fluids auto + group luna_fluids auto multiple group luna_clothes variant "luna_clothes" multiple: attribute stockings diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index c699a0f2..1a28dc76 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -1403,7 +1403,7 @@ label ll_pf_inspect_T2_E4_repeat: pause 0.6 lun "*AAAAAH*!!!{w=0.4}{nw}" - show lun_inspect head_back_spread_legs -squirt as cg + show lun_inspect head_back_spread_legs -squirt wet as cg lun "*AAAAAH*!!!{fast}" nar "Luna's pussy convulses against your finger, as waves of pleasure washes over her." @@ -1469,27 +1469,36 @@ label ll_pf_inspect_T3_E1_repeat: call ll_pf_inspect gen "Would you like me to help you with--" ("base", xpos="far_left", ypos="head") - lun "Yes please!" ("grin", "base", "base", "stare") + lun "Yes please!" ("grin", "base", "base", "stare", xpos="base", ypos="base", trans=d3) #Luna walks towards desk and it fades to black call lun_walk("desk") show screen blkfade with d5 - $ luna.strip("clothes") - if luna.is_any_worn("clothes"): + $ luna.strip("clothes") nar "Luna quickly rushes up to your desk, and begins undressing both you and herself..." else: nar "Luna quickly rushes up to your desk, and begins undressing you..." - #Fades back to Luna in your lap CG + if game.daytime: + show lun_inspect legs_together eyes_base_down mouth_grin as cg zorder 16 + else: + show lun_inspect legs_together eyes_base_down mouth_grin as cg zorder 16 at color_temperature(1.0) + hide screen blkfade with d5 gen "You didn't even let me finish my sentence..." + + show lun_inspect eyebrows_raised eyes_base_right mouth_soft as cg with d3 + lun "Oh...{w=0.4} Was this not what you meant, [name_genie_luna]?" - gen "That's not the...{w} Well I suppose..." + gen "That's not the--{w=0.2} Well, I suppose..." + + show lun_inspect eyebrows_worried as cg with d3 + lun "I hope I'm not too much of a bother, [name_genie_luna]..." lun "I know your time is valuable." gen "Assisting my students is part of my job, [name_luna_genie]." @@ -1499,153 +1508,260 @@ label ll_pf_inspect_T3_E1_repeat: else: gen "Even if that meant treating you all night, then so be it..." + show lun_inspect eyebrows_shocked eyes_wide_right mouth_open as cg with d3 + lun "Really? You'd do that?" gen "If that's what is required of me..." + + show lun_inspect blush eyebrows_raised eyes_base_down mouth_base as cg with d3 + lun "*Hmm*..." gen "(Is she really considering it?)" + + show lun_inspect blush eyebrows_base eyes_closed mouth_open as cg with d3 + lun "I wouldn't want you to feel obligated just because it's part of your job..." lun "I think I will still be fine with the amount of time we're spending on the treatment for now." gen "Good to hear." gen "(I've got enough wankers cramp as it is...)" gen "So, are you ready to begin your treatment?" - lun "Yes... Please go ahead, [name_genie_luna]..." + show lun_inspect blush eyebrows_base eyes_base_down mouth_base as cg with d3 + + lun "Yes... Please go ahead, [name_genie_luna]..." gen "Then just relax, and let me take care of it." - #Pose groping breasts + show lun_inspect arms_touch_tits eyebrows_shocked eyes_wide_up mouth_grin as cg with d3 nar "Grabbing onto Luna's breasts, you begin massaging them gently." lun "*Ah*..." nar "Luna immediately shudders, and lets out a soft moan as a response to your touch." gen "(All day... Such a silly girl, I doubt she'd last an hour...)" - nar "You let go of Luna's breasts and give her nipples a quick pinch." + nar "You give Luna's nipples a quick pinch." - #White flash + #TODO white flash + play sound "sounds/plushie.ogg" + show lun_inspect arms_touch_tits eyebrows_angry eyes_wide_stare mouth_open as cg with d3 lun "Ouch!" - gen "Whops." + gen "(What the--{w=0.2} Did her tits just make a squeaking sound?)" menu: "-Pinch her again-": + + #TODO white flash + show lun_inspect arms_touch_tits eyebrows_shocked eyes_wide_up as cg with d3 + nar "You quickly pinch Luna's nipples again, and she jumps slightly by surprise." + + show lun_inspect arms_touch_tits eyebrows_angry eyes_closed mouth_annoyed as cg with d3 + lun "Ow, Ow, Ow!!" + gen "(*Hmm*... No sound this time... Maybe I need to pinch them a bit harder...)" + + #TODO white flash + show lun_inspect arms_touch_tits eyebrows_shocked eyes_wide_up mouth_open as cg with d3 + lun "[name_genie_luna]!" gen "Just give it a moment... It will feel better soon..." lun "Are you--" - nar "You pinch her again, even harder this time, and Luna suddenly jerks her body forward." + #TODO white flash + show lun_inspect arms_touch_tits eyebrows_angry eyes_closed mouth_annoyed as cg with d3 + nar "You pinch her again, even harder this time, and Luna suddenly jerks her body forward." lun "Stop it [name_genie_luna]...{w=0.4} I can't..." + + show lun_inspect -arms_touch_tits arm_right_down arm_left_hold eyebrows_shocked eyes_wide_stare as cg with d3 + nar "As you let go of her tits, Luna's words trail off slightly..." gen "Can't what, [name_luna_genie]?" - lun "That's odd..." + + show lun_inspect eyebrows_base eyes_base_down mouth_soft as cg with d3 + + lun "That's odd..." + + show lun_inspect eyes_halflid_down as cg with d3 + lun "It feels kind of nice, after you let go of them." gen "More sensitive?" + + show lun_inspect mouth_base as cg with d3 + lun "Yes..." - lun "Do it again [name_genie_luna]!" + + show lun_inspect eyes_wide_down mouth_open as cg with d3 + + lun "Do it again, [name_genie_luna]!" gen "Again?" + + show lun_inspect eyebrows_angry mouth_grin as cg with d3 + lun "Yes, again!" gen "If you say so..." + #TODO white flash + show lun_inspect arms_touch_tits eyes_closed as cg with d3 + nar "You pinch Luna's nipples again, and being fully ready for it this time, you only hear a short intake of breath." - nar "Releasing your grip on her nipples, you begin brushing your fingertips along the sides of her breasts, up and around her nipples." + show lun_inspect eyebrows_base as cg with d3 + + nar "Feeling finished with her nipples, you begin brushing your fingertips along the sides of her breasts, up and around her nipples." + + show lun_inspect mouth_base as cg with d3 lun "*Ah*...{w=0.4} How...{w=0.4} How strange..." nar "Luna, now enjoying the heightened sensitivity of her nipples, begins to relax, her breathing slowing down more and more." lun "..." gen "(Am I just giving her a massage now?)" "-Don't-": - lun "Please be careful [name_genie_luna]..." + + show lun_inspect eyebrows_worried mouth_soft as cg with d3 + + lun "Please be careful, [name_genie_luna]..." nar "Trying not to give into the temptation, you resume massaging Luna's breasts." nar "Her breathing soon begins slowing down, and you feel her previously tense grip around your legs starting to relax." + show lun_inspect eyebrows_base eyes_closed mouth_base as cg with d3 lun "..." gen "*Hmm*..." gen "(Am I just giving her a massage now?)" - lun "*Ah*....." ("base", "closed", "base", "mid") + show lun_inspect mouth_open as cg with d3 + + lun "*Ah*....." nar "You suddenly feel her beginning to go limp in your hands, and realise that your grip is the only thing preventing her from slumping forward." gen "*Err*... Are you--" + + show lun_inspect mouth_base as cg with d3 + lun "*Mmm*..." gen "[name_luna_genie]?" lun "..." gen "[name_luna_genie]?" + show lun_inspect -arms_touch_tits arm_right_down arm_left_hold eyes_halflid_stare mouth_soft as cg with d3 + nar "You let go of Luna's breasts, and she goes stiff, opening her eyes in confusion." + show lun_inspect eyes_halflid_right as cg with d3 + lun "*Huh*?" gen "I believe our purpose here isn't for me to massage you until you fall asleep..." + + show lun_inspect eyes_halflid_down as cg with d3 + lun "Oh... Right..." + show lun_inspect legs_together arm_right_touch_pussy as cg with d3 #fingering loop + nar "You stick your hand down between Luna's legs, and begin rubbing your fingers along her slit." + show lun_inspect eyes_halflid_stare mouth_open as cg with d3 + lun "*Ah*..." nar "As you brush up against her, you notice how wet she is already." gen "*Hmm*... Looks like that massage helped after all..." + + show lun_inspect eyes_closed as cg with d3 + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." nar "Moving your forefinger up and down against Luna, you hear her breathing becoming more and more erratic, and you feel your cock twitch slightly against her." gen "(Time to bust this thing wide open...)" + + show lun_inspect arm_right_touch_pussy_pause as cg with d3 nar "You stop your movements, giving Luna just a brief moment of anticipation before you push a finger inside." + show lun_inspect eyes_halflid_up mouth_grin arm_right_touch_pussy_inserted as cg with d3 play sound "sounds/slick_02.ogg" - with kissiris lun "{heart}*Ngh*{heart}..." + show lun_inspect spread_legs moist arm_right_touch_pussy as cg with d3 play background "sounds/slickloop.ogg" fadein 2 nar "You begin moving your finger inside Luna's pussy, as if playfully searching for her weak spot." + + show lun_inspect mouth_soft as cg with d3 + lun "*Ah*... What are... What are you doing [name_genie_luna]..." gen "Oh... You know... Just looking for something..." + show lun_inspect mouth_open as cg with d3 + lun "*Ah*...{w=0.4} Looking...{w=0.4} *Ah*...{w=0.4} What are you--" + gen "Why I'll never find it at this rate... Better pick up the pace." - gen "Why I'll never find it at this rate... Better get some of my friends to help." ("base", xpos="far_left", ypos="head") - - play sound "sounds/slick_02.ogg" play background "sounds/slickloopfast.ogg" - nar "You push another finger inside her, and begin moving them around." + nar "You begin fingering Luna, with a nearly desperate level of determination." + + show lun_inspect eyebrows_worried eyes_closed as cg with d3 lun "*Ah*...{w=0.4} [name_genie_luna]..." - gen "*Hmm*... Some lousy friends they are... I still can't find it..." + gen "*Hmm*... I still can't find it..." lun "*Ah*...{w=0.3} *Ah*...{w=0.3} Are you...{w=0.3} Are you sure..." - nar "You keep moving your fingers inside Luna, and as you do, you feel her clench around them slightly." + nar "You keep moving your finger inside Luna, and as you do, you feel her clench around it slightly." + gen "Yes...{w=0.3} Although, maybe it's just hiding somewhere too far for me to reach..." - gen "Yes...{w=0.3} Although maybe it's just hiding..." + show lun_inspect mouth_soft as cg with d3 - #Pose, genie pulls out and pushes on her stomach - lun "*Ah*...{w=0.3} It...{w=0.3} What is--" - gen "I think it's around here!" + lun "*Ah*...{w=0.3} It...{w=0.3} What exactly are you looking--" + gen "If I'm correct, it should be around..." + + play sound "sounds/slick_02.ogg" + stop background + show lun_inspect arm_right_touch_pussy_pause as cg with d3 + show lun_inspect arm_right_touch_mound eyebrows_shocked eyes_wide_up mouth_open_tongue as cg with d3 + + gen "Here!" nar "You suddenly push hard against Luna's womb." lun "*Oooooh*!!!" - gen "Seems like it... So, what do you say? Think I can reach all the way in here?" + gen "Yes... This spot feels about right..." + gen "Now, the question is... Can I make it all the way in there..." - #Pose fingering + play sound "sounds/slick_02.ogg" play background "sounds/slickloopveryfast.ogg" + show lun_inspect arm_right_touch_pussy eyebrows_base eyes_halflid_up as cg with d3 - nar "You push your fingers deep inside Luna, then start pumping them quickly in and out." + nar "You push your finger inside Luna, then start pumping it quickly in and out." lun "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." - nar "Luna's moans reverberates around your office, and you notice her legs beginning to shake slightly." + gen "*Hmm*... It seems I can't reach the depth I hoped for from this angle.... What if--" + + show lun_inspect legs_together eyebrows_angry eyes_closed mouth_annoyed as cg with d3 - #Pose closed legs nar "Luna's moans suddenly stops, and she clenches her thighs tight around your hand." + nar "Even while firmly locked between her thighs, you still manage to keep your finger going." - lun "*Ah*...{w=0.2} I'm...{w=0.3} I'm cumming!!" + show lun_inspect spread_legs moist mouth_neutral as cg with d3 - with kissiris - play sound "sounds/slick_01.ogg" + nar "Admitting defeat, Luna spreads her legs once more." + + show lun_inspect mouth_open as cg with d3 + + lun "*Ah*...{w=0.4} I'm...{w=0.3} almost...{w=0.4}{nw}" - #Pose ahegao - with kissiris - play sound "sounds/slick_01.ogg" stop background fadeout 2 + play sound "sounds/slick_02.ogg" + show lun_inspect eyes_base_up arm_right_touch_mound as cg + + lun "*Ah*... I'm...{fast} {size=+5}Cumming!!{/size}" + + show lun_inspect eyes_base_up mouth_open_tongue as cg with d3 + + play sound "sounds/slick_01.ogg" + show lun_inspect squirt as cg with d3 + with kissiris + pause 0.3 + show lun_inspect -squirt wet as cg + lun "*AAAAAH*!!!" - nar "Even with your hand locked firmly between her thighs, you still manage to keep your fingers going." + + show lun_inspect eyes_closed mouth_base as cg with d3 lun "*Ah*...{w=0.2} I'm...{w=0.2} I'm--" lun "*Mmm*..." From a3e2b2eaee7432d449ab5c63ad89c161f670e922 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Thu, 8 Feb 2024 18:05:43 +0000 Subject: [PATCH 072/249] New border, transform transition and a bug fix * Added a new decorative frame for vertical CGs. * Added a new transition/transform. * Fixed CG say box fade not being hidden when it should be. --- game/interface/frames/cg_frame.webp | 3 +++ game/scripts/animations/transforms.rpy | 13 +++++++++++++ game/scripts/cg/luna.rpy | 7 +++++++ .../luna/events/favors/inspect_her_body.rpy | 16 +++++++++++----- game/scripts/gui/say.rpy | 4 +++- 5 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 game/interface/frames/cg_frame.webp diff --git a/game/interface/frames/cg_frame.webp b/game/interface/frames/cg_frame.webp new file mode 100644 index 00000000..9c755278 --- /dev/null +++ b/game/interface/frames/cg_frame.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24053c3eecbcd83dcc7351ea9cd0772efe152742688c9e3aa2309983b6c83228 +size 213180 diff --git a/game/scripts/animations/transforms.rpy b/game/scripts/animations/transforms.rpy index 20fc2e3e..19657f26 100644 --- a/game/scripts/animations/transforms.rpy +++ b/game/scripts/animations/transforms.rpy @@ -17,6 +17,19 @@ transform move_fade: xoffset 0 easeout_back 1.0 alpha 0.0 xoffset absolute(200) +transform cg_transition: + on show, appear, start: + xalign 0.5 + alpha 0.0 + xzoom 0.0 + easein_back 0.7 alpha 1.0 xzoom 1.0 + + on hide: + xalign 0.5 + alpha 1.0 + xzoom 1.0 + easeout_back 0.5 alpha 0.0 xzoom 0.0 + transform fade_show(t): alpha 0 on show: diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index d1b45b75..134233cf 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -347,6 +347,13 @@ layeredimage lun_grind: attribute resting_spread "lun_grind_resting_spread" attribute spring_out "lun_grind_spring_out" # animation +image lun_grind_border: + fit "contain" + + HBox("interface/frames/cg_frame.png", + Null(2878, 3840), + Transform("interface/frames/cg_frame.png", xzoom=-1)) + image lun_grind_idle: Fixed( "lun_grind_body_idle", diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index 1a28dc76..16e34b43 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -557,12 +557,16 @@ label ll_pf_inspect_T2_E2_intro: #TODO add dark overlay across base CG, add borders around Ass shot CG show lun_inspect as cg zorder 15 #TODO cock against butthole + + show image "#00000080" as cg_effect1 zorder 15 + with d3 + show lun_grind_border as cg_effect2 zorder 15 at cg_transition if game.daytime: - show lun_grind resting as cg2 zorder 16 - with d4 + show lun_grind resting as cg2 zorder 16 at cg_transition else: - show lun_grind grind as cg2 zorder 16 at color_temperature(1.0) - with d4 + show lun_grind grind as cg2 zorder 16 at color_temperature(1.0), cg_transition + + pause 1 nar "Suddenly, Luna's thighs tighten around your legs, as she pushes her ass back towards your abdomen." nar "Her cheeks lightly grace your hardening cock, and as they do, it manages to wiggle its way to rest against her butthole." @@ -622,7 +626,9 @@ label ll_pf_inspect_T2_E2_intro: nar "While you return to your senses, your semen slowly begins sliding down her crack." show lun_inspect eyebrows_shocked eyes_halflid_right as cg - hide cg2 with d3 + hide cg2 + hide cg_effect2 + hide cg_effect1 with d3 #TODO hide dark overlay gen "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index 5b176fb2..e5c51366 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -39,7 +39,9 @@ screen say(who, what, side_image=None, icon=None): if text_inner_thought(what) and not renpy.showing("cg"): add "fade_gradient" elif renpy.showing("cg"): - add "interface/bld.webp" + add "interface/bld.webp": + if _windows_hidden: + ypos 1000 if side_image: add side_image yalign 1.0 yanchor 1.0 zoom 0.5 From 8e90120960f8e60b6951b168aceee45c1177b653 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Sat, 10 Feb 2024 15:36:59 +0100 Subject: [PATCH 073/249] Luna Inspect body CG posing PT4 * Posed part of the events. --- .../luna/events/favors/inspect_her_body.rpy | 268 +++++++++++++----- 1 file changed, 195 insertions(+), 73 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index 16e34b43..d6c44fe1 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -554,9 +554,7 @@ label ll_pf_inspect_T2_E2_intro: nar "As you do, Luna jerks her body, and you quickly let go of her breasts." #Ass shot Overlay - #TODO add dark overlay across base CG, add borders around Ass shot CG show lun_inspect as cg zorder 15 - #TODO cock against butthole show image "#00000080" as cg_effect1 zorder 15 with d3 @@ -564,7 +562,7 @@ label ll_pf_inspect_T2_E2_intro: if game.daytime: show lun_grind resting as cg2 zorder 16 at cg_transition else: - show lun_grind grind as cg2 zorder 16 at color_temperature(1.0), cg_transition + show lun_grind resting as cg2 zorder 16 at color_temperature(1.0), cg_transition pause 1 @@ -629,7 +627,6 @@ label ll_pf_inspect_T2_E2_intro: hide cg2 hide cg_effect2 hide cg_effect1 with d3 - #TODO hide dark overlay gen "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." @@ -1545,8 +1542,8 @@ label ll_pf_inspect_T3_E1_repeat: gen "(All day... Such a silly girl, I doubt she'd last an hour...)" nar "You give Luna's nipples a quick pinch." - #TODO white flash play sound "sounds/plushie.ogg" + with hpunch show lun_inspect arms_touch_tits eyebrows_angry eyes_wide_stare mouth_open as cg with d3 lun "Ouch!" @@ -1554,8 +1551,8 @@ label ll_pf_inspect_T3_E1_repeat: menu: "-Pinch her again-": - #TODO white flash show lun_inspect arms_touch_tits eyebrows_shocked eyes_wide_up as cg with d3 + with hpunch nar "You quickly pinch Luna's nipples again, and she jumps slightly by surprise." @@ -1564,15 +1561,15 @@ label ll_pf_inspect_T3_E1_repeat: lun "Ow, Ow, Ow!!" gen "(*Hmm*... No sound this time... Maybe I need to pinch them a bit harder...)" - #TODO white flash show lun_inspect arms_touch_tits eyebrows_shocked eyes_wide_up mouth_open as cg with d3 + with hpunch lun "[name_genie_luna]!" gen "Just give it a moment... It will feel better soon..." lun "Are you--" - #TODO white flash show lun_inspect arms_touch_tits eyebrows_angry eyes_closed mouth_annoyed as cg with d3 + with hpunch nar "You pinch her again, even harder this time, and Luna suddenly jerks her body forward." lun "Stop it [name_genie_luna]...{w=0.4} I can't..." @@ -1605,8 +1602,8 @@ label ll_pf_inspect_T3_E1_repeat: lun "Yes, again!" gen "If you say so..." - #TODO white flash show lun_inspect arms_touch_tits eyes_closed as cg with d3 + with hpunch nar "You pinch Luna's nipples again, and being fully ready for it this time, you only hear a short intake of breath." @@ -1816,32 +1813,32 @@ label ll_pf_inspect_T4_E1_repeat: call ll_pf_inspect gen "Need a hand?" ("base", xpos="far_left", ypos="head") - lun "A hand, [name_genie_luna]?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) + lun "A hand, [name_genie_luna]?" ("soft", "base", "raised", "mid", xpos="base", ypos="base", trans=d3) gen "I thought you might be feeling the effects of the spurts... So, I figured you might want to sit in my lap and let me help you out for a bit." ("base", xpos="far_left", ypos="head") - lun "But, didn't you already teach me how to take care of them myself?" ("base", "base", "base", "mid") + lun "But, didn't you already teach me how to take care of them myself?" ("soft", "base", "base", "mid") gen "Yes, and I'm sure you've had a lot of practice, but since I'm available, there's the option of me helping out..." ("base", xpos="far_left", ypos="head") gen "Or would you rather do it yourself?" ("base", xpos="far_left", ypos="head") - lun "Of course not!" ("base", "base", "base", "mid") - lun "I mean..." ("base", "base", "base", "mid") - lun "What about you, [name_genie_luna]?" ("base", "base", "base", "mid") + lun "Of course not!" ("angry", "base", "base", "stare") + lun "I mean..." ("angry", "base", "base", "mid") + lun "What about you, [name_genie_luna]?" ("open", "base", "base", "downL") gen "This is as important for you, as it is for me." ("base", xpos="far_left", ypos="head") - lun "It is?" ("base", "base", "base", "mid") + lun "It is?" ("disgust", "base", "base", "mid") gen "If the spurts manage to get to you, then you won't be able to assist me with my research at the required level." ("base", xpos="far_left", ypos="head") - lun "Required level?" ("base", "base", "base", "mid") + lun "Required level?" ("soft", "narrow", "base", "stare") gen "See! You can't even focus, [name_luna_genie]!" ("base", xpos="far_left", ypos="head") - lun "But I am--" ("base", "base", "base", "mid") + lun "But I am--" ("angry", "base", "base", "mid") gen "If you're unable to focus on the task, who knows what might happen!" ("base", xpos="far_left", ypos="head") gen "The spurts could force you to slap my cheek!" ("base", xpos="far_left", ypos="head") - lun "Your cheek?!" ("base", "base", "base", "mid") + lun "Your cheek?!" ("angry", "base", "base", "mid") gen "My cheek!" ("base", xpos="far_left", ypos="head") - gen "Or even worse... Make you to pull my finger!" ("base", xpos="far_left", ypos="head") - lun "Really?!" ("base", "base", "base", "mid") + gen "Or even worse... Make you pull my finger!" ("base", xpos="far_left", ypos="head") + lun "Really?!" ("angry", "base", "base", "stare") gen "Yes, and trust me... You'd want to avoid that at all cost." ("base", xpos="far_left", ypos="head") - lun "Why... What would--" ("base", "base", "base", "mid") + lun "Why... What would--" ("disgust", "base", "base", "mid") gen "Irreversible consequences!" ("base", xpos="far_left", ypos="head") - lun "!!!" ("base", "base", "base", "mid") + lun "!!!" ("mad", "base", "base", "mid") gen "Let's just say that the desert didn't used to be the wasteland that it is today." ("base", xpos="far_left", ypos="head") - lun "My heavens!" ("base", "base", "base", "mid") + lun "My heavens!" ("angry", "base", "base", "mid") if luna.is_any_worn("clothes"): hide luna_main @@ -1849,7 +1846,7 @@ label ll_pf_inspect_T4_E1_repeat: $ _wearing_clothes = True $ luna.strip("clothes") - lun "[name_genie_luna], help me before it's too late!" ("base", "base", "base", "mid") + lun "[name_genie_luna], help me before it's too late!" ("angry", "narrow", "base", "mid") gen "Whoa, how did you do that so fast?!" ("base", xpos="far_left", ypos="head") #Luna quickly walks up towards desk, fades to black @@ -1859,177 +1856,300 @@ label ll_pf_inspect_T4_E1_repeat: nar "As you undress, Luna rushes up to your desk, and jumps into your lap with such force that you fall into the chair." - #TODO Fade to CG Luna in lap + if game.daytime: + show lun_inspect spread_legs eyebrows_worried eyes_base_right mouth_open as cg zorder 16 + else: + show lun_inspect spread_legs eyebrows_worried eyes_base_right mouth_open as cg zorder 16 at color_temperature(1.0) + hide screen blkfade with d5 - lun "Hurry, [name_genie_luna]! Put your fingers inside me!" + lun "Hurry, [name_genie_luna]! Put your finger inside me!" gen "Already? But, what about the foreplay?" gen "(Wait... Since when did I start caring about foreplay?)" + + show lun_inspect eyebrows_raised eyes_base_down as cg with d3 + lun "Just do it already!" gen "Suit yourself..." + show lun_inspect arm_right_touch_pussy_pause as cg with d3 + nar "You move your hand down to Luna's pussy and attempt to push a finger inside." + show lun_inspect eyebrows_worried eyes_wide_stare mouth_soft as cg with d3 + lun "Ouch!" + + show lun_inspect eyebrows_angry eyes_wide_down as cg with d3 + lun "Wait! What's going on?!" gen "I was trying to tell you..." gen "Sometimes you're going to need a bit of--" + + show lun_inspect eyes_base_down mouth_open as cg with d3 + lun "It's the wrackspurts, and their naughty tricks!" lun "They must be blocking the entrance somehow!" gen "..." + + show lun_inspect eyes_halflid_right as cg with d3 + lun "[name_genie_luna], we must lure them away from the entrance! Grab my breasts!" gen "(By the great desert sands... What have I created...)" - #Genie grabs Luna's breasts + show lun_inspect arms_touch_tits eyes_base_down as cg with d3 lun "Good...{w=0.4} Now if you massage them, I'm sure the wrackspurts--" + + show lun_inspect eyebrows_shocked mouth_base as cg with d3 + lun "Wait...{w=0.4} I'm so silly, why am I telling you what to do... Of course you already know!" - gen "Certainly, [name_luna_genie]... Although while you know that I know, how am I supposed to know that you know what I know?" + gen "Certainly, [name_luna_genie]...{w=0.4} Although while you know that I know, how am I supposed to know that you know what I know?" + + show lun_inspect eyebrows_raised eyes_halflid_right mouth_annoyed as cg with d3 + lun "*Huh*?" - gen "I'm proposing that you could be the one to instruct me what I'm supposed to do during this session." - gen "That way, I can ensure that you've remembered everything that I've shown you so far." + gen "I'm proposing that you instruct me on what to do during this session." + gen "That way, I can ensure you've remembered everything I've shown you so far." + + show lun_inspect eyebrows_shocked eyes_base_right mouth_grin as cg with d3 + lun "Oh, good idea [name_genie_luna]!" + + show lun_inspect eyes_base_down as cg with d3 + lun "Then massage my breasts!" - gen "One breast massage coming up." + gen "One breast massage, coming up." gen "Or is it \"breasts\" massage, since you've got two of--" + + show lun_inspect eyebrows_base mouth_annoyed as cg with d3 + lun "Hurry!" gen "Righto..." - #Genie massages breasts + show lun_inspect arms_grab eyes_base_up mouth_soft as cg with d3 + nar "Following Luna's outcry, you begin gently massaging her breasts." + show lun_inspect eyes_closed as cg with d3 + lun "*Ah*...{w=0.4} I--{w=0.2} *Ngh*...{w=0.4} I think it's working." lun "I can feel them gathering already." gen "Truly?" + + show lun_inspect blush mouth_open as cg with d3 + lun "*Ah*...{w=0.4} How...{w=0.4} How do you feel, [name_genie_luna]?" gen "Me?" - lun "*Mmm*...{w=0.4} Yes, please tell me." + + show lun_inspect eyes_halflid_right mouth_soft as cg with d3 + + lun "*Mmm*...{w=0.4} Yes, please tell me..." gen "I'm not sure what you're talking--" + + show lun_inspect mouth_base as cg with d3 + lun "My breasts...{w=0.4} Do they feel nice?" menu: "\"Of course!\"": gen "They're very pleasant." "\"I've felt better.\"": + + show lun_inspect eyes_halflid_down mouth_neutral as cg with d3 + lun "Oh..." gen "Your nipples must not be hard enough yet." "\"If you can call these breasts...\"": + + show lun_inspect eyes_base_right mouth_annoyed as cg with d3 + lun "W--{w=0.4} What?!" gen "The word \"breasts\" is not enough to describe these glorious mounds of flesh!" + + show lun_inspect eyes_base_down mouth_base as cg with d3 + lun "*Ah*...{w=0.4} Really?" + + show lun_inspect eyebrows_raised mouth_open as cg with d3 + lun "So...{w=0.4} What do you like about them exactly?" gen "Well... They're soft, squishy, and fun to play with, there's nothing better than a good pair of--" + show lun_inspect arms_touch_tits eyebrows_base mouth_soft as cg with d3 nar "Luna suddenly clenches her ass around your cock, which makes you lose your focus for a moment." gen "*Ahem*...{w=0.4} That said, it is quite a contentious subject..." + + show lun_inspect eyes_halflid_right as cg with d3 + lun "*Mhm*?" gen "*Ah*...{w=0.4} Yes, some people prefer the roundness and firmness of an--" + + show lun_inspect eyebrows_raised eyes_base_right mouth_open as cg with d3 + lun "[name_genie_luna]?" gen "Yes?" + + show lun_inspect eyebrows_base as cg with d3 + lun "You've stopped massaging me." gen "So I have..." - #Genie massages breasts + show lun_inspect arms_grab as cg with d3 + show lun_inspect eyes_closed mouth_base as cg with d3 lun "*Mmm*..." + + show lun_inspect eyes_halflid_down as cg with d3 + lun "So, you think my breasts are fun to play with?" gen "Very much so." + + show lun_inspect mouth_grin as cg with d3 + lun "*Giggles*" gen "What's so funny about that?" + + show lun_inspect eyebrows_shocked eyes_base_down mouth_grin as cg with d3 + lun "Well, it's just that I had never really considered playing with them..." - lun "Before you showed me, they were just sort of... There." + + show lun_inspect mouth_base as cg with d3 + + lun "Before you showed me, they were just sort of...{w=0.4} There." gen "I suppose the reason I find them fascinating and fun to play with is due to not having access to them at all times." - gen "I mean, it's all for the sake of research, of course.... I'm taking mental notes of all the differences between men and women... Yes, that's it..." + gen "I mean, it's all for the sake of research, of course....{w=0.4} I'm taking mental notes of all the differences between men and women...{w=0.4} Yes, that's it..." + + show lun_inspect eyebrows_raised eyes_base_right mouth_base as cg with d3 + lun "In that case, should we to try to find out if there's a way to lure them away from your penis next?" gen "*Err*..." lun "I presume we wouldn't want your penis to get clogged up with spurts like what just happened to me, right?" - gen "Right... However, since I have you, I'm assured that won't happen." + gen "Right...{w=0.4} However, since I have you, I'm assured that won't happen." + + show lun_inspect eyebrows_base eyes_halflid_right as cg with d3 + lun "Let's hope..." gen "Either way, let's not forget that we're focusing on you right now..." + + show lun_inspect eyes_halflid_down as cg with d3 + lun "Oh, right..." lun "In that case..." lun "Could you perhaps assist me with testing the sensitivity of my nipples?" gen "Certainly..." - #Genie pinches nipples, white flash - nar "You give Luna's nipples a quick pinch, and in return, you feel her ass clench around your cock." + with hpunch + show lun_inspect arms_touch_tits eyebrows_angry eyes_wide_stare mouth_open as cg with d3 + nar "You give Luna's nipples a quick pinch, and in return, you feel her ass clench around your cock." lun "*Ngh*!" gen "How was that?" + + show lun_inspect eyebrows_worried eyes_halflid_right as cg with d3 + lun "*Ah*...{w=0.4} Very...{w=0.4} fun..." gen "Truly?" + + show lun_inspect eyes_base_down as cg with d3 + lun "Yes..." gen "*Hmm*... Then let's try it again." - #Genie pinches nipples, white flash - - nar "You pinch Luna's nipples again and feel her ass clench even harder around your cock." + with hpunch + show lun_inspect eyebrows_shocked eyes_wide_up mouth_open as cg with d3 + nar "You pinch Luna's nipples again, and feel her ass clench even harder around your cock." lun "Ouch!" gen "How's that?" + + show lun_inspect eyebrows_worried eyes_closed mouth_annoyed as cg with d3 + lun "I...{w=0.4} Very, very fun, [name_genie_luna]!" gen "There's no need to be untruthful with me, [name_luna_genie]..." - lun "*Ah*...{w=0.4} *Ah*...{w=0.4} But, I am--" + + show lun_inspect eyebrows_base eyes_halflid_down mouth_soft as cg with d3 + + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} But, I wasn't--" gen "So, what now? Would you like me to move on to something else?" + + show lun_inspect eyebrows_shocked eyes_base_down as cg with d3 + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} You could--{w=0.2} Could you stroke my breasts for a bit, [name_genie_luna]?" gen "Good idea...{w=0.4} We should take advantage of your heightened sensitivity..." - #Genie strokes breasts - nar "Placing your fingers along the sides of her nipples, you begin brushing them gently against her skin." + show lun_inspect eyebrows_base eyes_closed as cg with d3 + nar "You begin brushing your fingers gently against Luna's nipples." + + show lun_inspect moist mouth_base as cg with d3 lun "*Mmm*..." nar "As you continue stroking her, you notice some wetness forming in-between Luna's legs." nar "You feel your dick twitch slightly beneath her, and decide to try and move things along swiftly." - gen "*Ahem*...{w=0.4} [name_luna_genie]." + show lun_inspect -arms_touch_tits arm_left_hold arm_right_down as cg with d3 + gen "*Ahem*...{w=0.4} [name_luna_genie]?" #Luna starts touching her pussy + show lun_inspect luna_arm_masturbate as cg with d3 - nar "Luna, fully focused on the sensations of your fingers, begins rubbing her pussy on her own." + nar "Luna, fully focused on the rising sensation between her legs, begins rubbing her pussy on her own." nar "You start feeling yourself getting hard, and your dick soon presses up against her underside." + show lun_inspect mouth_open as cg with d3 + lun "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." - gen "[name_luna_genie], what if I tried inserting--" + gen "[name_luna_genie]...{w=0.4} I've got this crazy idea...{w=0.4} What if I tried inserting--" - nar "Suddenly, and with a jolt, Luna's entire body suddenly starts shaking." + nar "Suddenly, and with a jolt, Luna's entire body starts shaking." - #Pose ahegao + show lun_inspect luna_arm_idle eyes_base_up mouth_open_tongue as cg with d3 + + stop background fadeout 2 + play sound "sounds/slick_01.ogg" + show lun_inspect squirt as cg with d3 with kissiris - $ renpy.sound.play("sounds/slick_01.ogg") - stop bg_sounds fadeout 2 + pause 0.3 + show lun_inspect -squirt wet as cg + lun "*Aaaah*!!!" gen "What the--" - lun "[name_genie_luna]!!!" - lun "*Ah*..." + show lun_inspect eyes_halflid_down mouth_soft as cg with d3 + lun "What--{w=0.4} What just happened?" gen "*Heh-heh*...{w=0.4} It appears you've managed to get there on your own." + + show lun_inspect eyebrows_shocked eyes_base_down mouth_open as cg with d3 + lun "W--{w=0.2} What?!" show screen blkfade with d5 - nar "Luna suddenly jumps off your lap and turns around, and her eyes lock onto a wet patch on the top of your robes." - nar "Her legs still quivering from the intense pleasure she stumbles backwards a bit, then grabs a hold of the side of your desk." + nar "Luna swiftly jumps off your lap, her eyes immediately fixing on the streaks of wetness running down the inner sides of your legs." + nar "Still quivering from the intense pleasure, she stumbles backwards a bit, then grabs hold of the side of your desk." nar "Finally, after catching her breath, she lets go and addresses the situation." call lun_chibi("stand", "desk", "base") hide luna_main + $ luna.set_cum(pussy="squirt_post") + hide cg hide screen blkfade with d5 - lun "How...{w=0.4} How on earth did that happen?!" ("base", "base", "base", "mid", xpos="mid", ypos="base", flip=False, trans=d3) + lun "How...{w=0.4} How on earth did that happen?!" ("angry", "narrow", "base", "down", xpos="mid", ypos="base", flip=False, trans=d3) gen "You may not have realised, but you started touching yourself..." ("base", xpos="far_left", ypos="head") - lun "I--{w=0.2} I did?" ("base", "base", "base", "mid") + lun "I--{w=0.2} I did?" ("disgust", "base", "base", "stare") gen "Indeed... You almost had me going as well." ("base", xpos="far_left", ypos="head") - lun "You... Going..." ("base", "base", "base", "mid") + lun "You... Going..." ("disgust", "base", "base", "mid") gen "(Here we go...)" ("base", xpos="far_left", ypos="head") - lun "Going where?" ("base", "base", "base", "mid") + lun "Going where?" ("soft", "base", "base", "mid") if game.daytime: gen "I think it's about time for you to head back to class..." ("base", xpos="far_left", ypos="head") @@ -2041,49 +2161,51 @@ label ll_pf_inspect_T4_E1_repeat: if _wearing_clothes: $ renpy.sound.play("sounds/cloth_sound3.ogg") $ luna.wear("all") + $ luna.set_cum(None) with d3 pause .5 gen "Perhaps we should consider having you pick up \"English\" as a secondary subject." ("base", xpos="far_left", ypos="head") - lun "English?" ("base", "base", "base", "mid") - lun "But, [name_genie_luna]... There are no \"English\" classes at Hogwarts." ("base", "base", "base", "mid") + lun "English?" ("soft", "base", "base", "mid") + lun "But, [name_genie_luna]... There are no \"English\" classes at Hogwarts." ("upset", "base", "base", "mid") gen "What?!" ("base", xpos="far_left", ypos="head") - lun "Our mummies and daddies are meant to teach us certain subjects before we start proper schooling." ("base", "base", "base", "mid") - lun "Well... My daddy did in my case..." ("base", "base", "base", "mid") + lun "Our mummies and daddies are meant to teach us certain subjects before we start proper schooling." ("open", "base", "base", "mid") + lun "Well... My daddy did in my case..." ("open", "base", "base", "down") gen "But, do your parents not need to work?" ("base", xpos="far_left", ypos="head") - lun "Well... There's also the option of private tutoring." ("base", "base", "base", "mid") - lun "And if you're muggle born, you are usually put in a muggle school before being transferred to Hogwarts." ("base", "base", "base", "mid") + lun "Well... There's also the option of private tutoring." ("soft", "base", "base", "mid") + lun "And if you're muggle born, you are usually put in a muggle school before being transferred to Hogwarts." ("open", "base", "base", "mid") gen "But what if you're not a muggle born, and you can't afford a private tutor?" ("base", xpos="far_left", ypos="head") - lun "I... I don't know." ("base", "base", "base", "mid") + lun "I... I don't know." ("soft", "base", "base", "up") gen "(How do they expect me to do my job when the system is flawed at its core...)" ("base", xpos="far_left", ypos="head") gen "(Oh, well... It's clear that nobody else gives a rat's ass about the future of this country, so why should I...)" ("base", xpos="far_left", ypos="head") - lun "[name_genie_luna], why are you asking me these questions?" ("base", "base", "base", "mid") + lun "[name_genie_luna], why are you asking me these questions?" ("soft", "base", "base", "mid") gen "*Huh*?" ("base", xpos="far_left", ypos="head") gen "Oh... *Err*... I just thought I'd show you how important it is to be able to identify and analyse the flaws in our society..." ("base", xpos="far_left", ypos="head") gen "Identifying, analysing and finding solutions is needed... To progress as a species and all that..." ("base", xpos="far_left", ypos="head") - lun "I see... Finding solutions..." ("base", "base", "base", "mid") + lun "I see... Finding solutions..." ("soft", "base", "base", "down") lun "What if we established a system in which the affluent allocate a portion of their income to make resources such as private tutoring accessible to everyone, thereby guaranteeing a higher standard of education for all?" ("base", "base", "base", "mid") gen "Good one." ("base", xpos="far_left", ypos="head") - lun "" ("base", "base", "base", "mid") #confused + lun "" ("soft", "base", "base", "mid") #confused call ctc gen "Anyhow... I presume you feel better now?" ("base", xpos="far_left", ypos="head") - lun "Oh... Yes, thank you, [name_genie_luna]!" ("base", "base", "base", "mid") + lun "Oh... Yes, thank you, [name_genie_luna]!" ("grin", "base", "base", "mid") gen "You're very welcome." ("base", xpos="far_left", ypos="head") if game.daytime: lun "I better head to bed then." ("base", "base", "base", "mid") gen "Don't you mean \"class\"?" ("base", xpos="far_left", ypos="head") - lun "Oh, yeah!" ("base", "base", "base", "mid") + lun "Oh, yeah!" ("smile", "happyCl", "base", "mid") lun "Bye!" ("base", "base", "base", "mid") else: lun "I better head back to class then." ("base", "base", "base", "mid") gen "Don't you mean \"bed\"?" ("base", xpos="far_left", ypos="head") - lun "Oh, yeah...{w=0.4} Good night!" ("base", "base", "base", "mid") + lun "Oh, yeah...{w=0.4} Good night!" ("smile", "happyCl", "base", "mid") call lun_walk(action="leave") gen "(That girl is something else...)" ("base", xpos="far_left", ypos="head") $ _wearing_clothes = False + $ luna.set_cum(None) jump ll_pf_inspect_end From ac9e121c768229a1a656a841426485c9221cefaa Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 13 Feb 2024 19:46:26 +0000 Subject: [PATCH 074/249] Bug fix * Fixed wrongly defined image format --- game/scripts/cg/luna.rpy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 134233cf..2d728601 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -350,9 +350,9 @@ layeredimage lun_grind: image lun_grind_border: fit "contain" - HBox("interface/frames/cg_frame.png", + HBox("interface/frames/cg_frame.webp", Null(2878, 3840), - Transform("interface/frames/cg_frame.png", xzoom=-1)) + Transform("interface/frames/cg_frame.webp", xzoom=-1)) image lun_grind_idle: Fixed( From 1949b3cc604be769b78f7ab13c66ec283b6f49a7 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Thu, 22 Feb 2024 10:16:54 +0000 Subject: [PATCH 075/249] Bug fix * Fixed waifu book ending 01 being unobtainable if Endings were unlocked in non-sequential order. --- game/scripts/inventory/books_waifu.rpy | 1 + 1 file changed, 1 insertion(+) diff --git a/game/scripts/inventory/books_waifu.rpy b/game/scripts/inventory/books_waifu.rpy index e524abcb..64923f6c 100644 --- a/game/scripts/inventory/books_waifu.rpy +++ b/game/scripts/inventory/books_waifu.rpy @@ -329,6 +329,7 @@ label waifu_book: gen "So I ended up with the same chick again?" ("base", xpos="far_left", ypos="head") gen "*Hmm*... Maybe I should try and make different choices next time...?" ("base", xpos="far_left", ypos="head") + $ waifu_progression["generic_ending"] = True # Modify item description to show seen endings. python: From 57a5c4b2faaee64efa6f27b9f8b89dc3448cbdc1 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Mon, 4 Mar 2024 17:39:09 +0100 Subject: [PATCH 076/249] Luna Talk to me - First implementation, vars, writing checks * First implementation of Luna T4 "Talk to me" favour. * Added writing checks and vars. * Minor adjustments. --- .../luna/events/favors/inspect_her_body.rpy | 2 +- .../characters/luna/events/favors/suck_it.rpy | 12 +- .../luna/events/favors/talk_to_me.rpy | 543 +++++++++++++++++- game/scripts/characters/luna/favors.rpy | 5 +- game/scripts/characters/luna/vars.rpy | 4 + 5 files changed, 553 insertions(+), 13 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index d6c44fe1..2ff4cde4 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -2040,8 +2040,8 @@ label ll_pf_inspect_T4_E1_repeat: lun "Could you perhaps assist me with testing the sensitivity of my nipples?" gen "Certainly..." - with hpunch show lun_inspect arms_touch_tits eyebrows_angry eyes_wide_stare mouth_open as cg with d3 + with hpunch nar "You give Luna's nipples a quick pinch, and in return, you feel her ass clench around your cock." lun "*Ngh*!" diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index b2a8819f..c8d92f75 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -1,4 +1,4 @@ -#TODO Add event checks for the existing writing variants once the other T4 Luna events are added + ### Luna Suck It ### @@ -48,6 +48,8 @@ label ll_pf_blowjob_end: label ll_pf_blowjob_T4_E1_intro: + $ states.lun.ev.ll_pf_blowjob_T4_E1_intro_complete = True + call ll_pf_blowjob gen "I think it's about time we try a new technique to deal with those wankspurs." ("base", xpos="far_left", ypos="head") @@ -96,9 +98,9 @@ label ll_pf_blowjob_T4_E1_intro: lun "..." ("soft", "wide", "base", "stare") gen "Out of my cock." ("base", xpos="far_left", ypos="head") - #TODO if you've not played label ll_pf_talk_T4_E1_repeat: - #lun "..." ("base", "base", "base", "mid") - #gen "*Sigh*... My Penis... [name_luna_genie]." ("base", xpos="far_left", ypos="head") + if not states.lun.ev.ll_pf_talk_T4_E1_repeat_complete: + lun "..." ("soft", "wide", "base", "stare") + gen "*Sigh*...{w=0.4} My Penis... [name_luna_genie]." ("base", xpos="far_left", ypos="head") lun "Using \"Accio\"?" ("soft", "wide", "base", "mid") gen "Using your mouth..." ("base", xpos="far_left", ypos="head") @@ -500,6 +502,8 @@ label ll_pf_blowjob_T4_E1_intro: label ll_pf_blowjob_T4_E2_intro: + $ states.lun.ev.ll_pf_blowjob_T4_E2_intro_complete = True + call ll_pf_blowjob gen "I've got another theory that I'd like us to try today, [name_luna_genie]." ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index 2f9e5080..19211ff9 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -48,7 +48,7 @@ label ll_pf_talk_T1_E1_intro: $ states.gen.masturbating = False gen "So... About the infestation..." ("base", xpos="far_left", ypos="head") - lun "*Sniff* *Sniff*" ("soft", "narrow", "base", "L") + lun "*Sniff* *Sniff*" ("soft", "narrow", "base", "L", xpos="base", ypos="base", trans=d3) gen "[name_luna_genie]?" ("base", xpos="far_left", ypos="head") lun "*Sniff* *Sniff*" ("soft", "base", "raised", "down") gen "Are you alright?" ("base", xpos="far_left", ypos="head") @@ -182,7 +182,7 @@ label ll_pf_talk_T1_E2_intro: call ll_pf_talk gen "Let's continue with your training." ("base", xpos="far_left", ypos="head") - lun "My training, [name_genie_luna]?" ("soft", "base", "raised", "mid") + lun "My training, [name_genie_luna]?" ("soft", "base", "raised", "mid", xpos="base", ypos="base", trans=d3) gen "*Err*... To become the best and first ever spurt hunter!" ("angry", xpos="far_left", ypos="head") lun "Oh!" ("grin", "base", "base", "mid") lun "Okay!" ("grin", "happyCl", "base", "mid") @@ -350,7 +350,7 @@ label ll_pf_talk_T1_E3_intro: call ll_pf_talk gen "Right then... Let's have another crack at this shall we." ("base", xpos="far_left", ypos="head") - lun "We're going to try and expel the wrackspurts again, [name_genie_luna]?" ("soft", "base", "base", "mid") + lun "We're going to try and expel the wrackspurts again, [name_genie_luna]?" ("soft", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "That's right, [name_luna_genie]." ("base", xpos="far_left", ypos="head") lun "Can I see how you do it this time?" ("grin", "base", "raised", "mid") gen "*Err*... I'm not sure that's such a good idea..." ("base", xpos="far_left", ypos="head") @@ -539,7 +539,7 @@ label ll_pf_talk_T1_E4_repeat: call ll_pf_talk gen "How are you feeling, [name_luna_genie]?" ("base", xpos="far_left", ypos="head") - lun "I...{w=0.4} I'm okay..." ("open", "narrow", "base", "down") + lun "I...{w=0.4} I'm okay..." ("open", "narrow", "base", "down", xpos="base", ypos="base", trans=d3) lun "But I'm still worried about this burning sensation between my legs, [name_genie_luna]." ("upset", "narrow", "base", "mid") gen "I'm sure we'll find a way for you to deal with them once I've had a thorough inspection of your body...." ("base", xpos="far_left", ypos="head") @@ -658,7 +658,7 @@ label ll_pf_talk_T2_E1_repeat: call ll_pf_talk gen "Tell me some more about these spurts..." ("base", xpos="far_left", ypos="head") - lun "Again, [name_genie_luna]?" ("open", "base", "raised", "mid") + lun "Again, [name_genie_luna]?" ("open", "base", "raised", "mid", xpos="base", ypos="base", trans=d3) gen "Yes... I still don't think I'm quite done with my personal research..." ("base", xpos="far_left", ypos="head") lun "Oh... Okay then..." ("soft", "base", "base", "mid") gen "One moment please." ("base", xpos="far_left", ypos="head") @@ -763,7 +763,7 @@ label ll_pf_talk_T3_E1_repeat: call ll_pf_talk gen "Able to help me deal with those spurts again?" ("base", xpos="far_left", ypos="head") - lun "Of course, what would you need me to do?" ("grin", "base", "raised", "mid") + lun "Of course, what would you need me to do?" ("grin", "base", "raised", "mid", xpos="base", ypos="base", trans=d3) gen "Just stand there for a bit." ("base", xpos="far_left", ypos="head") lun "Oh... Okay, [name_genie_luna]." ("base", "happyCl", "base", "mid") @@ -922,3 +922,534 @@ label ll_pf_talk_T3_E1_repeat: call lun_walk(action="leave") jump ll_pf_talk_end + +label ll_pf_talk_T4_E1_repeat: + + $ states.lun.status.cumshot = True + $ states.lun.ev.ll_pf_talk_T4_E1_repeat_complete = True + + call ll_pf_talk + + gen "Fancy checking out my ding-dong?" ("base", xpos="far_left", ypos="head") + lun "Your ding-dong, [name_genie_luna]?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) + lun "Is that another word for clock?" ("base", "base", "base", "mid") + gen "Remove the \"L\", and you've got it." ("base", xpos="far_left", ypos="head") + lun "Cock?" ("base", "base", "base", "mid") + gen "Ding-ding-ding!" ("base", xpos="far_left", ypos="head") + lun "I'm confused..." ("base", "base", "base", "mid") + gen "Yes, I probably shouldn't have made a dinging sound..." ("base", xpos="far_left", ypos="head") + lun "" ("base", "base", "base", "mid") #confused stare + call ctc + + if states.lun.ev.ll_pf_blowjob_T4_E1_intro_complete: + lun "Oh, you mean \"penis\"!" ("base", "base", "base", "mid") + lun "All these different terms for it are so confusing!" ("base", "base", "base", "mid") + gen "Yes, remembering them all can be a bit difficult at times..." ("base", xpos="far_left", ypos="head") + lun "How many words for it are there?" ("base", "base", "base", "mid") + gen "Hundreds... Perhaps thousands..." ("base", xpos="far_left", ypos="head") + else: + lun "You've got a rooster in here?" ("base", "base", "base", "mid") + gen "No, there's no rooster... It's just another word for \"penis\"." ("base", xpos="far_left", ypos="head") + lun "Oh, that makes more sense!" ("base", "base", "base", "mid") + lun "I never imagined that there could be so many words for a single object." ("base", "base", "base", "mid") + gen "Oh, there's hundred of words for it... Thousands, perhaps." ("base", xpos="far_left", ypos="head") + + lun "What?! Really?! Wow!" ("base", "base", "base", "mid") + lun "Teach me, teach me, teach me!" ("base", "base", "base", "mid") + gen "Such enthusiasm! However, it's not exactly the reason I asked you to--" ("base", xpos="far_left", ypos="head") + lun "..." ("base", "base", "base", "mid") #Expectant smile + gen "Alright...{w=0.4} I suppose I could teach you another one." ("base", xpos="far_left", ypos="head") + lun "Yay!" ("base", "base", "base", "mid") + gen "How about..." ("base", xpos="far_left", ypos="head") + menu: + "\"Chode!\"": + $ name_geniepenis_luna = "Chode" + lun "Chode?" ("base", "base", "base", "mid") + gen "Yep, although that one is used to describe a particular shape." ("base", xpos="far_left", ypos="head") + lun "They come in different shapes?" ("base", "base", "base", "mid") + gen "Of course!" ("base", xpos="far_left", ypos="head") + lun "Wow!" ("base", "base", "base", "mid") + lun "I wanna see a triangle-shaped one!" ("base", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + "\"Donkey Kong!\"": + $ name_geniepenis_luna = "Donkey Kong" + lun "Donkey... Kong?" ("base", "base", "base", "mid") + gen "That's right." ("base", xpos="far_left", ypos="head") + gen "Or was it Wonky Dong..." ("base", xpos="far_left", ypos="head") + "\"Knob!\"": + $ name_geniepenis_luna = "Knob" + lun "Knob?" ("base", "base", "base", "mid") + gen "Yep." ("base", xpos="far_left", ypos="head") + lun "Like a door?" ("base", "base", "base", "mid") + gen "You can adore a knob if you're into that." ("base", xpos="far_left", ypos="head") + lun "*Huh*?" + "\"Member!\"": + $ name_geniepenis_luna = "A member" + lun "A member?" ("base", "base", "base", "mid") + gen "Yep." ("base", xpos="far_left", ypos="head") + lun "A member of what?" ("base", "base", "base", "mid") + gen "No, it's just called a \"member\"." ("base", xpos="far_left", ypos="head") + lun "\"A member\"... I see..." ("base", "base", "base", "mid") + "\"One-eyed trouser snake!\"": + $ name_geniepenis_luna = "One-eyed trouser snake" + lun "A snake?!" ("base", "base", "base", "mid") + gen "Not an actual snake..." ("base", xpos="far_left", ypos="head") + lun "Oh... So, like a cock?" ("base", "base", "base", "mid") + gen "How is a cock similar to a snake?" ("base", xpos="far_left", ypos="head") + lun "But I thought..." ("base", "base", "base", "mid") + "\"Pecker!\"": + $ name_geniepenis_luna = "Pecker" + lun "Pecker?" ("base", "base", "base", "mid") + gen "Yep." ("base", xpos="far_left", ypos="head") + lun "So, like...{w=0.4] A woodpecker?" ("base", "base", "base", "mid") + gen "That's right... Except this pecker pecks for pussy." ("base", xpos="far_left", ypos="head") + lun "Pussy?!" ("base", "base", "base", "mid") + gen "That's right." ("base", xpos="far_left", ypos="head") + lun "Sounds like I've got a lot more to learn about peckers than I thought..." ("base", "base", "base", "mid") + "\"Schlong!\"": + $ name_geniepenis_luna = "Schlong" + lun "Schlong?" ("base", "base", "base", "mid") + gen "That's right." ("base", xpos="far_left", ypos="head") + lun "Such a peculiar name...{w=0.4} Did you come up with it yourself, [name_genie_luna]?" ("base", "base", "base", "mid") + gen "Of course!" ("base", xpos="far_left", ypos="head") + gen "Anything above 5.5 inches, is a \"schlong\"... Anything below 5.1 is a \"schlort\"." ("base", xpos="far_left", ypos="head") + lun "And between those two?" ("base", "base", "base", "mid") + gen "\"schlaverage\"." ("base", xpos="far_left", ypos="head") + "\"Skin flute!\"": + $ name_geniepenis_luna = "Skin flute" + lun "Skin... Flute?" + if states.lun.ev.ll_pf_blowjob_T4_E1_intro_complete: + gen "Because you can blow on it." ("base", xpos="far_left", ypos="head") + lun "Blow? Don't you mean suck, [name_genie_luna]?" ("base", "base", "base", "mid") + gen "Yeah, I guess..." ("base", xpos="far_left", ypos="head") + gen "Although a \"suckjob\" sounds a lot less appealing." ("base", xpos="far_left", ypos="head") + lun "Suck... Job?" ("base", "base", "base", "mid") + else: + gen "Yes, since you can blow--" ("base", xpos="far_left", ypos="head") + gen "(Hold on... She doesn't have the context for it to make sense...)" ("base", xpos="far_left", ypos="head") + lun "Yes?" ("base", "base", "base", "mid") + gen "Because...{w=0.4} It has the shape of a flute!" ("base", xpos="far_left", ypos="head") + lun "It has?" ("base", "base", "base", "mid") + gen "Think about it! It's long, and it's got a shapely tip, and--" ("base", xpos="far_left", ypos="head") + gen "Hold on... Is that actually the true reason?" ("base", xpos="far_left", ypos="head") + lun "*Huh*?" ("base", "base", "base", "mid") + "\"Wang!\"": + $ name_geniepenis_luna = "Wang" + lun "Wang?" ("base", "base", "base", "mid") + gen "Yep." ("base", xpos="far_left", ypos="head") + gen "Like the surname of that Asian girl." ("base", xpos="far_left", ypos="head") + lun "Cho Chang?" ("base", "base", "base", "mid") + gen "Are there any other Asian girls in this school?" ("base", xpos="far_left", ypos="head") + gen "Wait, did you say \"Chang\"?" ("base", xpos="far_left", ypos="head") + lun "Yes... Cho Chang, [name_genie_luna]." ("base", "base", "base", "mid") + gen "That can't be right... That's neither funny nor thematic..." ("base", xpos="far_left", ypos="head") + lun "[name_genie_luna]?" ("base", "base", "base", "mid") + gen "Why would the author name you \"Lovegood\" if they weren't trying to go for a theme..." ("base", xpos="far_left", ypos="head") + lun "*Ehm*... Who are you talking about exactly?" ("base", "base", "base", "mid") + if states.sus.unlocked: + gen "Luna Lovegood...{w=0.4} Susan Bones...{w=0.4} Hermione--{w=0.2} Hold on..." ("base", xpos="far_left", ypos="head") + gen "There never was a theme!" ("base", xpos="far_left", ypos="head") + gen "Such a wasted opportunity..." ("base", xpos="far_left", ypos="head") + lun "[name_genie_luna]?" ("base", "base", "base", "mid") + "\"Weiner!\"": + $ name_geniepenis_luna = "Weiner" + lun "Weiner?" ("base", "base", "base", "mid") + lun "Like a sausage weiner?" ("base", "base", "base", "mid") + gen "Yep." ("base", xpos="far_left", ypos="head") + gen "Because it resembles a weiner, you see?" ("base", xpos="far_left", ypos="head") + lun "I see!" ("base", "base", "base", "mid") + lun "So, like a banana!" ("base", "base", "base", "mid") + gen "*Hmm*... I don't know if I'd call it a banana." ("base", xpos="far_left", ypos="head") + lun "Oh...{w=0.4} How come?" ("base", "base", "base", "mid") + gen "Well, first of...{w=0.4} A banana is something that you can peel, and you can't peel a--" ("base", xpos="far_left", ypos="head") + gen "..." ("base", xpos="far_left", ypos="head") + lun "Yes?" ("base", "base", "base", "mid") + "\"Third leg!\"": + $ name_geniepenis_luna = "Third leg" + lun "A leg?!" ("base", "base", "base", "mid") + gen "A \"third leg\", specifically." ("base", xpos="far_left", ypos="head") + lun "Wait... Does that mean you can walk on it?!" ("base", "base", "base", "mid") + gen "Depends on the situation..." ("base", xpos="far_left", ypos="head") + gen "Sometimes, you'll find yourself in a situation where you have no leg to stand on." ("base", xpos="far_left", ypos="head") + lun "Really? When would that be?" ("base", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + gen "Let's say you've just told a hilarious pun, but your audience doesn't get it." ("base", xpos="far_left", ypos="head") + lun "I see..." ("base", "base", "base", "mid") + + gen "Anyway... Teaching you various words for penis wasn't the purpose of me summoning you today--" ("base", xpos="far_left", ypos="head") + + if luna.is_any_worn("clothes"): + $ _wearing_clothes = True + + if luna.is_any_worn("robe", "accessory"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ luna.strip("robe", "accessory") + with d3 + pause .5 + + gen "*Ehm*..." + + if luna.is_worn("top"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ luna.strip("top") + with d3 + pause .5 + + if luna.is_worn("bottom"): + + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ luna.strip("bottom") + with d3 + pause .5 + + gen "[name_luna_genie]?" ("base", xpos="far_left", ypos="head") + + call lun_walk("desk", "base") + + gen "What are you doing?" ("base", xpos="far_left", ypos="head") + lun "Oh, I just thought...{w=0.4} My apologies." ("base", "base", "base", "mid") + gen "No need to apologise, [name_luna_genie]! I just wasn't prepared for the eagerness." ("base", xpos="far_left", ypos="head") + lun "Always ready to serve! *Ehm*... I mean, always ready to assist with your research!" ("base", "base", "base", "mid") + gen "Commendable." ("base", xpos="far_left", ypos="head") + + if luna.is_any_worn("clothes"): + gen "In that case, why don't you undress fully, and take a seat right over here..." ("base", xpos="far_left", ypos="head") + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ luna.strip("clothes") + with d3 + pause .5 + else: + gen "In that case, why don't you take a seat right over here..." ("base", xpos="far_left", ypos="head") + + lun "On the desk?" ("base", "base", "base", "mid") + gen "On the desk..." ("base", xpos="far_left", ypos="head") + lun "Okay then!" ("base", "base", "base", "mid") + + #TODO Fade to Luna sitting on desk CG + + lun "You are going to bait the wrackspurts again, [name_genie_luna]?" + gen "That's right." + lun "Then my purpose for today is to display my naked body as a way to assist with the completion of this task, correct?" + gen "*Err*..." + gen "(Why is she suddenly speaking like that?)" + lun "You taught me previously that observing my naked body is of great assistance when you're baiting wrackspurts." + gen "Right?" + lun "Yep!" + gen "Well...{w=0.4} Good job on listening...{w=0.4} I guess?" + lun "*Mmm*...{w=0.4} Thank you [name_genie_luna]." + lun "I'm delighted that you've recognized my sincere efforts in paying close attention and retaining all the knowledge we've acquired thus far!" + gen "(Is she trying to fish for compliments?)" + gen "*Ahem*... Excellent work [name_luna_genie]... Speaking of attention." + + nar "You clutch at your robes, as you feel your cock pushing against it..." + + lun "Oh, go right ahead, [name_genie_luna]!" + + nar "You pull out your cock and start stroking it." + + gen "There we go... Finally free from that wretched prison." + lun "I hope you haven't had to endure it for too long, [name_genie_luna]." + lun "I can't imagine what it would feel like to have a penis stuck in such a tight space." + gen "I'm sure we can satiate that curiosity, one way or another...{w=0.4} Or three if you're really kinky." + lun "Three, [name_genie_luna]? But I've only ever seen you wear the one set of trousers." + gen "...{w=0.4} Let's focus on the task." + lun "Sure thing! What do you need me to do?" + gen "Simply sitting there and looking as beautiful as you always do should be more than sufficient." + lun "Oh... Okay..." + gen "*Ahem*... Although, you'd be of great help if you pushed your breasts together a little bit." + lun "My breasts?" + gen "Yes... Push those beautiful breasts together for me, will you?" + + #Breasts pushed together pose + + nar "*Fap* *Fap* *Fap*..." + + lun "..." + lun "..." #Blushing + gen "[name_luna_genie]?" + lun "Y-- Yes [name_genie_luna], is everything okay?" + gen "I was just about to ask you the same question." + lun "Me? What do you mean?" + gen "You're blushing." + lun "I am?" + gen "Very much so." + lun "Please don't tell me it's a {b}case of the vapours{/b}!" + gen "The vapours? Yes, it must be! Fortunately, I have the ideal treatment for--" + gen "(Hold on... Didn't that bogus get disproven hundreds of years ago?)" + lun "So, it is the vapours! Tell, me [name_genie_luna], how much steam is coming out of my ears!?" + gen "...{w=0.4} There's no steam coming out of your ears, [name_luna_genie]." + lun "Oh... Thank heavens..." + lun "But if not the vapours, what else could have caused this?" + gen "Let me think..." + gen "Did something particular cross your mind before your cheeks turned all rosy?" + lun "*Hmm*..." + lun "I was just thinking about what you had just said." + gen "Which was?" + lun "You were saying I was looking beautiful..." + gen "Thinking about that made you blush?" + lun "I believe so..." + lun "When you complimented me on my looks previously, I figured that it was merely a tactic to help me master baiting." + lun "But this time, I'm not the one doing it, so it made me realise that you must have been sincere." + gen "..." + + #Base pose + lun "*Sigh*...{w=0.4} I suppose I've become accustomed to guys only saying things like that sarcastically, mocking my choice of attire." + + #Genie stops jerking + nar "You stop masturbating, and move your eyes away from Luna's body to look into her eyes..." + + gen "Yes, unfortunately, this school is teeming with exceptionally shallow individuals." + lun "[name_genie_luna]?" + gen "Allow me to pose you a question, [name_luna_genie]." + lun "Oh, of course [name_genie_luna]." + gen "Do you like the clothing that you wear?" + lun "Very much so!" + gen "Then if it brings you joy, why worry about what others think?" + lun "I suppose..." + gen "In fact, I feel bad for them." + lun "You do?!" + gen "Of course I do." + gen "If you lack the capability to look past someone's clothing, then you'll never get the chance to learn and experience what's underneath." + lun "I... I've never thought of it that way..." + gen "Try not to take what they say to heart, [name_luna_genie]." + gen "As long as you continue to be yourself, I have no doubt that the friendships you make will feel more authentic and genuine." + lun "Yes... Perhaps you're right..." + + nar "You watch Luna, as she unconsciously moves her hand to between her legs and starts fingering herself..." + + gen "Take me, for example – I consistently approach people with both an open heart and an open mind." + gen "If I had their mindset, I might've ended up walking right past all the unique and beautiful individuals such as yourself." + lun "..." #Looks down + + nar "Luna goes quiet for a moment, taking in what you just said..." + + gen "Not only that... I firmly believe that we should celebrate each other's uniqueness." + lun "*Mmm*... Truly?" + gen "Of course!" + gen "How about you share something you believe is unique about yourself, and I'll explain why I think it makes you truly exceptional!" + lun "Oh...{w=0.4} *Ehm*...{w=0.4} Something unique..." + lun "*Mmm*... You've put me on the spot..." + gen "What about your clothing?" + lun "Oh... Well, I suppose my fondness for wearing my own creations is quite a unique trait." + gen "To me, this clearly indicates that you're a creative, free-spirited, and adventurous individual." + lun "..." + gen "What else?" + lun "*Ah*...{w=0.4} I...{w=0.4} Well, I've never really thought about it before..." + gen "Then, let me share a couple of things I've learned about you from the time we've spent researching together..." + lun "[name_genie_luna], you don't have to--" + gen "You show great enthusiasm about everything you do...{w=0.4} And that energy and passion make any task more enjoyable..." + lun "[name_genie_luna]..." + gen "Your ability to adapt and pick up new skills quickly is remarkable..." + lun "..." + gen "And you always go above and beyond to ensure that we reach the desired result..." + gen "All excellent qualities, don't you think?" + lun "..." + gen "[name_luna_genie]?" + + nar "As you address Luna once more, you can't help but notice that her attention has been somewhat diverted towards her nether regions..." + + gen "(*Hmm*... Looks like she's getting off from being validated...)" + gen "Tell me a little bit about your creations that you're particularly proud off..." + lun "*Ah*... *Ehm*... Well, there's my cork necklace..." + gen "A cork necklace?" + gen "(That's one of the dumbest things I've ever heard...)" + lun "Well, I just figured--{w=0.2} *Ah*...{w=0.4} Why not create a necklace that's not only stylish but also practical." + gen "Hold on..." + gen "That's brilliant!" + lun "You--{w=0.2} *Ah*...{w=0.4} You really think so?" + gen "Most assuredly! I've found myself presented with plenty of holes in the need of being plugged!" + gen "But I never thought about carrying a cork for that specific usage before." + lun "Oh... Well, if you ever need one..." + gen "Yes, I'm sure we could find a use for it in our research." + lun "In--{w=0.2} *Ah*...{w=0.4} Our research?" + gen "Certainly!" + gen "Speaking of necklace... Since you've been so helpful, I think I better reward you with a \"pearl necklace\"." + + nar "Luna's eyes glaze over once again, and she begins panting slightly." + + lun "*Ah*...{w=0.4} That...{w=0.4 That's very kind of you, [name_genie_luna]..." + lun "But--{w=0.4} *Ah*...{w=0.4} I'm not doing this for the sake of being rewarded." + gen "I'm aware of that, although that doesn't mean I can't show you my appreciation." + gen "Not everyone would agree to undress inside the headmaster's office..." + lun "*Ah*...{w=0.4} Because it's--{w=0.2} *Mmm*...{w=0.4} Chilly, [name_genie_luna]?" + gen "Sure!" + + nar "Luna smiles and glances down at your cock, but as she does, her expression quickly shifts into one of shock..." + + lun "*Don't worry, I'm--" + + #stops fingering + + lun "[name_genie_luna]! You stopped stroking your [name_geniepenis_luna]!" + gen "My what? Oh...{w=0.4} So I have..." + lun "Please, [name_genie_luna], resume the baiting before it's too late!" + gen "Right." + + nar "Grabbing your cock once more, you resume your stroking, fixing your gaze back towards Luna's naked body..." + + gen "There we are... No need to panic." + lun "*Phew*..." + lun "I'm sorry [name_genie_luna]... I didn't realise that I had been distracting you..." + gen "No harm done, [name_luna_genie]... In fact, it appears your distraction may have excited the spratters even more." + lun "It did? But how--" + gen "I'm not only talking about the ones afflicting myself... If you hadn't realised, you were touching yourself just a moment ago." + lun "I was?!" + lun "I...{w=0.4 How did I not realise..." + lun "We... We were only talking about..." + + nar "Luna's eyes glaze over slightly, as a dreamy and distant expression spreads across her face..." + + lun "{size=-4}But why would that result in me touching myself...{/size}" + + nar "Luna suddenly goes quiet, as if pondering on what to say next..." + + lun "The only thing I can remember being at the forefront of my mind..." + lun "Is how glad I am to have someone who genuinely listens and understands me..." + lun "And how before I sought your assistance, I had become so accustomed to people trying to distance themselves from me..." + lun "How before I stepped foot inside your office, not a single soul would even dare to..." + lun "{size=-4}Touch me...{/size}" + + #speed lines + nar "Suddenly snapping back to reality, Luna's legs begin quivering..." + + lun "[name_genie_luna], something's happening to me!" + gen "No need to worry, [name_luna_genie]... Just tell me what's going on." + lun "My body...{w=0.4} It feels hot!" + lun "And for some reason..." + lun "The only thing I can think about is you, stroking your penis!" + gen "That's hardly difficult to imagine, since it's precisely what I'm doing." + lun "I know... But it's so clear in my mind...{w=0.2} And...{w=0.2} And..." + lun "Please, [name_genie_luna]...{w=0.4} Can I--{w=0.2} I need to touch myself--" + gen "Not yet, [name_luna_genie]! I'm not there yet!" + lun "But, [name_genie_luna]!" + gen "Close your eyes for a bit, and allow me to catch up to you." + lun "But, how is that going to--" + gen "Do it, [name_luna_genie]!" + + #Base pose #closed eyes + lun "!!!" + gen "Good." + gen "Now, just wait for a little bit to see if the feeling subsides." + + #squeezing breasts pose + nar "You keep stroking your cock, while watching the girl squirm uncomfortably." + + gen "Is it working?" + lun "I--{w=0.2} I don't think so [name_genie_luna]...{w=0.4} The image of your penis is still at the forefront of my mind." + gen "Even just thinking about it is making you feel this hot and bothered?" + lun "I--{w=0.2} Yes, I think so!" + gen "Good... Then we've learned something today." + lun "[name_genie_luna], please!" + menu: + "-Deny her for a bit longer-": + gen "I'm not there yet, [name_luna_genie]." + lun "But--" + lun "Tell me what to do! How can I help?!" + gen "*Hmm*..." + #Luna opens her eyes + lun "Wait, I know!" + #Luna spreads her pussy + gen "By the great--" + lun "Is it working [name_genie_luna]? Can I do it now, can I, can I?" + gen "Oh, yes!" + lun "Thank you!!" + "-Allow her to join you-": + gen "Alright then, [name_luna_genie]... I'm almost there." + gen "You may open your eyes and join me." + lun "Thank you, [name_genie_luna]!" #open eyes + + + #fingering pose + nar "Luna immediately plunges her fingers inside her wet pussy." + nar "As she does, an expression of ecstasy spreads across her face as her oncoming orgasm rushes through her body." + + lun "[name_genie_luna]!" + gen "That's it, girl! Take this!" + #Luna and Genie "*Nnngh*!!" + + #Luna and genie cums, Luna squiring on desk, and genie shooting ropes across her face and tits + + with kissiris + lun "{heart}{heart}*Ah*!!!{heart}{heart}" + call cum_block + gen "*Argh*!!" + lun "{heart}[name_genie_luna]!{heart}" + lun "They won't stop--" + lun "{size=+5}{heart}{heart}Coming!{heart}{heart}{/size}" + gen "Then let them--" + gen "Come!" + call cum_block + pause .5 + with kissiris + gen "*Argh*-- *heavy panting*" + lun "{size=+4}{heart}*Ah*!!!{heart}{/size}" + + gen "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." + lun "*Ah*...{w=0.4} Wow...{w=0.4} That was..." + lun "Amazing..." + gen "Great job, [name_luna_genie]." + lun "*Mmm*... Thank you, [name_genie_luna]." + lun "*Hmm*... I'm all sticky now..." + + #Luna squeezes her breasts together again. + gen "*Ngh*!!" + lun "[name_genie_luna], are you alright?" + gen "Yes, I'm fine... But you should probably stop doing that, or I might have to go again..." + lun "Oh... Sorry, [name_genie_luna]!" + + show screen blkfade + with d5 + + #TODO hide CG + + nar "As Luna swiftly attempts to get off your desk, she accidentally slides off the edge, which causes her to tumble and land on the tiled floor with a soft slapping sound." + nar "As you peer over the edge, you're met with a shocked and bewildered looking Luna." + nar "She looks up at you, and you can't help but laugh a little at how silly she looks, down on the floor and still covered in cum." + nar "Before you get the chance to check on her properly, she lets out a giggle and stands up." + + hide screen blkfade + with d5 + + #TODO Add cum on Luna's face (may cut this if Loafy wants cum elsewhere) + + lun "*Giggles*..." ("base", "base", "base", "mid") + gen "*Ahem*... I believe you've still got something on your face and chest..." ("base", xpos="far_left", ypos="head") + lun "I do?" ("base", "base", "base", "mid") + + if not states.lun.ev.ll_pf_blowjob_T4_E1_intro_complete: + gen "Yes, and you should probably clean it up before you leave..." ("base", xpos="far_left", ypos="head") + lun "Oh...{w=0.4} Okay then!" ("base", "base", "base", "mid") + #TODO remove cum + else: + lun "Oh, your cum!" ("base", "base", "base", "mid") + lun "How did that happen?" ("base", "base", "base", "mid") + gen "*Err*..." ("base", xpos="far_left", ypos="head") + lun "Weird... I must've blanked out for a moment..." ("base", "base", "base", "mid") + #TODO remove cum + + if states.lun.ev.ll_pf_blowjob_T4_E2_intro_complete: + lun "Sorry, [lun_genie_name]... I know I should probably have tried to swallow them..." ("base", "base", "base", "mid") + gen "Don't worry about that..." ("base", xpos="far_left", ypos="head") + + lun "Are you feeling better, [name_genie_luna]?" ("base", "base", "base", "mid") + gen "*Huh*? Oh yes, very much so!" ("base", xpos="far_left", ypos="head") + lun "Great! I am as well!" ("base", "base", "base", "mid") + lun "Of course... It's not really the same when you're not the one touching me..." ("base", "base", "base", "mid") + gen "..." ("grin", xpos="far_left", ypos="head") + + if _wearing_clothes: + $ luna.wear("all") + + lun "Well then, I better be off!" ("base", "base", "base", "mid") + gen "Right." ("base", xpos="far_left", ypos="head") + lun "Please, don't hesitate to inform me whenever you need my help again." ("base", "base", "base", "mid") + gen "Already thinking about next time, [name_luna_genie]? We just finished!" ("base", xpos="far_left", ypos="head") + lun "Oh...{w=0.4} *Ehm*...{w=0.4} Bye then!" ("base", "base", "base", "mid") + + #Luna leaves + call lun_walk(action="leave") + + gen "(And here I thought Genie's had strong libido's...)" ("base", xpos="far_left", ypos="head") + + $ _wearing_clothes = False #reset + jump ll_pf_talk_end diff --git a/game/scripts/characters/luna/favors.rpy b/game/scripts/characters/luna/favors.rpy index 9c61d9d9..cf12bf5a 100644 --- a/game/scripts/characters/luna/favors.rpy +++ b/game/scripts/characters/luna/favors.rpy @@ -4,7 +4,8 @@ default lun_ev_talk_to_me_t1_e2 = Event(id="lun_ev_talk_to_me_t1_e2", label="ll_ default lun_ev_talk_to_me_t1_e3 = Event(id="lun_ev_talk_to_me_t1_e3", label="ll_pf_talk_T1_E3_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_talk_to_me_t1_e4 = Event(id="lun_ev_talk_to_me_t1_e4", label="ll_pf_talk_T1_E4_repeat", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) default lun_ev_talk_to_me_t2_e1 = Event(id="lun_ev_talk_to_me_t2_e1", label="ll_pf_talk_T2_E1_repeat", req="states.lun.tier == 2", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) -default lun_ev_talk_to_me_t3_e1 = Event(id="lun_ev_talk_to_me_t3_e1", label="ll_pf_talk_T3_E1_repeat", req="states.lun.tier >= 3", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) +default lun_ev_talk_to_me_t3_e1 = Event(id="lun_ev_talk_to_me_t3_e1", label="ll_pf_talk_T3_E1_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) +default lun_ev_talk_to_me_t4_e1 = Event(id="lun_ev_talk_to_me_t4_e1", label="ll_pf_talk_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) default lun_ev_inspect_her_body_t2_e1 = Event(id="lun_ev_inspect_her_body_t2_e1", label="ll_pf_inspect_T2_E1_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_inspect_her_body_t2_e2 = Event(id="lun_ev_inspect_her_body_t2_e2", label="ll_pf_inspect_T2_E2_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) @@ -21,4 +22,4 @@ define luna_favors = [ ("lun_eventqueue_talk_to_me", "Talk to me!"), ("lun_eventqueue_inspect_her_body", "Let me inspect you!"), ("lun_eventqueue_play_with_yourself", "Play with yourself!"), -] \ No newline at end of file +] diff --git a/game/scripts/characters/luna/vars.rpy b/game/scripts/characters/luna/vars.rpy index 8fbb1525..236054e9 100644 --- a/game/scripts/characters/luna/vars.rpy +++ b/game/scripts/characters/luna/vars.rpy @@ -46,6 +46,9 @@ default states.lun.ev.inspect_her_body.t2_e3_complete = False default states.lun.ev.play_with_yourself.t3_e3_complete = False default states.lun.ev.gen_genie_nickname_unlocked = False default states.lun.ev.lun_cumslut_nickname_unlocked = False +default states.lun.ev.ll_pf_blowjob_T4_E1_intro_complete = False +default states.lun.ev.ll_pf_blowjob_T4_E2_intro_complete = False +default states.lun.ev.ll_pf_talk_T4_E1_repeat_complete = False # Flags default lun_level_up = None @@ -53,3 +56,4 @@ default lun_level_up = None # Names default name_genie_luna = "Professor" default name_luna_genie = "Miss Lovegood" +default name_geniepenis_luna = "Penis" From 5fea3110ce5f7825f69f53c99c5fa1a3bcccd6a0 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 6 Mar 2024 12:45:20 +0100 Subject: [PATCH 077/249] Luna Talk to me posing * Posed part of the event. --- .../luna/events/favors/talk_to_me.rpy | 145 +++++++++--------- 1 file changed, 73 insertions(+), 72 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index 19211ff9..1dd54bf1 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -931,152 +931,153 @@ label ll_pf_talk_T4_E1_repeat: call ll_pf_talk gen "Fancy checking out my ding-dong?" ("base", xpos="far_left", ypos="head") - lun "Your ding-dong, [name_genie_luna]?" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=d3) - lun "Is that another word for clock?" ("base", "base", "base", "mid") + lun "Your ding-dong, [name_genie_luna]?" ("soft", "base", "raised", "mid", xpos="base", ypos="base", trans=d3) + lun "Is that another word for clock?" ("open", "base", "raised", "mid") gen "Remove the \"L\", and you've got it." ("base", xpos="far_left", ypos="head") - lun "Cock?" ("base", "base", "base", "mid") + lun "Cock?" ("open", "base", "raised", "mid") gen "Ding-ding-ding!" ("base", xpos="far_left", ypos="head") - lun "I'm confused..." ("base", "base", "base", "mid") + lun "I'm confused..." ("soft", "narrow", "worried", "mid") gen "Yes, I probably shouldn't have made a dinging sound..." ("base", xpos="far_left", ypos="head") - lun "" ("base", "base", "base", "mid") #confused stare + lun "" ("soft", "narrow", "base", "down") #confused stare call ctc if states.lun.ev.ll_pf_blowjob_T4_E1_intro_complete: - lun "Oh, you mean \"penis\"!" ("base", "base", "base", "mid") - lun "All these different terms for it are so confusing!" ("base", "base", "base", "mid") + lun "Hold on... You're talking about your \"penis\"!" ("angry", "base", "base", "stare") + lun "All these different terms for it are so confusing!" ("grin", "happyCl", "base", "mid") gen "Yes, remembering them all can be a bit difficult at times..." ("base", xpos="far_left", ypos="head") - lun "How many words for it are there?" ("base", "base", "base", "mid") + lun "Are there really that many? How many are there?" ("soft", "narrow", "base", "stare") gen "Hundreds... Perhaps thousands..." ("base", xpos="far_left", ypos="head") else: - lun "You've got a rooster in here?" ("base", "base", "base", "mid") + lun "So, you've got a rooster you'd like me to see?" ("open", "base", "base", "mid") gen "No, there's no rooster... It's just another word for \"penis\"." ("base", xpos="far_left", ypos="head") - lun "Oh, that makes more sense!" ("base", "base", "base", "mid") - lun "I never imagined that there could be so many words for a single object." ("base", "base", "base", "mid") - gen "Oh, there's hundred of words for it... Thousands, perhaps." ("base", xpos="far_left", ypos="head") + lun "Oh, that makes more sense!" ("grin", "base", "base", "stare") + lun "Why, I never imagined that there could be so many words for a single organ." ("base", "base", "base", "mid") + gen "Oh, there are hundred of words for it... Thousands, perhaps." ("base", xpos="far_left", ypos="head") - lun "What?! Really?! Wow!" ("base", "base", "base", "mid") - lun "Teach me, teach me, teach me!" ("base", "base", "base", "mid") + lun "What?! Really?! Wow!" ("smile", "base", "base", "stare") + lun "Teach me, teach me, teach me!" ("smile", "wide", "base", "mid") gen "Such enthusiasm! However, it's not exactly the reason I asked you to--" ("base", xpos="far_left", ypos="head") - lun "..." ("base", "base", "base", "mid") #Expectant smile + lun "..." ("upset", "base", "worried", "mid") #Expectant smile gen "Alright...{w=0.4} I suppose I could teach you another one." ("base", xpos="far_left", ypos="head") - lun "Yay!" ("base", "base", "base", "mid") + lun "Yay!" ("grin", "base", "base", "mid") gen "How about..." ("base", xpos="far_left", ypos="head") menu: "\"Chode!\"": $ name_geniepenis_luna = "Chode" - lun "Chode?" ("base", "base", "base", "mid") - gen "Yep, although that one is used to describe a particular shape." ("base", xpos="far_left", ypos="head") - lun "They come in different shapes?" ("base", "base", "base", "mid") + lun "Chode?" ("soft", "base", "base", "mid") + gen "Yep, although that one is usually used to describe a particular shape." ("base", xpos="far_left", ypos="head") + lun "They come in different shapes?" ("angry", "base", "base", "mid") gen "Of course!" ("base", xpos="far_left", ypos="head") - lun "Wow!" ("base", "base", "base", "mid") - lun "I wanna see a triangle-shaped one!" ("base", "base", "base", "mid") + lun "Wow!" ("grin", "base", "base", "mid") + lun "I wanna see a triangle-shaped one!" ("smile", "narrow", "base", "mid") gen "..." ("base", xpos="far_left", ypos="head") "\"Donkey Kong!\"": $ name_geniepenis_luna = "Donkey Kong" - lun "Donkey... Kong?" ("base", "base", "base", "mid") + lun "Donkey... Kong?" ("soft", "base", "raised", "mid") gen "That's right." ("base", xpos="far_left", ypos="head") gen "Or was it Wonky Dong..." ("base", xpos="far_left", ypos="head") "\"Knob!\"": $ name_geniepenis_luna = "Knob" - lun "Knob?" ("base", "base", "base", "mid") + lun "Knob?" ("soft", "base", "raised", "mid") gen "Yep." ("base", xpos="far_left", ypos="head") - lun "Like a door?" ("base", "base", "base", "mid") + lun "Like a door?" ("open", "base", "raised", "mid") gen "You can adore a knob if you're into that." ("base", xpos="far_left", ypos="head") - lun "*Huh*?" + lun "*Huh*?" ("open", "base", "base", "mid") "\"Member!\"": $ name_geniepenis_luna = "A member" - lun "A member?" ("base", "base", "base", "mid") + lun "A member?" ("soft", "base", "raised", "mid") gen "Yep." ("base", xpos="far_left", ypos="head") - lun "A member of what?" ("base", "base", "base", "mid") + lun "A member of what?" ("open", "base", "raised", "mid") gen "No, it's just called a \"member\"." ("base", xpos="far_left", ypos="head") lun "\"A member\"... I see..." ("base", "base", "base", "mid") "\"One-eyed trouser snake!\"": $ name_geniepenis_luna = "One-eyed trouser snake" - lun "A snake?!" ("base", "base", "base", "mid") + lun "A snake?!" ("angry", "wide", "base", "stare") gen "Not an actual snake..." ("base", xpos="far_left", ypos="head") - lun "Oh... So, like a cock?" ("base", "base", "base", "mid") + lun "Oh... So, like a cock?" ("soft", "base", "raised", "mid") gen "How is a cock similar to a snake?" ("base", xpos="far_left", ypos="head") - lun "But I thought..." ("base", "base", "base", "mid") + lun "But I thought..." ("disgust", "narrow", "base", "mid") "\"Pecker!\"": $ name_geniepenis_luna = "Pecker" - lun "Pecker?" ("base", "base", "base", "mid") + lun "Pecker?" ("soft", "base", "raised", "mid") gen "Yep." ("base", xpos="far_left", ypos="head") - lun "So, like...{w=0.4] A woodpecker?" ("base", "base", "base", "mid") + lun "So, like...{w=0.4} A woodpecker?" ("open", "base", "base", "up") gen "That's right... Except this pecker pecks for pussy." ("base", xpos="far_left", ypos="head") - lun "Pussy?!" ("base", "base", "base", "mid") + lun "Pussy?!" ("angry", "base", "base", "mid") gen "That's right." ("base", xpos="far_left", ypos="head") - lun "Sounds like I've got a lot more to learn about peckers than I thought..." ("base", "base", "base", "mid") + lun "Sounds like I've got a lot more to learn about peckers than I thought..." ("soft", "closed", "base", "mid") "\"Schlong!\"": $ name_geniepenis_luna = "Schlong" - lun "Schlong?" ("base", "base", "base", "mid") + lun "Schlong?" ("soft", "base", "raised", "mid") gen "That's right." ("base", xpos="far_left", ypos="head") - lun "Such a peculiar name...{w=0.4} Did you come up with it yourself, [name_genie_luna]?" ("base", "base", "base", "mid") + lun "Such a peculiar name...{w=0.4} Did you come up with it yourself, [name_genie_luna]?" ("open", "base", "base", "mid") gen "Of course!" ("base", xpos="far_left", ypos="head") gen "Anything above 5.5 inches, is a \"schlong\"... Anything below 5.1 is a \"schlort\"." ("base", xpos="far_left", ypos="head") - lun "And between those two?" ("base", "base", "base", "mid") + lun "And between those two?" ("soft", "base", "raised", "mid") gen "\"schlaverage\"." ("base", xpos="far_left", ypos="head") "\"Skin flute!\"": $ name_geniepenis_luna = "Skin flute" - lun "Skin... Flute?" + lun "Skin... Flute?" ("soft", "base", "raised", "mid") if states.lun.ev.ll_pf_blowjob_T4_E1_intro_complete: gen "Because you can blow on it." ("base", xpos="far_left", ypos="head") - lun "Blow? Don't you mean suck, [name_genie_luna]?" ("base", "base", "base", "mid") + lun "Blow? Don't you mean suck, [name_genie_luna]?" ("open", "base", "base", "mid") gen "Yeah, I guess..." ("base", xpos="far_left", ypos="head") gen "Although a \"suckjob\" sounds a lot less appealing." ("base", xpos="far_left", ypos="head") - lun "Suck... Job?" ("base", "base", "base", "mid") + lun "Suck... Job?" ("soft", "base", "base", "mid") else: gen "Yes, since you can blow--" ("base", xpos="far_left", ypos="head") - gen "(Hold on... She doesn't have the context for it to make sense...)" ("base", xpos="far_left", ypos="head") - lun "Yes?" ("base", "base", "base", "mid") + gen "(Hold on... She doesn't have the context to make any sense of this...)" ("base", xpos="far_left", ypos="head") + lun "Yes?" ("soft", "base", "base", "mid") gen "Because...{w=0.4} It has the shape of a flute!" ("base", xpos="far_left", ypos="head") - lun "It has?" ("base", "base", "base", "mid") + lun "It has?" ("open", "base", "base", "mid") gen "Think about it! It's long, and it's got a shapely tip, and--" ("base", xpos="far_left", ypos="head") gen "Hold on... Is that actually the true reason?" ("base", xpos="far_left", ypos="head") - lun "*Huh*?" ("base", "base", "base", "mid") + lun "*Huh*?" ("open", "base", "raised", "mid") "\"Wang!\"": $ name_geniepenis_luna = "Wang" - lun "Wang?" ("base", "base", "base", "mid") + lun "Wang?" ("soft", "base", "raised", "mid") gen "Yep." ("base", xpos="far_left", ypos="head") gen "Like the surname of that Asian girl." ("base", xpos="far_left", ypos="head") - lun "Cho Chang?" ("base", "base", "base", "mid") + lun "The surname... Don't you mean \"Chang\", [name_genie_luna]? Cho Chang?" ("open", "base", "base", "mid") gen "Are there any other Asian girls in this school?" ("base", xpos="far_left", ypos="head") - gen "Wait, did you say \"Chang\"?" ("base", xpos="far_left", ypos="head") - lun "Yes... Cho Chang, [name_genie_luna]." ("base", "base", "base", "mid") - gen "That can't be right... That's neither funny nor thematic..." ("base", xpos="far_left", ypos="head") - lun "[name_genie_luna]?" ("base", "base", "base", "mid") - gen "Why would the author name you \"Lovegood\" if they weren't trying to go for a theme..." ("base", xpos="far_left", ypos="head") - lun "*Ehm*... Who are you talking about exactly?" ("base", "base", "base", "mid") + gen "Wait, did you say \"Chang\"? I could've sworn it was Wang..." ("base", xpos="far_left", ypos="head") + lun "I... Well, perhaps I've been saying it wrong?" ("soft", "base", "base", "down") + gen "Chang doesn't even fit the theme, so surely it must be..." ("base", xpos="far_left", ypos="head") + lun "The theme, [name_genie_luna]? What theme?" ("soft", "base", "base", "mid") + gen "There's \"Nymphadora\"...{w=0.4} and \"Lovegood\"..." ("base", xpos="far_left", ypos="head") if states.sus.unlocked: - gen "Luna Lovegood...{w=0.4} Susan Bones...{w=0.4} Hermione--{w=0.2} Hold on..." ("base", xpos="far_left", ypos="head") - gen "There never was a theme!" ("base", xpos="far_left", ypos="head") - gen "Such a wasted opportunity..." ("base", xpos="far_left", ypos="head") - lun "[name_genie_luna]?" ("base", "base", "base", "mid") + gen "And there's even Bones too!" ("base", xpos="far_left", ypos="head") + gen "And Hermione--{w=0.2} Hold on..." ("base", xpos="far_left", ypos="head") + gen "There never was a theme!" ("base", xpos="far_left", ypos="head") + gen "Such a wasted opportunity!" ("base", xpos="far_left", ypos="head") + lun "..." ("soft", "base", "base", "mid") "\"Weiner!\"": $ name_geniepenis_luna = "Weiner" - lun "Weiner?" ("base", "base", "base", "mid") - lun "Like a sausage weiner?" ("base", "base", "base", "mid") + lun "Weiner?" ("soft", "base", "raised", "mid") + lun "Like a sausage weiner?" ("open", "base", "raised", "mid") gen "Yep." ("base", xpos="far_left", ypos="head") gen "Because it resembles a weiner, you see?" ("base", xpos="far_left", ypos="head") - lun "I see!" ("base", "base", "base", "mid") - lun "So, like a banana!" ("base", "base", "base", "mid") - gen "*Hmm*... I don't know if I'd call it a banana." ("base", xpos="far_left", ypos="head") - lun "Oh...{w=0.4} How come?" ("base", "base", "base", "mid") + lun "I see!" ("grin", "base", "base", "mid") + lun "So, like a banana!" ("smile", "base", "base", "mid") + gen "*Hmm*... I don't know if I'd compare it to a banana." ("base", xpos="far_left", ypos="head") + lun "Oh...{w=0.4} How come?" ("upset", "base", "base", "mid") gen "Well, first of...{w=0.4} A banana is something that you can peel, and you can't peel a--" ("base", xpos="far_left", ypos="head") gen "..." ("base", xpos="far_left", ypos="head") - lun "Yes?" ("base", "base", "base", "mid") + lun "Yes?" ("soft", "base", "raised", "mid") "\"Third leg!\"": $ name_geniepenis_luna = "Third leg" - lun "A leg?!" ("base", "base", "base", "mid") + lun "A leg?!" ("angry", "base", "base", "mid") gen "A \"third leg\", specifically." ("base", xpos="far_left", ypos="head") - lun "Wait... Does that mean you can walk on it?!" ("base", "base", "base", "mid") + lun "Wait... Does that mean you can walk on it?!" ("angry", "base", "base", "stare") gen "Depends on the situation..." ("base", xpos="far_left", ypos="head") gen "Sometimes, you'll find yourself in a situation where you have no leg to stand on." ("base", xpos="far_left", ypos="head") - lun "Really? When would that be?" ("base", "base", "base", "mid") + lun "Really? When would that be?" ("soft", "base", "raised", "mid") gen "..." ("base", xpos="far_left", ypos="head") gen "Let's say you've just told a hilarious pun, but your audience doesn't get it." ("base", xpos="far_left", ypos="head") - lun "I see..." ("base", "base", "base", "mid") + lun "I see..." ("open", "base", "base", "up") gen "Anyway... Teaching you various words for penis wasn't the purpose of me summoning you today--" ("base", xpos="far_left", ypos="head") + lun "Oh, right!" ("base", "base", "base", "mid") if luna.is_any_worn("clothes"): $ _wearing_clothes = True @@ -1107,9 +1108,9 @@ label ll_pf_talk_T4_E1_repeat: call lun_walk("desk", "base") gen "What are you doing?" ("base", xpos="far_left", ypos="head") - lun "Oh, I just thought...{w=0.4} My apologies." ("base", "base", "base", "mid") + lun @ cheeks blush "Oh, I just thought...{w=0.4} My apologies." ("angry", "narrow", "base", "downR") gen "No need to apologise, [name_luna_genie]! I just wasn't prepared for the eagerness." ("base", xpos="far_left", ypos="head") - lun "Always ready to serve! *Ehm*... I mean, always ready to assist with your research!" ("base", "base", "base", "mid") + lun @ cheeks blush "Always ready to serve! *Ehm*... I mean, always ready to assist with your research!" ("grin", "base", "base", "downL") gen "Commendable." ("base", xpos="far_left", ypos="head") if luna.is_any_worn("clothes"): @@ -1121,9 +1122,9 @@ label ll_pf_talk_T4_E1_repeat: else: gen "In that case, why don't you take a seat right over here..." ("base", xpos="far_left", ypos="head") - lun "On the desk?" ("base", "base", "base", "mid") - gen "On the desk..." ("base", xpos="far_left", ypos="head") - lun "Okay then!" ("base", "base", "base", "mid") + lun "In your lap, yes?" ("smile", "base", "base", "mid") + gen "On the desk, if you please..." ("base", xpos="far_left", ypos="head") + lun "Oh! Okay then!" ("smile", "base", "base", "downL") #TODO Fade to Luna sitting on desk CG From 04e500f5a22cfdc64a9c5d182ae309e2cd2519cf Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 6 Mar 2024 17:00:15 +0100 Subject: [PATCH 078/249] fix * Minor fix --- game/scripts/characters/luna/events/favors/talk_to_me.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index 1dd54bf1..af9cc603 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -1268,7 +1268,7 @@ label ll_pf_talk_T4_E1_repeat: nar "Luna's eyes glaze over once again, and she begins panting slightly." - lun "*Ah*...{w=0.4} That...{w=0.4 That's very kind of you, [name_genie_luna]..." + lun "*Ah*...{w=0.4} That...{w=0.4} That's very kind of you, [name_genie_luna]..." lun "But--{w=0.4} *Ah*...{w=0.4} I'm not doing this for the sake of being rewarded." gen "I'm aware of that, although that doesn't mean I can't show you my appreciation." gen "Not everyone would agree to undress inside the headmaster's office..." From f81822071b5a29818a340b6ab740018489ccb5b4 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Mon, 18 Mar 2024 12:44:40 +0100 Subject: [PATCH 079/249] Card game "boss battle" one-liners improvements * Proofread and improved the card game boss battle one-liners. * Minor fix. --- .../luna/events/favors/talk_to_me.rpy | 2 +- .../minigames/cardgame/__card_game_init__.rpy | 134 +++++++++--------- 2 files changed, 68 insertions(+), 68 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index af9cc603..e3651b1c 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -1295,7 +1295,7 @@ label ll_pf_talk_T4_E1_repeat: lun "It did? But how--" gen "I'm not only talking about the ones afflicting myself... If you hadn't realised, you were touching yourself just a moment ago." lun "I was?!" - lun "I...{w=0.4 How did I not realise..." + lun "I...{w=0.4} How did I not realise..." lun "We... We were only talking about..." nar "Luna's eyes glaze over slightly, as a dreamy and distant expression spreads across her face..." diff --git a/game/scripts/minigames/cardgame/__card_game_init__.rpy b/game/scripts/minigames/cardgame/__card_game_init__.rpy index 69923e68..9cb522fb 100644 --- a/game/scripts/minigames/cardgame/__card_game_init__.rpy +++ b/game/scripts/minigames/cardgame/__card_game_init__.rpy @@ -467,93 +467,93 @@ default her_first_deck = [card_her_schoolgirl.clone(), card_item_girlmag.clone() default her_second_deck = [card_her_schoolgirl.clone(), card_item_eromag.clone(), card_item_bookgala.clone(), card_item_bookgala2.clone(), card_item_bookchairs.clone()] default her_third_deck = [card_her_librarian.clone(), card_item_pornmag.clone(), card_item_bookgala.clone(), card_item_bookgala2.clone(), card_item_bookchairs.clone()] -define card_non_spec_char = ["I see you've been practising... so have I!", - "You've activated my trap card... wait... it's in my other deck!", +define card_non_spec_char = ["I see you've been practising... So have I!", + "You've activated my trap card... Wait... it's in my other deck!", "You think you're so good, but this school has never seen a player of the likes of me! In this particular office...", - "Aha, you've walked right into my trap. Take this!", - "You'll never beat me! I will give you the reward though... in your dreams!", - "That's impossible... that card is legendary... wait, it doesn't have a shimmering effect, never mind.", - "I was sure my cards used to be good...", - "Wait, you've got that card... I've been such a fool! This is a witchmasters deck!", - "We're playing reverse rules right? Lowest amount of cards win?", - "If only slight of hand was taught at Hogwarts...", - "Wait, this can't be right. I must have put my good cards in my other robes.", - "You should be happy that they banned one of the cards that came in a cereal box promotion... that one was overpowered.", + "Aha! You've walked right into my trap! Take this!", + "You'll never beat me! The only place you'll find that reward... is in your dreams!", + "That's impossible... That card is legendary... Wait, it doesn't have a shimmering effect, never mind.", + "I was so sure my cards were good... Did they release yet another set?", + "Wait... You've got that card?! I've been such a fool! This is a witchmasters deck!", + "We're playing reverse rules, right? Lowest amount of cards win?", + "If only sleight of hand was taught at Hogwarts...", + "Wait... This can't be right... I must have put my good cards in my other robes!", + "You should be happy that they banned that card from the Pixie Puffs cereal box promotion... That one was overpowered.", "This one's a board sweeper!", - "I'll just burn this card... oh yeah, I got better cards coming.", - "This is a control deck. I'll win in the end don't you worry.", - "Maybe I should have made less of a filler deck... I'll get you in the end.", + "I'll just burn this card... I've got better cards coming.", + "This is a control deck... I'll win in the end, don't you worry.", + "Perhaps I should have made less of a filler deck... I'll still get you in the end, though.", "Your loss is inevitable. It's all in the heart of the cards.", - "Have you been Netdecking? Did those damn spiders in the forest tell you what cards to play?", - "I've been metagaming the crap out of you... I know exactly what cards you're going to play... except for that last one.", + "Have you been Netdecking? Did those damn spiders in the forest tell you which cards to play?", + "I've been metagaming the crap out of you... I can predict every card you'll play... except for that last one.", "Oh, it's my turn? I was just thinking about how I'm going to celebrate after your inevitable loss.", "I've been slowrolling you this whole time. My last card is a mega ultimate legendary.", - "What kind of deck is this... don't you even care about synergy?", - "I see what kind of player you are now... perhaps a more offensive approach is in order.", - "I was born to play card games... you merely adopted your liking of them.", - "Hahah, you don't even know that I have a card with powers that has been locked away for centuries... unfortunately I lost the key...", - "Prepare for a total wipe... your tears when I beat you that is.", - "You want to know what's shown on my cards? What do I like the most? Winning, which is why this card is going to guarantee my victory.", - "Life is like a game of Wizard Cards. If you don't win... you lose.", + "What kind of deck is this... Do you even care about synergy?", + "I see what kind of player you are now... Perhaps a more offensive approach is in order.", + "I was born to play card games... You merely adopted your enjoyment of them.", + "*Ha-Ha-Hah*! You don't even know that I have a card with powers that has been locked away for centuries... unfortunately I lost the key...", + "Prepare for a total wipe... Of your tears once I beat you, that is.", + "You want to know what imagery is displayed on my cards? What do I like the most? Winning! Which is why this card is going to guarantee my victory.", + "Life is like a game of Wizard Cards... If you're not winning... you're losing.", "Quitters never win, winners never quit, but those who never win and never quit are idiots... I'm not sure which I am.", "Go fish...", - "Do you have any spells to make you better at Wizard Cards? Didn't think so...", - "You can smell the roses as much as you want, while I smell the aroma of victory", - "Do you see any stars yet, because you're getting beaten pretty badly.", + "Do you know of any spells that'd make you better at Wizard Cards? Yeah, didn't think so...", + "You can smell the roses as much as you want, while I bask in the aroma of victory.", + "Are you seeing stars yet? Maybe some circling birds? You're getting beaten pretty badly, after all.", "Well, your performance in this round is certainly a divine comedy.", "The forecast today is calling for my victory, so I'm not worried.", "Are you out of juice already?", - "Couldn't you see from your own fortune that you're bound to lose?", - "Looks like you fell right into your own trap... now look at this!! KAPOW", + "A fortune cookie told me I would win today... So, I'm not really worried about losing.", + "Looks like you fell right into your own trap... now look at this!! KAPOW!!", "I don't need luck potion to beat you. That's how confident I am in my deck.", - "I know my deck like the back of my hand... wait, when did that mole get there?", - "Fool, you'll soon see my finishing move... but before that, UNO!", - "I'm so confident in my card collection I just shuffled and picked some at random before this game.", - "Great cards doesn't ensure a win. Right moves do.", - "The game balance of this game has been broken for centuries... and I have the winning cards.", - "The ministry of magic considered banning this game as they thought it all mattered what cards you had... something about gambling for children.", - "If I said that I picked my cards blindfolded would you believe me? Yes, they're all that good.", - "I tried to use transfiguration on one of my cards but it burnt up instead... I probably wasn't the first one who tried that.", - "Wait! Isn't that card banned? No, the stats aren't the same... phew", - "Why does that card of yours look so sticky?", - "Oh nice a shiny... wait, why has it stuck to the board?", + "I know my deck like the back of my hand... Wait, when did that mole get there?", + "You fool! Prepare yourself for my ultimate finishing move... But before that... UNO!", + "I'm so confident in my card collection, I just shuffled and created this deck at random.", + "Great cards doesn't ensure a win... It's making the right moves that does.", + "The balance of this game has been broken for centuries... and I possess the cards that exploit that flaw.", + "The ministry of magic considered banning this game... They mentioned something about loot boxes... Or was it surprise mechanics?", + "If I told you that I picked my cards while blindfolded, would you believe me? Yes, that's how good they are.", + "I tried using transfiguration on one of my cards, but it burnt up instead... Hopefully, I'm not the first who has tried that.", + "Wait! Isn't that card banned? No... the stats aren't the same... *Phew*...", + "Why does that particular card of yours have a sticky residue on it?", + "A shiny! Wait... Why has it stuck to the board?", "That's nowhere near the best move you could've done. Check this out!", - "Even a troll would play better than you at this point... no offence.", - "Some people are half blood and some pure-blood. But I'm purely a Card playing genius.", - "That must be a new card. Why haven't I seen that one before?", - "Wait, my numbers must have changed. Did you put a spell on my cards?", - "Hit me... I mean, give me another card.", - "Ah, that one. Too bad I have the perfect counter.", + "Even a troll would play better than you at this point... No offence.", + "In a world of half-bloods and pure-bloods, I proudly declare myself a card-playing genius.", + "That must be a new card... Why haven't I seen that one before?", + "Wait, my numbers must have changed! Did you jinx my cards?", + "Hit me... Not literally, of course... I mean't, give me another card.", + "Ah... That one.... Too bad I have the perfect counter.", "So, when do I get to draw a card again?", "Someone replaced one of my cards with a joker... I bet it was peeves.", - "I was told that face cards was the best ones to get... but they were talking about poker.", + "I was told that face cards are the best... But I now realise they were talking about poker.", "By Merlin's beard, where did you get that card?", - "Next time you should let me use the cards I drew. Their numbers are a lot better than these ones."] + "Next time, I'll bring out my aggro deck..."] -define snape_speech_card = ["You may have lived for hundreds of years but my superior intellect will outweigh your otherworldly powers.", - "When this is over I think I'll celebrate my victory with one of your nice bottles of alcohol.", - "You should stick to charming women... wizard cards is my game.", - "You said you were from a different world, another reality? Maybe in that reality you'd beat me at cards. But not this one!", +define snape_speech_card = ["You may have lived for hundreds of years, but my superior intellect will outweigh your otherworldly powers.", + "When this is over, I think I'll celebrate my victory with one of your more expensive bottles of wine.", + "You should stick to charming women... Wizard cards is my game.", + "You said you were from a different world, another reality? Maybe you'd beat me at cards in that reality... But not this one!", "We don't stop playing because we grow old, we grow old because we stop playing.", - "Where did you even find your trash cards? In a promotional pamphlet?", + "Where did you even find your rubbish cards? In a promotional pamphlet?", "Why are my cards so much greasier than yours?"] + card_non_spec_char -define twins_speech_card = ["Our cards are fresher than fresh. They were printed last night so they must be good.", - "Giving you a percentage of our profit was an easy bet, because we know you'll never win.", - "We weighed our packs before opening them so our cards must be rare.", - "Activate twin psychic link.", - "Some people wouldn't duel a duo because they can't maintain eye contact during play... or eye to card contact.", - "We're a two player team, so we get double the cards to chose from right?", - "We're not going easy on you just so you wont shut our shop down.", - "What's on our cards? Sweet, sweet profit of course.", - "Hey, that percentage we promised you... you mind lowering it a bit? I mean, a deal is a deal... but still.", - "You better open up the trade routes a bit more if you beat us. We don't want to deal with Filch if he finds where these cards came from.", - "We probably should have opened a few of our boosters but where's the fun without a bit of risk?"] + card_non_spec_char +define twins_speech_card = ["Our cards are fresher than fresh! They were printed last night, so they must be good!", + "Giving you a percentage of our profit was an easy bet... Since we know you'll never win.", + "We've weighed our packs before opening them, so our cards must be rare.", + "Activate twin psychic link!", + "Some people won't duel a duo because they can't maintain eye contact during play... or eye to card contact.", + "We're a two-player team, so we get double the cards to choose from, right?", + "We're not going easy on you just so you won't shut our shop down.", + "What's on our cards? Sweet, sweet profits, of course.", + "Hey, that percentage we promised you... Do you mind if we lowered it slightly? I mean, a deal is a deal... but still.", + "If you beat us, we'd appreciate it if you could give us an endorsement with our supplier.", + "In hindsight, perhaps we should've cracked open a few boosters, but where's the thrill without a bit of risk?"] + card_non_spec_char -define her_speech_card = ["You should double the points you give me if I win... or at least consider it.", - "I'm great at wizards chess so beating you at this shouldn't be a problem...", - "I should have asked for house points if I beat you... oh well, too late now.", - "Have you been looking at my deck? That's cheating, you better whip yours out..."] + card_non_spec_char +define her_speech_card = ["Would you consider doubling the points you award me if I win?", + "I'm great at wizards chess, so beating you at this shouldn't be a problem...", + "I should have asked for house points if I beat you... Oh, well... Too late now.", + "Have you been peeking at my deck? That's cheating! You better whip yours out..."] + card_non_spec_char init python: From 304221c60196bcbc48b2d8e618a2e47a9e588b06 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 18 Mar 2024 18:06:50 +0000 Subject: [PATCH 080/249] Luna CG * Implemented Luna's 'Talk to me' CG files. --- .../CG/lun_talk/lun_talk_background.webp | 3 ++ game/images/CG/lun_talk/lun_talk_book.webp | 3 ++ ...k_arm_left_hold_leg_variant_legs_side.webp | 3 ++ ...alk_arm_left_hold_leg_variant_legs_up.webp | 3 ++ ...arm_left_masturbate_variant_legs_side.webp | 3 ++ ...k_arm_left_masturbate_variant_legs_up.webp | 3 ++ .../lun_talk/luna/lun_talk_arm_left_rest.webp | 3 ++ ..._talk_arm_left_spread_variant_legs_up.webp | 3 ++ ..._arm_right_hold_leg_variant_legs_side.webp | 3 ++ ...lk_arm_right_hold_leg_variant_legs_up.webp | 3 ++ .../luna/lun_talk_arm_right_rest.webp | 3 ++ .../luna/lun_talk_arms_grab_chest.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_blush_base.webp | 3 ++ .../lun_talk/luna/lun_talk_blush_heavy.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_chest.webp | 3 ++ .../lun_talk/luna/lun_talk_eyebrows_base.webp | 3 ++ .../luna/lun_talk_eyebrows_raised.webp | 3 ++ .../luna/lun_talk_eyebrows_surprised.webp | 3 ++ .../luna/lun_talk_eyebrows_upset.webp | 3 ++ .../luna/lun_talk_eyebrows_worried.webp | 3 ++ .../luna/lun_talk_eyes_base_ahegao.webp | 3 ++ .../luna/lun_talk_eyes_base_down.webp | 3 ++ .../luna/lun_talk_eyes_base_left.webp | 3 ++ .../luna/lun_talk_eyes_base_right.webp | 3 ++ .../luna/lun_talk_eyes_base_stare.webp | 3 ++ .../lun_talk/luna/lun_talk_eyes_base_up.webp | 3 ++ .../lun_talk/luna/lun_talk_eyes_closed.webp | 3 ++ .../luna/lun_talk_eyes_narrow_ahegao.webp | 3 ++ .../luna/lun_talk_eyes_narrow_down.webp | 3 ++ .../luna/lun_talk_eyes_narrow_left.webp | 3 ++ .../luna/lun_talk_eyes_narrow_right.webp | 3 ++ .../luna/lun_talk_eyes_narrow_stare.webp | 3 ++ .../luna/lun_talk_eyes_narrow_up.webp | 3 ++ .../luna/lun_talk_eyes_wide_ahegao.webp | 3 ++ .../luna/lun_talk_eyes_wide_down.webp | 3 ++ .../luna/lun_talk_eyes_wide_left.webp | 3 ++ .../luna/lun_talk_eyes_wide_right.webp | 3 ++ .../luna/lun_talk_eyes_wide_stare.webp | 3 ++ .../lun_talk/luna/lun_talk_eyes_wide_up.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_hair.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_legs_down.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_legs_side.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_legs_up.webp | 3 ++ .../lun_talk/luna/lun_talk_mouth_ahegao.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_mouth_base.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_mouth_open.webp | 3 ++ .../luna/lun_talk_mouth_open_wide.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_mouth_pout.webp | 3 ++ .../lun_talk/luna/lun_talk_mouth_smile.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_mouth_soft.webp | 3 ++ .../lun_talk/luna/lun_talk_mouth_timid.webp | 3 ++ .../CG/lun_talk/luna/lun_talk_torso.webp | 3 ++ game/scripts/cg/luna.rpy | 47 +++++++++++++++++++ 53 files changed, 203 insertions(+) create mode 100644 game/images/CG/lun_talk/lun_talk_background.webp create mode 100644 game/images/CG/lun_talk/lun_talk_book.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_side.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_up.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_side.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_up.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_left_rest.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_left_spread_variant_legs_up.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_side.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_up.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arm_right_rest.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_arms_grab_chest.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_blush_base.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_blush_heavy.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_chest.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyebrows_base.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyebrows_raised.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyebrows_surprised.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyebrows_upset.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyebrows_worried.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_base_ahegao.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_base_down.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_base_left.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_base_right.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_base_stare.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_base_up.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_closed.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_ahegao.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_down.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_left.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_right.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_stare.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_up.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_wide_ahegao.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_wide_down.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_wide_left.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_wide_right.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_wide_stare.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_eyes_wide_up.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_hair.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_legs_down.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_legs_side.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_legs_up.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_mouth_ahegao.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_mouth_base.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_mouth_open.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_mouth_open_wide.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_mouth_pout.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_mouth_smile.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_mouth_soft.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_mouth_timid.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_torso.webp diff --git a/game/images/CG/lun_talk/lun_talk_background.webp b/game/images/CG/lun_talk/lun_talk_background.webp new file mode 100644 index 00000000..07d6097e --- /dev/null +++ b/game/images/CG/lun_talk/lun_talk_background.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e0f2b82689aa5c00a7daff58ba2586a06fd3684784a687b8cacf0c052233fc1 +size 1360102 diff --git a/game/images/CG/lun_talk/lun_talk_book.webp b/game/images/CG/lun_talk/lun_talk_book.webp new file mode 100644 index 00000000..e97575de --- /dev/null +++ b/game/images/CG/lun_talk/lun_talk_book.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28e83e55733d0ee49bb634f706b7fb39c25a045d1ac5bf35ce5a9ca597a31202 +size 199426 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_side.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_side.webp new file mode 100644 index 00000000..80cd9abc --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_side.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7058776cdcc822f53e2d75de756c50e27874a9b23ece0b02ef2839faf0b19405 +size 41286 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_up.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_up.webp new file mode 100644 index 00000000..a147e4b6 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:206928ce91ad72708eecc1b951ea5e5f63e3b76e6897a8b892211d2b6d233dc0 +size 52318 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_side.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_side.webp new file mode 100644 index 00000000..9f339ddc --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_side.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff5c67a90aeeecff6e9bd7a8d31b3f23a0d639e457b14b48d21cb86ff35a86d3 +size 52504 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_up.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_up.webp new file mode 100644 index 00000000..94fef188 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:357e2449458eaac1a37b74231cbe26875a4df982aded05a9c09a56225f65a5c3 +size 54422 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_left_rest.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_left_rest.webp new file mode 100644 index 00000000..2fb7bc49 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_left_rest.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fc9938c1d16003f33ff2fddac7858ad2a16a3e46e5fdb510b57e603cb3e7706 +size 58864 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_left_spread_variant_legs_up.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_left_spread_variant_legs_up.webp new file mode 100644 index 00000000..3382ebeb --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_left_spread_variant_legs_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4d67e65fdadd5f1773e30da5a397dda70525c470a0db752dc0e8b800c363141 +size 48992 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_side.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_side.webp new file mode 100644 index 00000000..b7e5161f --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_side.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab7d2712222d4459d53d9368630fae8995d708d4478d18e9d37ed3bce43e5c18 +size 41466 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_up.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_up.webp new file mode 100644 index 00000000..ac5f4c2a --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79fa63e6d3bc7814bad693131978bbb08cd22e5cd012e8e21193f2c191be450f +size 45292 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arm_right_rest.webp b/game/images/CG/lun_talk/luna/lun_talk_arm_right_rest.webp new file mode 100644 index 00000000..8fa32fe9 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arm_right_rest.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08f61d35b016e1b479fa54e677ae77700a09fd47f8b8ec2b2d34f0f8beaf8dc6 +size 53194 diff --git a/game/images/CG/lun_talk/luna/lun_talk_arms_grab_chest.webp b/game/images/CG/lun_talk/luna/lun_talk_arms_grab_chest.webp new file mode 100644 index 00000000..b53d429e --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_arms_grab_chest.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a216cb91fc483e1f802be6cee59aeabcc4c55a5abeb76ce5ba00028fdfee6ffe +size 105858 diff --git a/game/images/CG/lun_talk/luna/lun_talk_blush_base.webp b/game/images/CG/lun_talk/luna/lun_talk_blush_base.webp new file mode 100644 index 00000000..a9baab8c --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_blush_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbb73e4d0d7e21eda6a4ca57c788302678bb00056074d650e06eb8bb19c105d1 +size 34292 diff --git a/game/images/CG/lun_talk/luna/lun_talk_blush_heavy.webp b/game/images/CG/lun_talk/luna/lun_talk_blush_heavy.webp new file mode 100644 index 00000000..ecfe2065 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_blush_heavy.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a59078c7481509675eb5849e6d2e47615e5194416d80e2ebb3007cd3e8be30d8 +size 35776 diff --git a/game/images/CG/lun_talk/luna/lun_talk_chest.webp b/game/images/CG/lun_talk/luna/lun_talk_chest.webp new file mode 100644 index 00000000..a8d0797c --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_chest.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4052587ebe74480e02336085d65d40f9e7ad697ca205ede08816fbc1baee5d7c +size 53434 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyebrows_base.webp b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_base.webp new file mode 100644 index 00000000..d8b5d79f --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc98b9b49d8b4a05c421d0347aa2c7bb719deae86f42df6707c88c5ccb0d2195 +size 9988 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyebrows_raised.webp b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_raised.webp new file mode 100644 index 00000000..8a27ea05 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_raised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1cb212f9286df48d030063fded6c446a3982a450a567e9a3c50ef4dd082a886 +size 11498 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyebrows_surprised.webp b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_surprised.webp new file mode 100644 index 00000000..286e458d --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_surprised.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c325a138cb1208896f31c2aa1d28574094a41f9df05248ba0ebdae023a95ac1 +size 10716 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyebrows_upset.webp b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_upset.webp new file mode 100644 index 00000000..93b978b4 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_upset.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e3f45e6a7ec6b75e6028a84759f61aa4f46e2816848a718f79b53b124ccb92a +size 11536 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyebrows_worried.webp b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_worried.webp new file mode 100644 index 00000000..01902ac1 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyebrows_worried.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8acdbdd17fa4d392882a1709bbcefaaef7f61e3c6842126e325ca90466481d3 +size 10616 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_base_ahegao.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_ahegao.webp new file mode 100644 index 00000000..9b632c5d --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_ahegao.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc774c1d05956e45b3888394688cdb92b299384d55f6d32959721efe0c7f1426 +size 16652 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_base_down.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_down.webp new file mode 100644 index 00000000..3639a6e7 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a25553fd26f11d4eb16646b765b50f339110b943a5cdbd4c9856ce2e1b8bdfb +size 17492 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_base_left.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_left.webp new file mode 100644 index 00000000..138a8461 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa0ab1ff995e053d1cffe69c5fb3c701757ba822d8f1cf3378573a728394c778 +size 16100 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_base_right.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_right.webp new file mode 100644 index 00000000..6a6f9be1 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9325cdee740ce1e24c80bb0c5a452c58faeecf1c185ec754dfc7209b690ea01e +size 16070 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_base_stare.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_stare.webp new file mode 100644 index 00000000..fa7f90f9 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd3e1a263b19e7a9923f5fed9e6c3f19026b6099960afdf11c277d0e57777d3b +size 17180 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_base_up.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_up.webp new file mode 100644 index 00000000..c07a6b99 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_base_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97b5812d76b9e51bfcb368095147a78015573498794fa4cd3475599b8a4b0466 +size 16654 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_closed.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_closed.webp new file mode 100644 index 00000000..b7c56e3e --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6737a6f43b5000da44be3ddb1499e57ae2f55c43e4dec5e0b0f993e8bcbeeb93 +size 12224 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_ahegao.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_ahegao.webp new file mode 100644 index 00000000..0a72d604 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_ahegao.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8d6fb8c5ef399a001f5141c35180b7e70caa01aa8d81973a8484a20d0c200c4 +size 15050 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_down.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_down.webp new file mode 100644 index 00000000..9b64a72f --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f717d1b2cc44c1f8f1d8bc1f5a180ba7864a6733376208ec903c4ea2148c4be0 +size 14990 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_left.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_left.webp new file mode 100644 index 00000000..381b40e3 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1fc1eb6dbbe1e1d9d2c004c5e27efc38d9f713d8931fe429850d6a5f85a3b26 +size 14352 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_right.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_right.webp new file mode 100644 index 00000000..f01585ed --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e64cbafc3ac0090d607cf69eec0303d848431325bba75af2d77a341c42e9bb30 +size 14418 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_stare.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_stare.webp new file mode 100644 index 00000000..64184056 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0be65ea041d6bfb46e2f1da8af3144252a4a8b02cc5b3f04ab80dbd3e9affdd4 +size 15414 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_up.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_up.webp new file mode 100644 index 00000000..77793be2 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_narrow_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cc7079e67949bc209f46d1216ee8e33b82ec7a32728975698f365457295cfce +size 14868 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_ahegao.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_ahegao.webp new file mode 100644 index 00000000..77c8ca81 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_ahegao.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f49870f6392df7014003f85d25a2afaaedd427de101589496e2e1cb8dc6a8b5c +size 18504 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_down.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_down.webp new file mode 100644 index 00000000..64cb9a6f --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e99701fb013ef63ec4d712a618b87d21c89db871a825cb546377e56d777f9f4 +size 20000 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_left.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_left.webp new file mode 100644 index 00000000..77f75d40 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_left.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e33e845b10c848298829e7d9ec561e57fc20aaca854e92401b6856335c7db7c8 +size 18440 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_right.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_right.webp new file mode 100644 index 00000000..a97a2360 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_right.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d88c2c6b7c96d48767d103324d0b648fa5a7eec68757c38fdc8567dc355f8ecd +size 18404 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_stare.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_stare.webp new file mode 100644 index 00000000..afe57165 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_stare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57f3494ed7b089a2af7673567e5a9859fcd2a9824dc32d35317c8c0a47742358 +size 19112 diff --git a/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_up.webp b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_up.webp new file mode 100644 index 00000000..d5a99535 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_eyes_wide_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:770f82eb8b3785ca4b0d6be36778626835c519aca83c32c43fcefc84ce811cfb +size 18506 diff --git a/game/images/CG/lun_talk/luna/lun_talk_hair.webp b/game/images/CG/lun_talk/luna/lun_talk_hair.webp new file mode 100644 index 00000000..31907fb7 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_hair.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26c10a042b5a56d69984960c9f56bc9b9c8702a879297426fd6b46e799a8df32 +size 233376 diff --git a/game/images/CG/lun_talk/luna/lun_talk_legs_down.webp b/game/images/CG/lun_talk/luna/lun_talk_legs_down.webp new file mode 100644 index 00000000..7eb236f0 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_legs_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23abe3d2873c40fdacd62e2d641bd0eca4e2f7ba5a3f596ed661819cc0a20941 +size 145080 diff --git a/game/images/CG/lun_talk/luna/lun_talk_legs_side.webp b/game/images/CG/lun_talk/luna/lun_talk_legs_side.webp new file mode 100644 index 00000000..0827c534 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_legs_side.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1aee99efc0c7395c5953246d10cff3e7834445d03288a61af52298ad1e6859c +size 203014 diff --git a/game/images/CG/lun_talk/luna/lun_talk_legs_up.webp b/game/images/CG/lun_talk/luna/lun_talk_legs_up.webp new file mode 100644 index 00000000..2f453ad0 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_legs_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08ef4ef5a389bc516f1986b9198ce37fa30560b88c1ccc815719677f77881bcd +size 239368 diff --git a/game/images/CG/lun_talk/luna/lun_talk_mouth_ahegao.webp b/game/images/CG/lun_talk/luna/lun_talk_mouth_ahegao.webp new file mode 100644 index 00000000..9612d374 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_mouth_ahegao.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65fe588af179b8d16ac0e41da0ff04e6e1b1ef4cc6611a43c036a229e901a02a +size 16372 diff --git a/game/images/CG/lun_talk/luna/lun_talk_mouth_base.webp b/game/images/CG/lun_talk/luna/lun_talk_mouth_base.webp new file mode 100644 index 00000000..7c704f17 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_mouth_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a88173213701334fc909f47f2a4f7762de5f22e993f701b31593a030505d45f +size 7518 diff --git a/game/images/CG/lun_talk/luna/lun_talk_mouth_open.webp b/game/images/CG/lun_talk/luna/lun_talk_mouth_open.webp new file mode 100644 index 00000000..7a7d1ad5 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bd9cba8fef52cc2035ec92db1736028a30b8cc91b77a9be1d05e38469562841 +size 10538 diff --git a/game/images/CG/lun_talk/luna/lun_talk_mouth_open_wide.webp b/game/images/CG/lun_talk/luna/lun_talk_mouth_open_wide.webp new file mode 100644 index 00000000..89af239c --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_mouth_open_wide.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e3487db6f0f71589f63777464782e11799a347f3cf35dca37418af593765ce5 +size 13464 diff --git a/game/images/CG/lun_talk/luna/lun_talk_mouth_pout.webp b/game/images/CG/lun_talk/luna/lun_talk_mouth_pout.webp new file mode 100644 index 00000000..0d24eb75 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_mouth_pout.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1e1e09e7edc53a0a500da8605930af39b169564422feaf3116ff605dc53556d +size 6988 diff --git a/game/images/CG/lun_talk/luna/lun_talk_mouth_smile.webp b/game/images/CG/lun_talk/luna/lun_talk_mouth_smile.webp new file mode 100644 index 00000000..e33e1f5e --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_mouth_smile.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52ca32605fa9e8745ffa8f98b81350f29d021d76aee2ef5da09bfb0aeff7c154 +size 9886 diff --git a/game/images/CG/lun_talk/luna/lun_talk_mouth_soft.webp b/game/images/CG/lun_talk/luna/lun_talk_mouth_soft.webp new file mode 100644 index 00000000..a4219240 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_mouth_soft.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4d2d4ab7690b0b5ff88bcd18440cee793036d96cefe823d95d2061c3f51f2d2 +size 8652 diff --git a/game/images/CG/lun_talk/luna/lun_talk_mouth_timid.webp b/game/images/CG/lun_talk/luna/lun_talk_mouth_timid.webp new file mode 100644 index 00000000..f586b1cf --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_mouth_timid.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e618c3f88595bc12aec9e8bd93b7509d7297a0b96db5db1d6648f05ccfbc01f +size 7302 diff --git a/game/images/CG/lun_talk/luna/lun_talk_torso.webp b/game/images/CG/lun_talk/luna/lun_talk_torso.webp new file mode 100644 index 00000000..6f008e4b --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_torso.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f43418c15446a645daf409362ab248ee83941d5cc13e5ea4fda1547bdf711c2 +size 93364 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 2d728601..297d48d8 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -719,3 +719,50 @@ image lun_inspect_arm_right_touch_pussy_alt: "lun_inspect_genie_arm_right_touch_pussy_frame1" pause 0.5 repeat + +layeredimage lun_talk: + fit "cover" + fit_first True + + always "lun_talk_background" + always "lun_talk_torso" + + group eyes prefix "eyes" auto: + attribute base_stare default + + group blush prefix "blush" auto: + attribute base default + + group mouth prefix "mouth" auto: + attribute base default + + group eyebrows prefix "eyebrows" auto: + attribute base default + + always "lun_talk_hair" + always "lun_talk_chest" if_not ["arms_grab_chest", "legs_down"] + attribute arms_grab_chest + + group arm_right prefix "arm_right" if_not ["arms_grab_chest"]: + attribute rest default + + always "lun_talk_book" + + group arm_left prefix "arm_left" if_not ["arms_grab_chest"]: + attribute rest default + attribute spread_variant_legs_up + + group legs prefix "legs" auto: + attribute down default + + group arm_right prefix "arm_right" if_not ["arms_grab_chest"]: + attribute hold_leg_variant_legs_up + attribute hold_leg_variant_legs_side + + group arm_left prefix "arm_left" if_not ["arms_grab_chest"]: + attribute hold_leg_variant_legs_up + attribute hold_leg_variant_legs_side + attribute masturbate_variant_legs_up + attribute masturbate_variant_legs_side + + always "lun_talk_chest" if_not ["arms_grab_chest", "legs_side", "legs_up"] \ No newline at end of file From cb4fd94defe9b45e02d8f63eb83f21c9c6e1805e Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 18 Mar 2024 18:12:20 +0000 Subject: [PATCH 081/249] Initial posing --- game/scripts/characters/luna/events/favors/talk_to_me.rpy | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index e3651b1c..b3ef8b0a 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -1126,7 +1126,10 @@ label ll_pf_talk_T4_E1_repeat: gen "On the desk, if you please..." ("base", xpos="far_left", ypos="head") lun "Oh! Okay then!" ("smile", "base", "base", "downL") - #TODO Fade to Luna sitting on desk CG + if game.daytime: + show lun_talk as cg zorder 16 + else: + show lun_talk as cg zorder 16 at color_temperature(1.0) lun "You are going to bait the wrackspurts again, [name_genie_luna]?" gen "That's right." @@ -1162,6 +1165,7 @@ label ll_pf_talk_T4_E1_repeat: gen "Yes... Push those beautiful breasts together for me, will you?" #Breasts pushed together pose + show lun_talk arms_grab_chest as cg nar "*Fap* *Fap* *Fap*..." From c697e6910984d7609c243744b0e14a4bb10835e2 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Mon, 18 Mar 2024 22:27:35 +0100 Subject: [PATCH 082/249] Added T4 Luna leveling, favour menu, EOC message * Added Luna leveling on Tier 4 favours. * Added EOC message. * Added Luna T4 favours into favors.rpy --- .../luna/events/favors/inspect_her_body.rpy | 4 ++++ .../luna/events/favors/masturbate_for_me.rpy | 2 +- .../characters/luna/events/favors/suck_it.rpy | 6 +++++- .../luna/events/favors/talk_to_me.rpy | 4 ++++ game/scripts/characters/luna/favors.rpy | 18 +++++++++++++----- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index 2ff4cde4..c388b8c4 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -33,6 +33,10 @@ label ll_pf_inspect_end: if states.lun.level < 9: $ states.lun.level += 1 + elif states.lun.tier == 4: + if states.lun.level < 12: + $ states.lun.level += 1 + jump end_luna_event ### Tier 2 ### diff --git a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy index db43cc1f..b24a3c4b 100644 --- a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy +++ b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy @@ -46,7 +46,7 @@ label ll_pf_masturbate_end: $ states.lun.level += 1 elif states.lun.tier == 4: - if states.lun.level < 16: + if states.lun.level < 12: $ states.lun.level += 1 jump end_luna_event diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index c8d92f75..6acec4cc 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -41,7 +41,7 @@ label ll_pf_blowjob_end: $ luna.equip(lun_outfit_last) if states.lun.tier == 4: - if states.lun.level < 16: + if states.lun.level < 12: $ states.lun.level += 1 jump end_luna_event @@ -1647,6 +1647,10 @@ label ll_pf_blowjob_T4_E4_repeat: $ _wearing_clothes = False + if states.lun.level < 24: + $ states.lun.level = 24 + call end_of_content + jump ll_pf_blowjob_end #Tier 5 BJ notes: diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index b3ef8b0a..e93fadaa 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -37,6 +37,10 @@ label ll_pf_talk_end: if states.lun.level < 9: $ states.lun.level += 1 + elif states.lun.tier == 4: + if states.lun.level < 12: + $ states.lun.level += 1 + jump end_luna_event ### Tier 1 ### diff --git a/game/scripts/characters/luna/favors.rpy b/game/scripts/characters/luna/favors.rpy index cf12bf5a..e3ba02da 100644 --- a/game/scripts/characters/luna/favors.rpy +++ b/game/scripts/characters/luna/favors.rpy @@ -11,15 +11,23 @@ default lun_ev_inspect_her_body_t2_e1 = Event(id="lun_ev_inspect_her_body_t2_e1" default lun_ev_inspect_her_body_t2_e2 = Event(id="lun_ev_inspect_her_body_t2_e2", label="ll_pf_inspect_T2_E2_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_inspect_her_body_t2_e3 = Event(id="lun_ev_inspect_her_body_t2_e3", label="ll_pf_inspect_T2_E3_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_inspect_her_body_t2_e4 = Event(id="lun_ev_inspect_her_body_t2_e4", label="ll_pf_inspect_T2_E4_repeat", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) -default lun_ev_inspect_her_body_t3_e1 = Event(id="lun_ev_inspect_her_body_t3_e1", label="ll_pf_inspect_T3_E1_repeat", req="states.lun.tier >= 3", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) +default lun_ev_inspect_her_body_t3_e1 = Event(id="lun_ev_inspect_her_body_t3_e1", label="ll_pf_inspect_T3_E1_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) +default lun_ev_inspect_her_body_t4_e1 = Event(id="lun_ev_inspect_her_body_t4_e1", label="ll_pf_inspect_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) -default lun_ev_play_with_yourself_t3_e1 = Event(id="lun_ev_play_with_yourself_t3_e1", label="ll_pf_masturbate_T3_E1_intro", req="states.lun.tier >= 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) -default lun_ev_play_with_yourself_t3_e2 = Event(id="lun_ev_play_with_yourself_t3_e2", label="ll_pf_masturbate_T3_E2_intro", req="states.lun.tier >= 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) -default lun_ev_play_with_yourself_t3_e3 = Event(id="lun_ev_play_with_yourself_t3_e3", label="ll_pf_masturbate_T3_E3_intro", req="states.lun.tier >= 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) -default lun_ev_play_with_yourself_t3_e4 = Event(id="lun_ev_play_with_yourself_t3_e4", label="ll_pf_masturbate_T3_E4_repeat", req="states.lun.tier >= 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) +default lun_ev_play_with_yourself_t3_e1 = Event(id="lun_ev_play_with_yourself_t3_e1", label="ll_pf_masturbate_T3_E1_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_play_with_yourself_t3_e2 = Event(id="lun_ev_play_with_yourself_t3_e2", label="ll_pf_masturbate_T3_E2_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_play_with_yourself_t3_e3 = Event(id="lun_ev_play_with_yourself_t3_e3", label="ll_pf_masturbate_T3_E3_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_play_with_yourself_t3_e4 = Event(id="lun_ev_play_with_yourself_t3_e4", label="ll_pf_masturbate_T3_E4_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) +default lun_ev_play_with_yourself_t4_e1 = Event(id="lun_ev_play_with_yourself_t4_e1", label="ll_pf_masturbate_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) + +default lun_ev_blowjob_t4_e1 = Event(id="lun_ev_blowjob_t4_e1", label="ll_pf_blowjob_T4_E1_intro", req="states.lun:tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_blowjob_t4_e2 = Event(id="lun_ev_blowjob_t4_e2", label="ll_pf_blowjob_T4_E2_intro", req="states.lun:tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_blowjob_t4_e3 = Event(id="lun_ev_blowjob_t4_e3", label="ll_pf_blowjob_T4_E3_intro", req="states.lun:tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_blowjob_t4_e4 = Event(id="lun_ev_blowjob_t4_e4", label="ll_pf_blowjob_T4_E4_repeat", req="states.lun:tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False) define luna_favors = [ ("lun_eventqueue_talk_to_me", "Talk to me!"), ("lun_eventqueue_inspect_her_body", "Let me inspect you!"), ("lun_eventqueue_play_with_yourself", "Play with yourself!"), + ("lun_eventqueue_blowjob", "Suck it!"), ] From f437fc18fa4b97dbee7529c82c1f217d0cf0a576 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 20 Mar 2024 13:00:30 +0000 Subject: [PATCH 083/249] Bugfix * Fixed breast layering issue for Talk To Me CG --- game/scripts/cg/luna.rpy | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 297d48d8..d7f1d859 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -740,8 +740,6 @@ layeredimage lun_talk: attribute base default always "lun_talk_hair" - always "lun_talk_chest" if_not ["arms_grab_chest", "legs_down"] - attribute arms_grab_chest group arm_right prefix "arm_right" if_not ["arms_grab_chest"]: attribute rest default @@ -752,6 +750,9 @@ layeredimage lun_talk: attribute rest default attribute spread_variant_legs_up + always "lun_talk_chest" if_not ["arms_grab_chest", "legs_down"] + attribute arms_grab_chest + group legs prefix "legs" auto: attribute down default From d650a09d317cc694fbf1141f4fb20c128f640ba1 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 20 Mar 2024 14:12:47 +0000 Subject: [PATCH 084/249] Engine Update & Bug fixe * Updated game engine to version 8.2.1 * Fixed incompatibility --- game/scripts/gui/preferences.rpy | 2 +- game/scripts/utility/devtools.rpy | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/gui/preferences.rpy b/game/scripts/gui/preferences.rpy index 0524024c..20dc544e 100644 --- a/game/scripts/gui/preferences.rpy +++ b/game/scripts/gui/preferences.rpy @@ -174,7 +174,7 @@ screen preferences_visuals(): vbox: style_prefix gui.theme("slider") - label _("Image cache ([persistent.custom_settings[image_cache_size]]MB)") + label _("Image cache ([persistent.custom_settings['image_cache_size']]MB)") hbox: bar value DictValue(persistent.custom_settings, "image_cache_size", range=1792, max_is_zero=False, style="slider", offset=256, step=128, force_step=True, action=Notify("Restart the game to apply image cache size changes.")) tooltip "Improves performance at a cost of higher memory usage." diff --git a/game/scripts/utility/devtools.rpy b/game/scripts/utility/devtools.rpy index 538df6e2..6e9510d1 100644 --- a/game/scripts/utility/devtools.rpy +++ b/game/scripts/utility/devtools.rpy @@ -1,6 +1,6 @@ python early: - if renpy.version_tuple < (7,5,3,22090809): - raise RuntimeWarning("Your Ren'Py launcher is outdated, the current minimal requirement is 7.5.3.22090809+\nPlease perform an update and try launching the game again.") + if renpy.version_tuple < (8,2,1,24030407): + raise RuntimeWarning("Your Ren'Py launcher is outdated, the current minimal requirement is 8.2.1+\nPlease perform an update and try launching the game again.") from renpy.uguu import glGetString, GL_VENDOR, GL_RENDERER, GL_VERSION From 7500ca3adfa8b11fcbe3f021784e4b5e99d6d619 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 12:27:49 +0000 Subject: [PATCH 085/249] Saves Compatibility --- game/scripts/utility/updater.rpy | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 6bbe5398..03e68c10 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -188,6 +188,23 @@ init python: getattr(store, "her_ev_cumslut_public_t5_e3_hub").req = "states.her.tier == 5" getattr(store, "her_ev_cumslut_public_t5_e3_hub").reset() + getattr(store, "lun_ev_talk_to_me_t3_e1").req = "states.lun.tier == 3" + getattr(store, "lun_ev_talk_to_me_t3_e1").reset() + + getattr(store, "lun_ev_inspect_her_body_t3_e1").req = "states.lun.tier == 3" + getattr(store, "lun_ev_inspect_her_body_t3_e1").reset() + + getattr(store, "lun_ev_play_with_yourself_t3_e1").req = "states.lun.tier == 3" + getattr(store, "lun_ev_play_with_yourself_t3_e1").reset() + getattr(store, "lun_ev_play_with_yourself_t3_e2").req = "states.lun.tier == 3" + getattr(store, "lun_ev_play_with_yourself_t3_e2").reset() + getattr(store, "lun_ev_play_with_yourself_t3_e3").req = "states.lun.tier == 3" + getattr(store, "lun_ev_play_with_yourself_t3_e3").reset() + getattr(store, "lun_ev_play_with_yourself_t3_e4").req = "states.lun.tier == 3" + getattr(store, "lun_ev_play_with_yourself_t3_e4").reset() + + states.lun.level = 9 + for i in states.dolls: doll = getattr(store, i) From 671c4a577f00a0ace5129272dc956555acc46d46 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 13:06:43 +0000 Subject: [PATCH 086/249] Save compatibility --- game/scripts/utility/updater.rpy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 03e68c10..5c029e77 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -203,7 +203,8 @@ init python: getattr(store, "lun_ev_play_with_yourself_t3_e4").req = "states.lun.tier == 3" getattr(store, "lun_ev_play_with_yourself_t3_e4").reset() - states.lun.level = 9 + if states.lun.tier == 3: + states.lun.level = 9 for i in states.dolls: doll = getattr(store, i) From 200760471fc47f800bfdc170921280cc8be4ae0c Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 22:54:02 +0100 Subject: [PATCH 087/249] skip unnecessary lambda (cherry picked from commit 94a6f9302b21712f90b84bca8318559c789a55b5) --- game/scripts/shops/dress/menu.rpy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/shops/dress/menu.rpy b/game/scripts/shops/dress/menu.rpy index 57744404..c4b3374a 100644 --- a/game/scripts/shops/dress/menu.rpy +++ b/game/scripts/shops/dress/menu.rpy @@ -9,9 +9,9 @@ init python: elif current_sorting == "Price (Desc)": item = sorted(item, key=lambda x: x.price, reverse=True) if sortby == "Lewdness (Asc)": - item = sorted(item, key=lambda x: get_outfit_score(x), reverse=False) + item = sorted(item, key=get_outfit_score, reverse=False) elif current_sorting == "Lewdness (Desc)": - item = sorted(item, key=lambda x: get_outfit_score(x), reverse=True) + item = sorted(item, key=get_outfit_score, reverse=True) return item label shop_dress: @@ -112,7 +112,7 @@ label shop_dress_menu: $ curry = renpy.curry(execute_callbacks)(parcel_callbacks) if parcel_callbacks else None $ parcel_callbacks = [] $ Parcel(contents=[(k, 1) for k in store_cart], wait=transit_time, func=curry).send() - + return else: gen "Nothing has caught my eye I'm afraid." ("base", xpos="far_left", ypos="head") From 36578fdd675cd5cdd4caef38241d2bd991ee64c4 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 22:55:30 +0100 Subject: [PATCH 088/249] Simplify that call (cherry picked from commit b21e179df00406feb676f1af9e55150958b25320) --- game/scripts/shops/dress/menu.rpy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/shops/dress/menu.rpy b/game/scripts/shops/dress/menu.rpy index c4b3374a..38744a65 100644 --- a/game/scripts/shops/dress/menu.rpy +++ b/game/scripts/shops/dress/menu.rpy @@ -25,7 +25,7 @@ label shop_dress_menu: category_items = {"hermione": hermione.outfits, "tonks": tonks.outfits, "cho": cho.outfits, "luna": luna.outfits, "astoria": astoria.outfits, "susan": susan.outfits} current_category = "hermione" store_cart = set() - menu_items = shop_dress_sortfilter([x for x in category_items.get(current_category, []) if bool(x.unlocked == False and x.price > 0 and not x in store_cart)], current_sorting) + menu_items = shop_dress_sortfilter((x for x in category_items.get(current_category, []) if (x.unlocked == False and x.price > 0 and x not in store_cart)), current_sorting) current_item = next(iter(menu_items), None) parcel_callbacks = [] @@ -37,7 +37,7 @@ label shop_dress_menu: if _choice[0] == "category": $ current_category = _choice[1] - $ menu_items = shop_dress_sortfilter([x for x in category_items.get(current_category, []) if bool(x.unlocked == False and x.price > 0 and not x in store_cart)], current_sorting) + $ menu_items = shop_dress_sortfilter((x for x in category_items.get(current_category, []) if (x.unlocked == False and x.price > 0 and x not in store_cart)), current_sorting) $ current_item = next(iter(menu_items), None) elif _choice[0] == "buy": show screen blktone @@ -51,7 +51,7 @@ label shop_dress_menu: play sound "sounds/money.ogg" $ game.gold -= _choice[1].price $ store_cart.add(_choice[1]) - $ menu_items = shop_dress_sortfilter([x for x in category_items.get(current_category, []) if bool(x.unlocked == False and x.price > 0 and not x in store_cart)], current_sorting) + $ menu_items = shop_dress_sortfilter((x for x in category_items.get(current_category, []) if (x.unlocked == False and x.price > 0 and x not in store_cart)), current_sorting) $ current_item = next(iter(menu_items), None) if len(store_cart) < 5: From b60c87e9f84440d42a9e37dfaae3c755aa05608a Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 22:55:53 +0100 Subject: [PATCH 089/249] Sirt in-place to save time not the first time, so that we can still pass it iterators (cherry picked from commit 21cb97b2e20c3f4cae346682b13e3bd208f57b6e) --- game/scripts/shops/dress/menu.rpy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/shops/dress/menu.rpy b/game/scripts/shops/dress/menu.rpy index 38744a65..1eed28df 100644 --- a/game/scripts/shops/dress/menu.rpy +++ b/game/scripts/shops/dress/menu.rpy @@ -5,13 +5,13 @@ init python: item = sorted(item, key=lambda x: natsort_key(x.name)) if sortby == "Price (Asc)": - item = sorted(item, key=lambda x: x.price, reverse=False) + item.sort(key=lambda x: x.price, reverse=False) elif current_sorting == "Price (Desc)": - item = sorted(item, key=lambda x: x.price, reverse=True) + item.sort(key=lambda x: x.price, reverse=True) if sortby == "Lewdness (Asc)": - item = sorted(item, key=get_outfit_score, reverse=False) + item.sort(key=get_outfit_score, reverse=False) elif current_sorting == "Lewdness (Desc)": - item = sorted(item, key=get_outfit_score, reverse=True) + item.sort(key=get_outfit_score, reverse=True) return item label shop_dress: From 47b5184e0609ca7ccf4fdd63b3fc7561577ea2e1 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:14:33 +0100 Subject: [PATCH 090/249] Repr instead of adding simple quotes manually it's a tad slower but it's a better general practice and we're in an error handling branch anyway (cherry picked from commit e80bd9e6e697fd594db4b73644a15392a268ae55) --- game/scripts/wardrobe/functions.rpy | 34 ++++++++++++++--------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/game/scripts/wardrobe/functions.rpy b/game/scripts/wardrobe/functions.rpy index 92fd77ea..dc56eaa4 100644 --- a/game/scripts/wardrobe/functions.rpy +++ b/game/scripts/wardrobe/functions.rpy @@ -1,45 +1,45 @@ init -1 python: def get_character_progression(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(states, f"{key[:3]}").level def get_character_scheduling(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(states, f"{key[:3]}").wardrobe_scheduling def get_character_requirement(key, type): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(renpy.store, key[:3]+"_requirements").get(type, 0) def get_character_response(key, type): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(renpy.store, key[:3]+"_responses").get(type) def get_character_object(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(store, key) def get_character_outfit(key, type="default"): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(store, "{}_outfit_{}".format(key[:3], type)) def get_character_body(key, type="default"): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(store, "{}_body_{}".format(key[:3], type)) def get_character_outfit_req(key, item): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) if not isinstance(item, DollOutfit): - raise TypeError("'{}' is not a DollOutfit instance.".format(item)) + raise TypeError("{!r} is not a DollOutfit instance.".format(item)) req = ["{}: {}".format(i.type, i.level) for i in item.group] has_bra = any(i.type == "bra" for i in item.group) @@ -54,42 +54,42 @@ init -1 python: def get_character_tag(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return "{}_main".format(key) def get_character_sayer(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(store, key[:3]) def get_character_gift_label(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return "give_{}_gift".format(key[:3]) def get_character_potion_check_label(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return "{}_potion_check".format(key[:3]) def get_character_potion_check(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(store, "{}_potion_check".format(key[:3])) def get_character_unlock(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(states, f"{key[:3]}").unlocked def get_character_gifted(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(states, f"{key[:3]}").gifted def get_character_mood(key): if not key in states.dolls: - raise KeyError("'{}' character is undefined.".format(key)) + raise KeyError("{!r} character is undefined.".format(key)) return getattr(states, f"{key[:3]}").mood def get_outfit_score(outfit): From d48708579bca3b48fa4ad1911710a55348a89cb6 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:16:26 +0100 Subject: [PATCH 091/249] Fix misuse of variable - don't use a reserved name (starting with an underscore) - use a file-local mangled name (starting with two underscores - use renpy.dynamx to cleanup the variable automatically (cherry picked from commit 3e86094b0b68321703bc6de21b95bf4c450715fb) --- .../tonks/clothing_upgrades_NOT_IN_USE.txt | 24 ++-- game/scripts/interface/achievements.rpy | 18 +-- game/scripts/interface/book.rpy | 10 +- game/scripts/interface/brewing.rpy | 16 +-- game/scripts/interface/door.rpy | 14 +-- game/scripts/interface/inventory.rpy | 22 ++-- game/scripts/interface/stats.rpy | 12 +- .../minigames/cardgame/_deck_builder_.rpy | 28 ++--- game/scripts/minigames/dueling/signs.rpy | 20 +-- game/scripts/minigames/mirror/menu.rpy | 22 ++-- game/scripts/rooms/main_room/objects/desk.rpy | 36 +++--- game/scripts/shops/dress/menu.rpy | 18 +-- game/scripts/shops/item/menu.rpy | 18 +-- game/scripts/wardrobe/wardrobe.rpy | 114 +++++++++--------- 14 files changed, 186 insertions(+), 186 deletions(-) diff --git a/game/scripts/characters/tonks/clothing_upgrades_NOT_IN_USE.txt b/game/scripts/characters/tonks/clothing_upgrades_NOT_IN_USE.txt index 1416c505..98ca7d93 100644 --- a/game/scripts/characters/tonks/clothing_upgrades_NOT_IN_USE.txt +++ b/game/scripts/characters/tonks/clothing_upgrades_NOT_IN_USE.txt @@ -103,25 +103,25 @@ label upgrades_menu(xx=150, yy=90): with d3 label .after_init: - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "category": - $ current_category = _choice[1] + if __choice[0] == "category": + $ current_category = __choice[1] $ category_items = 0 $ menu_items = upgrades_sortfilter([], current_sorting) $ menu_items_length = len(menu_items) $ current_item = 0 - elif _choice[0] == "subcat": - if _choice[1] != current_subcategory: - $ current_subcategory = _choice[1] - elif _choice[0] == "buy": - if game.gold >= _choice[1] and ton_friendship >= _choice[3]*25: + elif __choice[0] == "subcat": + if __choice[1] != current_subcategory: + $ current_subcategory = __choice[1] + elif __choice[0] == "buy": + if game.gold >= __choice[1] and ton_friendship >= __choice[3]*25: python: renpy.play('sounds/money.ogg') - game.gold -= _choice[1] - _list = _choice[2] - _iter = _choice[3] + game.gold -= __choice[1] + _list = __choice[2] + _iter = __choice[3] item_bought = True @@ -129,7 +129,7 @@ label upgrades_menu(xx=150, yy=90): if not _list[i].unlocked: _list[i].unlock() ton_clothing_upgrades += 1 - elif ton_friendship < _choice[4]: + elif ton_friendship < __choice[4]: $ renpy.play('sounds/fail.ogg') "> Tonks doesn't like you enough." else: diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index b90b29c7..ae8ff167 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -201,12 +201,12 @@ label achievement_menu(xx=150, yy=90): label .after_init: python: - _choice = ui.interact() + renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "select": - current_item = _choice[1] - elif _choice[0] == "category": - current_category = _choice[1] + if __choice[0] == "select": + current_item = __choice[1] + elif __choice[0] == "category": + current_category = __choice[1] if current_category == "All": category_items = list(persistent.achievements.items()) else: @@ -215,11 +215,11 @@ label achievement_menu(xx=150, yy=90): menu_items_length = len(menu_items) current_page = 0 current_item = next(iter(menu_items), None) - elif _choice == "inc": + elif __choice == "inc": current_page += 1 - elif _choice == "dec": + elif __choice == "dec": current_page += -1 - elif _choice == "filter": + elif __choice == "filter": if current_filter == None: current_filter = "Locked" elif current_filter == "Locked": @@ -232,7 +232,7 @@ label achievement_menu(xx=150, yy=90): menu_items_length = len(menu_items) current_page = 0 current_item = next(iter(menu_items), None) - elif _choice == "sort": + elif __choice == "sort": if current_sorting == "A-z": current_sorting = "z-A" elif current_sorting == "z-A": diff --git a/game/scripts/interface/book.rpy b/game/scripts/interface/book.rpy index 908d4cc4..93b0a68a 100644 --- a/game/scripts/interface/book.rpy +++ b/game/scripts/interface/book.rpy @@ -79,24 +79,24 @@ label book_handle(book=None): show screen book_animator("book_page_next", 0.5) label .after_init: - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice == "next": + if __choice == "next": $ book.next() play sound "sounds/pageflip.ogg" show screen book_animator("book_page_next", 0.5) with d1 - elif _choice == "prev": + elif __choice == "prev": $ book.prev() play sound "sounds/pageflip.ogg" show screen book_animator("book_page_prev", 0.5) with d1 - elif _choice == "back": + elif __choice == "back": $ book.open() play sound "sounds/pageflipback.ogg" show screen book_animator("book_page_start", 0.5) with d1 - elif _choice == "Close": + elif __choice == "Close": $ book.close() play sound "sounds/bookclose.ogg" return diff --git a/game/scripts/interface/brewing.rpy b/game/scripts/interface/brewing.rpy index 645e01d2..97b94b8e 100644 --- a/game/scripts/interface/brewing.rpy +++ b/game/scripts/interface/brewing.rpy @@ -31,11 +31,11 @@ label brewing_menu(xx=150, yy=90): show screen brewing(xx, yy) label .after_init: - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "select": - $ current_item = _choice[1] - elif _choice == "filter": + if __choice[0] == "select": + $ current_item = __choice[1] + elif __choice == "filter": if current_filter == "Unlocked": $ current_filter = None elif current_filter == None: @@ -44,7 +44,7 @@ label brewing_menu(xx=150, yy=90): $ menu_items = brewing_sortfilter(inventory.get_instances_of_type("potion"), current_sorting, current_filter) $ menu_items_length = len(menu_items) $ current_item = next(iter(menu_items), None) - elif _choice == "sort": + elif __choice == "sort": if current_sorting == "A-z": $ current_sorting = "z-A" else: @@ -53,10 +53,10 @@ label brewing_menu(xx=150, yy=90): $ menu_items = brewing_sortfilter(inventory.get_instances_of_type("potion"), current_sorting, current_filter) $ menu_items_length = len(menu_items) #$ current_item = next(iter(menu_items), None) - elif _choice[0] == "make": - if _choice[1].has_ingredients(): + elif __choice[0] == "make": + if __choice[1].has_ingredients(): play sound "sounds/bubble.ogg" - $ _choice[1].make() + $ __choice[1].make() else: gen "It appears I'm missing some key ingredients..." ("base", xpos="far_left", ypos="head") else: diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index 6f06bdae..53e25f06 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -34,18 +34,18 @@ label summon_menu(xx=723, yy=90): show screen summon(xx, yy) - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "summon": + if __choice[0] == "summon": hide screen summon - if not _choice[2]: + if not __choice[2]: $ enable_game_menu() - $ renpy.jump_out_of_context("summon_"+_choice[1].lower()) + $ renpy.jump_out_of_context("summon_"+__choice[1].lower()) else: - if game.daytime or _choice[1] in ["Tonks", "Snape"]: - nar "[_choice[1]] is currently busy. Try again later." + if game.daytime or __choice[1] in ["Tonks", "Snape"]: + nar "[__choice[1]] is currently busy. Try again later." else: - nar "[_choice[1]] is currently asleep. Try again tomorrow." + nar "[__choice[1]] is currently asleep. Try again tomorrow." else: hide screen summon return diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index 6ba4a385..9974d28b 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -62,13 +62,13 @@ label inventory_menu(xx=150, yy=90): label .after_init: - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "select": - $ current_item = _choice[1] - elif _choice[0] == "category": + if __choice[0] == "select": + $ current_item = __choice[1] + elif __choice[0] == "category": python: - current_category = _choice[1] + current_category = __choice[1] category_items = inventory_dict[current_category] menu_items = inventory_sortfilter(category_items, current_sorting, current_filter) menu_items_length = len(menu_items) @@ -79,11 +79,11 @@ label inventory_menu(xx=150, yy=90): current_page = 0 current_item = next(iter(menu_items), None) - elif _choice == "inc": + elif __choice == "inc": $ current_page += 1 - elif _choice == "dec": + elif __choice == "dec": $ current_page += -1 - elif _choice == "sort": + elif __choice == "sort": python: if current_sorting == "A-z": current_sorting = "z-A" @@ -104,7 +104,7 @@ label inventory_menu(xx=150, yy=90): if not current_item or not menu_items_length: current_item = next(iter(menu_items), None) - elif _choice == "filter": + elif __choice == "filter": python: if current_filter == None: current_filter = "Owned" @@ -121,11 +121,11 @@ label inventory_menu(xx=150, yy=90): if not current_item or not menu_items_length: current_item = next(iter(menu_items), None) - elif _choice == "use": + elif __choice == "use": python: enable_game_menu() current_item.use() - elif _choice == "give": + elif __choice == "give": if current_item.type == "gift": if get_character_gifted(states.active_girl): diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index 06987cab..e1deb41f 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -111,18 +111,18 @@ label stats_menu(xx=150, yy=90): show screen stats(xx, yy) label .after_init: - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "category": - $ current_category = _choice[1] + if __choice[0] == "category": + $ current_category = __choice[1] $ category_items = stats_dict[current_category] $ menu_items = stats_sortfilter(category_items, current_sorting) $ menu_items_length = len(menu_items) $ current_item = stats_dict[current_category] #$ current_subcategory = "overview" - elif _choice[0] == "subcat": - if _choice[1] != current_subcategory: - $ current_subcategory = _choice[1] + elif __choice[0] == "subcat": + if __choice[1] != current_subcategory: + $ current_subcategory = __choice[1] else: hide screen stats return diff --git a/game/scripts/minigames/cardgame/_deck_builder_.rpy b/game/scripts/minigames/cardgame/_deck_builder_.rpy index 79a8101a..35775f0e 100644 --- a/game/scripts/minigames/cardgame/_deck_builder_.rpy +++ b/game/scripts/minigames/cardgame/_deck_builder_.rpy @@ -5,34 +5,34 @@ label deck_builder: label deck_builder_jump: show screen deck_builder_screen $ renpy.block_rollback() - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice in unlocked_cards: - $ selectcard = unlocked_cards.index(_choice) + if __choice in unlocked_cards: + $ selectcard = unlocked_cards.index(__choice) jump deck_builder_jump - elif _choice == "gallery": + elif __choice == "gallery": hide screen deck_builder_screen show screen deck_builder_gallery - elif _choice == "back": + elif __choice == "back": hide screen deck_builder_gallery show screen deck_builder_screen - elif _choice == "Close": + elif __choice == "Close": $ selectcard = -1 hide screen deck_builder_screen jump main_room_menu - elif _choice == "guide": + elif __choice == "guide": $ selectcard = -1 hide screen deck_builder_screen jump deck_builder_guide - elif _choice == "inc": + elif __choice == "inc": $ currentpage += 1 $ selectcard = -1 jump deck_builder_jump - elif _choice == "dec": + elif __choice == "dec": $ currentpage -= 1 $ selectcard = -1 jump deck_builder_jump - elif _choice == "unselect": + elif __choice == "unselect": $ selectcard = -1 jump deck_builder_jump else: @@ -40,8 +40,8 @@ label deck_builder: python: if unlocked_cards[selectcard].copies > -1: unlocked_cards[selectcard].copies -= 1 - add_card_to_deck(playerdeck[int(_choice)].title) - playerdeck[int(_choice)] = unlocked_cards[selectcard] + add_card_to_deck(playerdeck[int(__choice)].title) + playerdeck[int(__choice)] = unlocked_cards[selectcard] selectcard = -1 pass jump deck_builder_jump @@ -256,9 +256,9 @@ label deck_builder_guide: gen "(*Shudders*)" ("base", xpos="far_left", ypos="head") gen "(Well... might as well...)" ("base", xpos="far_left", ypos="head") - #$ _choice = ui.interact() + #$ renpy.dynamic(__choice = ui.interact()) - #if _choice == "back": + #if __choice == "back": call music_block hide screen deck_builder_tutorial diff --git a/game/scripts/minigames/dueling/signs.rpy b/game/scripts/minigames/dueling/signs.rpy index cc174993..f26f0166 100644 --- a/game/scripts/minigames/dueling/signs.rpy +++ b/game/scripts/minigames/dueling/signs.rpy @@ -85,12 +85,12 @@ # $ test_sign.interactive = True -# $ _choice = ui.interact() +# $ renpy.dynamic(__choice = ui.interact()) -# if _choice[0] == "result": +# if __choice[0] == "result": # $ test_sign.interactive = False # pause 3.0 -# if _choice[1] >= 50.0: +# if __choice[1] >= 50.0: # "Magician" "Congratulations, you have passed the test with the score of [_sign_max]%%, I am proud of you!" # menu: # "Magician" "Would you like to keep playing?" @@ -116,21 +116,21 @@ # show screen draw_magic -# $ _choice = ui.interact() +# $ renpy.dynamic(__choice = ui.interact()) -# if _choice[0] == "result": +# if __choice[0] == "result": # $ test_sign.interactive = False # pause 3.0 -# if _choice[1] == 0.0: +# if __choice[1] == 0.0: # "Magician" "You suck." -# elif 25.0 > _choice[1] > 0.0: +# elif 25.0 > __choice[1] > 0.0: # "Magician" "You still suck." -# elif 50.0 > _choice[1] > 25.0: +# elif 50.0 > __choice[1] > 25.0: # "Magician" "You're average." -# elif 75.0 > _choice[1] > 50.0: +# elif 75.0 > __choice[1] > 50.0: # "Magician" "You're above average." -# elif 100.0 > _choice[1] > 75.0: +# elif 100.0 > __choice[1] > 75.0: # "Magician" "You're good." # else: # "Magician" "Holy shit! CRITICAL HIT!" diff --git a/game/scripts/minigames/mirror/menu.rpy b/game/scripts/minigames/mirror/menu.rpy index c4f01ca5..35fcf619 100644 --- a/game/scripts/minigames/mirror/menu.rpy +++ b/game/scripts/minigames/mirror/menu.rpy @@ -35,23 +35,23 @@ label mirror_menu(xx=150, yy=90): show screen mirror(xx, yy) label .after_init: - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "select": - $ current_item = _choice[1] + if __choice[0] == "select": + $ current_item = __choice[1] $ current_item.seen = True - elif _choice[0] == "category": - $ current_category = _choice[1] + elif __choice[0] == "category": + $ current_category = __choice[1] $ menu_items = mirror_sortfilter(mirror.get_instances_of_tag(current_category), current_sorting, current_filter) $ menu_items_length = len(menu_items) $ current_page = 0 $ current_item = next(iter(menu_items), None) - elif _choice == "inc": + elif __choice == "inc": $ current_page += 1 - elif _choice == "dec": + elif __choice == "dec": $ current_page += -1 - elif _choice == "filter": + elif __choice == "filter": if current_filter == "Unlocked": $ current_filter = None elif current_filter == None: @@ -61,7 +61,7 @@ label mirror_menu(xx=150, yy=90): $ menu_items_length = len(menu_items) $ current_page = 0 $ current_item = next(iter(menu_items), None) - elif _choice == "sort": + elif __choice == "sort": if current_sorting == "A-z": $ current_sorting = "z-A" else: @@ -71,8 +71,8 @@ label mirror_menu(xx=150, yy=90): $ menu_items_length = len(menu_items) $ current_page = 0 $ current_item = next(iter(menu_items), None) - elif _choice[0] == "play": - $ _choice[1].play() + elif __choice[0] == "play": + $ __choice[1].play() $ renpy.jump_out_of_context("mirror") else: $ enable_game_menu() diff --git a/game/scripts/rooms/main_room/objects/desk.rpy b/game/scripts/rooms/main_room/objects/desk.rpy index e310e56c..8f3fdca4 100644 --- a/game/scripts/rooms/main_room/objects/desk.rpy +++ b/game/scripts/rooms/main_room/objects/desk.rpy @@ -47,21 +47,21 @@ label desk: show screen desk_menu with d1 - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) hide screen desk_menu #Do NOT add a transition here! #Hermione - if _choice == "hermione" and states.her.busy: + if __choice == "hermione" and states.her.busy: if game.daytime: nar "Hermione is taking classes." jump main_room_menu else: nar "Hermione is already asleep." jump main_room_menu - elif _choice == "hermione" and not states.her.busy: + elif __choice == "hermione" and not states.her.busy: if states.her.map_location == "forest": nar "Hermione is currently at the Forbidden Forest.\n>Would you like to go there?" menu: @@ -73,78 +73,78 @@ label desk: jump summon_hermione #Luna - elif states.lun.unlocked and _choice == "luna" and states.lun.busy: + elif states.lun.unlocked and __choice == "luna" and states.lun.busy: if game.daytime: nar "Luna is taking classes." jump main_room_menu else: nar "Luna is already asleep." jump main_room_menu - elif states.lun.unlocked and _choice == "luna" and not states.lun.busy: + elif states.lun.unlocked and __choice == "luna" and not states.lun.busy: jump summon_luna #Astoria - elif states.ast.busy and _choice == "astoria": + elif states.ast.busy and __choice == "astoria": if game.daytime: nar "Astoria is taking classes." jump main_room_menu else: nar "Astoria is already asleep." jump main_room_menu - elif not states.ast.busy and _choice == "astoria": #Summoning after intro events done. + elif not states.ast.busy and __choice == "astoria": #Summoning after intro events done. jump summon_astoria #Susan - elif _choice == "susan" and states.sus.busy: + elif __choice == "susan" and states.sus.busy: if game.daytime: nar "Susan is taking classes." jump main_room_menu else: nar "Susan is already asleep." jump main_room_menu - elif _choice == "susan" and not states.sus.busy: + elif __choice == "susan" and not states.sus.busy: jump summon_susan #Cho - elif _choice == "cho" and states.cho.busy: + elif __choice == "cho" and states.cho.busy: if game.daytime: nar "Cho is taking classes." jump main_room_menu else: nar "Cho is already asleep." jump main_room_menu - elif _choice == "cho" and not states.cho.busy: + elif __choice == "cho" and not states.cho.busy: jump summon_cho #Snape - elif _choice == "snape" and states.sna.busy: + elif __choice == "snape" and states.sna.busy: nar "Professor Snape is unavailable." if game.daytime: jump main_room_menu else: jump main_room_menu - elif _choice == "snape" and not states.sna.busy: + elif __choice == "snape" and not states.sna.busy: jump summon_snape #Tonks - elif _choice == "tonks" and states.ton.busy: + elif __choice == "tonks" and states.ton.busy: nar "Tonks is unavailable." if game.daytime: jump main_room_menu else: jump main_room_menu - elif _choice == "tonks" and not states.ton.busy: + elif __choice == "tonks" and not states.ton.busy: jump summon_tonks #Close - elif _choice == "Close": + elif __choice == "Close": jump main_room_menu - elif _choice in {"snape_office", "seventh_floor", "map_lake", "map_forest", "map_attic", "clothing_store", "item_store", "ravenclaw_dormitories", "gryffindor_dormitories"}: + elif __choice in {"snape_office", "seventh_floor", "map_lake", "map_forest", "map_attic", "clothing_store", "item_store", "ravenclaw_dormitories", "gryffindor_dormitories"}: call gen_chibi("stand", "desk", "base") with d3 call gen_walk(action="leave", speed=1.5) - $ renpy.jump(_choice) + $ renpy.jump(__choice) screen desk_menu(): tag desk_interface diff --git a/game/scripts/shops/dress/menu.rpy b/game/scripts/shops/dress/menu.rpy index 1eed28df..4fad841d 100644 --- a/game/scripts/shops/dress/menu.rpy +++ b/game/scripts/shops/dress/menu.rpy @@ -33,24 +33,24 @@ label shop_dress_menu: label .after_init: - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "category": - $ current_category = _choice[1] + if __choice[0] == "category": + $ current_category = __choice[1] $ menu_items = shop_dress_sortfilter((x for x in category_items.get(current_category, []) if (x.unlocked == False and x.price > 0 and x not in store_cart)), current_sorting) $ current_item = next(iter(menu_items), None) - elif _choice[0] == "buy": + elif __choice[0] == "buy": show screen blktone with d3 - if game.gold < _choice[1].price: + if game.gold < __choice[1].price: gen "(I don't have enough gold.)" ("base", xpos="far_left", ypos="head") else: if len(store_cart) < 5: - $ renpy.call("purchase_outfit", _choice[1]) + $ renpy.call("purchase_outfit", __choice[1]) play sound "sounds/money.ogg" - $ game.gold -= _choice[1].price - $ store_cart.add(_choice[1]) + $ game.gold -= __choice[1].price + $ store_cart.add(__choice[1]) $ menu_items = shop_dress_sortfilter((x for x in category_items.get(current_category, []) if (x.unlocked == False and x.price > 0 and x not in store_cart)), current_sorting) $ current_item = next(iter(menu_items), None) @@ -63,7 +63,7 @@ label shop_dress_menu: hide screen blktone with d3 - elif _choice == "sort": + elif __choice == "sort": if current_sorting == "Price (Asc)": $ current_sorting = "Price (Desc)" elif current_sorting == "Price (Desc)": diff --git a/game/scripts/shops/item/menu.rpy b/game/scripts/shops/item/menu.rpy index 62f3ddf5..6e20ad0a 100644 --- a/game/scripts/shops/item/menu.rpy +++ b/game/scripts/shops/item/menu.rpy @@ -43,12 +43,12 @@ label shop_item_menu(xx=150, yy=90): show screen shop_item(xx, yy) label .after_init: - $ _choice = ui.interact() + $ renpy.dynamix(__choice = ui.interact()) - if _choice[0] == "select": - $ current_item = _choice[1] - elif _choice[0] == "category": - $ current_category = _choice[1] + if __choice[0] == "select": + $ current_item = __choice[1] + elif __choice[0] == "category": + $ current_category = __choice[1] if current_category in {"Gifts", "Ingredients"}: $ category_items = [x for x in inventory_dict[current_category] if bool(x.price > 0 and x.unlocked)] elif current_category in {"Books", "Scrolls", "Decorations", "Quest Items"}: @@ -58,18 +58,18 @@ label shop_item_menu(xx=150, yy=90): $ current_page = 0 $ current_item = next(iter(menu_items), None) pass - elif _choice == "inc": + elif __choice == "inc": $ current_page += 1 - elif _choice == "dec": + elif __choice == "dec": $ current_page += -1 - elif _choice == "sort": + elif __choice == "sort": if current_sorting == "Price (Asc)": $ current_sorting = "Price (Desc)" elif current_sorting == "Price (Desc)": $ current_sorting = "Price (Asc)" $ menu_items = shop_item_sortfilter(category_items, current_sorting) - elif _choice == "buy": + elif __choice == "buy": $ renpy.call("purchase_item", current_item) if current_category in {"Gifts", "Ingredients"}: diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index 728044dc..b553e79d 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -271,12 +271,12 @@ label wardrobe_menu(): # while mixing python and renpy scope # https://github.com/renpy/renpy/issues/959 - $ _choice = ui.interact() + $ renpy.dynamic(__choice = ui.interact()) - if _choice[0] == "category": - if not current_category == _choice[1]: - if wardrobe_check_category(_choice[1]): - $ current_category = _choice[1] + if __choice[0] == "category": + if not current_category == __choice[1]: + if wardrobe_check_category(__choice[1]): + $ current_category = __choice[1] $ category_items = set_wardrobe_categories(current_category) $ current_subcategory = list(category_items.keys())[0] if category_items else "" @@ -292,13 +292,13 @@ label wardrobe_menu(): elif current_category == "piercings & tattoos": $ char_active.strip("top", "bottom", "robe", "accessory", "bra", "panties", "stockings", "gloves") else: - $ wardrobe_react("category_fail", _choice[1]) + $ wardrobe_react("category_fail", __choice[1]) $ rebuild_wardrobe_icons(category_items, current_subcategory) - elif _choice[0] == "subcategory": - if not current_subcategory == _choice[1]: - $ current_subcategory = _choice[1] + elif __choice[0] == "subcategory": + if not current_subcategory == __choice[1]: + $ current_subcategory = __choice[1] if current_category == "outfits": $ char_active.clear_outfit_button_cache() @@ -307,19 +307,19 @@ label wardrobe_menu(): $ rebuild_wardrobe_icons(category_items, current_subcategory) - elif _choice[0] == "equip": + elif __choice[0] == "equip": ### CLOTHING ### - if isinstance(_choice[1], DollCloth): - if _choice[1].type == "hair" and char_active.is_equipped_item(_choice[1]): + if isinstance(__choice[1], DollCloth): + if __choice[1].type == "hair" and char_active.is_equipped_item(__choice[1]): play sound "sounds/fail.ogg" $ renpy.notify("Hair cannot be removed.") else: - if char_active.is_equipped_item(_choice[1]): + if char_active.is_equipped_item(__choice[1]): # UNEQUIP - if wardrobe_check_unequip(_choice[1]): - $ wardrobe_react("unequip", _choice[1]) - $ char_active.unequip(_choice[1]) + if wardrobe_check_unequip(__choice[1]): + $ wardrobe_react("unequip", __choice[1]) + $ char_active.unequip(__choice[1]) if current_item: $ current_item.clear_button_cache() @@ -327,61 +327,61 @@ label wardrobe_menu(): $ current_item = None else: - $ wardrobe_react("unequip_fail", _choice[1]) + $ wardrobe_react("unequip_fail", __choice[1]) else: # EQUIP - if wardrobe_check_equip(_choice[1]): - $ wardrobe_react("equip", _choice[1]) + if wardrobe_check_equip(__choice[1]): + $ wardrobe_react("equip", __choice[1]) # Blacklist handling - if not wardrobe_check_blacklist(_choice[1]): - $ wardrobe_react("blacklist", _choice[1]) + if not wardrobe_check_blacklist(__choice[1]): + $ wardrobe_react("blacklist", __choice[1]) - $ _choice[1].mark_as_seen() - $ char_active.equip(_choice[1]) + $ __choice[1].mark_as_seen() + $ char_active.equip(__choice[1]) if current_item: $ current_item.clear_button_cache() $ current_item.build_button() - $ current_item = _choice[1] + $ current_item = __choice[1] $ current_item.clear_button_cache() $ current_item.build_button() - if wardrobe_fallback_required(_choice[1]): + if wardrobe_fallback_required(__choice[1]): # Has to be called regardless of player preference. - $ renpy.call(get_character_response(states.active_girl, "fallback"), _choice[1]) + $ renpy.call(get_character_response(states.active_girl, "fallback"), __choice[1]) else: - $ wardrobe_react("equip_fail", _choice[1]) + $ wardrobe_react("equip_fail", __choice[1]) ### OUTFIT ### - elif isinstance(_choice[1], DollOutfit): + elif isinstance(__choice[1], DollOutfit): $ _outfit = char_active.create_outfit(temp=True) - if _outfit == _choice[1]: + if _outfit == __choice[1]: $ renpy.notify("Load failed: Outfit already equipped.") else: - if wardrobe_check_equip_outfit(_choice[1]): + if wardrobe_check_equip_outfit(__choice[1]): if not _outfit.exists(): $ _confirmed = wardrobe_suppress_warnings or renpy.call_screen("confirm", "Discard unsaved changes and load this outfit?") if _confirmed: - $ wardrobe_react("equip_outfit", _choice[1]) - $ char_active.equip(_choice[1]) - $ current_item = _choice[1] + $ wardrobe_react("equip_outfit", __choice[1]) + $ char_active.equip(__choice[1]) + $ current_item = __choice[1] else: $ renpy.notify("Load failed: Cancelled by user.") else: - $ wardrobe_react("equip_outfit", _choice[1]) - $ char_active.equip(_choice[1]) - $ current_item = _choice[1] + $ wardrobe_react("equip_outfit", __choice[1]) + $ char_active.equip(__choice[1]) + $ current_item = __choice[1] else: - $ wardrobe_react("equip_outfit_fail", _choice[1]) + $ wardrobe_react("equip_outfit_fail", __choice[1]) - elif _choice[0] == "setcolor": + elif __choice[0] == "setcolor": python: - current_item.set_color(_choice[1]) + current_item.set_color(__choice[1]) current_item.clear_button_cache() current_item.build_button() @@ -400,21 +400,21 @@ label wardrobe_menu(): if rebuild: outfit.is_stale() - elif _choice[0] == "touch": - if wardrobe_check_touch(_choice[1]): - $ wardrobe_react("touch", _choice[1]) + elif __choice[0] == "touch": + if wardrobe_check_touch(__choice[1]): + $ wardrobe_react("touch", __choice[1]) else: - $ wardrobe_react("touch_fail", _choice[1]) + $ wardrobe_react("touch_fail", __choice[1]) - elif _choice[0] == "addoutfit": + elif __choice[0] == "addoutfit": python: _outfit = char_active.create_outfit(temp=True) if _outfit.exists(): renpy.notify("Save failed: Outfit already exists.") else: - if _choice[1]: - _index = char_active.outfits.index(_choice[1]) + if __choice[1]: + _index = char_active.outfits.index(__choice[1]) _confirmed = wardrobe_suppress_warnings or renpy.call_screen("confirm", "Overwrite this outfit?") if _confirmed: @@ -440,32 +440,32 @@ label wardrobe_menu(): category_items = set_wardrobe_categories(current_category) - elif _choice[0] == "deloutfit": + elif __choice[0] == "deloutfit": python: _confirmed = wardrobe_suppress_warnings or renpy.call_screen("confirm", "Delete this outfit?") if _confirmed: - _choice[1].delete() + __choice[1].delete() category_items = set_wardrobe_categories(current_category) renpy.notify("Outfit Deleted.") - elif _choice[0] == "export": + elif __choice[0] == "export": python: filename = renpy.input("Save as:", datetime.datetime.now().strftime("%d %b %Y-%H%M%S")) if not filename.endswith(".png"): filename += ".png" - _choice[1].export_data(filename) + __choice[1].export_data(filename) achievements.unlock("export") - elif _choice[0] == "import": - $ _outfit = char_active.import_outfit(_choice[1]) + elif __choice[0] == "import": + $ _outfit = char_active.import_outfit(__choice[1]) - elif _choice[0] == "schedule": - $ renpy.call_screen("wardrobe_schedule_menuitem", _choice[1]) + elif __choice[0] == "schedule": + $ renpy.call_screen("wardrobe_schedule_menuitem", __choice[1]) - elif _choice == "music": + elif __choice == "music": python: if wardrobe_music: wardrobe_music = False @@ -474,7 +474,7 @@ label wardrobe_menu(): wardrobe_music = True renpy.music.play("music/Spring_In_My_Step.ogg", fadein=1) - elif _choice == "randomise": + elif __choice == "randomise": python: _confirmed = False @@ -554,7 +554,7 @@ label wardrobe_menu(): current_item.clear_button_cache() current_item.build_button(current_subcategory) - else: #_choice == "Close": + else: #__choice == "Close": python: _confirmed = False From d9912ece6cae801f5fe9ea268b3a552dca81208f Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 16:09:16 +0000 Subject: [PATCH 092/249] Fix 15c998c --- game/scripts/interface/tutorials.rpy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/game/scripts/interface/tutorials.rpy b/game/scripts/interface/tutorials.rpy index 2bf395f3..4d83dd07 100644 --- a/game/scripts/interface/tutorials.rpy +++ b/game/scripts/interface/tutorials.rpy @@ -30,8 +30,7 @@ label tutorial(entry): return label .display(entry): - show screen tutorial(entry) - $ _choice = ui.interact() + call screen tutorial(entry) return screen tutorial(entry): From 12e2bbcfb66b8eebf1a1890dc476203512ef1d54 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:21:10 +0100 Subject: [PATCH 093/249] Fix indent (cherry picked from commit 925cf611c1c9bc3620b6a31448c7cfd56364dce2) --- game/scripts/shops/dress/menu.rpy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/shops/dress/menu.rpy b/game/scripts/shops/dress/menu.rpy index 4fad841d..b82ff599 100644 --- a/game/scripts/shops/dress/menu.rpy +++ b/game/scripts/shops/dress/menu.rpy @@ -115,9 +115,9 @@ label shop_dress_menu: return else: - gen "Nothing has caught my eye I'm afraid." ("base", xpos="far_left", ypos="head") - maf "Maybe next time." - return + gen "Nothing has caught my eye I'm afraid." ("base", xpos="far_left", ypos="head") + maf "Maybe next time." + return jump .after_init From 780c028eb3ce5aeae1c3c83e5f9e8dc958227972 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:24:15 +0100 Subject: [PATCH 094/249] Use python hide instead of a single-use function (cherry picked from commit a606fc9ca264cff17755859c8323c00e1eee12b8) --- game/scripts/shops/item/chitchats.rpy | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/game/scripts/shops/item/chitchats.rpy b/game/scripts/shops/item/chitchats.rpy index c16251c9..e893c4b1 100644 --- a/game/scripts/shops/item/chitchats.rpy +++ b/game/scripts/shops/item/chitchats.rpy @@ -90,13 +90,8 @@ label purchase_item(item): $ game.gold -= item.price $ item.owned += 1 - $ item_store_achievements() - - return - -init python: - def item_store_achievements(): - # We require a function because lambdas aren't pickleable + python hide: + # We hide the lambdas which aren't pickleable if isinstance(item, Decoration): _posters = filter(lambda x: (x.type == "decoration" and x.placement == poster_OBJ), inventory.items) _hats = filter(lambda x: (x.type == "decoration" and "hat" in x.name.lower()), inventory.items) @@ -105,4 +100,6 @@ init python: achievements.unlock("postman") if all(i.owned > 0 for i in _hats): - achievements.unlock("hats") \ No newline at end of file + achievements.unlock("hats") + + return From f1a0c779f65a7ffd4d718c3f5634e14a0bad1d01 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:34:14 +0100 Subject: [PATCH 095/249] Sort in-place to save time (cherry picked from commit 36d3a5d1a79827a2c0f718fdf4124f61109a346c) --- game/scripts/shops/item/menu.rpy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/scripts/shops/item/menu.rpy b/game/scripts/shops/item/menu.rpy index 6e20ad0a..707091f2 100644 --- a/game/scripts/shops/item/menu.rpy +++ b/game/scripts/shops/item/menu.rpy @@ -4,9 +4,9 @@ init python: item = sorted(item, key=lambda x: natsort_key(x.name)) if sortby == "Price (Asc)": - item = sorted(item, key=lambda x: x.price, reverse=False) + item.sort(key=lambda x: x.price, reverse=False) elif current_sorting == "Price (Desc)": - item = sorted(item, key=lambda x: x.price, reverse=True) + item.sort(key=lambda x: x.price, reverse=True) return item label shop_item: From 5ef4d4f2db0ad7d6194f668da707748b6e1d05d9 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:35:10 +0100 Subject: [PATCH 096/249] Avoid extraneous bool call (cherry picked from commit 6a4b56a182d7e46ecb2ad0bcbaa7828357589cce) --- game/scripts/shops/item/menu.rpy | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/game/scripts/shops/item/menu.rpy b/game/scripts/shops/item/menu.rpy index 707091f2..8e8b2fe6 100644 --- a/game/scripts/shops/item/menu.rpy +++ b/game/scripts/shops/item/menu.rpy @@ -31,9 +31,9 @@ label shop_item_menu(xx=150, yy=90): current_sorting = "Price (Asc)" if current_category in {"Gifts", "Ingredients"}: - category_items = [x for x in inventory_dict[current_category] if bool(x.price > 0 and x.unlocked)] + category_items = [x for x in inventory_dict[current_category] if (x.price > 0 and x.unlocked)] elif current_category in {"Books", "Scrolls", "Decorations", "Quest Items"}: - category_items = [x for x in inventory_dict[current_category] if bool(x.price > 0 and x.owned < x.limit and x.unlocked)] + category_items = [x for x in inventory_dict[current_category] if (x.price > 0 and x.owned < x.limit and x.unlocked)] menu_items = shop_item_sortfilter(category_items, current_sorting) menu_items_length = len(menu_items) @@ -50,9 +50,9 @@ label shop_item_menu(xx=150, yy=90): elif __choice[0] == "category": $ current_category = __choice[1] if current_category in {"Gifts", "Ingredients"}: - $ category_items = [x for x in inventory_dict[current_category] if bool(x.price > 0 and x.unlocked)] + $ category_items = [x for x in inventory_dict[current_category] if (x.price > 0 and x.unlocked)] elif current_category in {"Books", "Scrolls", "Decorations", "Quest Items"}: - $ category_items = [x for x in inventory_dict[current_category] if bool(x.price > 0 and x.owned < x.limit and x.unlocked)] + $ category_items = [x for x in inventory_dict[current_category] if (x.price > 0 and x.owned < x.limit and x.unlocked)] $ menu_items = shop_item_sortfilter(category_items, current_sorting) $ menu_items_length = len(menu_items) $ current_page = 0 @@ -73,9 +73,9 @@ label shop_item_menu(xx=150, yy=90): $ renpy.call("purchase_item", current_item) if current_category in {"Gifts", "Ingredients"}: - $ category_items = [x for x in inventory_dict[current_category] if bool(x.price > 0 and x.unlocked)] + $ category_items = [x for x in inventory_dict[current_category] if (x.price > 0 and x.unlocked)] elif current_category in {"Books", "Scrolls", "Decorations", "Quest Items"}: - $ category_items = [x for x in inventory_dict[current_category] if bool(x.price > 0 and x.owned < x.limit and x.unlocked)] + $ category_items = [x for x in inventory_dict[current_category] if (x.price > 0 and x.owned < x.limit and x.unlocked)] $ menu_items = shop_item_sortfilter(category_items, current_sorting) $ menu_items_length = len(menu_items) From 2110eeb92a40c04eef9af03be8908021cf460b6d Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:39:33 +0100 Subject: [PATCH 097/249] Simpler inline conditional (cherry picked from commit da636e93ab69a9553464a61b60644b820c2f85f2) --- game/scripts/rooms/main_room/objects/cupboard.rpy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/scripts/rooms/main_room/objects/cupboard.rpy b/game/scripts/rooms/main_room/objects/cupboard.rpy index e709c2bd..c7a65c5d 100644 --- a/game/scripts/rooms/main_room/objects/cupboard.rpy +++ b/game/scripts/rooms/main_room/objects/cupboard.rpy @@ -121,7 +121,7 @@ init python: return int(progress_factor * random_gold) else: filtered_list = [x for x in drop_list if x.owned <= 5] - random_item = renpy.random.choice(filtered_list if filtered_list else drop_list) + random_item = renpy.random.choice(filtered_list or drop_list) return random_item elif game.difficulty == 2: @@ -131,7 +131,7 @@ init python: return int(progress_factor * random_gold) else: filtered_list = [x for x in drop_list if x.owned <= 3] - random_item = renpy.random.choice(filtered_list if filtered_list else drop_list) + random_item = renpy.random.choice(filtered_list or drop_list) if int(120 * math.log(game.day)) / 3 < random_item.price: chance = max(6 - (random_item.owned * 5), 1) From d3a2929b6ccccd0a0e8739d89164c967dfda4b2f Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:52:38 +0100 Subject: [PATCH 098/249] Better None syntax (cherry picked from commit 8d4216a4768dfae2526a9347dcdb6f6507a9d206) --- game/scripts/rooms/main_room/objects/desk.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/rooms/main_room/objects/desk.rpy b/game/scripts/rooms/main_room/objects/desk.rpy index 8f3fdca4..e78fb7d4 100644 --- a/game/scripts/rooms/main_room/objects/desk.rpy +++ b/game/scripts/rooms/main_room/objects/desk.rpy @@ -241,7 +241,7 @@ screen crystal_ball(): zorder 8 add "interface/desk/crystal_ball.webp" xpos 268 ypos 0 - if not ball_hint == None: + if ball_hint is not None: add "interface/desk/hints/glow.webp" xpos 268+40 add "interface/desk/hints/"+str(ball_hint)+ ".webp" xpos 268+125 xanchor 0.5 From 415c90d11c4a91316dad68e5d252a27a2e44cfcf Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:53:14 +0100 Subject: [PATCH 099/249] Use the call screen statement in this case this particular syntax is very precisely documented in the screens page (cherry picked from commit f51f3a30a192f92361ae0e69ff7c8bc8a7fb7e14) --- game/scripts/rooms/main_room/objects/desk.rpy | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/game/scripts/rooms/main_room/objects/desk.rpy b/game/scripts/rooms/main_room/objects/desk.rpy index e78fb7d4..4ca2d5fe 100644 --- a/game/scripts/rooms/main_room/objects/desk.rpy +++ b/game/scripts/rooms/main_room/objects/desk.rpy @@ -44,14 +44,11 @@ label desk: #Screens play sound "sounds/scroll.ogg" - show screen desk_menu - with d1 - - $ renpy.dynamic(__choice = ui.interact()) - - hide screen desk_menu + call screen desk_menu(_with_none=False) with d1 #Do NOT add a transition here! + $ renpy.dynamic(__choice = _return) + #Hermione if __choice == "hermione" and states.her.busy: From f941b77409e1790452210391e487cc91a0c3618e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 00:17:26 +0100 Subject: [PATCH 100/249] Convert ball_hint to a screen variable no leak (cherry picked from commit 4ec94d28f51389b901a11f16d9387d00670e599d) --- game/scripts/interface/map.rpy | 80 +++++++++---------- game/scripts/rooms/main_room/objects/desk.rpy | 33 ++++---- 2 files changed, 56 insertions(+), 57 deletions(-) diff --git a/game/scripts/interface/map.rpy b/game/scripts/interface/map.rpy index b27c1a0c..4b150b9f 100644 --- a/game/scripts/interface/map.rpy +++ b/game/scripts/interface/map.rpy @@ -53,8 +53,8 @@ screen map_buttons(): ypos UI_ypos_offset +234 idle "interface/map/room_office_idle.webp" hover "interface/map/room_office_hover.webp" - hovered SetVariable("ball_hint", "office") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "office") + unhovered SetScreenVariable("ball_hint", None) action Return("main_room_menu") #Gryffindor @@ -63,8 +63,8 @@ screen map_buttons(): ypos UI_ypos_offset +214 idle "interface/map/room_gryffindor_idle.webp" # hover "interface/map/room_gryffindor_hover.webp" - # hovered SetVariable("ball_hint", "dorm_gryffindor") - # unhovered SetVariable("ball_hint", None) + # hovered SetScreenVariable("ball_hint", "dorm_gryffindor") + # unhovered SetScreenVariable("ball_hint", None) # action Return("gryffindor_dormitories") #Ravenclaw @@ -73,8 +73,8 @@ screen map_buttons(): ypos UI_ypos_offset +256 idle "interface/map/room_ravenclaw_idle.webp" # hover "interface/map/room_ravenclaw_hover.webp" - # hovered SetVariable("ball_hint", "dorm_ravenclaw") - # unhovered SetVariable("ball_hint", None) + # hovered SetScreenVariable("ball_hint", "dorm_ravenclaw") + # unhovered SetScreenVariable("ball_hint", None) # action Return("ravenclaw_dormitories") #Hufflepuff @@ -82,8 +82,8 @@ screen map_buttons(): xpos UI_xpos_offset +76 ypos UI_ypos_offset +295 idle "interface/map/room_hufflepuff_idle.webp" - #hovered SetVariable("ball_hint", "dorm_hufflepuff") - #unhovered SetVariable("ball_hint", None) + #hovered SetScreenVariable("ball_hint", "dorm_hufflepuff") + #unhovered SetScreenVariable("ball_hint", None) #hover "interface/map/room_hufflepuff_hover.webp" #action Return("hufflepuff_dormitories") @@ -92,8 +92,8 @@ screen map_buttons(): xpos UI_xpos_offset +214 ypos UI_ypos_offset +136 idle "interface/map/room_slytherin_idle.webp" - #hovered SetVariable("ball_hint", "dorm_slytherin") - #unhovered SetVariable("ball_hint", None) + #hovered SetScreenVariable("ball_hint", "dorm_slytherin") + #unhovered SetScreenVariable("ball_hint", None) #hover "interface/map/room_slytherin_hover.webp" #action Return("slytherin_dormitories") @@ -105,8 +105,8 @@ screen map_buttons(): ypos UI_ypos_offset +231 idle "interface/map/room_weasley_store_idle.webp" hover "interface/map/room_weasley_store_hover.webp" - hovered SetVariable("ball_hint", "weasley_store") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "weasley_store") + unhovered SetScreenVariable("ball_hint", None) action Return("item_store") #Clothing Store @@ -117,8 +117,8 @@ screen map_buttons(): ypos UI_ypos_offset +231 idle "interface/map/room_clothing_store_idle.webp" hover "interface/map/room_clothing_store_hover.webp" - hovered SetVariable("ball_hint", "clothing_store") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "clothing_store") + unhovered SetScreenVariable("ball_hint", None) action Return("clothing_store") # Snape's Office @@ -129,8 +129,8 @@ screen map_buttons(): ypos UI_ypos_offset +331 idle "interface/map/room_potions_idle.webp" hover "interface/map/room_potions_hover.webp" - hovered SetVariable("ball_hint", "potions") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "potions") + unhovered SetScreenVariable("ball_hint", None) action Return("snape_office") #Room of Requirement @@ -140,8 +140,8 @@ screen map_buttons(): imagebutton: xpos UI_xpos_offset +116 ypos UI_ypos_offset +160 - unhovered SetVariable("ball_hint", None) - hovered SetVariable("ball_hint", "room_of_req") + unhovered SetScreenVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "room_of_req") action Return("seventh_floor") if not states.map.seventh_floor.visited: idle "interface/map/room_ror_empty_idle.webp" @@ -156,8 +156,8 @@ screen map_buttons(): ypos UI_ypos_offset +367 idle "interface/map/room_boat_house_idle.webp" # hover "interface/map/room_boat_house_hover.webp" - # hovered SetVariable("ball_hint", "lake") - # unhovered SetVariable("ball_hint", None) + # hovered SetScreenVariable("ball_hint", "lake") + # unhovered SetScreenVariable("ball_hint", None) # action Return("map_lake") #Forest @@ -166,8 +166,8 @@ screen map_buttons(): ypos UI_ypos_offset +12 idle "interface/map/room_north_courtyard_idle.webp" # hover "interface/map/room_north_courtyard_hover.webp" - # hovered SetVariable("ball_hint", "forest") - # unhovered SetVariable("ball_hint", None) + # hovered SetScreenVariable("ball_hint", "forest") + # unhovered SetScreenVariable("ball_hint", None) # action Return("map_forest") #Attic @@ -179,8 +179,8 @@ screen map_buttons(): ypos UI_ypos_offset +226 idle "interface/map/room_attic_closed_idle.webp" hover "interface/map/room_attic_closed_hover.webp" - hovered SetVariable("ball_hint", "attic") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "attic") + unhovered SetScreenVariable("ball_hint", None) action Return("map_attic") else: imagebutton: @@ -188,8 +188,8 @@ screen map_buttons(): ypos UI_ypos_offset +226 idle "interface/map/room_attic_open_idle.webp" hover "interface/map/room_attic_open_hover.webp" - hovered SetVariable("ball_hint", "attic") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "attic") + unhovered SetScreenVariable("ball_hint", None) action Return("map_attic") # Map animation toggle @@ -409,8 +409,8 @@ screen map_screen_characters(): yalign 0.5 idle "interface/map/name_hermione.webp" hover "interface/map/name_hermione_hover.webp" - hovered SetVariable("ball_hint", "summon_hermione") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "summon_hermione") + unhovered SetScreenVariable("ball_hint", None) action Return("hermione") #Luna @@ -422,8 +422,8 @@ screen map_screen_characters(): yalign 0.5 idle "interface/map/name_luna.webp" hover "interface/map/name_luna_hover.webp" - hovered SetVariable("ball_hint", "summon_luna") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "summon_luna") + unhovered SetScreenVariable("ball_hint", None) action Return("luna") #Astoria @@ -435,8 +435,8 @@ screen map_screen_characters(): yalign 0.5 idle "interface/map/name_astoria.webp" hover "interface/map/name_astoria_hover.webp" - hovered SetVariable("ball_hint", "summon_astoria") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "summon_astoria") + unhovered SetScreenVariable("ball_hint", None) action Return("astoria") #Susan @@ -448,8 +448,8 @@ screen map_screen_characters(): yalign 0.5 idle "interface/map/name_susan.webp" hover "interface/map/name_susan_hover.webp" - hovered SetVariable("ball_hint", "summon_susan") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "summon_susan") + unhovered SetScreenVariable("ball_hint", None) action Return("susan") #Cho @@ -461,8 +461,8 @@ screen map_screen_characters(): yalign 0.5 idle "interface/map/name_cho.webp" hover "interface/map/name_cho_hover.webp" - hovered SetVariable("ball_hint", "summon_cho") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "summon_cho") + unhovered SetScreenVariable("ball_hint", None) action Return("cho") #Snape @@ -474,8 +474,8 @@ screen map_screen_characters(): yalign 0.5 idle "interface/map/name_snape.webp" hover "interface/map/name_snape_hover.webp" - hovered SetVariable("ball_hint", "summon_snape") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "summon_snape") + unhovered SetScreenVariable("ball_hint", None) action Return("snape") #Tonks @@ -487,6 +487,6 @@ screen map_screen_characters(): yalign 0.5 idle "interface/map/name_tonks.webp" hover "interface/map/name_tonks_hover.webp" - hovered SetVariable("ball_hint", "summon_tonks") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "summon_tonks") + unhovered SetScreenVariable("ball_hint", None) action Return("tonks") diff --git a/game/scripts/rooms/main_room/objects/desk.rpy b/game/scripts/rooms/main_room/objects/desk.rpy index 4ca2d5fe..1baf8a41 100644 --- a/game/scripts/rooms/main_room/objects/desk.rpy +++ b/game/scripts/rooms/main_room/objects/desk.rpy @@ -34,9 +34,6 @@ label desk: else: jump main_room_menu - #Define hints variable - $ ball_hint = None - # TODO: Refactor. Low priority. call update_character_map_locations @@ -148,6 +145,8 @@ screen desk_menu(): zorder 5 + default ball_hint = None + #Background add "interface/desk/_bg_.webp" @@ -157,7 +156,7 @@ screen desk_menu(): # Ugly hands # add "interface/desk/_hands_.webp" xpos 0 ypos -30 - use crystal_ball + use crystal_ball(ball_hint) use watch #Book @@ -169,9 +168,9 @@ screen desk_menu(): xalign 1.0 idle "interface/desk/book.webp" hover "interface/desk/book_hover.webp" - hovered SetVariable("ball_hint", "book") + hovered SetScreenVariable("ball_hint", "book") keysym "inventory" - unhovered SetVariable("ball_hint", None) + unhovered SetScreenVariable("ball_hint", None) action Return("inventory") #Tissue Box @@ -182,9 +181,9 @@ screen desk_menu(): xalign 1.0 idle "interface/desk/tissues.webp" hover "interface/desk/tissues_hover.webp" - hovered SetVariable("ball_hint", "jerk_off") + hovered SetScreenVariable("ball_hint", "jerk_off") keysym "fap" - unhovered SetVariable("ball_hint", None) + unhovered SetScreenVariable("ball_hint", None) action Return("jerk_off") #Work @@ -195,9 +194,9 @@ screen desk_menu(): xalign 0.0 idle "interface/desk/work.webp" hover "interface/desk/work_hover.webp" - hovered SetVariable("ball_hint", "work") + hovered SetScreenVariable("ball_hint", "work") keysym "work" - unhovered SetVariable("ball_hint", None) + unhovered SetScreenVariable("ball_hint", None) action Return("paperwork") #Cards @@ -209,8 +208,8 @@ screen desk_menu(): yalign 1.0 idle "interface/desk/cards.webp" hover "interface/desk/cards_hover.webp" - hovered SetVariable("ball_hint", "cards") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "cards") + unhovered SetScreenVariable("ball_hint", None) action Return("deck_builder") #exit @@ -221,8 +220,8 @@ screen desk_menu(): ypos 600 idle "interface/desk/exit_mask.webp" hover "interface/desk/exit.webp" - hovered SetVariable("ball_hint", "exit") - unhovered SetVariable("ball_hint", None) + hovered SetScreenVariable("ball_hint", "exit") + unhovered SetScreenVariable("ball_hint", None) action Return("Close") #Night Overlay @@ -232,7 +231,7 @@ screen desk_menu(): use close_button -screen crystal_ball(): +screen crystal_ball(ball_hint): tag desk_interface zorder 8 @@ -250,9 +249,9 @@ screen watch(): ypos 0 idle "interface/desk/watch.webp" hover "interface/desk/watch_hover.webp" - unhovered SetVariable("ball_hint", None) + unhovered SetScreenVariable("ball_hint", None) keysym "sleep" - hovered If(game.daytime, SetVariable("ball_hint", "doze_off"), SetVariable("ball_hint", "sleep")) + hovered If(game.daytime, SetScreenVariable("ball_hint", "doze_off"), SetScreenVariable("ball_hint", "sleep")) action If(game.daytime, Return("night_start"), Return("day_start")) $ watch_x = 603 +67 From 5197b6a7a6736ed9c6ee43a370e41ceed9649b74 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 00:57:00 +0100 Subject: [PATCH 101/249] Use dynamic variable and condense menu-label syntax The label is jumped to and not called, but the variable will still clean itself up eventually (cherry picked from commit 4c52d1638faa4feef72fab92e3c8ff57c19e7272) --- game/scripts/rooms/main_room/objects/jerk_off.rpy | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/game/scripts/rooms/main_room/objects/jerk_off.rpy b/game/scripts/rooms/main_room/objects/jerk_off.rpy index 22ff4ae9..630772d6 100644 --- a/game/scripts/rooms/main_room/objects/jerk_off.rpy +++ b/game/scripts/rooms/main_room/objects/jerk_off.rpy @@ -1,6 +1,3 @@ - -default jerk_off_choice = None # Last jerk-off fantasy - label jerk_off: call gen_chibi("jerk_off_behind_desk") with d3 @@ -8,8 +5,9 @@ label jerk_off: gen "(How should I finish this thing?)" ("base", xpos="far_left", ypos="head") - label .choice: - menu: + $ renpy.dynamic(jerk_off_choice=None) + + menu .choice: "-Hermione's panties!-" if states.her.ev.panty_thief.acquired: $ jerk_off_choice = "hermione" $ states.her.ev.panty_thief.soaked = True From 482969eaae688f968eaf4ff5a84526d54c8423d0 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 00:57:25 +0100 Subject: [PATCH 102/249] Use renpy statement instead of python equivalent (cherry picked from commit 976455bfc9f311439f655d6a737f4dd8032d314f) --- game/scripts/rooms/main_room/objects/desk.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/rooms/main_room/objects/desk.rpy b/game/scripts/rooms/main_room/objects/desk.rpy index 1baf8a41..874937d7 100644 --- a/game/scripts/rooms/main_room/objects/desk.rpy +++ b/game/scripts/rooms/main_room/objects/desk.rpy @@ -138,7 +138,7 @@ label desk: with d3 call gen_walk(action="leave", speed=1.5) - $ renpy.jump(__choice) + jump expression __choice screen desk_menu(): tag desk_interface From 67e589f47ff53cb9056f74c670c64f04c84c31e2 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 01:03:03 +0100 Subject: [PATCH 103/249] Hasten elif chain avoid reevaluating the choice equality (cherry picked from commit 9b419fcbc3dce2238107cf4cb0fbbc5508df8584) --- game/scripts/rooms/main_room/objects/desk.rpy | 132 +++++++++--------- 1 file changed, 69 insertions(+), 63 deletions(-) diff --git a/game/scripts/rooms/main_room/objects/desk.rpy b/game/scripts/rooms/main_room/objects/desk.rpy index 874937d7..5627dd5e 100644 --- a/game/scripts/rooms/main_room/objects/desk.rpy +++ b/game/scripts/rooms/main_room/objects/desk.rpy @@ -46,89 +46,95 @@ label desk: $ renpy.dynamic(__choice = _return) - #Hermione - if __choice == "hermione" and states.her.busy: - if game.daytime: - nar "Hermione is taking classes." - jump main_room_menu + if __choice == "hermione": + if states.her.busy: + if game.daytime: + nar "Hermione is taking classes." + jump main_room_menu + else: + nar "Hermione is already asleep." + jump main_room_menu else: - nar "Hermione is already asleep." - jump main_room_menu - elif __choice == "hermione" and not states.her.busy: - if states.her.map_location == "forest": - nar "Hermione is currently at the Forbidden Forest.\n>Would you like to go there?" - menu: - "-Yes, pay her a visit-": - jump hermione_map_BJ - "-No, summon her to your office-": - pass + if states.her.map_location == "forest": + nar "Hermione is currently at the Forbidden Forest.\n>Would you like to go there?" + menu: + "-Yes, pay her a visit-": + jump hermione_map_BJ + "-No, summon her to your office-": + pass - jump summon_hermione + jump summon_hermione #Luna - elif states.lun.unlocked and __choice == "luna" and states.lun.busy: - if game.daytime: - nar "Luna is taking classes." - jump main_room_menu + elif states.lun.unlocked and __choice == "luna": + if states.lun.busy: + if game.daytime: + nar "Luna is taking classes." + jump main_room_menu + else: + nar "Luna is already asleep." + jump main_room_menu else: - nar "Luna is already asleep." - jump main_room_menu - elif states.lun.unlocked and __choice == "luna" and not states.lun.busy: - jump summon_luna + jump summon_luna #Astoria - elif states.ast.busy and __choice == "astoria": - if game.daytime: - nar "Astoria is taking classes." - jump main_room_menu - else: - nar "Astoria is already asleep." - jump main_room_menu - elif not states.ast.busy and __choice == "astoria": #Summoning after intro events done. - jump summon_astoria + elif __choice == "astoria": + if states.ast.busy: + if game.daytime: + nar "Astoria is taking classes." + jump main_room_menu + else: + nar "Astoria is already asleep." + jump main_room_menu + else: #Summoning after intro events done. + jump summon_astoria #Susan - elif __choice == "susan" and states.sus.busy: - if game.daytime: - nar "Susan is taking classes." - jump main_room_menu + elif __choice == "susan": + if states.sus.busy: + if game.daytime: + nar "Susan is taking classes." + jump main_room_menu + else: + nar "Susan is already asleep." + jump main_room_menu else: - nar "Susan is already asleep." - jump main_room_menu - elif __choice == "susan" and not states.sus.busy: - jump summon_susan + jump summon_susan #Cho - elif __choice == "cho" and states.cho.busy: - if game.daytime: - nar "Cho is taking classes." - jump main_room_menu + elif __choice == "cho": + if states.cho.busy: + if game.daytime: + nar "Cho is taking classes." + jump main_room_menu + else: + nar "Cho is already asleep." + jump main_room_menu else: - nar "Cho is already asleep." - jump main_room_menu - elif __choice == "cho" and not states.cho.busy: - jump summon_cho + jump summon_cho #Snape - elif __choice == "snape" and states.sna.busy: - nar "Professor Snape is unavailable." - if game.daytime: - jump main_room_menu + elif __choice == "snape": + if states.sna.busy: + nar "Professor Snape is unavailable." + if game.daytime: + jump main_room_menu + else: + jump main_room_menu else: - jump main_room_menu - elif __choice == "snape" and not states.sna.busy: - jump summon_snape + jump summon_snape #Tonks - elif __choice == "tonks" and states.ton.busy: - nar "Tonks is unavailable." - if game.daytime: - jump main_room_menu + elif __choice == "tonks": + if states.ton.busy: + nar "Tonks is unavailable." + if game.daytime: + jump main_room_menu + else: + jump main_room_menu else: - jump main_room_menu - elif __choice == "tonks" and not states.ton.busy: - jump summon_tonks + jump summon_tonks #Close elif __choice == "Close": From 11047626e1bec586d94c3cd81f9d1a9b37506a1e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 01:07:16 +0100 Subject: [PATCH 104/249] Factorize jumps in the elif (cherry picked from commit 6dc1a048109f88a1b0c51a1ed3692fdfd69312d8) --- game/scripts/rooms/main_room/objects/desk.rpy | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/game/scripts/rooms/main_room/objects/desk.rpy b/game/scripts/rooms/main_room/objects/desk.rpy index 5627dd5e..5b45cbce 100644 --- a/game/scripts/rooms/main_room/objects/desk.rpy +++ b/game/scripts/rooms/main_room/objects/desk.rpy @@ -51,10 +51,9 @@ label desk: if states.her.busy: if game.daytime: nar "Hermione is taking classes." - jump main_room_menu else: nar "Hermione is already asleep." - jump main_room_menu + jump main_room_menu else: if states.her.map_location == "forest": nar "Hermione is currently at the Forbidden Forest.\n>Would you like to go there?" @@ -71,10 +70,9 @@ label desk: if states.lun.busy: if game.daytime: nar "Luna is taking classes." - jump main_room_menu else: nar "Luna is already asleep." - jump main_room_menu + jump main_room_menu else: jump summon_luna @@ -83,10 +81,9 @@ label desk: if states.ast.busy: if game.daytime: nar "Astoria is taking classes." - jump main_room_menu else: nar "Astoria is already asleep." - jump main_room_menu + jump main_room_menu else: #Summoning after intro events done. jump summon_astoria @@ -95,10 +92,9 @@ label desk: if states.sus.busy: if game.daytime: nar "Susan is taking classes." - jump main_room_menu else: nar "Susan is already asleep." - jump main_room_menu + jump main_room_menu else: jump summon_susan @@ -107,10 +103,9 @@ label desk: if states.cho.busy: if game.daytime: nar "Cho is taking classes." - jump main_room_menu else: nar "Cho is already asleep." - jump main_room_menu + jump main_room_menu else: jump summon_cho @@ -118,10 +113,7 @@ label desk: elif __choice == "snape": if states.sna.busy: nar "Professor Snape is unavailable." - if game.daytime: - jump main_room_menu - else: - jump main_room_menu + jump main_room_menu else: jump summon_snape @@ -129,10 +121,7 @@ label desk: elif __choice == "tonks": if states.ton.busy: nar "Tonks is unavailable." - if game.daytime: - jump main_room_menu - else: - jump main_room_menu + jump main_room_menu else: jump summon_tonks From 0c564a521bf450a4538a9ade56947028b7501b25 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 01:14:33 +0100 Subject: [PATCH 105/249] Use expression instead of image the only documented lingua this is AST-equivalent (cherry picked from commit 542db72609883b59d66f35db9178839d972288d7) --- .../cho/events/quidditch/gryffindor_match.rpy | 82 ++++++------ .../cho/events/quidditch/hufflepuff_match.rpy | 4 +- game/scripts/events/Start.rpy | 6 +- game/scripts/inventory/scrolls.rpy | 120 +++++++++--------- .../mirror/events/a_bad_time_to_disrobe.rpy | 2 +- .../mirror/events/an_odd_circumstance.rpy | 4 +- .../rooms/main_room/objects/poster.rpy | 4 +- game/scripts/shops/dress/chitchats.rpy | 2 +- 8 files changed, 112 insertions(+), 112 deletions(-) diff --git a/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy b/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy index 52d4407d..1d3b56ef 100644 --- a/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy +++ b/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy @@ -204,7 +204,7 @@ label gryffindor_match: # Note: I've tried using chibis, but it's too difficult/buggy. #Cho appears in the window on her broom/knocks on door - #show image "ch_cho fly_window_masked" onlayer screens zorder 5 + #show expression "ch_cho fly_window_masked" onlayer screens zorder 5 #call cho_chibi("fly_window", "mid", "base") cho "[name_genie_cho]!" @@ -869,7 +869,7 @@ label gryffindor_match: call quidditch_stands2(weather="sun_low", crowd=crowd_full) call lun_chibi(xpos=620, ypos=400) play background "sounds/crowd_low.ogg" fadein 1 fadeout 5 - show image Transform("images/misc/redhead.webp", zoom=0.26, pos=(805, 240), xzoom=-1) as redhead zorder 2 + show expression Transform("images/misc/redhead.webp", zoom=0.26, pos=(805, 240), xzoom=-1) as redhead zorder 2 show screen blkfade with ComposeTransition(pushleft, before=faderight) hide screen blkfade @@ -939,7 +939,7 @@ label gryffindor_match: call room("quidditch_stands2") call quidditch_stands2(weather="sun_low", crowd=crowd_full) call lun_chibi(xpos=620, ypos=400) - show image Transform("images/misc/redhead.webp", zoom=0.26, pos=(805, 240), xzoom=-1) as redhead zorder 2 + show expression Transform("images/misc/redhead.webp", zoom=0.26, pos=(805, 240), xzoom=-1) as redhead zorder 2 call gen_chibi("stand", 650, 430, flip=False) play background "sounds/crowd_low.ogg" fadein 1 fadeout 5 @@ -963,7 +963,7 @@ label gryffindor_match: call room("quidditch_stands2") call quidditch_stands2(weather="sun_low", crowd=crowd_full) call lun_chibi(xpos=620, ypos=400) - show image Transform("images/misc/redhead.webp", zoom=0.26, pos=(805, 240), xzoom=-1) as redhead zorder 2 + show expression Transform("images/misc/redhead.webp", zoom=0.26, pos=(805, 240), xzoom=-1) as redhead zorder 2 call gen_chibi("stand", 650, 430, flip=False) hide screen blkfade @@ -1121,7 +1121,7 @@ label gryffindor_match: call room("quidditch_stands2") call quidditch_stands2(weather="sun_low", crowd=crowd_full) call lun_chibi(xpos=620, ypos=400) - show image Transform("images/misc/redhead.webp", zoom=0.26, pos=(805, 240), xzoom=-1) as redhead zorder 2 + show expression Transform("images/misc/redhead.webp", zoom=0.26, pos=(805, 240), xzoom=-1) as redhead zorder 2 show screen blkfade with ComposeTransition(pushleft, before=faderight) hide screen blkfade @@ -1262,7 +1262,7 @@ label gryffindor_match: call sna_chibi("stand", 150, 290, flip=True) call ton_chibi("stand", 130, 310, flip=True) call her_chibi("stand", 300, 400, flip=True) - hide image redhead + hide expression redhead show screen blkfade with ComposeTransition(pushright, before=fadeleft) hide screen blkfade @@ -1494,7 +1494,7 @@ label gryffindor_match: call ctc - hide image cg2 + hide expression cg2 with dissolve her "What are you doing?! Don't you have a firebolt?" @@ -1687,7 +1687,7 @@ label gryffindor_match: # Hermione removes panties off head. $ hermione.unequip("headgear") - show image "panties_on_the_ground" as panties zorder 2: + show expression "panties_on_the_ground" as panties zorder 2: pos (268, 380) with d3 @@ -1735,7 +1735,7 @@ label gryffindor_match: ton @ hair horny "Nice, free panties." ("horny", "base", "base", "down", trans=d3) play sound "sounds/cloth_sound2.ogg" - hide image panties + hide expression panties with d3 pause 0.8 @@ -2015,21 +2015,21 @@ label gryffindor_match_return: gen "*Hngh*--" ("angry", xpos="far_left", ypos="head") #Cut to CG - show image "cho_under_desk_idle_snape_no_spit" as cg_doll zorder 16 + show expression "cho_under_desk_idle_snape_no_spit" as cg_doll zorder 16 with fade call ctc ton "Professor?" ("soft", "narrow", "raised", "mid", xpos="far_right", ypos="head") play sound "sounds/spit.ogg" - show image "cho_under_desk_idle_snape" as cg_doll + show expression "cho_under_desk_idle_snape" as cg_doll gen "..." ("angry", xpos="far_left", ypos="head") ton "Are you alright?" ("soft", "base", "raised", "mid") #Cho's head starts moving play background "sounds/slickloop.ogg" fadein 2 - show image "cho_under_desk_blowjob" as cg_doll + show expression "cho_under_desk_blowjob" as cg_doll with d3 cho @ cheeks heavy_blush "*Slurp*...{w=0.4} *Gobble*...{w=0.4} *Slurp*" ("open_wide_tongue", "narrow", "base", "up", xpos="far_right", ypos="head", flip=False, trans=d3) @@ -2052,7 +2052,7 @@ label gryffindor_match_return: gen "Nah, it's just a sports--" ("base", xpos="far_left", ypos="head") play background "sounds/slickloopfast.ogg" - show image "cho_under_desk_blowjob_fast" as cg_doll + show expression "cho_under_desk_blowjob_fast" as cg_doll cho @ cheeks heavy_blush "*Gobble*...{w=0.2} *Slurp*...{w=0.2} *Gobble*" ("open_wide_tongue", "happyCl", "base", "mid") gen "*Ngh*...{w=0.4} sports drink." ("angry", xpos="far_left", ypos="head") @@ -2078,11 +2078,11 @@ label gryffindor_match_return: #Cho stops moving stop background fadeout 2 play sound "sounds/slick_pop.ogg" - show image "cho_under_desk_idle_snape" as cg_doll + show expression "cho_under_desk_idle_snape" as cg_doll cho @ cheeks heavy_blush "*Pwah*." ("open_tongue", "narrow", "base", "up") - show image "cho_under_desk_handjob" as cg_doll + show expression "cho_under_desk_handjob" as cg_doll with d3 ton "The boys have a bet on which team would end up winning the Quidditch cup." ("open", "base", "base", "R") @@ -2094,7 +2094,7 @@ label gryffindor_match_return: sna "*Hmph*... In that case, I'll just bring the vial to professor Slughorn and have him test it!" ("snape_16") #Snape's legs vanish from CG as he goes to grab the bottle. - show image "cho_under_desk_idle" as cg_doll + show expression "cho_under_desk_idle" as cg_doll with d3 play sound "sounds/cloth_sound3.ogg" @@ -2282,8 +2282,8 @@ label gryffindor_match_return: play sound "sounds/08_hop_on_desk.ogg" pause 3 - show image "cho_sex idle" as cg_doll zorder 16 - show image "dustfloating" as cg_doll_effects zorder 17 + show expression "cho_sex idle" as cg_doll zorder 16 + show expression "dustfloating" as cg_doll_effects zorder 17 hide screen blkfade hide cho_main with d9 @@ -2316,7 +2316,7 @@ label gryffindor_match_return: cho @ cheeks heavy_blush "That I'd end up winning the cup before ever knowing what my coach's thick beater's bat would feel like inside my tight little... Snitch." ("horny", "narrow", "base", "down") #Cho up position dick in front of body - show image "cho_sex up" as cg_doll + show expression "cho_sex up" as cg_doll with d3 gen "Miss Chang!" @@ -2325,7 +2325,7 @@ label gryffindor_match_return: cho @ cheeks heavy_blush "Although it's quite fitting to have this be part of my reward, don't you think?" ("smile", "narrow", "base", "down") #Cho positioning dick against pussy pose - show image "cho_sex insert" as cg_doll + show expression "cho_sex insert" as cg_doll with d3 $ states.cho.status.sex = True @@ -2340,15 +2340,15 @@ label gryffindor_match_return: cho @ cheeks heavy_blush "And it's about to get even better..." ("crooked_smile", "narrow", "base", "down") #Cho sits down on genie's dick and gets fully penetrated - show image "cho_sex up inside" as cg_doll + show expression "cho_sex up inside" as cg_doll with d3 pause 0.25 cho @ cheeks heavy_blush "*Nnngh--{w=0.40}{nw}" ("angry", "closed", "angry", "mid") - show image "cho_sex middle" as cg_doll + show expression "cho_sex middle" as cg_doll with d3 pause 0.25 play sound "sounds/slick_02.ogg" - show image "cho_sex down" as cg_doll + show expression "cho_sex down" as cg_doll with d3 pause 0.25 @@ -2360,7 +2360,7 @@ label gryffindor_match_return: #Cho starts moving play background "sounds/slickloop.ogg" - show image "cho_sex loop slow" as cg_doll + show expression "cho_sex loop slow" as cg_doll with d3 gen "*Hngh*!" @@ -2416,7 +2416,7 @@ label gryffindor_match_return: #sexloop fast. #speedlines play background "sounds/sexloopfast.ogg" - show image "cho_sex loop fast" as cg_doll + show expression "cho_sex loop fast" as cg_doll with d1 gen "*Argh*...{w=0.4} You little--" @@ -2446,26 +2446,26 @@ label gryffindor_match_return: #Cho standing pose, genie body 3 (cho normal up, jacking it) stop background fadeout 2 play sound "sounds/slick_02.ogg" - show image "cho_sex up jerking" as cg_doll + show expression "cho_sex up jerking" as cg_doll with d3 pause .5 gen "*Aaargh*!!" #Genie cums play sound "sounds/slick_01.ogg" - show image "cho_sex up cum outside stage0" as cg_doll + show expression "cho_sex up cum outside stage0" as cg_doll with d3 pause 0.66 - show image "cho_sex up cum outside stage1" as cg_doll + show expression "cho_sex up cum outside stage1" as cg_doll with d3 pause 0.66 play sound "sounds/slick_01.ogg" - show image "cho_sex up cum outside stage2" as cg_doll + show expression "cho_sex up cum outside stage2" as cg_doll with d3 pause 0.66 - show image "cho_sex up cum outside stage3" as cg_doll + show expression "cho_sex up cum outside stage3" as cg_doll with d3 gen "*Ah*..." @@ -2481,7 +2481,7 @@ label gryffindor_match_return: #Cho standing tasting cum pose, dick outside (cum on dick) #TODO change for variant with cum on her chest included - show image "cho_sex up taste outside" as cg_doll + show expression "cho_sex up taste outside" as cg_doll with d2 cho @ cheeks heavy_blush "*Mmm*..." ("base", "closed", "base", "stare") @@ -2495,9 +2495,9 @@ label gryffindor_match_return: cho @ cheeks heavy_blush "My--" ("smile", "narrow", "base", "up") gen "*Aaaargh*!!!" - show image "cho_sex middle" as cg_doll + show expression "cho_sex middle" as cg_doll pause 0.25 - show image "cho_sex down" as cg_doll + show expression "cho_sex down" as cg_doll play sound "sounds/slick_01.ogg" with kissiris stop background fadeout 1 @@ -2507,28 +2507,28 @@ label gryffindor_match_return: with flashbulb play sound "sounds/slick_02.ogg" - show image "cho_sex idle creampie" as cg_doll + show expression "cho_sex idle creampie" as cg_doll with d3 gen "*Ah*...." cho @ cheeks heavy_blush "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("grin", "narrow", "base", "up", trans=d3) #Cho moves to stand pose (cycle images?) - show image "cho_sex middle cum inside" as cg_doll + show expression "cho_sex middle cum inside" as cg_doll with d2 pause 0.25 - show image "cho_sex up cum inside" as cg_doll + show expression "cho_sex up cum inside" as cg_doll with d2 pause 0.25 play sound "sounds/slick_02.ogg" - show image "cho_sex up cum outside" as cg_doll + show expression "cho_sex up cum outside" as cg_doll with d2 cho @ cheeks heavy_blush "I think--{w=0.4} *Ah*...{w=0.4} I think I've finally found a fun activity to put into my workout routine..." ("smile", "narrow", "base", "stare") - show image "cho_sex insert cum inside" as cg_doll + show expression "cho_sex insert cum inside" as cg_doll with d2 pause 0.25 - show image "cho_sex up taste" as cg_doll + show expression "cho_sex up taste" as cg_doll with d2 #Cum sound @@ -2548,8 +2548,8 @@ label gryffindor_match_return: stop music fadeout 1.0 - hide image cg_doll - hide image cg_doll_effects + hide expression cg_doll + hide expression cg_doll_effects call cho_chibi(xpos="desk", ypos="base", flip=False) with fade diff --git a/game/scripts/characters/cho/events/quidditch/hufflepuff_match.rpy b/game/scripts/characters/cho/events/quidditch/hufflepuff_match.rpy index 6c516f55..47c3d906 100644 --- a/game/scripts/characters/cho/events/quidditch/hufflepuff_match.rpy +++ b/game/scripts/characters/cho/events/quidditch/hufflepuff_match.rpy @@ -712,7 +712,7 @@ label hufflepuff_match: her "Higher up, Cho seems to have caught an eye on the snitch and is chasing after it, directly followed by Cedric who..." ("open", "slit", "low", "stare", flip=True) her "Hold on a minute... Is Cho wearing a skirt?" ("scream", "wide", "worried", "stare") - show image "CG quidditch cho_flashing" as cg zorder 17 + show expression "CG quidditch cho_flashing" as cg zorder 17 with fade play sound "sounds/crowd_gasp.ogg" @@ -735,7 +735,7 @@ label hufflepuff_match: call ctc # Pack to stands. - hide image cg + hide expression cg with fade pause .1 diff --git a/game/scripts/events/Start.rpy b/game/scripts/events/Start.rpy index 0ae5991b..987c758e 100644 --- a/game/scripts/events/Start.rpy +++ b/game/scripts/events/Start.rpy @@ -3,7 +3,7 @@ label start_wt: show screen blkfade with d3 - show image "images/rooms/_bg_/castle.webp" + show expression "images/rooms/_bg_/castle.webp" hide screen blkfade with d3 show screen close_button(action=MainMenu()) @@ -40,7 +40,7 @@ label start_wt: $ states.ton.level = 5 jump skip_to_hermione - hide image "images/rooms/_bg_/castle.webp" + hide expression "images/rooms/_bg_/castle.webp" hide screen close_button $ enable_game_menu() @@ -182,7 +182,7 @@ label genie_intro_E4: label skip_to_hermione: $ renpy.block_rollback() - hide image "images/rooms/_bg_/castle.webp" + hide expression "images/rooms/_bg_/castle.webp" hide screen close_button $ enable_game_menu() diff --git a/game/scripts/inventory/scrolls.rpy b/game/scripts/inventory/scrolls.rpy index 876755a2..6dc952b2 100644 --- a/game/scripts/inventory/scrolls.rpy +++ b/game/scripts/inventory/scrolls.rpy @@ -33,7 +33,7 @@ default leg30_scroll_ITEM = Item("leg30_scroll", "scroll", "Scroll 30: The Gang" label leg1_scroll: show screen blktone - show image "images/scrolls/1.webp" onlayer screens zorder 25 + show expression "images/scrolls/1.webp" onlayer screens zorder 25 with d3 pause 1 @@ -42,14 +42,14 @@ label leg1_scroll: call ctc hide screen blktone - hide image "images/scrolls/1.webp" onlayer screens zorder 25 + hide expression "images/scrolls/1.webp" onlayer screens zorder 25 with d3 jump inventory label leg2_scroll: show screen blktone - show image "images/scrolls/2.webp" onlayer screens zorder 25 + show expression "images/scrolls/2.webp" onlayer screens zorder 25 with d3 pause 1 @@ -61,14 +61,14 @@ label leg2_scroll: call ctc hide screen blktone - hide image "images/scrolls/2.webp" onlayer screens zorder 25 + hide expression "images/scrolls/2.webp" onlayer screens zorder 25 with d3 jump inventory label leg3_scroll: show screen blktone - show image "images/scrolls/3.webp" onlayer screens zorder 25 + show expression "images/scrolls/3.webp" onlayer screens zorder 25 with d3 pause 1 @@ -76,14 +76,14 @@ label leg3_scroll: call ctc hide screen blktone - hide image "images/scrolls/3.webp" onlayer screens zorder 25 + hide expression "images/scrolls/3.webp" onlayer screens zorder 25 with d3 jump inventory label leg4_scroll: show screen blktone - show image "images/scrolls/4.webp" onlayer screens zorder 25 + show expression "images/scrolls/4.webp" onlayer screens zorder 25 with d3 pause 1 @@ -93,14 +93,14 @@ label leg4_scroll: call ctc hide screen blktone - hide image "images/scrolls/4.webp" onlayer screens zorder 25 + hide expression "images/scrolls/4.webp" onlayer screens zorder 25 with d3 jump inventory label leg5_scroll: show screen blktone - show image "images/scrolls/5.webp" onlayer screens zorder 25 + show expression "images/scrolls/5.webp" onlayer screens zorder 25 with d3 pause 1 @@ -109,14 +109,14 @@ label leg5_scroll: call ctc hide screen blktone - hide image "images/scrolls/5.webp" onlayer screens zorder 25 + hide expression "images/scrolls/5.webp" onlayer screens zorder 25 with d3 jump inventory label leg6_scroll: show screen blktone - show image "images/scrolls/6.webp" onlayer screens zorder 25 + show expression "images/scrolls/6.webp" onlayer screens zorder 25 with d3 pause 1 @@ -125,14 +125,14 @@ label leg6_scroll: call ctc hide screen blktone - hide image "images/scrolls/6.webp" onlayer screens zorder 25 + hide expression "images/scrolls/6.webp" onlayer screens zorder 25 with d3 jump inventory label leg7_scroll: show screen blktone - show image "images/scrolls/7.webp" onlayer screens zorder 25 + show expression "images/scrolls/7.webp" onlayer screens zorder 25 with d3 pause 1 @@ -141,14 +141,14 @@ label leg7_scroll: call ctc hide screen blktone - hide image "images/scrolls/7.webp" onlayer screens zorder 25 + hide expression "images/scrolls/7.webp" onlayer screens zorder 25 with d3 jump inventory label leg8_scroll: show screen blktone - show image "images/scrolls/8.webp" onlayer screens zorder 25 + show expression "images/scrolls/8.webp" onlayer screens zorder 25 with d3 pause 1 @@ -157,14 +157,14 @@ label leg8_scroll: call ctc hide screen blktone - hide image "images/scrolls/8.webp" onlayer screens zorder 25 + hide expression "images/scrolls/8.webp" onlayer screens zorder 25 with d3 jump inventory label leg9_scroll: show screen blktone - show image "images/scrolls/9.webp" onlayer screens zorder 25 + show expression "images/scrolls/9.webp" onlayer screens zorder 25 with d3 pause 1 @@ -173,14 +173,14 @@ label leg9_scroll: call ctc hide screen blktone - hide image "images/scrolls/9.webp" onlayer screens zorder 25 + hide expression "images/scrolls/9.webp" onlayer screens zorder 25 with d3 jump inventory label leg10_scroll: show screen blktone - show image "images/scrolls/10.webp" onlayer screens zorder 25 + show expression "images/scrolls/10.webp" onlayer screens zorder 25 with d3 pause 1 @@ -190,14 +190,14 @@ label leg10_scroll: call ctc hide screen blktone - hide image "images/scrolls/10.webp" onlayer screens zorder 25 + hide expression "images/scrolls/10.webp" onlayer screens zorder 25 with d3 jump inventory label leg11_scroll: show screen blktone - show image "images/scrolls/11.webp" onlayer screens zorder 25 + show expression "images/scrolls/11.webp" onlayer screens zorder 25 with d3 pause 1 @@ -205,14 +205,14 @@ label leg11_scroll: call ctc hide screen blktone - hide image "images/scrolls/11.webp" onlayer screens zorder 25 + hide expression "images/scrolls/11.webp" onlayer screens zorder 25 with d3 jump inventory label leg12_scroll: show screen blktone - show image "images/scrolls/12.webp" onlayer screens zorder 25 + show expression "images/scrolls/12.webp" onlayer screens zorder 25 with d3 pause 1 @@ -220,14 +220,14 @@ label leg12_scroll: call ctc hide screen blktone - hide image "images/scrolls/12.webp" onlayer screens zorder 25 + hide expression "images/scrolls/12.webp" onlayer screens zorder 25 with d3 jump inventory label leg13_scroll: show screen blktone - show image "images/scrolls/13.webp" onlayer screens zorder 25 + show expression "images/scrolls/13.webp" onlayer screens zorder 25 with d3 pause 1 @@ -237,14 +237,14 @@ label leg13_scroll: call ctc hide screen blktone - hide image "images/scrolls/13.webp" onlayer screens zorder 25 + hide expression "images/scrolls/13.webp" onlayer screens zorder 25 with d3 jump inventory label leg14_scroll: show screen blktone - show image "images/scrolls/14.webp" onlayer screens zorder 25 + show expression "images/scrolls/14.webp" onlayer screens zorder 25 with d3 pause 1 @@ -253,14 +253,14 @@ label leg14_scroll: call ctc hide screen blktone - hide image "images/scrolls/14.webp" onlayer screens zorder 25 + hide expression "images/scrolls/14.webp" onlayer screens zorder 25 with d3 jump inventory label leg15_scroll: show screen blktone - show image "images/scrolls/15.webp" onlayer screens zorder 25 + show expression "images/scrolls/15.webp" onlayer screens zorder 25 with d3 pause 1 @@ -270,14 +270,14 @@ label leg15_scroll: call ctc hide screen blktone - hide image "images/scrolls/15.webp" onlayer screens zorder 25 + hide expression "images/scrolls/15.webp" onlayer screens zorder 25 with d3 jump inventory label leg16_scroll: show screen blktone - show image "images/scrolls/16.webp" onlayer screens zorder 25 + show expression "images/scrolls/16.webp" onlayer screens zorder 25 with d3 pause 1 @@ -287,14 +287,14 @@ label leg16_scroll: call ctc hide screen blktone - hide image "images/scrolls/16.webp" onlayer screens zorder 25 + hide expression "images/scrolls/16.webp" onlayer screens zorder 25 with d3 jump inventory label leg17_scroll: show screen blktone - show image "images/scrolls/17.webp" onlayer screens zorder 25 + show expression "images/scrolls/17.webp" onlayer screens zorder 25 with d3 pause 1 @@ -303,14 +303,14 @@ label leg17_scroll: call ctc hide screen blktone - hide image "images/scrolls/17.webp" onlayer screens zorder 25 + hide expression "images/scrolls/17.webp" onlayer screens zorder 25 with d3 jump inventory label leg18_scroll: show screen blktone - show image "images/scrolls/18.webp" onlayer screens zorder 25 + show expression "images/scrolls/18.webp" onlayer screens zorder 25 with d3 pause 1 @@ -319,14 +319,14 @@ label leg18_scroll: call ctc hide screen blktone - hide image "images/scrolls/18.webp" onlayer screens zorder 25 + hide expression "images/scrolls/18.webp" onlayer screens zorder 25 with d3 jump inventory label leg19_scroll: show screen blktone - show image "images/scrolls/19.webp" onlayer screens zorder 25 + show expression "images/scrolls/19.webp" onlayer screens zorder 25 with d3 pause 1 @@ -335,14 +335,14 @@ label leg19_scroll: call ctc hide screen blktone - hide image "images/scrolls/19.webp" onlayer screens zorder 25 + hide expression "images/scrolls/19.webp" onlayer screens zorder 25 with d3 jump inventory label leg20_scroll: show screen blktone - show image "images/scrolls/20.webp" onlayer screens zorder 25 + show expression "images/scrolls/20.webp" onlayer screens zorder 25 with d3 pause 1 @@ -353,14 +353,14 @@ label leg20_scroll: call ctc hide screen blktone - hide image "images/scrolls/20.webp" onlayer screens zorder 25 + hide expression "images/scrolls/20.webp" onlayer screens zorder 25 with d3 jump inventory label leg21_scroll: show screen blktone - show image "images/scrolls/21.webp" onlayer screens zorder 25 + show expression "images/scrolls/21.webp" onlayer screens zorder 25 with d3 pause 1 @@ -370,14 +370,14 @@ label leg21_scroll: call ctc hide screen blktone - hide image "images/scrolls/21.webp" onlayer screens zorder 25 + hide expression "images/scrolls/21.webp" onlayer screens zorder 25 with d3 jump inventory label leg22_scroll: show screen blktone - show image "images/scrolls/22.webp" onlayer screens zorder 25 + show expression "images/scrolls/22.webp" onlayer screens zorder 25 with d3 pause 1 @@ -386,14 +386,14 @@ label leg22_scroll: call ctc hide screen blktone - hide image "images/scrolls/22.webp" onlayer screens zorder 25 + hide expression "images/scrolls/22.webp" onlayer screens zorder 25 with d3 jump inventory label leg23_scroll: show screen blktone - show image "images/scrolls/23.webp" onlayer screens zorder 25 + show expression "images/scrolls/23.webp" onlayer screens zorder 25 with d3 pause 1 @@ -402,14 +402,14 @@ label leg23_scroll: call ctc hide screen blktone - hide image "images/scrolls/23.webp" onlayer screens zorder 25 + hide expression "images/scrolls/23.webp" onlayer screens zorder 25 with d3 jump inventory label leg24_scroll: show screen blktone - show image "images/scrolls/24.webp" onlayer screens zorder 25 + show expression "images/scrolls/24.webp" onlayer screens zorder 25 with d3 pause 1 @@ -418,14 +418,14 @@ label leg24_scroll: call ctc hide screen blktone - hide image "images/scrolls/24.webp" onlayer screens zorder 25 + hide expression "images/scrolls/24.webp" onlayer screens zorder 25 with d3 jump inventory label leg25_scroll: show screen blktone - show image "images/scrolls/25.webp" onlayer screens zorder 25 + show expression "images/scrolls/25.webp" onlayer screens zorder 25 with d3 pause 1 @@ -435,14 +435,14 @@ label leg25_scroll: call ctc hide screen blktone - hide image "images/scrolls/25.webp" onlayer screens zorder 25 + hide expression "images/scrolls/25.webp" onlayer screens zorder 25 with d3 jump inventory label leg26_scroll: show screen blktone - show image "images/scrolls/26.webp" onlayer screens zorder 25 + show expression "images/scrolls/26.webp" onlayer screens zorder 25 with d3 pause 1 @@ -452,14 +452,14 @@ label leg26_scroll: call ctc hide screen blktone - hide image "images/scrolls/26.webp" onlayer screens zorder 25 + hide expression "images/scrolls/26.webp" onlayer screens zorder 25 with d3 jump inventory label leg27_scroll: show screen blktone - show image "images/scrolls/27.webp" onlayer screens zorder 25 + show expression "images/scrolls/27.webp" onlayer screens zorder 25 with d3 pause 1 @@ -467,14 +467,14 @@ label leg27_scroll: call ctc hide screen blktone - hide image "images/scrolls/27.webp" onlayer screens zorder 25 + hide expression "images/scrolls/27.webp" onlayer screens zorder 25 with d3 jump inventory label leg28_scroll: show screen blktone - show image "images/scrolls/28.webp" onlayer screens zorder 25 + show expression "images/scrolls/28.webp" onlayer screens zorder 25 with d3 pause 1 @@ -482,14 +482,14 @@ label leg28_scroll: call ctc hide screen blktone - hide image "images/scrolls/28.webp" onlayer screens zorder 25 + hide expression "images/scrolls/28.webp" onlayer screens zorder 25 with d3 jump inventory label leg29_scroll: show screen blktone - show image "images/scrolls/29.webp" onlayer screens zorder 25 + show expression "images/scrolls/29.webp" onlayer screens zorder 25 with d3 pause 1 @@ -497,14 +497,14 @@ label leg29_scroll: call ctc hide screen blktone - hide image "images/scrolls/29.webp" onlayer screens zorder 25 + hide expression "images/scrolls/29.webp" onlayer screens zorder 25 with d3 jump inventory label leg30_scroll: show screen blktone - show image "images/scrolls/30.webp" onlayer screens zorder 25 + show expression "images/scrolls/30.webp" onlayer screens zorder 25 with d3 pause 1 @@ -512,7 +512,7 @@ label leg30_scroll: call ctc hide screen blktone - hide image "images/scrolls/30.webp" onlayer screens zorder 25 + hide expression "images/scrolls/30.webp" onlayer screens zorder 25 with d3 jump inventory diff --git a/game/scripts/minigames/mirror/events/a_bad_time_to_disrobe.rpy b/game/scripts/minigames/mirror/events/a_bad_time_to_disrobe.rpy index c59fe68f..cbef02d0 100644 --- a/game/scripts/minigames/mirror/events/a_bad_time_to_disrobe.rpy +++ b/game/scripts/minigames/mirror/events/a_bad_time_to_disrobe.rpy @@ -120,7 +120,7 @@ label a_bad_time_to_disrobe_part_1: show screen blkfade with d3 - show image Text("{image=images/rooms/room_of_requirement/qmark.webp}{size=+4}{color=#cbcbcb}Hermione will remember that{/color}{/size}") as qmark zorder 100: + show expression Text("{image=images/rooms/room_of_requirement/qmark.webp}{size=+4}{color=#cbcbcb}Hermione will remember that{/color}{/size}") as qmark zorder 100: pos (10, 10) nar "Hermione returns the next morning, looking nervous but more determined than yesterday." diff --git a/game/scripts/minigames/mirror/events/an_odd_circumstance.rpy b/game/scripts/minigames/mirror/events/an_odd_circumstance.rpy index a3919e34..cc85a9a8 100644 --- a/game/scripts/minigames/mirror/events/an_odd_circumstance.rpy +++ b/game/scripts/minigames/mirror/events/an_odd_circumstance.rpy @@ -18,7 +18,7 @@ label an_odd_circumstance: $ hermione.equip(her_outfit_default) call room("main_room") stop music fadeout 1 - show image "dark_overlay" zorder 6 as dark_overlay + show expression "dark_overlay" zorder 6 as dark_overlay show screen blkfade with d5 @@ -86,7 +86,7 @@ label an_odd_circumstance: $ hermione_chibi.zorder = states.desk_chibi_zorder - 1 call her_chibi("stand",210, 450, flip=True) hide screen white - show image "dark_overlay" zorder 6 as dark_overlay + show expression "dark_overlay" zorder 6 as dark_overlay with d1 her "Silencio." diff --git a/game/scripts/rooms/main_room/objects/poster.rpy b/game/scripts/rooms/main_room/objects/poster.rpy index c8ffe2fe..edc0ce4f 100644 --- a/game/scripts/rooms/main_room/objects/poster.rpy +++ b/game/scripts/rooms/main_room/objects/poster.rpy @@ -1,6 +1,6 @@ label enlarge_poster: - show image "#00000080" as underlay - show image Image(poster_OBJ.decoration.image) zorder 25 at truecenter as poster + show expression "#00000080" as underlay + show expression Image(poster_OBJ.decoration.image) zorder 25 at truecenter as poster call ctc diff --git a/game/scripts/shops/dress/chitchats.rpy b/game/scripts/shops/dress/chitchats.rpy index 10b4cb14..1df5c6c7 100644 --- a/game/scripts/shops/dress/chitchats.rpy +++ b/game/scripts/shops/dress/chitchats.rpy @@ -936,7 +936,7 @@ label purchase_outfit(item): gen "Well, if you could, I'd like something like this... *Scribbles*." ("base", xpos="far_left", ypos="head") #TODO uncomment once conversion for python 3 allows it - #show image Transform(Fixed("paper", "geniedrawing", fit_first=True), align=(0.5, 0.5), zoom=0.5) as drawing + #show expression Transform(Fixed("paper", "geniedrawing", fit_first=True), align=(0.5, 0.5), zoom=0.5) as drawing #with d5 #call ctc #hide drawing From fe0193cfc2459d8f953ff15f1d9e935522fff802 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 01:17:07 +0100 Subject: [PATCH 106/249] Hasten ConditionSwitch-es (cherry picked from commit 9d52bd9c92edbd7525cfdb27a1d36437cdd6ac76) --- .../scripts/rooms/main_room/objects/weather.rpy | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/game/scripts/rooms/main_room/objects/weather.rpy b/game/scripts/rooms/main_room/objects/weather.rpy index 1657e09f..94e77052 100644 --- a/game/scripts/rooms/main_room/objects/weather.rpy +++ b/game/scripts/rooms/main_room/objects/weather.rpy @@ -1,4 +1,3 @@ - label weather_sound: if game.weather == "blizzard": play weather "sounds/blizzard.ogg" fadeout 0.5 fadein 0.5 if_changed @@ -30,15 +29,15 @@ transform cloud_move: repeat image weather_clear = ConditionSwitch( - "game.daytime == True", "images/rooms/main_room/weather/sky.webp", - "game.moon == True", "images/rooms/main_room/weather/night_sky_moon.webp", - "game.daytime == False", "images/rooms/main_room/weather/night_sky.webp", + "game.daytime", "images/rooms/main_room/weather/sky.webp", + "game.moon", "images/rooms/main_room/weather/night_sky_moon.webp", + "True", "images/rooms/main_room/weather/night_sky.webp", ) image weather_overcast = ConditionSwitch( - "game.daytime == True", "images/rooms/main_room/weather/sky_overcast.webp", - "game.moon == True", "images/rooms/main_room/weather/night_sky_moon_overcast.webp", - "game.daytime == False", "images/rooms/main_room/weather/night_sky_overcast.webp", + "game.daytime", "images/rooms/main_room/weather/sky_overcast.webp", + "game.moon", "images/rooms/main_room/weather/night_sky_moon_overcast.webp", + "True", "images/rooms/main_room/weather/night_sky_overcast.webp", ) image weather_cloudy_clouds_night = Composite( @@ -56,8 +55,8 @@ image weather_cloudy_clouds_day = Composite( ) image weather_cloudy_clouds = ConditionSwitch( - "game.daytime == True", "weather_cloudy_clouds_day", - "game.daytime == False", "weather_cloudy_clouds_night", + "game.daytime", "weather_cloudy_clouds_day", + "True", "weather_cloudy_clouds_night", ) image weather_cloudy_fx: From 0e4fccfa26cf472339619a867e02d6dea9ba2eec Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 02:00:18 +0100 Subject: [PATCH 107/249] Modernize use of matrixcolor (cherry picked from commit 985a0a79ede816783f2a0f59f238509013a3f25f) --- game/scripts/animations/generator.rpy | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/game/scripts/animations/generator.rpy b/game/scripts/animations/generator.rpy index 86fb775e..b9dbe309 100644 --- a/game/scripts/animations/generator.rpy +++ b/game/scripts/animations/generator.rpy @@ -3,6 +3,7 @@ image object: transform OBJbutterfly(hue=random.randint(0, 359)): zoom random.uniform(0.4, 0.85) + matrixcolor HueMatrix(hue) choice: pause random.randint(1, 7) @@ -22,13 +23,13 @@ transform OBJbutterfly(hue=random.randint(0, 359)): ease_circ 1.0 rotate 15 repeat parallel: - im.MatrixColor("images/rooms/quidditch_pitch/butterfly/0.webp", im.matrix.hue(hue)) with d3 + "images/rooms/quidditch_pitch/butterfly/0.webp" with d3 pause .3 - im.MatrixColor("images/rooms/quidditch_pitch/butterfly/1.webp", im.matrix.hue(hue)) with d3 + "images/rooms/quidditch_pitch/butterfly/1.webp" with d3 pause .3 - im.MatrixColor("images/rooms/quidditch_pitch/butterfly/2.webp", im.matrix.hue(hue)) with d3 + "images/rooms/quidditch_pitch/butterfly/2.webp" with d3 pause .3 - im.MatrixColor("images/rooms/quidditch_pitch/butterfly/1.webp", im.matrix.hue(hue)) with d3 + "images/rooms/quidditch_pitch/butterfly/1.webp" with d3 pause .3 repeat choice: @@ -49,13 +50,13 @@ transform OBJbutterfly(hue=random.randint(0, 359)): ease_circ 1.0 rotate -15 repeat parallel: - im.MatrixColor("images/rooms/quidditch_pitch/butterfly/0.webp", im.matrix.hue(hue)) with d3 + "images/rooms/quidditch_pitch/butterfly/0.webp" with d3 pause .3 - im.MatrixColor("images/rooms/quidditch_pitch/butterfly/1.webp", im.matrix.hue(hue)) with d3 + "images/rooms/quidditch_pitch/butterfly/1.webp" with d3 pause .3 - im.MatrixColor("images/rooms/quidditch_pitch/butterfly/2.webp", im.matrix.hue(hue)) with d3 + "images/rooms/quidditch_pitch/butterfly/2.webp" with d3 pause .3 - im.MatrixColor("images/rooms/quidditch_pitch/butterfly/1.webp", im.matrix.hue(hue)) with d3 + "images/rooms/quidditch_pitch/butterfly/1.webp" with d3 pause .3 repeat repeat From 3b4db03a6c42b516c3a98a31d7490de5e07f7197 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 02:02:50 +0100 Subject: [PATCH 108/249] Upgrade other uses of image manipulators (cherry picked from commit a9dc1953793591578fe807e2aca551ab84509050) --- game/scripts/characters/hermione/events/cardgame_wager.rpy | 2 +- game/scripts/interface/book.rpy | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/characters/hermione/events/cardgame_wager.rpy b/game/scripts/characters/hermione/events/cardgame_wager.rpy index 8196b944..acc73bb5 100644 --- a/game/scripts/characters/hermione/events/cardgame_wager.rpy +++ b/game/scripts/characters/hermione/events/cardgame_wager.rpy @@ -701,7 +701,7 @@ label hg_wager_bj_secret: screen hg_wager_bj_secret(): zorder 4 - add im.MatrixColor("images/rooms/overlays/g_circular.webp", im.matrix.saturation(0.0)*im.matrix.brightness(0.7)) + add Transform("images/rooms/overlays/g_circular.webp", matrixcolor=BrightnessMatrix(.7)*SaturationMatrix(.0)) text "Replay" pos (50, 50) size 40 color "#FFF" outlines [(5, "#000", 0, 0)] at blink diff --git a/game/scripts/interface/book.rpy b/game/scripts/interface/book.rpy index 93b0a68a..3344f17f 100644 --- a/game/scripts/interface/book.rpy +++ b/game/scripts/interface/book.rpy @@ -137,7 +137,7 @@ screen book_menu(page, pages, title, page_title, page_text, page_overflow): xalign 1.0 # Next if page < pages: - idle im.Alpha("interface/book/hover.webp", 0) + idle Transform("interface/book/hover.webp", alpha=0) hover "interface/book/hover.webp" action Return("next") # Fast Back to start @@ -151,7 +151,7 @@ screen book_menu(page, pages, title, page_title, page_text, page_overflow): imagebutton: pos (242, 100) ysize 400 - idle im.Alpha(Transform("interface/book/hover.webp", xzoom=-1.0), 0) + idle Transform("interface/book/hover.webp", xzoom=-1.0, alpha=0) hover Transform("interface/book/hover.webp", xzoom=-1.0) action Return("prev") From 94404f4ed7a32d167a8bb3d12739b86cc55aca23 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 02:23:15 +0100 Subject: [PATCH 109/249] Use childful transforms as displayable that's not *explicitly* documented, but it won't change any time soon also deletes a placeholder image (cherry picked from commit 3b6dd38e195b997d8f569957d87d657a28ddf54c) --- game/scripts/animations/generator.rpy | 3 --- game/scripts/characters/luna/events/spectrespecs/fx.rpy | 2 +- game/scripts/rooms/quidditch_pitch/init.rpy | 4 ++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/game/scripts/animations/generator.rpy b/game/scripts/animations/generator.rpy index b9dbe309..74de510a 100644 --- a/game/scripts/animations/generator.rpy +++ b/game/scripts/animations/generator.rpy @@ -1,6 +1,3 @@ -image object: - Null() - transform OBJbutterfly(hue=random.randint(0, 359)): zoom random.uniform(0.4, 0.85) matrixcolor HueMatrix(hue) diff --git a/game/scripts/characters/luna/events/spectrespecs/fx.rpy b/game/scripts/characters/luna/events/spectrespecs/fx.rpy index dad51c8f..18e87832 100644 --- a/game/scripts/characters/luna/events/spectrespecs/fx.rpy +++ b/game/scripts/characters/luna/events/spectrespecs/fx.rpy @@ -60,7 +60,7 @@ screen spectrevision(): tag spectrevision for i in range(wrackspurts_count): - add "object" at OBJwrackspurt + add OBJwrackspurt add "spectrevision" diff --git a/game/scripts/rooms/quidditch_pitch/init.rpy b/game/scripts/rooms/quidditch_pitch/init.rpy index 3f9602ce..7b040427 100644 --- a/game/scripts/rooms/quidditch_pitch/init.rpy +++ b/game/scripts/rooms/quidditch_pitch/init.rpy @@ -5,7 +5,7 @@ screen quid_pitch_back(): add "images/rooms/quidditch_pitch/back.webp" zoom 0.5 if game.weather == "cloudy": for i in range(random.randint(2, 5)): - add "object" at OBJcloud + add OBJcloud add "images/rooms/quidditch_pitch/back_overlay.webp" zoom 0.5 screen quid_pitch_mid(): @@ -18,4 +18,4 @@ screen quid_pitch_front(): zorder 5 add "images/rooms/quidditch_pitch/front.webp" zoom 0.5 for i in range(random.randint(1, 3)): - add "object" at OBJbutterfly + add OBJbutterfly From 094b010b7acb50efdadf0f87b325a61567857ecb Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 03:12:24 +0100 Subject: [PATCH 110/249] Avoid using lists (cherry picked from commit 78230893a8de70ea443e4e6730c0516fb651d4fb) --- .../cho/events/quidditch/slytherin_match.rpy | 2 +- game/scripts/rooms/quidditch_stands/init.rpy | 15 +++++++-------- game/scripts/rooms/quidditch_stands2/init.rpy | 8 ++++---- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/game/scripts/characters/cho/events/quidditch/slytherin_match.rpy b/game/scripts/characters/cho/events/quidditch/slytherin_match.rpy index c26a0c8d..1b98e2cd 100644 --- a/game/scripts/characters/cho/events/quidditch/slytherin_match.rpy +++ b/game/scripts/characters/cho/events/quidditch/slytherin_match.rpy @@ -1344,7 +1344,7 @@ label slytherin_match: call gen_chibi("stand_alt", 300, 365, flip=False) call sna_chibi("stand", 215, 360, flip=True) - call quidditch_stands(crowd=[], crowd_react=[None, None, None]) + call quidditch_stands(crowd=(), crowd_react=(None, None, None)) stop background fadeout 4 stop music fadeout 2 diff --git a/game/scripts/rooms/quidditch_stands/init.rpy b/game/scripts/rooms/quidditch_stands/init.rpy index af8f97aa..e1120157 100644 --- a/game/scripts/rooms/quidditch_stands/init.rpy +++ b/game/scripts/rooms/quidditch_stands/init.rpy @@ -5,17 +5,17 @@ default quidditch_stands = { "weather": "sun_high", "rain": False, "puddles": False, - "crowd": [], - "crowd_react": [None, None, None], + "crowd": (), + "crowd_react": (None, None, None), "spotlight": False, "hole": False, "tree_fire": False } # Crowd density presets -define crowd_few = ["low_1"] -define crowd_mid = ["low_1", "low_2", "tower_1"] -define crowd_full = ["low_1", "low_2", "low_3", "low_4", "tower_1", "tower_2"] +define crowd_few = ("low_1") +define crowd_mid = ("low_1", "low_2", "tower_1") +define crowd_full = ("low_1", "low_2", "low_3", "low_4", "tower_1", "tower_2") image quidditch_stands rain_heavy: "images/rooms/quidditch_stands/rain/heavy_0.webp" @@ -64,7 +64,7 @@ label quidditch_stands(hidden=False, reset=False, **kwargs): return -screen quidditch_stands_back(weather, rain=False, crowd=[], crowd_bj=False, crowd_react=[None, None, None], tree_fire=False, puddles=False, **kwargs): +screen quidditch_stands_back(weather, rain=False, crowd=(), crowd_bj=False, crowd_react=(None, None, None), tree_fire=False, puddles=False, **kwargs): zorder 0 add "images/rooms/quidditch_stands/bg_{}.webp".format(weather) zoom 0.5 @@ -72,7 +72,7 @@ screen quidditch_stands_back(weather, rain=False, crowd=[], crowd_bj=False, crow if tree_fire: add "quid_stands_fire" pos (870, -15) - for c in set(crowd): + for c in crowd: add "images/rooms/quidditch_stands/crowd_{}.webp".format(c) zoom 0.5 if crowd_bj: @@ -161,4 +161,3 @@ label test_stands: call quidditch_stands(weather="overcast", crowd=["bj"]) pause 1 jump test_stands - diff --git a/game/scripts/rooms/quidditch_stands2/init.rpy b/game/scripts/rooms/quidditch_stands2/init.rpy index e2b04830..8f310226 100644 --- a/game/scripts/rooms/quidditch_stands2/init.rpy +++ b/game/scripts/rooms/quidditch_stands2/init.rpy @@ -3,8 +3,8 @@ default quidditch_stands2 = { "weather": "sun_high", - "crowd": [], - "crowd_react": [None, None, None], + "crowd": (), + "crowd_react": (None, None, None), } label quidditch_stands2(hidden=False, reset=False, **kwargs): @@ -16,12 +16,12 @@ label quidditch_stands2(hidden=False, reset=False, **kwargs): show screen quidditch_stands_front2(**quidditch_stands2) return -screen quidditch_stands_back2(weather, crowd=[], crowd_react=[None, None, None], **kwargs): +screen quidditch_stands_back2(weather, crowd=(), crowd_react=(None, None, None), **kwargs): zorder 0 add "images/rooms/quidditch_stands2/bg_{}.webp".format(weather) zoom 0.5 - for c in set(crowd): + for c in crowd: add "images/rooms/quidditch_stands2/crowd_{}.webp".format(c) zoom 0.5 add crowd_react[0] pos (570, 140) From 60479ad32da95f1abea98a613d85495e5ece0ea5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 03:13:55 +0100 Subject: [PATCH 111/249] Avoid using reset_variables (cherry picked from commit 2e17dd258223bdecbacbc415eb307fcc54ac2401) --- game/scripts/rooms/quidditch_stands/init.rpy | 9 +++++---- game/scripts/rooms/quidditch_stands2/init.rpy | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/game/scripts/rooms/quidditch_stands/init.rpy b/game/scripts/rooms/quidditch_stands/init.rpy index e1120157..0699dc83 100644 --- a/game/scripts/rooms/quidditch_stands/init.rpy +++ b/game/scripts/rooms/quidditch_stands/init.rpy @@ -1,7 +1,6 @@ - # Quidditch stands -default quidditch_stands = { +define __quidditch_stands = { "weather": "sun_high", "rain": False, "puddles": False, @@ -11,6 +10,7 @@ default quidditch_stands = { "hole": False, "tree_fire": False } +default quidditch_stands = __quidditch_stands.copy() # Crowd density presets define crowd_few = ("low_1") @@ -55,8 +55,9 @@ label quidditch_stands(hidden=False, reset=False, **kwargs): # Update and show the area. # Pass `hidden=True` to update only, `reset=True` to reset the area before applying arguments. if reset: - $ reset_variables("quidditch_stands") - $ quidditch_stands.update(kwargs) + $ quidditch_stands = __quidditch_stands | kwargs + else: + $ quidditch_stands.update(kwargs) if not hidden: show screen quidditch_stands_back(**quidditch_stands) show screen quidditch_stands_mid(**quidditch_stands) diff --git a/game/scripts/rooms/quidditch_stands2/init.rpy b/game/scripts/rooms/quidditch_stands2/init.rpy index 8f310226..f5497edd 100644 --- a/game/scripts/rooms/quidditch_stands2/init.rpy +++ b/game/scripts/rooms/quidditch_stands2/init.rpy @@ -1,16 +1,17 @@ - # Quidditch stands -default quidditch_stands2 = { +define __quidditch_stands2 = { "weather": "sun_high", "crowd": (), "crowd_react": (None, None, None), } +default quidditch_stands2 = __quidditch_stands2.copy() label quidditch_stands2(hidden=False, reset=False, **kwargs): if reset: - $ reset_variables("quidditch_stands2") - $ quidditch_stands2.update(kwargs) + $ quidditch_stands2 = __quidditch_stands2 | kwargs + else: + $ quidditch_stands2.update(kwargs) if not hidden: show screen quidditch_stands_back2(**quidditch_stands2) show screen quidditch_stands_front2(**quidditch_stands2) From 40caec942830c4de595a1f6fba5ca476417e2108 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 03:18:07 +0100 Subject: [PATCH 112/249] Fix test call it raised an exception in my case, and I'm fairly sure this is how it's supposed to work also adds a complimentary hidden reset at the end (cherry picked from commit eeb68cb6c67beb1f50b4ae98ea9510f55dd52802) --- game/scripts/rooms/quidditch_stands/init.rpy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/game/scripts/rooms/quidditch_stands/init.rpy b/game/scripts/rooms/quidditch_stands/init.rpy index 0699dc83..cdfadf52 100644 --- a/game/scripts/rooms/quidditch_stands/init.rpy +++ b/game/scripts/rooms/quidditch_stands/init.rpy @@ -159,6 +159,7 @@ label test_stands: pause 1.5 call quidditch_stands(hole=True) pause 1 - call quidditch_stands(weather="overcast", crowd=["bj"]) + call quidditch_stands(weather="overcast", crowd_bj=True) pause 1 + call quidditch_stands(reset=True, hidden=True) jump test_stands From 97f0cef9313f8e678be971772bd86c65c6bf8211 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 03:33:37 +0100 Subject: [PATCH 113/249] Simplify hide/show expression (cherry picked from commit 9c274bee6f37cd44a86ec1267bb5f34859a83403) --- game/scripts/inventory/scrolls.rpy | 120 ++++++++++++++--------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/game/scripts/inventory/scrolls.rpy b/game/scripts/inventory/scrolls.rpy index 6dc952b2..5fc72207 100644 --- a/game/scripts/inventory/scrolls.rpy +++ b/game/scripts/inventory/scrolls.rpy @@ -33,7 +33,7 @@ default leg30_scroll_ITEM = Item("leg30_scroll", "scroll", "Scroll 30: The Gang" label leg1_scroll: show screen blktone - show expression "images/scrolls/1.webp" onlayer screens zorder 25 + show expression "images/scrolls/1.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -42,14 +42,14 @@ label leg1_scroll: call ctc hide screen blktone - hide expression "images/scrolls/1.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg2_scroll: show screen blktone - show expression "images/scrolls/2.webp" onlayer screens zorder 25 + show expression "images/scrolls/2.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -61,14 +61,14 @@ label leg2_scroll: call ctc hide screen blktone - hide expression "images/scrolls/2.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg3_scroll: show screen blktone - show expression "images/scrolls/3.webp" onlayer screens zorder 25 + show expression "images/scrolls/3.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -76,14 +76,14 @@ label leg3_scroll: call ctc hide screen blktone - hide expression "images/scrolls/3.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg4_scroll: show screen blktone - show expression "images/scrolls/4.webp" onlayer screens zorder 25 + show expression "images/scrolls/4.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -93,14 +93,14 @@ label leg4_scroll: call ctc hide screen blktone - hide expression "images/scrolls/4.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg5_scroll: show screen blktone - show expression "images/scrolls/5.webp" onlayer screens zorder 25 + show expression "images/scrolls/5.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -109,14 +109,14 @@ label leg5_scroll: call ctc hide screen blktone - hide expression "images/scrolls/5.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg6_scroll: show screen blktone - show expression "images/scrolls/6.webp" onlayer screens zorder 25 + show expression "images/scrolls/6.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -125,14 +125,14 @@ label leg6_scroll: call ctc hide screen blktone - hide expression "images/scrolls/6.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg7_scroll: show screen blktone - show expression "images/scrolls/7.webp" onlayer screens zorder 25 + show expression "images/scrolls/7.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -141,14 +141,14 @@ label leg7_scroll: call ctc hide screen blktone - hide expression "images/scrolls/7.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg8_scroll: show screen blktone - show expression "images/scrolls/8.webp" onlayer screens zorder 25 + show expression "images/scrolls/8.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -157,14 +157,14 @@ label leg8_scroll: call ctc hide screen blktone - hide expression "images/scrolls/8.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg9_scroll: show screen blktone - show expression "images/scrolls/9.webp" onlayer screens zorder 25 + show expression "images/scrolls/9.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -173,14 +173,14 @@ label leg9_scroll: call ctc hide screen blktone - hide expression "images/scrolls/9.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg10_scroll: show screen blktone - show expression "images/scrolls/10.webp" onlayer screens zorder 25 + show expression "images/scrolls/10.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -190,14 +190,14 @@ label leg10_scroll: call ctc hide screen blktone - hide expression "images/scrolls/10.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg11_scroll: show screen blktone - show expression "images/scrolls/11.webp" onlayer screens zorder 25 + show expression "images/scrolls/11.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -205,14 +205,14 @@ label leg11_scroll: call ctc hide screen blktone - hide expression "images/scrolls/11.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg12_scroll: show screen blktone - show expression "images/scrolls/12.webp" onlayer screens zorder 25 + show expression "images/scrolls/12.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -220,14 +220,14 @@ label leg12_scroll: call ctc hide screen blktone - hide expression "images/scrolls/12.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg13_scroll: show screen blktone - show expression "images/scrolls/13.webp" onlayer screens zorder 25 + show expression "images/scrolls/13.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -237,14 +237,14 @@ label leg13_scroll: call ctc hide screen blktone - hide expression "images/scrolls/13.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg14_scroll: show screen blktone - show expression "images/scrolls/14.webp" onlayer screens zorder 25 + show expression "images/scrolls/14.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -253,14 +253,14 @@ label leg14_scroll: call ctc hide screen blktone - hide expression "images/scrolls/14.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg15_scroll: show screen blktone - show expression "images/scrolls/15.webp" onlayer screens zorder 25 + show expression "images/scrolls/15.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -270,14 +270,14 @@ label leg15_scroll: call ctc hide screen blktone - hide expression "images/scrolls/15.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg16_scroll: show screen blktone - show expression "images/scrolls/16.webp" onlayer screens zorder 25 + show expression "images/scrolls/16.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -287,14 +287,14 @@ label leg16_scroll: call ctc hide screen blktone - hide expression "images/scrolls/16.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg17_scroll: show screen blktone - show expression "images/scrolls/17.webp" onlayer screens zorder 25 + show expression "images/scrolls/17.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -303,14 +303,14 @@ label leg17_scroll: call ctc hide screen blktone - hide expression "images/scrolls/17.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg18_scroll: show screen blktone - show expression "images/scrolls/18.webp" onlayer screens zorder 25 + show expression "images/scrolls/18.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -319,14 +319,14 @@ label leg18_scroll: call ctc hide screen blktone - hide expression "images/scrolls/18.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg19_scroll: show screen blktone - show expression "images/scrolls/19.webp" onlayer screens zorder 25 + show expression "images/scrolls/19.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -335,14 +335,14 @@ label leg19_scroll: call ctc hide screen blktone - hide expression "images/scrolls/19.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg20_scroll: show screen blktone - show expression "images/scrolls/20.webp" onlayer screens zorder 25 + show expression "images/scrolls/20.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -353,14 +353,14 @@ label leg20_scroll: call ctc hide screen blktone - hide expression "images/scrolls/20.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg21_scroll: show screen blktone - show expression "images/scrolls/21.webp" onlayer screens zorder 25 + show expression "images/scrolls/21.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -370,14 +370,14 @@ label leg21_scroll: call ctc hide screen blktone - hide expression "images/scrolls/21.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg22_scroll: show screen blktone - show expression "images/scrolls/22.webp" onlayer screens zorder 25 + show expression "images/scrolls/22.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -386,14 +386,14 @@ label leg22_scroll: call ctc hide screen blktone - hide expression "images/scrolls/22.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg23_scroll: show screen blktone - show expression "images/scrolls/23.webp" onlayer screens zorder 25 + show expression "images/scrolls/23.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -402,14 +402,14 @@ label leg23_scroll: call ctc hide screen blktone - hide expression "images/scrolls/23.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg24_scroll: show screen blktone - show expression "images/scrolls/24.webp" onlayer screens zorder 25 + show expression "images/scrolls/24.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -418,14 +418,14 @@ label leg24_scroll: call ctc hide screen blktone - hide expression "images/scrolls/24.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg25_scroll: show screen blktone - show expression "images/scrolls/25.webp" onlayer screens zorder 25 + show expression "images/scrolls/25.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -435,14 +435,14 @@ label leg25_scroll: call ctc hide screen blktone - hide expression "images/scrolls/25.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg26_scroll: show screen blktone - show expression "images/scrolls/26.webp" onlayer screens zorder 25 + show expression "images/scrolls/26.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -452,14 +452,14 @@ label leg26_scroll: call ctc hide screen blktone - hide expression "images/scrolls/26.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg27_scroll: show screen blktone - show expression "images/scrolls/27.webp" onlayer screens zorder 25 + show expression "images/scrolls/27.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -467,14 +467,14 @@ label leg27_scroll: call ctc hide screen blktone - hide expression "images/scrolls/27.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg28_scroll: show screen blktone - show expression "images/scrolls/28.webp" onlayer screens zorder 25 + show expression "images/scrolls/28.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -482,14 +482,14 @@ label leg28_scroll: call ctc hide screen blktone - hide expression "images/scrolls/28.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg29_scroll: show screen blktone - show expression "images/scrolls/29.webp" onlayer screens zorder 25 + show expression "images/scrolls/29.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -497,14 +497,14 @@ label leg29_scroll: call ctc hide screen blktone - hide expression "images/scrolls/29.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory label leg30_scroll: show screen blktone - show expression "images/scrolls/30.webp" onlayer screens zorder 25 + show expression "images/scrolls/30.webp" onlayer screens zorder 25 as scroll with d3 pause 1 @@ -512,7 +512,7 @@ label leg30_scroll: call ctc hide screen blktone - hide expression "images/scrolls/30.webp" onlayer screens zorder 25 + hide scroll with d3 jump inventory From 603990cf1374cac214946a5b1d4813b157eca1b4 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 03:40:21 +0100 Subject: [PATCH 114/249] Repr instead of adding quotes (cherry picked from commit 15e3e240fc29ae4003ac4b32c801f11f7af4f741) --- game/scripts/inventory/classes.rpy | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/game/scripts/inventory/classes.rpy b/game/scripts/inventory/classes.rpy index c0481f3e..86247e87 100644 --- a/game/scripts/inventory/classes.rpy +++ b/game/scripts/inventory/classes.rpy @@ -42,10 +42,10 @@ init python: def use(self): if not self.usable: - raise Exception("Item '{}' is not usable as it does not have any function or a label.".format(self.name)) + raise Exception("Item {!r} is not usable as it does not have any function or a label.".format(self.name)) if self.owned == 0: - raise Exception("Item '{}' owned count is equal to zero.".format(self.name)) + raise Exception("Item {!r} owned count is equal to zero.".format(self.name)) if not self.type == "quest": # Quest items require manual triggers, it's more convenient. @@ -62,10 +62,10 @@ init python: def give(self, who): if not self.givable: - raise Exception("Item '{}' is not marked as givable.".format(self.name)) + raise Exception("Item {!r} is not marked as givable.".format(self.name)) if self.owned == 0: - raise Exception("Item '{}' owned count is equal to zero.".format(self.name)) + raise Exception("Item {!r} owned count is equal to zero.".format(self.name)) if not self.type == "quest": # Quest items require manual triggers, it's more convenient. @@ -119,7 +119,7 @@ init python: def use(self): if self.owned == 0: - raise Exception("Decoration '{}' owned count is equal to zero.".format(self.name)) + raise Exception("Decoration {!r} owned count is equal to zero.".format(self.name)) achievements.unlock("decorator") @@ -155,7 +155,7 @@ init python: self.usable = bool( renpy.has_label("{}_use".format(self.label)) ) if self.recipe is None: - raise Exception("Potion '{}' recipe is empty!".format(self.name)) + raise Exception("Potion {!r} recipe is empty!".format(self.name)) def has_ingredients(self): return all(x.owned > 0 for x in self.recipe) @@ -163,7 +163,7 @@ init python: def set_active(self, who): """Marks the event as 'in progress' and will trigger a return event in the morning/evening.""" if not who in list(self.in_progress.keys()): - raise Exception("Potion '{}' is not marked as usable on '{}'.".format(self.name, who)) + raise Exception("Potion {!r} is not marked as usable on {!r}.".format(self.name, who)) self.in_progress[who] = True @@ -195,13 +195,13 @@ init python: check_label = "{}_potion_check".format(who[:3]) if not renpy.has_label(give_label): - raise Exception("Potion '{}' give label doesn't exist.".format(self.name)) + raise Exception("Potion {!r} give label doesn't exist.".format(self.name)) if not renpy.has_label(check_label): - raise Exception("Potion '{}' check label doesn't exist for '{}'.".format(self.name, who)) + raise Exception("Potion {!r} check label doesn't exist for {!r}.".format(self.name, who)) if self.owned == 0: - raise Exception("Potion '{}' owned count is equal to zero.".format(self.name)) + raise Exception("Potion {!r} owned count is equal to zero.".format(self.name)) if not self.check_progression(who): self.jump(check_label) @@ -215,10 +215,10 @@ init python: label = "{}_use".format(self.label) if not renpy.has_label(label): - raise Exception("Potion '{}' has no use label.".format(self.name)) + raise Exception("Potion {!r} has no use label.".format(self.name)) if self.owned == 0: - raise Exception("Potion '{}' owned count is equal to zero.".format(self.name)) + raise Exception("Potion {!r} owned count is equal to zero.".format(self.name)) self.owned -= 1 self.jump(label) @@ -227,12 +227,12 @@ init python: """Play the return event for """ if not self.in_progress[who]: - raise Exception("Potion '{}' is not marked as in progress.".format(self.name)) + raise Exception("Potion {!r} is not marked as in progress.".format(self.name)) label = "{}_{}_return".format(who[:3], self.label) if not renpy.has_label(label): - raise Exception("Potion '{}' has no return label.".format(self.name)) + raise Exception("Potion {!r} has no return label.".format(self.name)) self.in_progress[who] = False self.jump(label) From 4ee49a225bf7effd691ca166ada66a73191fe423 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 04:15:02 +0100 Subject: [PATCH 115/249] Reform genie layeredimage (cherry picked from commit 3a429070fc8519900e02cec972363fe79f760825) --- .../characters/genie/outfits/robes_beard.webp | 3 -- .../characters/genie/genie_bbase.webp} | 0 .../characters/genie/genie_face_angry.webp} | 0 .../characters/genie/genie_face_grin.webp} | 0 .../characters/genie/genie_face_open.webp} | 0 .../characters/genie/genie_face_smile.webp} | 0 .../characters/genie/genie_goatee.webp} | 0 .../characters/genie/genie_outfit_nude.webp} | 0 .../characters/genie/genie_outfit_robes.webp} | 0 .../characters/genie/genie_outfit_santa.webp} | 0 .../genie/genie_santa_beard_angry.webp} | 0 .../genie/genie_santa_beard_base.webp} | 0 .../genie/genie_santa_beard_grin.webp} | 0 .../genie/genie_santa_beard_open.webp} | 0 .../genie/genie_santa_beard_smile.webp} | 0 game/scripts/characters/genie/wardrobe.rpy | 39 +++++++++---------- 16 files changed, 18 insertions(+), 24 deletions(-) delete mode 100644 game/characters/genie/outfits/robes_beard.webp rename game/{characters/genie/base.webp => images/characters/genie/genie_bbase.webp} (100%) rename game/{characters/genie/angry.webp => images/characters/genie/genie_face_angry.webp} (100%) rename game/{characters/genie/grin.webp => images/characters/genie/genie_face_grin.webp} (100%) rename game/{characters/genie/open.webp => images/characters/genie/genie_face_open.webp} (100%) rename game/{characters/genie/smile.webp => images/characters/genie/genie_face_smile.webp} (100%) rename game/{characters/genie/beard.webp => images/characters/genie/genie_goatee.webp} (100%) rename game/{characters/genie/hair.webp => images/characters/genie/genie_outfit_nude.webp} (100%) rename game/{characters/genie/outfits/robes.webp => images/characters/genie/genie_outfit_robes.webp} (100%) rename game/{characters/genie/outfits/santa.webp => images/characters/genie/genie_outfit_santa.webp} (100%) rename game/{characters/genie/outfits/santa_beard_angry.webp => images/characters/genie/genie_santa_beard_angry.webp} (100%) rename game/{characters/genie/outfits/santa_beard_base.webp => images/characters/genie/genie_santa_beard_base.webp} (100%) rename game/{characters/genie/outfits/santa_beard_grin.webp => images/characters/genie/genie_santa_beard_grin.webp} (100%) rename game/{characters/genie/outfits/santa_beard_open.webp => images/characters/genie/genie_santa_beard_open.webp} (100%) rename game/{characters/genie/outfits/santa_beard_smile.webp => images/characters/genie/genie_santa_beard_smile.webp} (100%) diff --git a/game/characters/genie/outfits/robes_beard.webp b/game/characters/genie/outfits/robes_beard.webp deleted file mode 100644 index f32a1c67..00000000 --- a/game/characters/genie/outfits/robes_beard.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a53dffc1c42a1fe081df634cbcdcd0991979dcade9f3d992fefba90ad0ee3057 -size 6166 diff --git a/game/characters/genie/base.webp b/game/images/characters/genie/genie_bbase.webp similarity index 100% rename from game/characters/genie/base.webp rename to game/images/characters/genie/genie_bbase.webp diff --git a/game/characters/genie/angry.webp b/game/images/characters/genie/genie_face_angry.webp similarity index 100% rename from game/characters/genie/angry.webp rename to game/images/characters/genie/genie_face_angry.webp diff --git a/game/characters/genie/grin.webp b/game/images/characters/genie/genie_face_grin.webp similarity index 100% rename from game/characters/genie/grin.webp rename to game/images/characters/genie/genie_face_grin.webp diff --git a/game/characters/genie/open.webp b/game/images/characters/genie/genie_face_open.webp similarity index 100% rename from game/characters/genie/open.webp rename to game/images/characters/genie/genie_face_open.webp diff --git a/game/characters/genie/smile.webp b/game/images/characters/genie/genie_face_smile.webp similarity index 100% rename from game/characters/genie/smile.webp rename to game/images/characters/genie/genie_face_smile.webp diff --git a/game/characters/genie/beard.webp b/game/images/characters/genie/genie_goatee.webp similarity index 100% rename from game/characters/genie/beard.webp rename to game/images/characters/genie/genie_goatee.webp diff --git a/game/characters/genie/hair.webp b/game/images/characters/genie/genie_outfit_nude.webp similarity index 100% rename from game/characters/genie/hair.webp rename to game/images/characters/genie/genie_outfit_nude.webp diff --git a/game/characters/genie/outfits/robes.webp b/game/images/characters/genie/genie_outfit_robes.webp similarity index 100% rename from game/characters/genie/outfits/robes.webp rename to game/images/characters/genie/genie_outfit_robes.webp diff --git a/game/characters/genie/outfits/santa.webp b/game/images/characters/genie/genie_outfit_santa.webp similarity index 100% rename from game/characters/genie/outfits/santa.webp rename to game/images/characters/genie/genie_outfit_santa.webp diff --git a/game/characters/genie/outfits/santa_beard_angry.webp b/game/images/characters/genie/genie_santa_beard_angry.webp similarity index 100% rename from game/characters/genie/outfits/santa_beard_angry.webp rename to game/images/characters/genie/genie_santa_beard_angry.webp diff --git a/game/characters/genie/outfits/santa_beard_base.webp b/game/images/characters/genie/genie_santa_beard_base.webp similarity index 100% rename from game/characters/genie/outfits/santa_beard_base.webp rename to game/images/characters/genie/genie_santa_beard_base.webp diff --git a/game/characters/genie/outfits/santa_beard_grin.webp b/game/images/characters/genie/genie_santa_beard_grin.webp similarity index 100% rename from game/characters/genie/outfits/santa_beard_grin.webp rename to game/images/characters/genie/genie_santa_beard_grin.webp diff --git a/game/characters/genie/outfits/santa_beard_open.webp b/game/images/characters/genie/genie_santa_beard_open.webp similarity index 100% rename from game/characters/genie/outfits/santa_beard_open.webp rename to game/images/characters/genie/genie_santa_beard_open.webp diff --git a/game/characters/genie/outfits/santa_beard_smile.webp b/game/images/characters/genie/genie_santa_beard_smile.webp similarity index 100% rename from game/characters/genie/outfits/santa_beard_smile.webp rename to game/images/characters/genie/genie_santa_beard_smile.webp diff --git a/game/scripts/characters/genie/wardrobe.rpy b/game/scripts/characters/genie/wardrobe.rpy index 2dcf7d69..c756b743 100644 --- a/game/scripts/characters/genie/wardrobe.rpy +++ b/game/scripts/characters/genie/wardrobe.rpy @@ -10,9 +10,9 @@ init python: layeredimage genie_stats: anchor (0.0, 1.0) - always "characters/genie/base.webp" - always "characters/genie/outfits/robes.webp" - always "characters/genie/outfits/robes_beard.webp" + always "genie_bbase" + always "genie_outfit_robes" + always "genie_robes" # TODO: Add outfit support; Low priority @@ -20,31 +20,28 @@ layeredimage genie: anchor (0.0, 1.0) group outfit: - attribute robes default null - attribute nude "characters/genie/hair.webp" + attribute nude - always "characters/genie/base.webp" + attribute bbase default group face: attribute base default null - attribute grin "characters/genie/grin.webp" - attribute angry "characters/genie/angry.webp" - attribute smile "characters/genie/smile.webp" - attribute open "characters/genie/open.webp" + attribute grin + attribute angry + attribute smile + attribute open group outfit: - attribute robes default "characters/genie/outfits/robes.webp" - attribute nude null - attribute santa "characters/genie/outfits/santa.webp" + attribute robes default + attribute santa - group face multiple: - attribute robes default "characters/genie/outfits/robes_beard.webp" if_all ["robes"] - attribute nude "characters/genie/beard.webp" if_all ["nude"] - attribute base "characters/genie/outfits/santa_beard_base.webp" if_all ["santa", "base"] - attribute grin "characters/genie/outfits/santa_beard_grin.webp" if_all ["santa", "grin"] - attribute angry "characters/genie/outfits/santa_beard_angry.webp" if_all ["santa", "angry"] - attribute smile "characters/genie/outfits/santa_beard_smile.webp" if_all ["santa", "smile"] - attribute open "characters/genie/outfits/santa_beard_open.webp" if_all ["santa", "open"] + attribute goatee default if_any ("robes", "nude") + group _ multiple variant "santa_beard" if_any "santa": + attribute base + attribute grin + attribute angry + attribute smile + attribute open at Transform(function=genie_transform) From 2a54c483e84300641cda227f151608f01b741f77 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 04:45:11 +0100 Subject: [PATCH 116/249] Simplify some code (cherry picked from commit 641893217e8c52ee1dac4aedc097e300fa71e4f4) --- game/scripts/wardrobe/wardrobe.rpy | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index b553e79d..bc5b0044 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -128,7 +128,8 @@ style loading_trivia_text: layeredimage loading: always "gui_fade" - always Transform(Text("Loading", style="loading_text"), align=(0.5, 0.4)) + always Text("Loading", style="loading_text"): + align (0.5, 0.4) always "loading_spinner" image loading_spinner: @@ -154,8 +155,6 @@ image loading_spinner: pause 0.1 Text("{unicode}╞═════════▰╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═════════▰╡{/unicode}", style="loading_text") - pause 0.1 Text("{unicode}╞════════▰═╡{/unicode}", style="loading_text") pause 0.1 Text("{unicode}╞═══════▰══╡{/unicode}", style="loading_text") From d7ba36baa8761726d66a4b155f459e5ae95d47d8 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 04:45:31 +0100 Subject: [PATCH 117/249] Better animation (cherry picked from commit aa95f701dc2cc372e31b119c5e935a90e9cd4a9b) --- .../characters/hermione/events/favors/lets_have_sex.rpy | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy b/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy index cab7612a..bb4fbeda 100644 --- a/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy +++ b/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy @@ -536,6 +536,7 @@ label hg_sex_1: show her_sex_personal lean_back as cg: transform_anchor True + subpixel True anchor (0.0, 0.0) offset (0, 0) zoom 1.0 @@ -819,8 +820,8 @@ label hg_sex_1: gen "You need to be punished for being such a slut!" show her_sex_personal bent_over grab as cg: - offset (-65, -240) - zoom 0.45 + offset (-65, -240) + zoom 0.45 rotate -4 easein 1.0 offset (0, -480) rotate 0 with vpunch @@ -829,7 +830,7 @@ label hg_sex_1: #Could add some sound effect here show her_sex_personal mouth_open eyebrows_base eyes_wide_r cheeks_blush as cg: - offset (0, -480) + offset (0, -480) rotate 0 ease_quad 3.0 offset (-60, -620) zoom 0.55 nar "You push Hermione down onto the desk and start fucking her fiercely!" @@ -1953,7 +1954,7 @@ label hg_sex_3: rotate 1 xoffset -70 pause 1.0 - offset (-60, -620) + offset (-60, -620) zoom 0.55 ease_quad 1.0 offset (-60, -635) with hpunch From 00da7e885585b1f87e50a43e880a966ac0af104e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 15:59:06 +0100 Subject: [PATCH 118/249] Simplify generic CG code (cherry picked from commit 40ddb2918515cee48114cdada4cdb79d6535db6f) --- game/scripts/cg/common.rpy | 43 +++++++++++++------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/game/scripts/cg/common.rpy b/game/scripts/cg/common.rpy index 763d6243..55b8765f 100644 --- a/game/scripts/cg/common.rpy +++ b/game/scripts/cg/common.rpy @@ -1,4 +1,3 @@ - init 5 python: def her_cg_doll(st, at): return hermione.image, None @@ -25,35 +24,21 @@ image CG cho_doll = DynamicDisplayable(cho_cg_doll) image CG ast_doll = DynamicDisplayable(ast_cg_doll) image CG sus_doll = DynamicDisplayable(sus_cg_doll) -image CG luna = Fixed( - "images/CG/common/bg.webp", - AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG lun_doll", zoom=1.2)), "images/CG/common/mask.webp"), - ) +transform CG_masker(child): + contains: + "images/CG/common/bg.webp" + contains: + AlphaMask( + Fixed(Transform(child, zoom=1.2, pos=(880, -180)), xfit=True, yfit=True), + "images/CG/common/mask.webp", + ) -image CG hermione = Fixed( - "images/CG/common/bg.webp", - AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG her_doll", zoom=1.2)), "images/CG/common/mask.webp"), - ) - -image CG tonks = Fixed( - "images/CG/common/bg.webp", - AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG ton_doll", zoom=1.2)), "images/CG/common/mask.webp"), - ) - -image CG cho = Fixed( - "images/CG/common/bg.webp", - AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG cho_doll", zoom=1.2)), "images/CG/common/mask.webp"), - ) - -image CG astoria = Fixed( - "images/CG/common/bg.webp", - AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG ast_doll", zoom=1.2)), "images/CG/common/mask.webp"), - ) - -image CG susan = Fixed( - "images/CG/common/bg.webp", - AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG sus_doll", zoom=1.2)), "images/CG/common/mask.webp"), - ) +image CG luna = At("CG lun_doll", CG_masker) +image CG hermione = At("CG her_doll", CG_masker) +image CG tonks = At("CG ton_doll", CG_masker) +image CG cho = At("CG cho_doll", CG_masker) +image CG astoria = At("CG ast_doll", CG_masker) +image CG susan = At("CG sus_doll", CG_masker) # Snape CG screen snape_groping(): From 4248f7f6d0b59878b7de386a790cf09e024960f0 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 16:00:42 +0100 Subject: [PATCH 119/249] Improve ATL syntax use the dedicated xycenter property avoid setting the previous end-interpolation values before starting the new one, to avoid a jump if the player advances too quickly (also shortens the code) add subpixel True, even though it doesn't seem very effective prepare improvement in next renpy version (cherry picked from commit 8b6627f588fc4a3049c77f5bf9bb0d18f2ec9d6e) --- game/scripts/characters/luna/events/intro.rpy | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/game/scripts/characters/luna/events/intro.rpy b/game/scripts/characters/luna/events/intro.rpy index 720e67d6..46f2290c 100644 --- a/game/scripts/characters/luna/events/intro.rpy +++ b/game/scripts/characters/luna/events/intro.rpy @@ -71,24 +71,21 @@ label luna_intro_E1: $ luna.set_face(mouth="soft", eyes="closed", eyebrows="low", pupils="mid") show CG luna as cg zorder 17: - align (0.5, 0.5) - pos (-520, -300) + xycenter (-520, -300) with fade gen "Who is--" show CG luna as cg zorder 17: - align (0.5, 0.5) - pos (-520, -300) + subpixel True easein_quad 5.0 pos (-520, 150) gen "... A girl?" lun "*Mmh*" show CG luna as cg zorder 17: + subpixel True zoom 1.0 - align (0.5, 0.5) - pos (-520, 150) - easein_quad 3.0 align (0.0, 0.0) pos (0, 0) zoom 0.5 + easein_quad 3.0 align (.0, .0) pos (0, 0) zoom 0.5 # pos (0, 0) not necessary in next renpy version gen "What are you doing in my office?" gen "Did Snape send you here? Surely--" From 0e9dae05bd90fdef218fc8251d7cd01958ad60a2 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 20:54:03 +0100 Subject: [PATCH 120/249] Use repr instead of manually added single quotes (cherry picked from commit 2ccece1a3de0dc5595d4adf8b49fe4a681733d63) --- game/scripts/inventory/game.rpy | 2 +- game/scripts/minigames/mirror/classes.rpy | 4 ++-- game/scripts/utility/editor.rpy | 2 +- game/scripts/utility/lint.rpy | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/game/scripts/inventory/game.rpy b/game/scripts/inventory/game.rpy index 78979c24..e4ff5df2 100644 --- a/game/scripts/inventory/game.rpy +++ b/game/scripts/inventory/game.rpy @@ -62,7 +62,7 @@ init -100 python: value = renpy.random.choices(self.weather_types, weights=self.weather_weights)[0] if not value in self.weather_types: - raise ValueError("Unsupported weather type: '{}'".format(value)) + raise ValueError("Unsupported weather type: {!r}".format(value)) self._weather = value diff --git a/game/scripts/minigames/mirror/classes.rpy b/game/scripts/minigames/mirror/classes.rpy index 74c99e4e..d485f897 100644 --- a/game/scripts/minigames/mirror/classes.rpy +++ b/game/scripts/minigames/mirror/classes.rpy @@ -58,12 +58,12 @@ init 5 python: return None if not isinstance(req, str): - raise TypeError("MirrorEvent '{}' requirement has to be a string, got '{}'.".format(self.id, type(req))) + raise TypeError("MirrorEvent {!r} requirement has to be a string, got {!r}.".format(self.id, type(req))) output = eval(req) if not isinstance(output, bool): - raise TypeError("MirrorEvent '{}' requirement must evaluate to a boolean type, got '{}'.".format(self.id, type(output))) + raise TypeError("MirrorEvent {!r} requirement must evaluate to a boolean type, got {!r}.".format(self.id, type(output))) return req def play(self): diff --git a/game/scripts/utility/editor.rpy b/game/scripts/utility/editor.rpy index dfed9c18..8583bf6a 100644 --- a/game/scripts/utility/editor.rpy +++ b/game/scripts/utility/editor.rpy @@ -86,7 +86,7 @@ init python: elif what == "temp_attr": setattr(node, "temporary_attributes", tuple(contents)) else: - raise TypeError("Type '{}' is not implemented.".format(what)) + raise TypeError("Type {!r} is not implemented.".format(what)) def replace_expression(self, expr, val): node = self.node diff --git a/game/scripts/utility/lint.rpy b/game/scripts/utility/lint.rpy index cf704884..0124978c 100644 --- a/game/scripts/utility/lint.rpy +++ b/game/scripts/utility/lint.rpy @@ -92,7 +92,7 @@ init -1 python: # Node argument values are (fucking) raw val = strip(val) - msg = "'{}'".format(key) + msg = repr(key) fp = f"characters/{SAYERS.get(who)}/poses/default/face/{key}/{val}/" fn = next((f for f in files if f.startswith(fp)), f"{fp}expression.webp") @@ -137,7 +137,7 @@ init -1 python: renpy.lint.report_node = node has_failed = True - msg = "'{}' requires an integer, or a pre-defined named position, not '{}'".format(key, val) + msg = "{!r} requires an integer, or a pre-defined named position, not {!r}".format(key, val) renpy.lint.report(msg) # This would require fixing hundreds of calls. Might postpone it... @@ -160,7 +160,7 @@ init -1 python: val = strip(val) if key == "emote": - msg = "'{}'".format(key) + msg = repr(key) fn = "characters/{}/emote/{}.webp".format(SAYERS.get(who), val) if not has_failed: From 993b5c845abe9bb4683ba8cb4534a0eb1e4dfae1 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:24:47 +0100 Subject: [PATCH 121/249] Simplify function (cherry picked from commit bb2edc9a7bca99da2286b402aadad8b64a610335) --- game/scripts/interface/topbar.rpy | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/game/scripts/interface/topbar.rpy b/game/scripts/interface/topbar.rpy index 484b06e4..24212909 100644 --- a/game/scripts/interface/topbar.rpy +++ b/game/scripts/interface/topbar.rpy @@ -24,13 +24,12 @@ label update_ui_points: $ hufflepuff_points = text_points(hufflepuff) #Check who's in the lead - $ housepoints = [slytherin, gryffindor, ravenclaw, hufflepuff] - $ housepoints_sorted = sorted(housepoints, reverse=True) + $ housepoints_sorted = sorted((slytherin, gryffindor, ravenclaw, hufflepuff), reverse=True) - $ slytherin_place = housepoints_sorted.index(housepoints[0])+1 - $ gryffindor_place = housepoints_sorted.index(housepoints[1])+1 - $ ravenclaw_place = housepoints_sorted.index(housepoints[2])+1 - $ hufflepuff_place = housepoints_sorted.index(housepoints[3])+1 + $ slytherin_place = housepoints_sorted.index(slytherin)+1 + $ gryffindor_place = housepoints_sorted.index(gryffindor)+1 + $ ravenclaw_place = housepoints_sorted.index(ravenclaw)+1 + $ hufflepuff_place = housepoints_sorted.index(hufflepuff)+1 # Set banners yanchor depending on the placement (ascending) $ housepoints_y = [None, 0.0, 0.25, 0.5, 0.75] From 3a77f89fab5ed8ea48a4c725ed245b44285ab66d Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:25:10 +0100 Subject: [PATCH 122/249] Add style, clean junk variables (cherry picked from commit 3d62c8b8181911572efa471f26906cbffe5b8ffd) --- game/scripts/interface/topbar.rpy | 44 ++++++++++++++++++------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/game/scripts/interface/topbar.rpy b/game/scripts/interface/topbar.rpy index 24212909..52f69181 100644 --- a/game/scripts/interface/topbar.rpy +++ b/game/scripts/interface/topbar.rpy @@ -3,19 +3,13 @@ init python: if points < 1000: return str(points) else: - return str(round(points/1000.0, 1))+"{size=-2}k{/size}" + return str(round(points/1000.0, 1))+"{size=-2}k{/size}" + +default toggle_menu = False label update_ui_points: # Debug - # Temp variables - $ toggle_points = False - $ toggle_menu = False - - # Outline settings - #TODO Refactor interface_color dependent styles to definitions - $ points_outline = [ (1, "#000", 0, 0) ] - #If points variable value exceedes one thousand make it a decimal number instead and round to x.x #Remember, "slytherin_points" is a string! If you need points integer use i.e. "slytherin" variable instead. $ slytherin_points = text_points(slytherin) @@ -118,6 +112,8 @@ screen ui_top_bar(): screen ui_points(): tag ui + default toggle_points = False + fixed: xalign 0.5 xsize 162 @@ -136,24 +132,34 @@ screen ui_points(): add "interface/topbar/ravenclaw_empty.webp" yanchor 0 add "interface/topbar/hufflepuff_empty.webp" yanchor 0 # Show points - text "{size=-5}{color=#FFF}[slytherin_points]{/color}{/size}" outlines points_outline xpos 17 ypos 30 xanchor 0.5 - text "{size=-5}{color=#FFF}[gryffindor_points]{/color}{/size}" outlines points_outline xpos 58 ypos 30 xanchor 0.5 - text "{size=-5}{color=#FFF}[ravenclaw_points]{/color}{/size}" outlines points_outline xpos 98 ypos 30 xanchor 0.5 - text "{size=-5}{color=#FFF}[hufflepuff_points]{/color}{/size}" outlines points_outline xpos 139 ypos 30 xanchor 0.5 + text "{size=-5}[slytherin_points]{/size}" xpos 17 style "housepoints" + text "{size=-5}[gryffindor_points]{/size}" xpos 58 style "housepoints" + text "{size=-5}[ravenclaw_points]{/size}" xpos 98 style "housepoints" + text "{size=-5}[hufflepuff_points]{/size}" xpos 139 style "housepoints" # Show placement number - text "{size=16}{color=#FFF}[slytherin_place]{/color}{/size}" outlines points_outline xpos 17 ypos 10 xanchor 0.5 - text "{size=16}{color=#FFF}[gryffindor_place]{/color}{/size}" outlines points_outline xpos 58 ypos 10 xanchor 0.5 - text "{size=16}{color=#FFF}[ravenclaw_place]{/color}{/size}" outlines points_outline xpos 98 ypos 10 xanchor 0.5 - text "{size=16}{color=#FFF}[hufflepuff_place]{/color}{/size}" outlines points_outline xpos 139 ypos 10 xanchor 0.5 + text "[slytherin_place]" xpos 17 style "houseplaces" + text "[gryffindor_place]" xpos 58 style "houseplaces" + text "[ravenclaw_place]" xpos 98 style "houseplaces" + text "[hufflepuff_place]" xpos 139 style "houseplaces" if room_menu_active: imagebutton: idle "interface/topbar/hover_zone.webp" tooltip "House Points\n{size=-2}Click to toggle style display{/size}" - hovered SetVariable("toggle_points", True) - unhovered SetVariable("toggle_points", False) + hovered SetLocalVariable("toggle_points", True) + unhovered SetLocalVariable("toggle_points", False) action ToggleVariable("persistent.toggle_points", True, False) +style housepoints: + outlines [(1, "#000", 0, 0)] + color "#FFF" + xanchor .5 + ypos 30 + +style houseplaces is housepoints: + size 16 + ypos 10 + screen ui_stats(): tag ui fixed: From c908f2e90b441687667bd771dc5dc55b1aa82498 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:26:57 +0100 Subject: [PATCH 123/249] Further clean junk variable (cherry picked from commit ca64492beba5aa37458c8118b90fe9d75e8511b6) --- game/scripts/interface/topbar.rpy | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/game/scripts/interface/topbar.rpy b/game/scripts/interface/topbar.rpy index 52f69181..c4108a9f 100644 --- a/game/scripts/interface/topbar.rpy +++ b/game/scripts/interface/topbar.rpy @@ -5,8 +5,6 @@ init python: else: return str(round(points/1000.0, 1))+"{size=-2}k{/size}" -default toggle_menu = False - label update_ui_points: # Debug @@ -34,6 +32,8 @@ screen ui_top_bar(): tag ui zorder 2 + default toggle_menu = False + if toggle_menu: use ui_menu @@ -53,7 +53,7 @@ screen ui_top_bar(): tooltip "Close menu" else: tooltip "Open menu" - action ToggleVariable("toggle_menu", True, False) + action ToggleScreenVariable("toggle_menu", True, False) # Sleep button imagebutton: @@ -191,7 +191,7 @@ style dark_ui_stats_text: screen ui_menu(): tag ui - button style "empty" action SetVariable("toggle_menu", False) keysym "game_menu" + button style "empty" action SetScreenVariable("toggle_menu", False) keysym "game_menu" button: ypos 34 @@ -215,14 +215,14 @@ screen ui_menu(): textbutton "Save" action ShowMenu("save") background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ] textbutton "Load" action ShowMenu("load") background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ] if game.cheats and game.difficulty <= 2 and game.day > 1: - textbutton "Cheats" action [SetVariable("toggle_menu", False), Jump("cheats")] background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ] + textbutton "Cheats" action [SetScreenVariable("toggle_menu", False), Jump("cheats")] background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ] if game.day > 1 and renpy.android: textbutton "Preferences" action ShowMenu("preferences") background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ] if game.day > 1 and persistent.game_complete: - textbutton "Gallery" action [SetVariable("toggle_menu", False), Jump("scene_gallery")] background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ] + textbutton "Gallery" action [SetScreenVariable("toggle_menu", False), Jump("scene_gallery")] background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ] #if game.day > 1 and config.developer: - # textbutton "{size=-11}Show Chars{/size}" action [SetVariable("toggle_menu", False), Jump("summon_characters")] background "#000" + # textbutton "{size=-11}Show Chars{/size}" action [SetScreenVariable("toggle_menu", False), Jump("summon_characters")] background "#000" hbox: pos (50, 185) From 0a6b5e41df69ea686d626c9a68d359ea821fe5c5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:34:14 +0100 Subject: [PATCH 124/249] Use define for constants (cherry picked from commit bbc1df1ea67e6fa2de6042f20153189470aa49b7) --- game/scripts/interface/stats.rpy | 35 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index e1deb41f..f1e30c87 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -4,74 +4,75 @@ init python: default stats_show_locked = False +define her_whoring_word_list = ("Pure", "Naive", "Curious", "Naughty", "Perverse", "Immoral", "Slutty", "Shameless", "Cumslut", "Total Cumslut", "Shameless Cumslut") +define her_reputation_word_list = ("Teacher's pet", "School star", "good girl", "minx", "slutty schoolgirl", "easy lay", "whore", "slut for sex", "gryffindor whore", "school cumdump", "mudblood cumdump") +#$ slutWords = ["Teacher's pet", "School star", "good girl", "headmaster's pet", "slutty schoolgirl", "slut", "headmaster's slut", "daddy's girl", "gryffindor slut", "Dumbledore's whore", "Dumbledore's cumdump"] +define her_tutoring_word_list = ("Not started", "naive", "tempted", "curious", "tainted", "eager", "sinful", "perverted", "corrupted", "depraved", "shattered") +define her_mood_word_list = ("Cheerful", "Reluctant", "Gloomy", "Stern", "Slightly Annoyed", "Annoyed", "Upset", "Outraged", "Mad", "Angry", "Very Angry") +#$ ast_cuteness_word_list = ["Ugly Duckling", "Swot", "", "", "", "", "", "Cutypie", "", "", ""] +define ast_mood_word_list = ("Cheerful", "Reluctant", "Gloomy", "Stern", "Slightly Annoyed", "Annoyed", "Upset", "Outraged", "Mad", "Angry", "Very Angry") +define cho_whoring_word_list = ("Incorruptible", "Focused", "Resilient", "Bi-Curious", "Naughty", "Immoral", "Perverse", "Slutty", "Shameless", "Cumslut", "Shameless Cumslut") +define cho_reputation_word_list = ("Tomboy", "Team Player", "Quidditch Star", "Flying Ace", "Minx", "Manipulative", "Exploiting", "Cheater", "Team's Cumdump", "Quidditch Whore", "Cheating Slut") +define cho_mood_word_list = ("Cheerful", "Reluctant", "Gloomy", "Stern", "Slightly Annoyed", "Annoyed", "Upset", "Outraged", "Mad", "Angry", "Very Angry") +# $ sna_support_word_list = ["Tight-Arse", "Miser", "Stingy", "Sparing", "Adequate", "Loose", "Easy", "Generous", "Frivolous", "Excessive", "Exorbitant"] +define sna_friendship_word_list = ("Unknown", "Colleague", "Confidant", "Trusted", "Acquaintance", "Friend", "Good friend", "Homie", "If I had to pick a dude...", "BFF", "Bros") +define ton_reputation_word_list = ("Teacher", "Bore", "Weirdo", "A Bit Nutty", "Easy Going", "Tart", "Naughty Teacher", "Slutty Teacher", "Slag", "Shameful", "Disgrace") +# $ ton_support_word_list = ["Undecided", "Modest", "Candid", "Unbiased", "Positive", "Fair", "Neutral", "Biased", "Scummy", "Cruel", "Heartless"] +define ton_friendship_word_list = ("Unknown", "inferior", "employee", "advisor", "trusted advisor", "Acquaintance", "friend", "Girlfriend", "Partner in crime", "Bonnie & Clyde", "Master & Slave") +#$ ton_sluttiness_word_list = ["Masochist", "Disgrace", "Street Whore", "Harlot", "Tart", "Sexually open", "Naughty Teacher", "Easy Going", "Professor", "Bore", "Nun"] + label update_stats: ### Hermione ### # Whoring - $ her_whoring_word_list = ["Pure", "Naive", "Curious", "Naughty", "Perverse", "Immoral", "Slutty", "Shameless", "Cumslut", "Total Cumslut", "Shameless Cumslut"] $ her_whoring_word = her_whoring_word_list[int(min(states.her.level, 24)/2.4)] # Reputation - $ her_reputation_word_list = ["Teacher's pet", "School star", "good girl", "minx", "slutty schoolgirl", "easy lay", "whore", "slut for sex", "gryffindor whore", "school cumdump", "mudblood cumdump"] - #$ slutWords = ["Teacher's pet", "School star", "good girl", "headmaster's pet", "slutty schoolgirl", "slut", "headmaster's slut", "daddy's girl", "gryffindor slut", "Dumbledore's whore", "Dumbledore's cumdump"] $ her_reputation_word = her_reputation_word_list[int(min(states.her.public_level, 24)/2.4)] # Tutoring - $ her_tutoring_word_list = ["Not started", "naive", "tempted", "curious", "tainted", "eager", "sinful", "perverted", "corrupted", "depraved", "shattered"] $ her_tutoring_word = her_tutoring_word_list[int(states.her.ev.tutoring.stage/1.5)] # Mood - $ her_mood_word_list = ["Cheerful", "Reluctant", "Gloomy", "Stern", "Slightly Annoyed", "Annoyed", "Upset", "Outraged", "Mad", "Angry", "Very Angry"] $ her_mood_word = her_mood_word_list[int(min(states.her.mood, 10)/1.0)] ### Astoria ### #call astoria_clothing_level - #$ ast_cuteness_word_list = ["Ugly Duckling", "Swot", "", "", "", "", "", "Cutypie", "", "", ""] #$ ast_cuteness_word = ast_cuteness_word_list[int(ast_clothing_level/10)] # Mood - $ ast_mood_word_list = ["Cheerful", "Reluctant", "Gloomy", "Stern", "Slightly Annoyed", "Annoyed", "Upset", "Outraged", "Mad", "Angry", "Very Angry"] $ ast_mood_word = ast_mood_word_list[int(min(states.ast.mood, 10)/1.0)] ### Cho ### # Whoring - $ cho_whoring_word_list = ["Incorruptible", "Focused", "Resilient", "Bi-Curious", "Naughty", "Immoral", "Perverse", "Slutty", "Shameless", "Cumslut", "Shameless Cumslut"] $ cho_whoring_word = cho_whoring_word_list[int(min(states.cho.level, 24)/2.4)] # Reputation - $ cho_reputation_word_list = ["Tomboy", "Team Player", "Quidditch Star", "Flying Ace", "Minx", "Manipulative", "Exploiting", "Cheater", "Team's Cumdump", "Quidditch Whore", "Cheating Slut"] $ cho_reputation_word= cho_reputation_word_list[int(min(states.cho.public_level, 24)/2.4)] # Mood - $ cho_mood_word_list = ["Cheerful", "Reluctant", "Gloomy", "Stern", "Slightly Annoyed", "Annoyed", "Upset", "Outraged", "Mad", "Angry", "Very Angry"] $ cho_mood_word = cho_mood_word_list[int(min(states.cho.mood, 10)/1.0)] ### Snape ### # # Support - # $ sna_support_word_list = ["Tight-Arse", "Miser", "Stingy", "Sparing", "Adequate", "Loose", "Easy", "Generous", "Frivolous", "Excessive", "Exorbitant"] # $ sna_support_word = sna_support_word_list[int(min(sna_support, 15)/1.5)] # Friendship - $ sna_friendship_word_list = ["Unknown", "Colleague", "Confidant", "Trusted", "Acquaintance", "Friend", "Good friend", "Homie", "If I had to pick a dude...", "BFF", "Bros"] $ sna_friendship_word = sna_friendship_word_list[int(min(states.sna.level, 100)/10)] ### Tonks ### # Reputation - $ ton_reputation_word_list = ["Teacher", "Bore", "Weirdo", "A Bit Nutty", "Easy Going", "Tart", "Naughty Teacher", "Slutty Teacher", "Slag", "Shameful", "Disgrace"] $ ton_reputation_word = ton_reputation_word_list[int(min(states.ton.public_level, 24)/2.4)] # Support - # $ ton_support_word_list = ["Undecided", "Modest", "Candid", "Unbiased", "Positive", "Fair", "Neutral", "Biased", "Scummy", "Cruel", "Heartless"] # $ ton_support_word = ton_support_word_list[int(min(ton_support, 12)/1.2)] # Friendship - $ ton_friendship_word_list = ["Unknown", "inferior", "employee", "advisor", "trusted advisor", "Acquaintance", "friend", "Girlfriend", "Partner in crime", "Bonnie & Clyde", "Master & Slave"] $ ton_friendship_word = ton_friendship_word_list[int(min(states.ton.level, 100)/10)] - #$ ton_sluttiness_word_list = ["Masochist", "Disgrace", "Street Whore", "Harlot", "Tart", "Sexually open", "Naughty Teacher", "Easy Going", "Professor", "Bore", "Nun"] #$ ton_sluttiness_word = ton_sluttiness_word_list[int(ton_clothing_level/10)] return @@ -275,7 +276,7 @@ screen stats_menuitem(xx, yy): if current_item["flag"]: add susan.image zoom 0.4 align (0.65, 1.0) xzoom 1 else: - add "interface/characters/susan_locked.webp" zoom 0.4 align (0.65, 1.0) xzoom 1 + add "interface/characters/susan_locked.webp" zoom 0.4 align (0.65, 1.0) xzoom 1 frame: style "empty" From 202807e320e630aad467916156520f5193b6aa58 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 22:51:10 +0100 Subject: [PATCH 125/249] Fix genie reform (cherry picked from commit 1618fc378ffcc3d8b76691ed3cf7acf6eb3b1200) --- game/scripts/characters/genie/wardrobe.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/characters/genie/wardrobe.rpy b/game/scripts/characters/genie/wardrobe.rpy index c756b743..bcfad0ce 100644 --- a/game/scripts/characters/genie/wardrobe.rpy +++ b/game/scripts/characters/genie/wardrobe.rpy @@ -12,7 +12,7 @@ layeredimage genie_stats: always "genie_bbase" always "genie_outfit_robes" - always "genie_robes" + always "genie_goatee" # TODO: Add outfit support; Low priority From be9f071660668caa5dcad296f6a2243655e9f403 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 22:51:38 +0100 Subject: [PATCH 126/249] Clean most stats variables from the global store (cherry picked from commit c493a4b9aa45ae4aa619a9edbb09bc0e5bea98b3) --- game/scripts/interface/stats.rpy | 127 ++++++++++++++----------------- 1 file changed, 56 insertions(+), 71 deletions(-) diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index f1e30c87..e3b9d378 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -81,60 +81,45 @@ label stats: $ gui.in_context("stats_menu") jump main_room_menu +define stats_categories_sorted = ("Genie", "Snape", "Tonks", "Hermione", "Cho", "Luna", "Astoria", "Susan") #"Ginny", "Daphne", "Padma", "Patil", "Myrtle", "Mafkin" +# Stats dictionary +define stats_dict = { + "Genie": {"ico": "genie", "name": "Genie", "sex": "Yes", "height": "6.2ft", "weight": "200lb", "job": "Headmaster", "hates": "Lamps", "likes": "Tits"}, + "Snape": {"ico": "snape", "name": "Severus Snape", "sex": "Male", "height": "5.9ft", "weight": "155lb", "job": "Teacher", "hates": "Everyone", "likes": "Rain"}, + "Tonks": {"ico": "tonks", "name": "Nymphadora Tonks", "sex": "Fluid", "height": "5.6ft", "weight": "130lb", "job": "Teacher", "hates": "Pineapple Pizza", "likes": "Girls"}, + "Hermione": {"ico": "hermione", "name": "Hermione Granger", "sex": "Female", "height": "5.2ft", "weight": "126lb", "job": "Student", "hates": "Slytherin", "likes": "Books"}, + "Cho": {"ico": "cho", "name": "Cho Chang", "sex": "Female", "height": "5.1ft", "weight": "122lb", "job": "Student", "hates": "Hermione", "likes": "Winning"}, + "Luna": {"ico": "luna", "name": "Luna Lovegood", "sex": "Female", "height": "5.2ft", "weight": "117lb", "job": "Student", "hates": "Wrackspurts", "likes": "{size=-2}Magical creatures{/size}"}, + "Astoria": {"ico": "astoria", "name": "Astoria Greengrass", "sex": "Female", "height": "5.0ft", "weight": "102lb", "job": "Student", "hates": "Rules", "likes": "Breaking them"}, + "Susan": {"ico": "susan", "name": "Susan Bones", "sex": "Female", "height": "5.1ft", "weight": "135lb", "job": "Student", "hates": "Chores", "likes": "You {size=-4}Secretly..{/size}"} +} + label stats_menu(xx=150, yy=90): call update_stats - # Stats dictionary - $ stats_dict = { - "Genie": {"ico": "genie", "flag": True, "name": "Genie", "sex": "Yes", "height": "6.2ft", "weight": "200lb", "job": "Headmaster", "hates": "Lamps", "likes": "Tits"}, - "Snape": {"ico": "snape", "flag": states.sna.unlocked, "name": "Severus Snape", "sex": "Male", "height": "5.9ft", "weight": "155lb", "job": "Teacher", "hates": "Everyone", "likes": "Rain"}, - "Tonks": {"ico": "tonks", "flag": states.ton.unlocked, "name": "Nymphadora Tonks", "sex": "Fluid", "height": "5.6ft", "weight": "130lb", "job": "Teacher", "hates": "Pineapple Pizza", "likes": "Girls"}, - "Hermione": {"ico": "hermione", "flag": states.her.unlocked, "name": "Hermione Granger", "sex": "Female", "height": "5.2ft", "weight": "126lb", "job": "Student", "hates": "Slytherin", "likes": "Books"}, - "Cho": {"ico": "cho", "flag": states.cho.unlocked, "name": "Cho Chang", "sex": "Female", "height": "5.1ft", "weight": "122lb", "job": "Student", "hates": "Hermione", "likes": "Winning"}, - "Luna": {"ico": "luna", "flag": states.lun.unlocked, "name": "Luna Lovegood", "sex": "Female", "height": "5.2ft", "weight": "117lb", "job": "Student", "hates": "Wrackspurts", "likes": "{size=-2}Magical creatures{/size}"}, - "Astoria": {"ico": "astoria", "flag": states.ast.unlocked, "name": "Astoria Greengrass", "sex": "Female", "height": "5.0ft", "weight": "102lb", "job": "Student", "hates": "Rules", "likes": "Breaking them"}, - "Susan": {"ico": "susan", "flag": states.sus.unlocked, "name": "Susan Bones", "sex": "Female", "height": "5.1ft", "weight": "135lb", "job": "Student", "hates": "Chores", "likes": "You {size=-4}Secretly..{/size}"} - } - - $ stats_categories_sorted = ["Genie", "Snape", "Tonks", "Hermione", "Cho", "Luna", "Astoria", "Susan"] #"Ginny", "Daphne", "Padma", "Patil", "Myrtle", "Mafkin" - $ stats_categories_sorted_length = len(stats_categories_sorted) - - $ current_category = states.last_girl.capitalize() if states.last_girl else stats_categories_sorted[0] - $ current_item = stats_dict[current_category] - $ current_subcategory = "overview" - $ current_sorting = stats_show_locked - - $ category_items = stats_dict[current_category] - $ menu_items = category_items - $ menu_items_length = len(menu_items) - - show screen stats(xx, yy) - - label .after_init: - $ renpy.dynamic(__choice = ui.interact()) - - if __choice[0] == "category": - $ current_category = __choice[1] - $ category_items = stats_dict[current_category] - $ menu_items = stats_sortfilter(category_items, current_sorting) - $ menu_items_length = len(menu_items) - $ current_item = stats_dict[current_category] - #$ current_subcategory = "overview" - elif __choice[0] == "subcat": - if __choice[1] != current_subcategory: - $ current_subcategory = __choice[1] - else: - hide screen stats - return - - jump .after_init + call screen stats(xx, yy) + return screen stats(xx, yy): tag stats zorder 30 modal True + default stats_flags = { + "Genie": True, + "Snape": states.sna.unlocked, + "Tonks": states.ton.unlocked, + "Hermione": states.her.unlocked, + "Cho": states.cho.unlocked, + "Luna": states.lun.unlocked, + "Astoria": states.ast.unlocked, + "Susan": states.sus.unlocked, + } + + default current_category = states.last_girl.capitalize() if states.last_girl else stats_categories_sorted[0] + default current_item = stats_dict[current_category] + add "gui_fade" if renpy.mobile: @@ -144,10 +129,10 @@ screen stats(xx, yy): fixed: if settings.get("animations"): at gui_animation - use stats_menu(xx, yy) - use stats_menuitem(xx, yy) + use stats_menu(current_category, stats_flags, xx, yy) + use stats_menuitem(current_category, current_item, stats_flags, xx, yy) -screen stats_menu(xx, yy): +screen stats_menu(current_category, stats_flags, xx, yy): tag stats_menu zorder 30 modal True @@ -173,14 +158,14 @@ screen stats_menu(xx, yy): vbox: pos (6, 6) for category in stats_categories_sorted: - if not stats_show_locked and not stats_dict[category]["flag"]: + if not stats_show_locked and not stats_flags[category]: pass else: frame: style "empty" xysize (195, 50) vbox: - textbutton (category if stats_dict[category]["flag"] else "???"): + textbutton (category if stats_flags[category] else "???"): style "empty" xysize (195, 46) text_align (0.6, 0.5) @@ -190,26 +175,26 @@ screen stats_menu(xx, yy): background gui.format("interface/achievements/{}/highlight_left_b.webp") else: hover_background gui.format("interface/achievements/{}/highlight_left_b.webp") - action Return(["category", category]) + action [ + SelectedIf(SetScreenVariable("current_category", category)), + SetScreenVariable("current_item", stats_dict[category]), + ] add gui.format("interface/achievements/{}/spacer_left.webp") - if stats_dict[category]["flag"]: - $ image_zoom = crop_image_zoom("interface/icons/head/"+stats_dict.get(category).get("ico")+".webp", 42, 42) - else: - $ image_zoom = crop_image_zoom("interface/icons/head/"+stats_dict.get(category).get("ico")+"_locked.webp", 42, 42) - button: style gui.theme("overlay_button") background gui.format("interface/achievements/{}/iconbox.webp") foreground "interface/achievements/glass_iconbox.webp" xysize (48, 48) - add image_zoom align (0.5, 0.5) + add crop_image_zoom("interface/icons/head/"+stats_dict.get(category).get("ico")+("" if stats_flags[category] else "_locked")+".webp", 42, 42) align (0.5, 0.5) -screen stats_menuitem(xx, yy): +screen stats_menuitem(current_category, current_item, stats_flags, xx, yy): tag stats_menuitem zorder 30 + default current_subcategory = "overview" + window: style "empty" style_prefix gui.theme() @@ -229,9 +214,9 @@ screen stats_menuitem(xx, yy): yanchor 0.5 textbutton "Overview": - action [Return(["subcat", "overview"]), SelectedIf(current_subcategory=="overview")] + action SetLocalVariable("current_subcategory", "overview") textbutton "Details": - action [Return(["subcat", "details"]), SelectedIf(current_subcategory=="details")] + action SetLocalVariable("current_subcategory", "details") # Character sprites frame: @@ -243,37 +228,37 @@ screen stats_menuitem(xx, yy): if current_category == "Genie": add "genie_stats" zoom 0.175 align (1.0, 1.0) xzoom -1 elif current_category == "Snape": - if current_item["flag"]: + if stats_flags[current_category]: add "characters/snape/main/snape_09.webp" zoom 0.35 align (0.9, 1.0) xzoom 1 else: add "interface/characters/snape_locked.webp" zoom 0.35 align (0.9, 1.0) xzoom 1 elif current_category == "Tonks": - if current_item["flag"]: + if stats_flags[current_category]: add tonks.image zoom 0.41 align (0.7, 1.0) xzoom 1 else: add "interface/characters/tonks_locked.webp" zoom 0.41 align (0.7, 1.0) xzoom 1 elif current_category == "Hermione": - if current_item["flag"]: + if stats_flags[current_category]: add hermione.image zoom 0.39 align (0.7, 1.0) xzoom 1 else: add "interface/characters/hermione_locked.webp" zoom 0.39 align (0.65, 1.0) xzoom 1 elif current_category == "Cho": - if current_item["flag"]: + if stats_flags[current_category]: add cho.image zoom 0.42 align (0.65, 1.0) xzoom 1 else: add "interface/characters/cho_locked.webp" zoom 0.42 align (0.65, 1.0) xzoom 1 elif current_category == "Luna": - if current_item["flag"]: + if stats_flags[current_category]: add luna.image zoom 0.39 align (0.75, 1.0) xzoom 1 else: add "interface/characters/luna_locked.webp" zoom 0.39 align (0.75, 1.0) xzoom 1 elif current_category == "Astoria": - if current_item["flag"]: + if stats_flags[current_category]: add astoria.image zoom 0.4 align (0.7, 1.0) xzoom 1 else: add "interface/characters/astoria_locked.webp" zoom 0.4 align (0.7, 1.0) xzoom 1 elif current_category == "Susan": - if current_item["flag"]: + if stats_flags[current_category]: add susan.image zoom 0.4 align (0.65, 1.0) xzoom 1 else: add "interface/characters/susan_locked.webp" zoom 0.4 align (0.65, 1.0) xzoom 1 @@ -284,7 +269,7 @@ screen stats_menuitem(xx, yy): yalign 1.0 xoffset 6 if current_subcategory == "overview": - if current_item["flag"]: + if stats_flags[current_category]: text current_item["name"] size 20 xalign 0.5 xanchor 0.5 ypos 5 else: text "???" size 20 xalign 0.5 xanchor 0.5 ypos 5 @@ -302,7 +287,7 @@ screen stats_menuitem(xx, yy): vbox: spacing 3 - if current_item["flag"]: + if stats_flags[current_category]: text current_item["sex"] size 12 text current_item["height"] size 12 text current_item["weight"] size 12 @@ -318,7 +303,7 @@ screen stats_menuitem(xx, yy): vbox: spacing 3 - if current_item["flag"]: + if stats_flags[current_category]: text current_item["job"] size 12 text current_item["hates"] size 12 text current_item["likes"] size 12 @@ -327,7 +312,7 @@ screen stats_menuitem(xx, yy): text "unknown" size 12 text "unknown" size 12 - if current_item["flag"]: + if stats_flags[current_category]: vbox: yoffset 35 xoffset 50 @@ -381,7 +366,7 @@ screen stats_menuitem(xx, yy): use stat_bar(int(0/0.9), "-Reputation-", "Invisible", 0) # TODO: Add word list and variable use stat_bar(int(0), "{size=-10}-Assertiveness Training-{/size}" , "Not started", 0) # TODO: Add word list else: - if current_item["flag"]: + if stats_flags[current_category]: vbox: if current_category == "Genie": use text_stat("Bird fed:") From 9ea4431f0eca35d52dc165d3cecb6f6f166b8a4b Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 23:06:04 +0100 Subject: [PATCH 127/249] Auto-cleanup public variables I chose not to add them directly in the screen, to keep it readable but even though they're still global variables, now they are dynamic and cleaned as soon as we exit the menu (cherry picked from commit 32cf1de3a0eaa901f2ba3df99589b6842d6a550b) --- game/scripts/interface/stats.rpy | 84 +++++++++++++++----------------- 1 file changed, 39 insertions(+), 45 deletions(-) diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index e3b9d378..c4dac958 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -1,7 +1,3 @@ -init python: - def stats_sortfilter(item, sortby=False): - return item - default stats_show_locked = False define her_whoring_word_list = ("Pure", "Naive", "Curious", "Naughty", "Perverse", "Immoral", "Slutty", "Shameless", "Cumslut", "Total Cumslut", "Shameless Cumslut") @@ -21,61 +17,61 @@ define ton_reputation_word_list = ("Teacher", "Bore", "Weirdo", "A Bit Nutty", " define ton_friendship_word_list = ("Unknown", "inferior", "employee", "advisor", "trusted advisor", "Acquaintance", "friend", "Girlfriend", "Partner in crime", "Bonnie & Clyde", "Master & Slave") #$ ton_sluttiness_word_list = ["Masochist", "Disgrace", "Street Whore", "Harlot", "Tart", "Sexually open", "Naughty Teacher", "Easy Going", "Professor", "Bore", "Nun"] -label update_stats: +init python: + def __update_stats(): + return dict( + ### Hermione ### - ### Hermione ### + # Whoring + her_whoring_word = her_whoring_word_list[int(min(states.her.level, 24)/2.4)], - # Whoring - $ her_whoring_word = her_whoring_word_list[int(min(states.her.level, 24)/2.4)] + # Reputation + her_reputation_word = her_reputation_word_list[int(min(states.her.public_level, 24)/2.4)], - # Reputation - $ her_reputation_word = her_reputation_word_list[int(min(states.her.public_level, 24)/2.4)] + # Tutoring + her_tutoring_word = her_tutoring_word_list[int(states.her.ev.tutoring.stage/1.5)], - # Tutoring - $ her_tutoring_word = her_tutoring_word_list[int(states.her.ev.tutoring.stage/1.5)] + # Mood + her_mood_word = her_mood_word_list[int(min(states.her.mood, 10)/1.0)], - # Mood - $ her_mood_word = her_mood_word_list[int(min(states.her.mood, 10)/1.0)] + ### Astoria ### + #call astoria_clothing_level + #ast_cuteness_word = ast_cuteness_word_list[int(ast_clothing_level/10)], + # Mood + ast_mood_word = ast_mood_word_list[int(min(states.ast.mood, 10)/1.0)], - ### Astoria ### - #call astoria_clothing_level - #$ ast_cuteness_word = ast_cuteness_word_list[int(ast_clothing_level/10)] - # Mood - $ ast_mood_word = ast_mood_word_list[int(min(states.ast.mood, 10)/1.0)] + ### Cho ### - ### Cho ### + # Whoring + cho_whoring_word = cho_whoring_word_list[int(min(states.cho.level, 24)/2.4)], - # Whoring - $ cho_whoring_word = cho_whoring_word_list[int(min(states.cho.level, 24)/2.4)] + # Reputation + cho_reputation_word= cho_reputation_word_list[int(min(states.cho.public_level, 24)/2.4)], - # Reputation - $ cho_reputation_word= cho_reputation_word_list[int(min(states.cho.public_level, 24)/2.4)] + # Mood + cho_mood_word = cho_mood_word_list[int(min(states.cho.mood, 10)/1.0)], - # Mood - $ cho_mood_word = cho_mood_word_list[int(min(states.cho.mood, 10)/1.0)] + ### Snape ### - ### Snape ### + # # Support + # sna_support_word = sna_support_word_list[int(min(sna_support, 15)/1.5)], - # # Support - # $ sna_support_word = sna_support_word_list[int(min(sna_support, 15)/1.5)] + # Friendship + sna_friendship_word = sna_friendship_word_list[int(min(states.sna.level, 100)/10)], - # Friendship - $ sna_friendship_word = sna_friendship_word_list[int(min(states.sna.level, 100)/10)] + ### Tonks ### - ### Tonks ### + # Reputation + ton_reputation_word = ton_reputation_word_list[int(min(states.ton.public_level, 24)/2.4)], - # Reputation - $ ton_reputation_word = ton_reputation_word_list[int(min(states.ton.public_level, 24)/2.4)] + # Support + # ton_support_word = ton_support_word_list[int(min(ton_support, 12)/1.2)], - # Support - # $ ton_support_word = ton_support_word_list[int(min(ton_support, 12)/1.2)] + # Friendship + ton_friendship_word = ton_friendship_word_list[int(min(states.ton.level, 100)/10)], - # Friendship - $ ton_friendship_word = ton_friendship_word_list[int(min(states.ton.level, 100)/10)] - - #$ ton_sluttiness_word = ton_sluttiness_word_list[int(ton_clothing_level/10)] - - return + #ton_sluttiness_word = ton_sluttiness_word_list[int(ton_clothing_level/10)], + ) label stats: $ gui.in_context("stats_menu") @@ -95,9 +91,7 @@ define stats_dict = { } label stats_menu(xx=150, yy=90): - - call update_stats - + $ renpy.dynamic(**__update_stats()) call screen stats(xx, yy) return From b34dc20901b313ef9c4da542fc79ce2a1ea074f0 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 23:24:55 +0100 Subject: [PATCH 128/249] Better text in screens (cherry picked from commit 23a264c8f476a126ab4482a4394a4cb6422ed93b) --- game/scripts/interface/stats.rpy | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index c4dac958..79489418 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -434,9 +434,8 @@ screen stat_bar(steps, top_text, bottom_text, stat_number, top_padding=20): add Crop((0, 0, steps*36, 600), gui.format("interface/stats/{}/bar_full.webp")) add gui.format("interface/stats/{}/bar_empty.webp") - text bottom_text+" (lvl " +str(stat_number)+ ")" xalign 0.5 size 20 + text "[bottom_text] (lvl [stat_number])" xalign 0.5 size 20 screen text_stat(startText="", endText="", amount="", top_padding = 20): sensitive False - - text (startText +str(amount)+ endText) xpos 20 size 14 + text "[startText][amount][endText]" xpos 20 size 14 From fe5a7402a94cf6a2467549119d256c731e410bfb Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 23:41:29 +0100 Subject: [PATCH 129/249] No it doesn't (cherry picked from commit 884c264f040765e8124bb997b313e989fe0b799f) --- game/scripts/interface/popup.rpy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/game/scripts/interface/popup.rpy b/game/scripts/interface/popup.rpy index 08dd5ce1..38eddb1a 100644 --- a/game/scripts/interface/popup.rpy +++ b/game/scripts/interface/popup.rpy @@ -28,8 +28,7 @@ label give_reward(text="You found something!", gift="interface/icons/box_blue_2. show screen notes with d3 - # It has to be a renpy.say function in order to evaluate text tags i.e "You found [item.name]". - $ renpy.say(None, text) + "[text!it]" hide screen gift hide screen notes From ff49d9fa95f72f4ac6115b3d536dee6931f98b38 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 23:46:46 +0100 Subject: [PATCH 130/249] Avoid circular reference it clogs pickling and garbage-collecting (cherry picked from commit 42f690f966d6993ffb3075021dceac97fb229147) --- game/scripts/interface/parcel.rpy | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/game/scripts/interface/parcel.rpy b/game/scripts/interface/parcel.rpy index 2a24ad65..7738d863 100644 --- a/game/scripts/interface/parcel.rpy +++ b/game/scripts/interface/parcel.rpy @@ -1,4 +1,3 @@ - init python: class Parcel(object): """ @@ -18,7 +17,10 @@ init python: self.wait = wait self.label = label self.func = func - self.queue = mailbox.parcels + + @property + def queue(self): + return mailbox.parcels def send(self): self.mailed = True From fb69dfa67601706b8b9425871deb60abce84d6e9 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 15 Nov 2023 23:47:24 +0100 Subject: [PATCH 131/249] Use statements instead of equivalents (cherry picked from commit 77e40301c9b8f15dc84d702d324ff3cf171d9057) --- game/scripts/interface/parcel.rpy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/interface/parcel.rpy b/game/scripts/interface/parcel.rpy index 7738d863..f8c75595 100644 --- a/game/scripts/interface/parcel.rpy +++ b/game/scripts/interface/parcel.rpy @@ -72,20 +72,20 @@ init python: return (text, icon) -label parcel(parcel, label): +label parcel(parcel, lbl): show screen bld1 show screen blktone $ renpy.checkpoint() - $ renpy.call("give_reward", *parcel.get_caption()) + call give_reward(*parcel.get_caption()) hide screen blktone hide screen bld1 with d3 - if label: - $ renpy.call(label) + if lbl: + call expression lbl return From 066f007e63a727b3046cc87576df539bde9f2e11 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 00:13:42 +0100 Subject: [PATCH 132/249] Reform random map locations the locations of the different characters aren't independant, but they weren't in the first place (cherry picked from commit 9a3fe1df6538977ac4f44122b64574138422f119) --- game/scripts/events/DayNight.rpy | 5 +- game/scripts/interface/map.rpy | 85 ++++++++++++-------------------- 2 files changed, 34 insertions(+), 56 deletions(-) diff --git a/game/scripts/events/DayNight.rpy b/game/scripts/events/DayNight.rpy index 9fe565bb..e07b7007 100644 --- a/game/scripts/events/DayNight.rpy +++ b/game/scripts/events/DayNight.rpy @@ -1,4 +1,3 @@ - label day_start: show screen blkfade hide snape_main @@ -87,7 +86,7 @@ label day_start: # Randomisers random_gold = renpy.random.randint(8, 40) - random_map_loc = renpy.random.randint(1, 5) + map_randomobj = renpy.random.Random() # Send salary every 7th day if game.day % 7 == 0: @@ -201,7 +200,7 @@ label night_start: # Randomisers random_gold = renpy.random.randint(8, 40) - random_map_loc = renpy.random.randint(1, 5) + map_randomobj = renpy.random.Random() # Update map locations call set_her_map_location() diff --git a/game/scripts/interface/map.rpy b/game/scripts/interface/map.rpy index 4b150b9f..28c9218d 100644 --- a/game/scripts/interface/map.rpy +++ b/game/scripts/interface/map.rpy @@ -6,6 +6,14 @@ default map_animated = "once" define map_scale = 0.35 define map_ani_time = 1.5 +default map_randomobj = renpy.random.Random() +init python: + def __choice(seq): + seed = map_randomobj.getstate() + rv = map_randomobj.choice(seq) + map_randomobj.setstate(seed) + return rv + transform map_fadein: alpha 0 pause (map_ani_time) @@ -216,30 +224,15 @@ label set_her_map_location(location=""): else: #Random if states.her.level < 11: - if random_map_loc in [1,2]: #Library - $ states.her.map_location = "library" - elif random_map_loc in [3]: #Great Hall - $ states.her.map_location = "great_hall" - else: #Gryff Room - $ states.her.map_location = "room_g" + $ states.her.map_location = __choice(("library", "library", "great_hall", "room_g", "room_g")) else: - if states.her.public_level < 12: - if random_map_loc == 1: #Great Hall - $ states.her.map_location = "great_hall" - elif random_map_loc == 2: #Courtyard - $ states.her.map_location = "courtyard" - else: #Gryff Room - $ states.her.map_location = "room_g" - else: - if random_map_loc == 1: #Slytherin Room - $ states.her.map_location = "room_s" - elif random_map_loc == 2: #Courtyard - $ states.her.map_location = "courtyard" - else: #Gryff Room - $ states.her.map_location = "room_g" - if states.her.status.blowjob == True and game.weather in ("clear", "cloudy") and not game.daytime and not states.her.busy: - $ states.her.map_location = "forest" + $ states.her.map_location = "forest" + + elif states.her.public_level < 12: + $ states.her.map_location = __choice(("great_hall", "courtyard", "room_g", "room_g", "room_g")) + else: + $ states.her.map_location = __choice(("room_s", "courtyard", "room_g", "room_g", "room_g")) call update_character_map_locations @@ -256,12 +249,7 @@ label set_lun_map_location(location = ""): $ states.lun.map_location = "room_r" else: #Random - if random_map_loc in [1]: - $ states.lun.map_location = "greenhouse" - elif random_map_loc in [2,3]: - $ states.lun.map_location = "forest" - else: #Ravenclaw Room - $ states.lun.map_location = "room_r" + $ states.lun.map_location = __choice(("greenhouse", "forest", "forest", "room_r", "room_r")) call update_character_map_locations @@ -277,10 +265,7 @@ label set_ast_map_location(location = ""): $ states.ast.map_location = "defense" else: #Random - if random_map_loc in [1,2]: - $ states.ast.map_location = "courtyard" - else: #Slytherin Room - $ states.ast.map_location = "room_s" + $ states.ast.map_location = __choice(("courtyard", "courtyard", "room_s", "room_s", "room_s")) call update_character_map_locations @@ -294,10 +279,7 @@ label set_sus_map_location(location = ""): $ states.sus.map_location = "room_r" else: #Random - if random_map_loc in [1,2]: - $ states.sus.map_location = "great_hall" - else: #Hufflepuff Room - $ states.sus.map_location = "room_h" + $ states.sus.map_location = __choice(("great_hall", "great_hall", "room_h", "room_h", "room_h")) call update_character_map_locations @@ -311,32 +293,29 @@ label set_cho_map_location(location = ""): $ states.cho.map_location = "room_r" else: #Random - if random_map_loc in [1,2]: - $ states.cho.map_location = "training_grounds" - else: #Ravenclaw Room - $ states.cho.map_location = "room_r" + $ states.cho.map_location = __choice(("training_grounds", "training_grounds", "room_r", "room_r", "room_r")) call update_character_map_locations return label update_character_map_locations: - if states.her.map_location == "library": + if states.her.map_location == "library": $ her_map_xpos = 685 $ her_map_ypos = 94 - if states.her.map_location == "room_g": + elif states.her.map_location == "room_g": $ her_map_xpos = 340 $ her_map_ypos = 212 - if states.her.map_location == "room_s": + elif states.her.map_location == "room_s": $ her_map_xpos = 440 $ her_map_ypos = 184 - if states.her.map_location == "great_hall": + elif states.her.map_location == "great_hall": $ her_map_xpos = 300 $ her_map_ypos = 240 - if states.her.map_location == "courtyard": + elif states.her.map_location == "courtyard": $ her_map_xpos = 674 $ her_map_ypos = 216 - if states.her.map_location == "forest": + elif states.her.map_location == "forest": $ her_map_xpos = 290 $ her_map_ypos = 40 @@ -344,10 +323,10 @@ label update_character_map_locations: if states.lun.map_location == "room_r": $ lun_map_xpos = 536 $ lun_map_ypos = 242 - if states.lun.map_location == "forest": + elif states.lun.map_location == "forest": $ lun_map_xpos = 430 $ lun_map_ypos = 50 - if states.lun.map_location == "greenhouse": + elif states.lun.map_location == "greenhouse": $ lun_map_xpos = 680 $ lun_map_ypos = 320 @@ -355,10 +334,10 @@ label update_character_map_locations: if states.ast.map_location == "room_s": $ ast_map_xpos = 476 $ ast_map_ypos = 118 - if states.ast.map_location == "courtyard": + elif states.ast.map_location == "courtyard": $ ast_map_xpos = 634 $ ast_map_ypos = 254 - if states.ast.map_location == "defense": #Event + elif states.ast.map_location == "defense": #Event $ ast_map_xpos = 530 $ ast_map_ypos = 190 @@ -366,7 +345,7 @@ label update_character_map_locations: if states.sus.map_location == "room_h": $ sus_map_xpos = 360 $ sus_map_ypos = 320 - if states.sus.map_location == "great_hall": + elif states.sus.map_location == "great_hall": $ sus_map_xpos = 300 $ sus_map_ypos = 280 @@ -374,7 +353,7 @@ label update_character_map_locations: if states.cho.map_location == "room_r": $ cho_map_xpos = 494 $ cho_map_ypos = 276 - if states.cho.map_location == "training_grounds": + elif states.cho.map_location == "training_grounds": $ cho_map_xpos = 750 $ cho_map_ypos = 50 @@ -400,7 +379,7 @@ screen map_screen_characters(): #Hermione if states.her.unlocked: - if states.her.map_location == "forest": # Mark forest event. + if states.her.map_location == "forest": # Mark forest event. add "interface/achievements/glow.webp" pos (UI_xpos_offset+her_map_xpos, UI_ypos_offset+her_map_ypos) align (0.5, 0.5) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: xpos +UI_xpos_offset +her_map_xpos From 38fa26e5bf4cf774842e6132f7482ebbfead1bb8 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 00:14:04 +0100 Subject: [PATCH 133/249] replace equivalent with statement (cherry picked from commit ef62f74eedc1ba690544ba7eb4a1a901c1cb7c85) --- game/scripts/characters/hermione/events/forest.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/characters/hermione/events/forest.rpy b/game/scripts/characters/hermione/events/forest.rpy index e66aef96..5e49b232 100644 --- a/game/scripts/characters/hermione/events/forest.rpy +++ b/game/scripts/characters/hermione/events/forest.rpy @@ -5,7 +5,7 @@ label hermione_map_BJ: $ her_outfit_last.save() $ hermione.equip(her_outfit_s_rain) - $ renpy.call('forest_BJ_'+str(states.her.ev.forest_bj.stage)) + call expression 'forest_BJ_'+str(states.her.ev.forest_bj.stage) $ states.her.busy = True call set_her_map_location("gryffindor_room") From fd50b5d05a4a6c5ff8acc91efa07920efc275399 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 00:49:14 +0100 Subject: [PATCH 134/249] Save calling update_character_map_locations several times (cherry picked from commit c64635aacea784e02c96b2565edf160ac450d842) --- game/scripts/events/DayNight.rpy | 16 ++-------------- game/scripts/interface/map.rpy | 27 ++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/game/scripts/events/DayNight.rpy b/game/scripts/events/DayNight.rpy index e07b7007..38e943dc 100644 --- a/game/scripts/events/DayNight.rpy +++ b/game/scripts/events/DayNight.rpy @@ -100,13 +100,7 @@ label day_start: eventqueue.tick() # Update map locations - call set_her_map_location() - call set_lun_map_location() - call set_cho_map_location() - call set_ast_map_location() - call set_sus_map_location() - #TODO: Add Tonks map location - #TODO: Add Snape map location + call set_all_map_locations # Reset appearances and sprites call update_luna @@ -203,13 +197,7 @@ label night_start: map_randomobj = renpy.random.Random() # Update map locations - call set_her_map_location() - call set_lun_map_location() - call set_cho_map_location() - call set_ast_map_location() - call set_sus_map_location() - #TODO: Add Tonks map location - #TODO: Add Snape map location + call set_all_map_locations # Reset appearances and sprites call update_luna diff --git a/game/scripts/interface/map.rpy b/game/scripts/interface/map.rpy index 28c9218d..97b91492 100644 --- a/game/scripts/interface/map.rpy +++ b/game/scripts/interface/map.rpy @@ -208,6 +208,18 @@ screen map_buttons(): tooltip "Toggles map folding animation" action ToggleVariable("map_animated", True, False) +label set_all_map_locations: + call set_her_map_location() + call set_lun_map_location() + call set_cho_map_location() + call set_ast_map_location() + call set_sus_map_location() + #TODO: Add Tonks map location + #TODO: Add Snape map location + + call update_character_map_locations + return + label set_her_map_location(location=""): if location != "": @@ -234,7 +246,8 @@ label set_her_map_location(location=""): else: $ states.her.map_location = __choice(("room_s", "courtyard", "room_g", "room_g", "room_g")) - call update_character_map_locations + if location: + call update_character_map_locations return @@ -251,7 +264,8 @@ label set_lun_map_location(location = ""): else: #Random $ states.lun.map_location = __choice(("greenhouse", "forest", "forest", "room_r", "room_r")) - call update_character_map_locations + if location: + call update_character_map_locations return @@ -267,7 +281,8 @@ label set_ast_map_location(location = ""): else: #Random $ states.ast.map_location = __choice(("courtyard", "courtyard", "room_s", "room_s", "room_s")) - call update_character_map_locations + if location: + call update_character_map_locations return @@ -281,7 +296,8 @@ label set_sus_map_location(location = ""): else: #Random $ states.sus.map_location = __choice(("great_hall", "great_hall", "room_h", "room_h", "room_h")) - call update_character_map_locations + if location: + call update_character_map_locations return @@ -295,7 +311,8 @@ label set_cho_map_location(location = ""): else: #Random $ states.cho.map_location = __choice(("training_grounds", "training_grounds", "room_r", "room_r", "room_r")) - call update_character_map_locations + if location: + call update_character_map_locations return From 2255d028e140d7d29e9c1db3dd9c64ccd564e548 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 01:11:38 +0100 Subject: [PATCH 135/249] Remove unnecessary screen variable (cherry picked from commit b222860bec0b6ed6f4210239a51c4c572c3e597d) --- game/scripts/interface/map.rpy | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/game/scripts/interface/map.rpy b/game/scripts/interface/map.rpy index 97b91492..81a17286 100644 --- a/game/scripts/interface/map.rpy +++ b/game/scripts/interface/map.rpy @@ -392,14 +392,12 @@ screen map_screen_characters(): tag map zorder 5 - $ UI_xpos_offset = 0 - #Hermione if states.her.unlocked: if states.her.map_location == "forest": # Mark forest event. - add "interface/achievements/glow.webp" pos (UI_xpos_offset+her_map_xpos, UI_ypos_offset+her_map_ypos) align (0.5, 0.5) zoom 0.15 alpha 0.5 at rotate_circular + add "interface/achievements/glow.webp" pos (her_map_xpos, UI_ypos_offset+her_map_ypos) align (0.5, 0.5) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: - xpos +UI_xpos_offset +her_map_xpos + xpos her_map_xpos ypos +UI_ypos_offset +her_map_ypos xalign 0.5 yalign 0.5 @@ -412,7 +410,7 @@ screen map_screen_characters(): #Luna if states.lun.unlocked: imagebutton: - xpos UI_xpos_offset+ lun_map_xpos + xpos lun_map_xpos ypos UI_ypos_offset+ lun_map_ypos xalign 0.5 yalign 0.5 @@ -425,7 +423,7 @@ screen map_screen_characters(): #Astoria if states.ast.unlocked: imagebutton: - xpos UI_xpos_offset +ast_map_xpos + xpos ast_map_xpos ypos UI_ypos_offset +ast_map_ypos xalign 0.5 yalign 0.5 @@ -438,7 +436,7 @@ screen map_screen_characters(): #Susan if states.sus.unlocked: imagebutton: - xpos UI_xpos_offset +sus_map_xpos + xpos sus_map_xpos ypos UI_ypos_offset +sus_map_ypos xalign 0.5 yalign 0.5 @@ -451,7 +449,7 @@ screen map_screen_characters(): #Cho if states.cho.unlocked: imagebutton: - xpos UI_xpos_offset +cho_map_xpos + xpos cho_map_xpos ypos UI_ypos_offset +cho_map_ypos xalign 0.5 yalign 0.5 @@ -464,7 +462,7 @@ screen map_screen_characters(): #Snape if states.sna.unlocked: imagebutton: - xpos UI_xpos_offset +sna_map_xpos + xpos sna_map_xpos ypos UI_ypos_offset +sna_map_ypos xalign 0.5 yalign 0.5 @@ -477,7 +475,7 @@ screen map_screen_characters(): #Tonks if states.ton.unlocked: imagebutton: - xpos UI_xpos_offset +ton_map_xpos + xpos ton_map_xpos ypos UI_ypos_offset +ton_map_ypos xalign 0.5 yalign 0.5 From a893892ecfee103a36137191db2e9b25ed105480 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 01:34:38 +0100 Subject: [PATCH 136/249] Fix and simplify the map in addition to benigh simplification, this actually fixes a bug : setting pos and align in the same line is a bug, it's always been unspecified, you should have been setting *anchor* instead. xycenter does that now. (cherry picked from commit 48c4c4ecad44402bff76e3b4dbafeeda5424b6af) --- game/scripts/interface/map.rpy | 140 ++++++++++++++++----------------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/game/scripts/interface/map.rpy b/game/scripts/interface/map.rpy index 81a17286..1d2f2d1e 100644 --- a/game/scripts/interface/map.rpy +++ b/game/scripts/interface/map.rpy @@ -1,6 +1,3 @@ -default UI_xpos_offset = 230 -default UI_ypos_offset = 150 - default map_animated = "once" define map_scale = 0.35 @@ -41,24 +38,27 @@ screen map_screen(): if map_animated == "once": timer map_ani_time+1 action SetVariable("map_animated", False) - if unfold: - add "map_unfold" xpos UI_xpos_offset ypos UI_ypos_offset zoom map_scale # 588x420 - else: - add "interface/map/map.webp" xpos UI_xpos_offset ypos UI_ypos_offset zoom map_scale # 588x420 - fixed: + pos (230, 150) + if unfold: - at map_fadein - use map_buttons - use map_screen_characters + add "map_unfold" zoom map_scale # 588x420 + else: + add "interface/map/map.webp" zoom map_scale # 588x420 + + fixed: + if unfold: + at map_fadein + use map_buttons + use map_screen_characters screen map_buttons(): tag map zorder 4 #Office imagebutton: - xpos UI_xpos_offset +112 - ypos UI_ypos_offset +234 + xpos 112 + ypos 234 idle "interface/map/room_office_idle.webp" hover "interface/map/room_office_hover.webp" hovered SetScreenVariable("ball_hint", "office") @@ -67,8 +67,8 @@ screen map_buttons(): #Gryffindor imagebutton: - xpos UI_xpos_offset +148 - ypos UI_ypos_offset +214 + xpos 148 + ypos 214 idle "interface/map/room_gryffindor_idle.webp" # hover "interface/map/room_gryffindor_hover.webp" # hovered SetScreenVariable("ball_hint", "dorm_gryffindor") @@ -77,8 +77,8 @@ screen map_buttons(): #Ravenclaw imagebutton: - xpos UI_xpos_offset +286 - ypos UI_ypos_offset +256 + xpos 286 + ypos 256 idle "interface/map/room_ravenclaw_idle.webp" # hover "interface/map/room_ravenclaw_hover.webp" # hovered SetScreenVariable("ball_hint", "dorm_ravenclaw") @@ -87,8 +87,8 @@ screen map_buttons(): #Hufflepuff imagebutton: - xpos UI_xpos_offset +76 - ypos UI_ypos_offset +295 + xpos 76 + ypos 295 idle "interface/map/room_hufflepuff_idle.webp" #hovered SetScreenVariable("ball_hint", "dorm_hufflepuff") #unhovered SetScreenVariable("ball_hint", None) @@ -97,8 +97,8 @@ screen map_buttons(): #Slytherin imagebutton: - xpos UI_xpos_offset +214 - ypos UI_ypos_offset +136 + xpos 214 + ypos 136 idle "interface/map/room_slytherin_idle.webp" #hovered SetScreenVariable("ball_hint", "dorm_slytherin") #unhovered SetScreenVariable("ball_hint", None) @@ -107,10 +107,10 @@ screen map_buttons(): #Weasley Store 15 x 15 if not item_store_intro_done: - add "interface/achievements/glow.webp" pos (UI_xpos_offset+246, UI_ypos_offset+231) align (0.5, 0.5) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular + add "interface/achievements/glow.webp" xycenter (246, 231) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: - xpos UI_xpos_offset +246 - ypos UI_ypos_offset +231 + xpos 246 + ypos 231 idle "interface/map/room_weasley_store_idle.webp" hover "interface/map/room_weasley_store_hover.webp" hovered SetScreenVariable("ball_hint", "weasley_store") @@ -119,10 +119,10 @@ screen map_buttons(): #Clothing Store if not clothing_store_intro_done: - add "interface/achievements/glow.webp" pos (UI_xpos_offset+462, UI_ypos_offset+231) align (0.5, 0.5) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular + add "interface/achievements/glow.webp" xycenter (462, 231) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: - xpos UI_xpos_offset +462 - ypos UI_ypos_offset +231 + xpos 462 + ypos 231 idle "interface/map/room_clothing_store_idle.webp" hover "interface/map/room_clothing_store_hover.webp" hovered SetScreenVariable("ball_hint", "clothing_store") @@ -131,10 +131,10 @@ screen map_buttons(): # Snape's Office if not states.map.snape_office.visited: - add "interface/achievements/glow.webp" pos (UI_xpos_offset+314, UI_ypos_offset+331) align (0.5, 0.5) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular + add "interface/achievements/glow.webp" xycenter (314, 331) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: - xpos UI_xpos_offset +314 - ypos UI_ypos_offset +331 + xpos 314 + ypos 331 idle "interface/map/room_potions_idle.webp" hover "interface/map/room_potions_hover.webp" hovered SetScreenVariable("ball_hint", "potions") @@ -144,10 +144,10 @@ screen map_buttons(): #Room of Requirement if states.map.seventh_floor.unlocked: if not states.map.room_of_requirement.intro_e1: - add "interface/achievements/glow.webp" pos (UI_xpos_offset+116, UI_ypos_offset+160) align (0.5, 0.5) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular + add "interface/achievements/glow.webp" xycenter (116, 160) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: - xpos UI_xpos_offset +116 - ypos UI_ypos_offset +160 + xpos 116 + ypos 160 unhovered SetScreenVariable("ball_hint", None) hovered SetScreenVariable("ball_hint", "room_of_req") action Return("seventh_floor") @@ -160,8 +160,8 @@ screen map_buttons(): #Lake imagebutton: - xpos UI_xpos_offset +131 - ypos UI_ypos_offset +367 + xpos 131 + ypos 367 idle "interface/map/room_boat_house_idle.webp" # hover "interface/map/room_boat_house_hover.webp" # hovered SetScreenVariable("ball_hint", "lake") @@ -170,8 +170,8 @@ screen map_buttons(): #Forest imagebutton: - xpos UI_xpos_offset +103 - ypos UI_ypos_offset +12 + xpos 103 + ypos 12 idle "interface/map/room_north_courtyard_idle.webp" # hover "interface/map/room_north_courtyard_hover.webp" # hovered SetScreenVariable("ball_hint", "forest") @@ -181,10 +181,10 @@ screen map_buttons(): #Attic if states.her.ev.sealed_scroll.examined: if not states.her.ev.sealed_scroll.sample: - add "interface/achievements/glow.webp" pos (UI_xpos_offset+340, UI_ypos_offset+226) align (0.5, 0.5) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular + add "interface/achievements/glow.webp" xycenter (340, 226) offset (15, 15) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: - xpos UI_xpos_offset +340 - ypos UI_ypos_offset +226 + xpos 340 + ypos 226 idle "interface/map/room_attic_closed_idle.webp" hover "interface/map/room_attic_closed_hover.webp" hovered SetScreenVariable("ball_hint", "attic") @@ -192,8 +192,8 @@ screen map_buttons(): action Return("map_attic") else: imagebutton: - xpos UI_xpos_offset +340 - ypos UI_ypos_offset +226 + xpos 340 + ypos 226 idle "interface/map/room_attic_open_idle.webp" hover "interface/map/room_attic_open_hover.webp" hovered SetScreenVariable("ball_hint", "attic") @@ -203,7 +203,7 @@ screen map_buttons(): # Map animation toggle textbutton "Animation": style gui.theme("check_button") - pos (700, 530) + pos (470, 380) selected map_animated tooltip "Toggles map folding animation" action ToggleVariable("map_animated", True, False) @@ -318,72 +318,72 @@ label set_cho_map_location(location = ""): label update_character_map_locations: if states.her.map_location == "library": - $ her_map_xpos = 685 + $ her_map_xpos = 455 $ her_map_ypos = 94 elif states.her.map_location == "room_g": - $ her_map_xpos = 340 + $ her_map_xpos = 110 $ her_map_ypos = 212 elif states.her.map_location == "room_s": - $ her_map_xpos = 440 + $ her_map_xpos = 210 $ her_map_ypos = 184 elif states.her.map_location == "great_hall": - $ her_map_xpos = 300 + $ her_map_xpos = 70 $ her_map_ypos = 240 elif states.her.map_location == "courtyard": - $ her_map_xpos = 674 + $ her_map_xpos = 444 $ her_map_ypos = 216 elif states.her.map_location == "forest": - $ her_map_xpos = 290 + $ her_map_xpos = 60 $ her_map_ypos = 40 #Luna if states.lun.map_location == "room_r": - $ lun_map_xpos = 536 + $ lun_map_xpos = 306 $ lun_map_ypos = 242 elif states.lun.map_location == "forest": - $ lun_map_xpos = 430 + $ lun_map_xpos = 200 $ lun_map_ypos = 50 elif states.lun.map_location == "greenhouse": - $ lun_map_xpos = 680 + $ lun_map_xpos = 450 $ lun_map_ypos = 320 #Astoria if states.ast.map_location == "room_s": - $ ast_map_xpos = 476 + $ ast_map_xpos = 246 $ ast_map_ypos = 118 elif states.ast.map_location == "courtyard": - $ ast_map_xpos = 634 + $ ast_map_xpos = 404 $ ast_map_ypos = 254 elif states.ast.map_location == "defense": #Event - $ ast_map_xpos = 530 + $ ast_map_xpos = 300 $ ast_map_ypos = 190 #Susan if states.sus.map_location == "room_h": - $ sus_map_xpos = 360 + $ sus_map_xpos = 130 $ sus_map_ypos = 320 elif states.sus.map_location == "great_hall": - $ sus_map_xpos = 300 + $ sus_map_xpos = 70 $ sus_map_ypos = 280 #Cho if states.cho.map_location == "room_r": - $ cho_map_xpos = 494 + $ cho_map_xpos = 264 $ cho_map_ypos = 276 elif states.cho.map_location == "training_grounds": - $ cho_map_xpos = 750 + $ cho_map_xpos = 520 $ cho_map_ypos = 50 #Tonks - $ ton_map_xpos = 548 + $ ton_map_xpos = 318 $ ton_map_ypos = 156 #Snape if game.daytime: - $ sna_map_xpos = 595 + $ sna_map_xpos = 365 $ sna_map_ypos = 270 else: - $ sna_map_xpos = 598 + $ sna_map_xpos = 368 $ sna_map_ypos = 348 return @@ -395,10 +395,10 @@ screen map_screen_characters(): #Hermione if states.her.unlocked: if states.her.map_location == "forest": # Mark forest event. - add "interface/achievements/glow.webp" pos (her_map_xpos, UI_ypos_offset+her_map_ypos) align (0.5, 0.5) zoom 0.15 alpha 0.5 at rotate_circular + add "interface/achievements/glow.webp" xycenter (her_map_xpos, her_map_ypos) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: xpos her_map_xpos - ypos +UI_ypos_offset +her_map_ypos + ypos her_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_hermione.webp" @@ -411,7 +411,7 @@ screen map_screen_characters(): if states.lun.unlocked: imagebutton: xpos lun_map_xpos - ypos UI_ypos_offset+ lun_map_ypos + ypos lun_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_luna.webp" @@ -424,7 +424,7 @@ screen map_screen_characters(): if states.ast.unlocked: imagebutton: xpos ast_map_xpos - ypos UI_ypos_offset +ast_map_ypos + ypos ast_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_astoria.webp" @@ -437,7 +437,7 @@ screen map_screen_characters(): if states.sus.unlocked: imagebutton: xpos sus_map_xpos - ypos UI_ypos_offset +sus_map_ypos + ypos sus_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_susan.webp" @@ -450,7 +450,7 @@ screen map_screen_characters(): if states.cho.unlocked: imagebutton: xpos cho_map_xpos - ypos UI_ypos_offset +cho_map_ypos + ypos cho_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_cho.webp" @@ -463,7 +463,7 @@ screen map_screen_characters(): if states.sna.unlocked: imagebutton: xpos sna_map_xpos - ypos UI_ypos_offset +sna_map_ypos + ypos sna_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_snape.webp" @@ -476,7 +476,7 @@ screen map_screen_characters(): if states.ton.unlocked: imagebutton: xpos ton_map_xpos - ypos UI_ypos_offset +ton_map_ypos + ypos ton_map_ypos xalign 0.5 yalign 0.5 idle "interface/map/name_tonks.webp" From ba9865ab708cdd361e65784064584d7b7e09770f Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 01:36:36 +0100 Subject: [PATCH 137/249] Make the rotate animation subpixel (cherry picked from commit 4b8371e29285894ec6942b47a0380c8a64601894) --- game/scripts/interface/achievements.rpy | 1 + 1 file changed, 1 insertion(+) diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index ae8ff167..3c5678b3 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -168,6 +168,7 @@ screen achievement_window(msg="", title="", icon=None, xpos=0, ypos=60): transform rotate_circular(): on show, appear, start: + subpixel True rotate 0 linear 7.0 rotate 360 repeat From 91019374f5f39c27d0f7a90955f38ebd7e46bbbc Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 01:38:39 +0100 Subject: [PATCH 138/249] Avoid circular reference (cherry picked from commit db30cd66d33502161bb90939516782761283c06e) --- game/scripts/interface/letter.rpy | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/game/scripts/interface/letter.rpy b/game/scripts/interface/letter.rpy index 9890c47c..5f5d1540 100644 --- a/game/scripts/interface/letter.rpy +++ b/game/scripts/interface/letter.rpy @@ -180,7 +180,10 @@ init python: self.wait = wait self.label = label self.func = func - self.queue = mailbox.letters + + @property + def queue(self): + return mailbox.letters def send(self): self.mailed = True From d01f9ec1f1122425c1b2b261eef4db335df21193 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 01:43:47 +0100 Subject: [PATCH 139/249] Use statement instead of equivalent (cherry picked from commit c3f753a460dda577fa3bad4724673b58c7956c92) --- game/scripts/interface/letter.rpy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/interface/letter.rpy b/game/scripts/interface/letter.rpy index 5f5d1540..91dfe90f 100644 --- a/game/scripts/interface/letter.rpy +++ b/game/scripts/interface/letter.rpy @@ -204,7 +204,7 @@ init python: if not silent: renpy.call("letter", self.text, self.label) -label letter(text, label): +label letter(text, lbl): show screen bld1 show screen blktone show screen letter(text) @@ -223,8 +223,8 @@ label letter(text, label): hide screen bld1 with d3 - if label: - $ renpy.call(label) + if lbl: + call expression lbl return From fa3e1e44509081fd4c6c9ad738c91adea19b0970 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 01:51:18 +0100 Subject: [PATCH 140/249] Refactor states.menu_pos and remove reset_menu_position (cherry picked from commit fbe8035c43eadcced7ab3fd1ed8b57613ec0562c) --- .../astoria/events/spells/imperio_tonks.rpy | 1 - game/scripts/characters/astoria/summon.rpy | 8 +++----- .../cho/events/quidditch/hufflepuff_practice.rpy | 2 -- .../characters/cho/events/quidditch/training.rpy | 2 -- game/scripts/characters/cho/summon.rpy | 3 --- .../favors/hg_pf_T3a_look_at_ass_INCOMPLETE.txt | 2 -- game/scripts/characters/hermione/summon.rpy | 4 +--- game/scripts/characters/luna/summon.rpy | 4 +--- game/scripts/characters/tonks/summon.rpy | 2 -- game/scripts/events/variables.rpy | 1 - game/scripts/gui/say.rpy | 4 ++-- game/scripts/interface/letter.rpy | 6 +----- game/scripts/rooms/main_room/init.rpy | 3 --- game/scripts/rooms/seventh_floor/init.rpy | 1 - game/scripts/utility/common_labels.rpy | 13 +------------ 15 files changed, 9 insertions(+), 47 deletions(-) diff --git a/game/scripts/characters/astoria/events/spells/imperio_tonks.rpy b/game/scripts/characters/astoria/events/spells/imperio_tonks.rpy index 86184163..c10d75eb 100644 --- a/game/scripts/characters/astoria/events/spells/imperio_tonks.rpy +++ b/game/scripts/characters/astoria/events/spells/imperio_tonks.rpy @@ -1720,7 +1720,6 @@ label ag_st_imperio_E5: "\"You're nothing more than a whore!\"": ton @ hair horny "Yes!" ("mad", "base", "worried", "mid") ton @ hair horny "I'm nothing but a cheap,{w=0.6} {b}fucking{/b}{w=0.4} whore!" ("open_wide_tongue", "closed", "worried", "mid") - call reset_menu_position ton "... {w}This is what I want!" ("mad", "wide", "annoyed", "down") gen "Good, you're doing this for yourself, and nobody else..." ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/astoria/summon.rpy b/game/scripts/characters/astoria/summon.rpy index a2e76321..e3dd1419 100644 --- a/game/scripts/characters/astoria/summon.rpy +++ b/game/scripts/characters/astoria/summon.rpy @@ -14,8 +14,6 @@ label summon_astoria: label astoria_requests: - # Reset - call reset_menu_position ast "" (xpos="base",ypos="base") menu: @@ -28,7 +26,7 @@ label summon_astoria: call astoria_chitchat jump astoria_talk - "-Sexual favours-" (icon="interface/icons/small/condom.webp"): # TODO: add 'if states.ast.favors_unlocked' once her story is looked over again + "-Sexual favours-" (icon="interface/icons/small/condom.webp"): # TODO: add 'if states.ast.favors_unlocked' once her story is looked over again if states.ast.mood != 0: ast "I don't want to today..." ("annoyed", "narrow", "base", "R") nar "Astoria is upset with you." @@ -284,7 +282,7 @@ label astoria_favor_menu: label .requests: call not_available - + # $ result = show_events_menu(hermione_requests) # if result in ("disabled", "noncompliant"): @@ -313,4 +311,4 @@ label astoria_favor_menu: $ result.start() "-Never mind-": - jump astoria_requests \ No newline at end of file + jump astoria_requests diff --git a/game/scripts/characters/cho/events/quidditch/hufflepuff_practice.rpy b/game/scripts/characters/cho/events/quidditch/hufflepuff_practice.rpy index 128ef34c..84a7edbf 100644 --- a/game/scripts/characters/cho/events/quidditch/hufflepuff_practice.rpy +++ b/game/scripts/characters/cho/events/quidditch/hufflepuff_practice.rpy @@ -147,8 +147,6 @@ label cc_ht_talk: call cho_chibi("stand", "mid", "base") call gen_chibi("sit_behind_desk") - call reset_menu_position - hide screen blkfade cho "" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=fade) diff --git a/game/scripts/characters/cho/events/quidditch/training.rpy b/game/scripts/characters/cho/events/quidditch/training.rpy index 4f58a1d6..5d83bffe 100644 --- a/game/scripts/characters/cho/events/quidditch/training.rpy +++ b/game/scripts/characters/cho/events/quidditch/training.rpy @@ -398,8 +398,6 @@ label cho_training: call cho_chibi("stand", "mid", "base") call gen_chibi("sit_behind_desk") - call reset_menu_position - hide screen blkfade cho "" ("base", "base", "base", "mid", xpos="base", ypos="base", trans=fade) jump cho_requests diff --git a/game/scripts/characters/cho/summon.rpy b/game/scripts/characters/cho/summon.rpy index c07cf91e..392da71d 100644 --- a/game/scripts/characters/cho/summon.rpy +++ b/game/scripts/characters/cho/summon.rpy @@ -32,8 +32,6 @@ label summon_cho: label cho_requests: - # Reset - call reset_menu_position cho "" (xpos="base", ypos="base") menu: @@ -195,4 +193,3 @@ label cho_favor_menu: label not_available: $ TBA_message("This feature is currently not available as of version %s." % config.version) return - diff --git a/game/scripts/characters/hermione/events/favors/hg_pf_T3a_look_at_ass_INCOMPLETE.txt b/game/scripts/characters/hermione/events/favors/hg_pf_T3a_look_at_ass_INCOMPLETE.txt index 929bcdf3..561754dd 100644 --- a/game/scripts/characters/hermione/events/favors/hg_pf_T3a_look_at_ass_INCOMPLETE.txt +++ b/game/scripts/characters/hermione/events/favors/hg_pf_T3a_look_at_ass_INCOMPLETE.txt @@ -4,8 +4,6 @@ label hg_pf_look_at_ass: #LV.3 (Whoring = 9 - 11) - call reset_menu_position - if hg_pf_look_at_ass.points == 0: gen "{size=-4}(I feel like checking out that ass.){/size}" ("base", xpos="far_left", ypos="head") else: diff --git a/game/scripts/characters/hermione/summon.rpy b/game/scripts/characters/hermione/summon.rpy index e05690f9..9fc61642 100644 --- a/game/scripts/characters/hermione/summon.rpy +++ b/game/scripts/characters/hermione/summon.rpy @@ -18,8 +18,6 @@ label summon_hermione: label hermione_requests: - # Reset - call reset_menu_position her "" (xpos="base",ypos="base") menu: @@ -262,7 +260,7 @@ label hermione_favor_menu: gen "Are you sure it's not within your house best interests?" ("base", xpos="far_left", ypos="head") her "What do you mean?" ("soft", "happy", "base", "mid") gen "Think about the future..." ("grin", xpos="far_left", ypos="head") - + label .convinced: if states.her.level >=20: diff --git a/game/scripts/characters/luna/summon.rpy b/game/scripts/characters/luna/summon.rpy index 3202320e..16a31fcc 100644 --- a/game/scripts/characters/luna/summon.rpy +++ b/game/scripts/characters/luna/summon.rpy @@ -22,8 +22,6 @@ label summon_luna: label luna_requests: - # Reset - call reset_menu_position lun "" (xpos="base",ypos="base") menu: @@ -150,7 +148,7 @@ label luna_favor_menu: label .requests: call not_available - + # $ result = show_events_menu(hermione_requests) # if result in ("disabled", "noncompliant"): diff --git a/game/scripts/characters/tonks/summon.rpy b/game/scripts/characters/tonks/summon.rpy index 1f5eb33f..5dde409b 100644 --- a/game/scripts/characters/tonks/summon.rpy +++ b/game/scripts/characters/tonks/summon.rpy @@ -18,8 +18,6 @@ label summon_tonks: label tonks_requests: - # Reset - call reset_menu_position ton "" (xpos="base",ypos="base") menu: diff --git a/game/scripts/events/variables.rpy b/game/scripts/events/variables.rpy index 92d552a1..768b2c60 100644 --- a/game/scripts/events/variables.rpy +++ b/game/scripts/events/variables.rpy @@ -3,7 +3,6 @@ default states.active_girl = None default states.last_girl = None default states.room = "main_room" -default states.menu_pos = (0.5, 0.5) default states.map.unlocked = False default states.map.seventh_floor.unlocked = False diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index e5c51366..e8625130 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -153,7 +153,7 @@ style quick_alt_button_text: # # https://www.renpy.org/doc/html/screen_special.html#choice -screen choice(items): +screen choice(items, menu_align=(.5, .6)): tag menu modal True zorder 30 @@ -169,7 +169,7 @@ screen choice(items): window at fade_show_hide(0.15): style "empty" - align states.menu_pos + align menu_align vbox: spacing 0 diff --git a/game/scripts/interface/letter.rpy b/game/scripts/interface/letter.rpy index 91dfe90f..d39c2e91 100644 --- a/game/scripts/interface/letter.rpy +++ b/game/scripts/interface/letter.rpy @@ -210,14 +210,10 @@ label letter(text, lbl): show screen letter(text) with d3 - $ states.menu_pos = (0.5, 0.9) - - menu: + menu (menu_align=(.5, .9)): "-Done reading-": pass - call reset_menu_position - hide screen letter hide screen blktone hide screen bld1 diff --git a/game/scripts/rooms/main_room/init.rpy b/game/scripts/rooms/main_room/init.rpy index fe0ca0a7..73bddc2f 100644 --- a/game/scripts/rooms/main_room/init.rpy +++ b/game/scripts/rooms/main_room/init.rpy @@ -55,7 +55,6 @@ screen main_room(): label main_room: call room("main_room", stop_sound=False) - call reset_menu_position call gen_walk(action="enter", xpos="desk", ypos="base", speed=1.5) call gen_chibi("sit_behind_desk") with d3 @@ -71,8 +70,6 @@ label main_room_menu: hide screen bld1 with d3 - call reset_menu_position - if game.daytime: jump day_resume else: diff --git a/game/scripts/rooms/seventh_floor/init.rpy b/game/scripts/rooms/seventh_floor/init.rpy index ceee5229..1150f951 100644 --- a/game/scripts/rooms/seventh_floor/init.rpy +++ b/game/scripts/rooms/seventh_floor/init.rpy @@ -29,7 +29,6 @@ screen seventh_floor(): label seventh_floor: call room("seventh_floor") - call reset_menu_position play music "music/the-chamber-by-kevin-macleod.ogg" fadein 1 fadeout 3 if_changed call gen_chibi("stand", -100, "base") call gen_walk(xpos="left_mid", ypos="base", speed=1.5) diff --git a/game/scripts/utility/common_labels.rpy b/game/scripts/utility/common_labels.rpy index 5ca6001b..7baa2463 100644 --- a/game/scripts/utility/common_labels.rpy +++ b/game/scripts/utility/common_labels.rpy @@ -11,13 +11,6 @@ label hide_characters: # Do not add transitions. Use one after return. return -# Reset menu -label reset_menu_position: - - $ states.menu_pos = (0.5, 0.6) - - return - label bld(action=None): if action == "hide": hide screen bld1 @@ -90,13 +83,11 @@ label music_block: label unlock_clothing(text="", item="interface/icons/box_blue_1.webp"): - $ states.menu_pos = (0.5, 0.75) - show screen clothing_unlock(item) show screen blktone with d3 - menu: + menu (menu_align=(.5, .75)): "[text]" "-Done Reading-": pass @@ -107,8 +98,6 @@ label unlock_clothing(text="", item="interface/icons/box_blue_1.webp"): $ item.unlock() - call reset_menu_position - return From d1aaeb157e508cdce9824e5e22154d60c9ffed25 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 01:54:22 +0100 Subject: [PATCH 141/249] Separate xalign and yalign (cherry picked from commit a36c0ba2221c3257bf7c58c81db53fe443fd9600) --- game/scripts/gui/say.rpy | 4 ++-- game/scripts/interface/letter.rpy | 2 +- game/scripts/utility/common_labels.rpy | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index e8625130..83f2405c 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -153,7 +153,7 @@ style quick_alt_button_text: # # https://www.renpy.org/doc/html/screen_special.html#choice -screen choice(items, menu_align=(.5, .6)): +screen choice(items, menu_xalign=.5, menu_yalign=.6): tag menu modal True zorder 30 @@ -169,7 +169,7 @@ screen choice(items, menu_align=(.5, .6)): window at fade_show_hide(0.15): style "empty" - align menu_align + align (menu_xalign, menu_yalign) vbox: spacing 0 diff --git a/game/scripts/interface/letter.rpy b/game/scripts/interface/letter.rpy index d39c2e91..bf7b7d9b 100644 --- a/game/scripts/interface/letter.rpy +++ b/game/scripts/interface/letter.rpy @@ -210,7 +210,7 @@ label letter(text, lbl): show screen letter(text) with d3 - menu (menu_align=(.5, .9)): + menu (menu_xalign=.5, menu_yalign=.9): "-Done reading-": pass diff --git a/game/scripts/utility/common_labels.rpy b/game/scripts/utility/common_labels.rpy index 7baa2463..4c65c4e7 100644 --- a/game/scripts/utility/common_labels.rpy +++ b/game/scripts/utility/common_labels.rpy @@ -87,7 +87,7 @@ label unlock_clothing(text="", item="interface/icons/box_blue_1.webp"): show screen blktone with d3 - menu (menu_align=(.5, .75)): + menu (menu_xalign=.5, menu_yalign=.75): "[text]" "-Done Reading-": pass From 84f3473bf018044c9fd3b4eadc44ed3ef0da6822 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 01:55:20 +0100 Subject: [PATCH 142/249] Remove unused xalign (cherry picked from commit 070d14a685f625557548a29cd15e6d3e6d972252) --- game/scripts/gui/say.rpy | 4 ++-- game/scripts/interface/letter.rpy | 2 +- game/scripts/utility/common_labels.rpy | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index 83f2405c..8974c321 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -153,7 +153,7 @@ style quick_alt_button_text: # # https://www.renpy.org/doc/html/screen_special.html#choice -screen choice(items, menu_xalign=.5, menu_yalign=.6): +screen choice(items, menu_yalign=.6): tag menu modal True zorder 30 @@ -169,7 +169,7 @@ screen choice(items, menu_xalign=.5, menu_yalign=.6): window at fade_show_hide(0.15): style "empty" - align (menu_xalign, menu_yalign) + yalign menu_yalign vbox: spacing 0 diff --git a/game/scripts/interface/letter.rpy b/game/scripts/interface/letter.rpy index bf7b7d9b..37734358 100644 --- a/game/scripts/interface/letter.rpy +++ b/game/scripts/interface/letter.rpy @@ -210,7 +210,7 @@ label letter(text, lbl): show screen letter(text) with d3 - menu (menu_xalign=.5, menu_yalign=.9): + menu (menu_yalign=.9): "-Done reading-": pass diff --git a/game/scripts/utility/common_labels.rpy b/game/scripts/utility/common_labels.rpy index 4c65c4e7..ca15a815 100644 --- a/game/scripts/utility/common_labels.rpy +++ b/game/scripts/utility/common_labels.rpy @@ -87,7 +87,7 @@ label unlock_clothing(text="", item="interface/icons/box_blue_1.webp"): show screen blktone with d3 - menu (menu_xalign=.5, menu_yalign=.75): + menu (menu_yalign=.75): "[text]" "-Done Reading-": pass From 675839d28e307f3a88adf80d32484560f35c13c5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 02:12:22 +0100 Subject: [PATCH 143/249] Re-enable some menu yaligns and reimplement menu sets these menu yaligns had been disabled for a long time (the menu_y variable was never read) (cherry picked from commit eae844ef0ba31c67b6c2ae5a5a5bd1e33da67b58) --- .../astoria/events/spells/imperio_tonks.rpy | 3 +- .../cho/events/quidditch/intros.rpy | 42 ++++++++----------- .../cho/events/quidditch/training.rpy | 4 +- game/scripts/characters/luna/chibi.rpy | 7 ++-- game/scripts/characters/tonks/chibi.rpy | 3 -- 5 files changed, 23 insertions(+), 36 deletions(-) diff --git a/game/scripts/characters/astoria/events/spells/imperio_tonks.rpy b/game/scripts/characters/astoria/events/spells/imperio_tonks.rpy index c10d75eb..0039837f 100644 --- a/game/scripts/characters/astoria/events/spells/imperio_tonks.rpy +++ b/game/scripts/characters/astoria/events/spells/imperio_tonks.rpy @@ -1709,8 +1709,7 @@ label ag_st_imperio_E5: ton "I..." ("open", "base", "worried", "down") gen "Say it!" ("angry", xpos="far_left", ypos="head") - $ menu_y = 0.7 - menu: + menu (menu_yalign=0.7): "\"You're a selfish slut!\"": ton @ hair horny "Yes!" ("mad", "wide", "shocked", "stare") ton @ hair horny "I'm a selfish slut!" ("open_wide_tongue", "closed", "worried", "mid") diff --git a/game/scripts/characters/cho/events/quidditch/intros.rpy b/game/scripts/characters/cho/events/quidditch/intros.rpy index a6c4432f..e85b83ad 100644 --- a/game/scripts/characters/cho/events/quidditch/intros.rpy +++ b/game/scripts/characters/cho/events/quidditch/intros.rpy @@ -194,17 +194,16 @@ label cho_quid_E2: with d3 # Tutorial menu - $ _selected = [False, False, False] - $ menu_y = 0.8 + $ renpy.dynamic(__chosen1=set()) label .choices: - if not all(x == True for x in _selected): # Has selected every position once? Loop if the answer is no. + if len(__chosen1) < 3: # needed because of the bld call bld - menu: + menu (menu_yalign=.8): + set __chosen1 gen "Could you..." ("base", xpos="far_left", ypos="head") - "\"Fly in front of me.\"" if not _selected[0]: - $ _selected[0] = True + "\"Fly in front of me.\"": call bld("hide") if not cho_chibi.action == "fly": @@ -224,8 +223,7 @@ label cho_quid_E2: jump cho_quid_E2.choices - "\"Fly above me.\"" if not _selected[1]: - $ _selected[1] = True + "\"Fly above me.\"": call bld("hide") if not cho_chibi.action == "fly": @@ -239,8 +237,7 @@ label cho_quid_E2: jump cho_quid_E2.choices - "\"Fly close to me.\"" if not _selected[2]: - $ _selected[2] = True + "\"Fly close to me.\"": call bld("hide") if not cho_chibi.action == "fly": @@ -254,8 +251,6 @@ label cho_quid_E2: cho "..." ("soft", "narrow", "raised", "mid", ypos="head", flip=False) jump cho_quid_E2.choices - else: - pass gen "That should be enough..." ("base", xpos="far_left", ypos="head") gen "I presume you're able to hold these positions during movement?" ("base", xpos="far_left", ypos="head") @@ -323,17 +318,16 @@ label cho_quid_E3: cho "No... Someone has to announce the points after all." ("annoyed", "narrow", "base", "mid") gen "I see..." ("base", xpos="far_left", ypos="head") - $ _selected = [False, False] + $ renpy.dynamic(__chosen2=set()) label .choices: menu: + set __chosen2 gen "How about we ask..." ("base", xpos="far_left", ypos="head") "\"Hermione\"": pass - "\"Astoria\"" if states.ast.unlocked and not _selected[0]: - $ _selected[0] = True - + "\"Astoria\"" if states.ast.unlocked: cho "That mischievous little..." ("clench", "wide", "raised", "mid") cho "Not a chance!" ("open", "closed", "angry", "mid") cho "Besides, [name_genie_cho]. Did you forget that she's a Slytherin?" ("open", "narrow", "angry", "mid") @@ -342,9 +336,7 @@ label cho_quid_E3: jump cho_quid_E3.choices - "\"Luna\"" if states.lun.unlocked and not _selected[1]: - $ _selected[1] = True - + "\"Luna\"" if states.lun.unlocked: cho "Luna? Luna Lovegood, [name_genie_cho]?" ("open", "narrow", "raised", "mid") gen "Yes?" ("base", xpos="far_left", ypos="head") cho "Surely{w=0.3}, nobody in their right mind would let Luna Lovegood commentate." ("grin", "happyCl", "base", "mid") # Book quote. @@ -1530,7 +1522,7 @@ label cho_quid_E12: play background "sounds/outskirts.ogg" fadein 2 play music "music/march-of-the-spoons-by-kevin-macleod-from-filmmusic-io.ogg" fadein 1 fadeout 1 if_changed - + hide screen blkfade with d5 @@ -1769,7 +1761,7 @@ label cho_quid_E14: cho @ cheeks blush "*Err*--{w=0.4} No, it's--{w=0.4} *Ehm..." ("upset", "narrow", "angry", "mid") gen "*He-he*...{w=0.4} I knew it." ("grin", xpos="far_left", ypos="base") - cho @ cheeks blush "J-Just close your eyes..." ("upset", "narrow", "angry", "mid") + cho @ cheeks blush "J-Just close your eyes..." ("upset", "narrow", "angry", "mid") show screen blkfade with d5 @@ -2500,9 +2492,9 @@ label cho_quid_E14: $ _facefuck = True #used for end variant play music "music/dark_trance.ogg" fadein 2 if_changed - + call cho_quid_E14_facefuck - + "-Finish the demonstration-": #Keep jerking off/masturbate until completion #Cho resumes jerking genie off, and you also see the scene of Cho orgasming inside the changing room. @@ -2773,7 +2765,7 @@ label cho_quid_E14: nar "Cho jumps out the window, landing onto her broom, plunging herself on the attached dildo." $ cho_chibi.zorder = 3 - + play sound "sounds/slick_02.ogg" with kissiris cho "{heart}*Ah*...{heart}" @@ -2886,7 +2878,7 @@ label cho_quid_E14_facefuck: gen "I can't believe a pupil of mine would defy me like this!" - show cho_facefuck eyebrows_worried eyes_narrow_stare as cg with d3 + show cho_facefuck eyebrows_worried eyes_narrow_stare as cg with d3 cho "*Mfff*!" gen "So, to set you straight, I'm going to pump some morals into you!" diff --git a/game/scripts/characters/cho/events/quidditch/training.rpy b/game/scripts/characters/cho/events/quidditch/training.rpy index 5d83bffe..901022ba 100644 --- a/game/scripts/characters/cho/events/quidditch/training.rpy +++ b/game/scripts/characters/cho/events/quidditch/training.rpy @@ -412,9 +412,7 @@ label cho_tactics: call hide_characters call bld - $ menu_y = 0.74 - - menu: + menu (menu_yalign=.74): gen "(What directions should I give her?)" ("base", xpos="far_left", ypos="head") "\"Fly in front of me.\"" if states.cho.ev.quidditch.position != "front": jump cho_tactics.change_front diff --git a/game/scripts/characters/luna/chibi.rpy b/game/scripts/characters/luna/chibi.rpy index bf02caaa..ab1ee509 100644 --- a/game/scripts/characters/luna/chibi.rpy +++ b/game/scripts/characters/luna/chibi.rpy @@ -100,15 +100,16 @@ label lun_chibi_scene(action="reset", xpos="mid", ypos="base"): $ chair_left_OBJ.hidden = True if action == "reset": - $ menu_y = 0.5 call lun_chibi("stand", xpos, ypos) call gen_chibi("sit_behind_desk") elif action in ("sit_on_lap", "sit_on_lap_grope"): show screen luna_chibi_scene("ch_lun_scene " + action, pos=(218, 205)) - elif action in ("inspect_idle", "inspect_idle_naked", "inspect_lean_idle_naked", "inspect_grope_breasts_naked", - "inspect_grope_vagina_naked", "inspect_lean_grope_breasts_naked", "inspect_lean_grope_vagina_naked"): + elif action in ( + "inspect_idle", "inspect_idle_naked", "inspect_lean_idle_naked", "inspect_grope_breasts_naked", + "inspect_grope_vagina_naked", "inspect_lean_grope_breasts_naked", "inspect_lean_grope_vagina_naked" + ): show screen luna_chibi_scene("ch_lun_scene " + action, pos=(218, 205)) return diff --git a/game/scripts/characters/tonks/chibi.rpy b/game/scripts/characters/tonks/chibi.rpy index a3db59f2..fea8257a 100644 --- a/game/scripts/characters/tonks/chibi.rpy +++ b/game/scripts/characters/tonks/chibi.rpy @@ -157,10 +157,7 @@ label ton_chibi_scene(action="reset", xpos="mid", ypos="base", trans=None): call ton_chibi("hide") call gen_chibi("hide") - $ menu_y = 0.75 - if action == "reset": - $ menu_y = 0.5 call ton_chibi("stand", xpos, ypos) call gen_chibi("sit_behind_desk") From 815c90109be78116327c94eba43a4c14d0831cbf Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 02:17:25 +0100 Subject: [PATCH 144/249] Use inplace sort and generator expressions (cherry picked from commit 87ce17df8b0dedfd9fc8d0cc2f16a9c28c3e6f0b) --- game/scripts/interface/inventory.rpy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index 9974d28b..d22f265c 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -1,17 +1,17 @@ init python: def inventory_sortfilter(item, sortby="A-z", filtering=None): if filtering == "Owned": - item = [x for x in item if x.owned > 0] + item = (x for x in item if x.owned > 0) # Always sort alphabetically first. item = sorted(item, key=lambda x: natsort_key(x.name)) if sortby == "z-A": - item = sorted(item, key=lambda x: natsort_key(x.name), reverse=True) + item.sort(key=lambda x: natsort_key(x.name), reverse=True) elif current_sorting == "Available": - item = sorted(item, key=lambda x: x.owned is True, reverse=True) + item.sort(key=lambda x: x.owned is True, reverse=True) elif current_sorting == "Unavailable": - item = sorted(item, key=lambda x: x.owned is False) + item.sort(key=lambda x: x.owned is False) return item From dbfb22b566bed15c4cf664c6c2d8a3bf4ccbf31e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 01:47:28 +0100 Subject: [PATCH 145/249] Fix 070d14a (cherry picked from commit ed2a817c842ebaa56ea75508532660a66256ea87) --- game/scripts/gui/say.rpy | 1 + 1 file changed, 1 insertion(+) diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index 8974c321..5029a34f 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -169,6 +169,7 @@ screen choice(items, menu_yalign=.6): window at fade_show_hide(0.15): style "empty" + xalign .5 yalign menu_yalign vbox: From a5b47a41e7e8e15fd041714c8257cb34a9f91cb0 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 17:22:23 +0100 Subject: [PATCH 146/249] Remove get_zoom and use builtin fit feature using renpy.render, wtf (cherry picked from commit 3278b1f4afdb9ce887cdac0e87c28a61b974a737) --- game/scripts/interface/gifts.rpy | 4 ++-- game/scripts/utility/image_crop.rpy | 10 ---------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/game/scripts/interface/gifts.rpy b/game/scripts/interface/gifts.rpy index 7dd08adf..99cd351d 100644 --- a/game/scripts/interface/gifts.rpy +++ b/game/scripts/interface/gifts.rpy @@ -16,6 +16,6 @@ screen gift(gift): zorder 30 if isinstance(gift, Item): - add gift.get_image() align (0.5, 0.4) zoom get_zoom(gift.get_image(), (320, 320)) + add gift.get_image() align (0.5, 0.4) xysize (320, 320) fit "contain" else: - add gift align (0.5, 0.4) zoom get_zoom(gift, (320, 320)) + add gift align (0.5, 0.4) xysize (320, 320) fit "contain" diff --git a/game/scripts/utility/image_crop.rpy b/game/scripts/utility/image_crop.rpy index 2b27c5b3..76ff7f6a 100644 --- a/game/scripts/utility/image_crop.rpy +++ b/game/scripts/utility/image_crop.rpy @@ -37,13 +37,3 @@ init python: sprite = Image(path) return Transform(sprite, crop=(x, y, w, h), xsize=xsize, ysize=ysize, fit="contain", matrixcolor=matrix, subpixel=True) - - def get_zoom(image, size): - if isinstance(image, str): - image = Image(image) - - r = renpy.render(image, 800, 800, 0, 0) - x, y = r.get_size() - xsize, ysize = size - - return min(ysize / y, xsize / x) From d063d7fc5fea6ff2680f124cbb05750c325155ef Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 17:40:48 +0100 Subject: [PATCH 147/249] Simplify crop_image_zoom calls (cherry picked from commit def10a09acabedff27a7d4c85c05bffda6ae68c7) --- game/scripts/interface/brewing.rpy | 14 ++------------ game/scripts/interface/inventory.rpy | 13 ++----------- game/scripts/shops/item/menu.rpy | 20 ++++++++------------ 3 files changed, 12 insertions(+), 35 deletions(-) diff --git a/game/scripts/interface/brewing.rpy b/game/scripts/interface/brewing.rpy index 97b94b8e..a208c21f 100644 --- a/game/scripts/interface/brewing.rpy +++ b/game/scripts/interface/brewing.rpy @@ -185,12 +185,7 @@ screen brewing_menuitem(xx, yy): xysize (48, 48) add gui.format("interface/achievements/{}/iconbox.webp") - if ingredient.owned > 0: - $ image_zoom = crop_image_zoom(ingredient.get_image(), 42, 42) - else: - $ image_zoom = crop_image_zoom(ingredient.get_image(), 42, 42, True) - - add image_zoom align (0.5, 0.5) + add crop_image_zoom(ingredient.get_image(), 42, 42, ingredient.owned <= 0) align (0.5, 0.5) button: style gui.theme("overlay_button") @@ -214,12 +209,7 @@ screen brewing_menuitem(xx, yy): add gui.format("interface/achievements/{}/iconbox.webp") size (64, 64) - if current_item.owned > 0: - $ image_zoom = crop_image_zoom(current_item.get_image(), 52, 52) - else: - $ image_zoom = crop_image_zoom(current_item.get_image(), 52, 52, True) - - add image_zoom align (0.5, 0.5) + add crop_image_zoom(current_item.get_image(), 52, 52, current_item.owned <= 0) align (0.5, 0.5) button: style gui.theme("overlay_button") diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index d22f265c..e1a1f5e0 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -340,12 +340,7 @@ screen inventory_menuitem(xx, yy): if not current_item == None and current_item.id == menu_items[i].id: add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular - if menu_items[i].owned > 0: - $ image_zoom = crop_image_zoom(menu_items[i].get_image(), 42, 42) - else: - $ image_zoom = crop_image_zoom(menu_items[i].get_image(), 42, 42, True) - - add image_zoom align (0.5, 0.5) + add crop_image_zoom(menu_items[i].get_image(), 42, 42, menu_items[i].owned <= 0) align (0.5, 0.5) button: style gui.theme("overlay_button") @@ -379,11 +374,7 @@ screen inventory_menuitem(xx, yy): ysize 96 pos (24, 375) add gui.format("interface/achievements/{}/icon_selected.webp") - if current_item.owned > 0: - $ image_zoom = crop_image_zoom(current_item.get_image(), 84, 84) - else: - $ image_zoom = crop_image_zoom(current_item.get_image(), 84, 84, True) - add image_zoom align (0.5, 0.5) + add crop_image_zoom(current_item.get_image(), 84, 84, current_item.owned <= 0) align (0.5, 0.5) add "interface/achievements/glass_selected.webp" pos (6, 6) if current_category in {"Gifts", "Ingredients", "Potions"}: diff --git a/game/scripts/shops/item/menu.rpy b/game/scripts/shops/item/menu.rpy index 8e8b2fe6..8cc8759d 100644 --- a/game/scripts/shops/item/menu.rpy +++ b/game/scripts/shops/item/menu.rpy @@ -210,12 +210,10 @@ screen shop_item_menuitem(xx, yy): if not current_item == None and current_item.id == menu_items[i].id: add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular - if (menu_items[i].currency == "tokens" and tokens >= menu_items[i].price) or (menu_items[i].owned < 99 and game.gold >= menu_items[i].price): - $ image_zoom = crop_image_zoom(menu_items[i].get_image(), 42, 42) - else: - $ image_zoom = crop_image_zoom(menu_items[i].get_image(), 42, 42, True) - - add image_zoom align (0.5, 0.5) + add crop_image_zoom( + menu_items[i].get_image(), 42, 42, + (menu_items[i].currency != "tokens" or tokens < menu_items[i].price) and (menu_items[i].owned >= 99 or game.gold < menu_items[i].price) + ) align (0.5, 0.5) button: style gui.theme("overlay_button") @@ -249,12 +247,10 @@ screen shop_item_menuitem(xx, yy): pos (24, 375) add gui.format("interface/achievements/{}/icon_selected.webp") - if (current_item.currency == "tokens" and tokens >= current_item.price) or (current_item.owned < 99 and game.gold >= current_item.price): - $ image_zoom = crop_image_zoom(current_item.get_image(), 84, 84) - else: - $ image_zoom = crop_image_zoom(current_item.get_image(), 84, 84, True) - - add image_zoom align (0.5, 0.5) + add crop_image_zoom( + current_item.get_image(), 84, 84, + (current_item.currency != "tokens" or tokens < current_item.price) and (current_item.owned >= 99 or game.gold < current_item.price) + ) align (0.5, 0.5) add "interface/achievements/glass_selected.webp" pos (6, 6) if current_item.owned > 0: From d17b04e93d5ff9549978685ee91fb8575c8d9e80 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 17:42:55 +0100 Subject: [PATCH 148/249] Better text interpolation in screens (cherry picked from commit 14607f2eb1b46c679305d4f00b3513fdb9bf3bf0) --- game/scripts/interface/brewing.rpy | 8 ++++---- game/scripts/interface/inventory.rpy | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/game/scripts/interface/brewing.rpy b/game/scripts/interface/brewing.rpy index a208c21f..0c5a6ce9 100644 --- a/game/scripts/interface/brewing.rpy +++ b/game/scripts/interface/brewing.rpy @@ -132,7 +132,7 @@ screen brewing_menu(xx, yy): add image_zoom align (0.5, 0.5) if i.owned > 0: - text str(i.owned) size 10 align (0.02, 0.1) color "#ffffff" outlines [ (1, "#000", 0, 0) ] + text "[i.owned]" size 10 align (0.02, 0.1) color "#ffffff" outlines [ (1, "#000", 0, 0) ] vbox: style_prefix gui.theme('achievements_filters') pos (6, 384) @@ -198,9 +198,9 @@ screen brewing_menuitem(xx, yy): if ingredient.infinite: text "{unicode}∞{/unicode}" size 20 align (0.1, 0.1) offset(-1, -9) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] else: - text str(ingredient.owned) size 10 align (0.1, 0.1) color "#ffffff" outlines [ (1, "#000", 0, 0) ] + text "[ingredient.owned]" size 10 align (0.1, 0.1) color "#ffffff" outlines [ (1, "#000", 0, 0) ] else: - text str(ingredient.owned) size 10 align (0.1, 0.1) color "#ff0000" outlines [ (1, "#000", 0, 0) ] + text "[ingredient.owned]" size 10 align (0.1, 0.1) color "#ff0000" outlines [ (1, "#000", 0, 0) ] frame: style "empty" @@ -219,7 +219,7 @@ screen brewing_menuitem(xx, yy): tooltip current_item.name if current_item.owned > 0: - text str(current_item.owned) size 14 align (0.1, 0.1) color "#ffffff" outlines [ (1, "#000", 0, 0) ] + text "[current_item.owned]" size 14 align (0.1, 0.1) color "#ffffff" outlines [ (1, "#000", 0, 0) ] imagebutton: if current_item.has_ingredients(): diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index e1a1f5e0..895915c3 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -382,7 +382,7 @@ screen inventory_menuitem(xx, yy): if current_item.infinite: text "{unicode}∞{/unicode}" size 30 align (0.1, 0.1) offset(-2, -10) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] else: - text str(current_item.owned) size 14 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "[current_item.owned]" size 14 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] elif current_category == "Decorations": if current_item.in_use: add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-6, -6) From 6860614062a8a2ce1ea89ac8472736156de5a04f Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 17:53:29 +0100 Subject: [PATCH 149/249] Use the correct operator(s) for None (cherry picked from commit 837d6b378e02b1a17b1154bf104d52cb5c21a2f3) --- game/scripts/characters/astoria/common.rpy | 2 +- game/scripts/characters/astoria/summon.rpy | 2 +- game/scripts/characters/cho/common.rpy | 2 +- .../characters/cho/events/favors/suck_it.rpy | 6 ++-- game/scripts/characters/genie/common.rpy | 8 ++--- game/scripts/characters/hermione/chibi.rpy | 2 +- game/scripts/characters/hermione/common.rpy | 2 +- game/scripts/characters/hermione/summon.rpy | 4 +-- game/scripts/characters/hooch/common.rpy | 2 +- game/scripts/characters/luna/common.rpy | 2 +- game/scripts/characters/luna/summon.rpy | 2 +- game/scripts/characters/snape/common.rpy | 8 ++--- game/scripts/characters/susan/common.rpy | 2 +- game/scripts/characters/tonks/chibi.rpy | 4 +-- game/scripts/characters/tonks/common.rpy | 2 +- game/scripts/characters/tonks/summon.rpy | 2 +- game/scripts/events/labels.rpy | 2 +- game/scripts/interface/achievements.rpy | 6 ++-- game/scripts/interface/book.rpy | 4 +-- game/scripts/interface/brewing.rpy | 4 +-- game/scripts/interface/inventory.rpy | 6 ++-- game/scripts/inventory/potions/_potions_.txt | 4 +-- .../minigames/cardgame/__card_game_init__.rpy | 34 +++++++++---------- .../minigames/cardgame/_card_game_.rpy | 10 +++--- game/scripts/minigames/mirror/menu.rpy | 4 +-- game/scripts/shops/item/menu.rpy | 2 +- game/scripts/wardrobe/wardrobe.rpy | 2 +- 27 files changed, 65 insertions(+), 65 deletions(-) diff --git a/game/scripts/characters/astoria/common.rpy b/game/scripts/characters/astoria/common.rpy index 7165e474..1a2191d3 100644 --- a/game/scripts/characters/astoria/common.rpy +++ b/game/scripts/characters/astoria/common.rpy @@ -76,7 +76,7 @@ init python: astoria.animation = animation redraw = True - if flip != None: + if flip is not None: astoria.xzoom = -1 if flip else 1 redraw = True diff --git a/game/scripts/characters/astoria/summon.rpy b/game/scripts/characters/astoria/summon.rpy index e3dd1419..791e87b9 100644 --- a/game/scripts/characters/astoria/summon.rpy +++ b/game/scripts/characters/astoria/summon.rpy @@ -255,7 +255,7 @@ label astoria_talk: label astoria_favor_menu: menu: - # "-Level Up-" (icon="interface/icons/small/levelup.webp") if ast_level_up != None: + # "-Level Up-" (icon="interface/icons/small/levelup.webp") if ast_level_up is not None: # call luna_level_up(tier=ast_level_up) # jump luna_favor_menu diff --git a/game/scripts/characters/cho/common.rpy b/game/scripts/characters/cho/common.rpy index a77e10a9..5c1b8183 100644 --- a/game/scripts/characters/cho/common.rpy +++ b/game/scripts/characters/cho/common.rpy @@ -74,7 +74,7 @@ init python in character: renpy.store.cho.animation = animation redraw = True - if flip != None: + if flip is not None: renpy.store.cho.xzoom = -1 if flip else 1 redraw = True diff --git a/game/scripts/characters/cho/events/favors/suck_it.rpy b/game/scripts/characters/cho/events/favors/suck_it.rpy index 17a52861..7f5f1ef5 100644 --- a/game/scripts/characters/cho/events/favors/suck_it.rpy +++ b/game/scripts/characters/cho/events/favors/suck_it.rpy @@ -35,7 +35,7 @@ label cc_pf_blowjob_T3_intro_E1: call cc_pf_blowjob - if states.cho.ev.suck_it.variant == None: + if states.cho.ev.suck_it.variant is None: gen "[name_cho_genie], ready to reward your coach for a job well done?" ("base", xpos="far_left", ypos="head") cho "Of course... A deal's a deal." ("open", "narrow", "base", "mid") gen "Great, in that case I think a blowjob is in order!" ("base", xpos="far_left", ypos="head") @@ -285,7 +285,7 @@ label cc_pf_blowjob_1: gen "That's not what we agreed on." gen "Get those lips on there..." - if states.cho.ev.suck_it.variant == None: + if states.cho.ev.suck_it.variant is None: $ camera.set_image("up_wide") else: $ camera.set_image("up_worried") @@ -373,7 +373,7 @@ label cc_pf_blowjob_1: "-Take it slow...-": #Cho strokes and licks genie then goes back to stroking until climax gen "Okay... Just keep stroking it for now..." - if states.cho.ev.suck_it.variant == None: + if states.cho.ev.suck_it.variant is None: $ camera.set_imagepath("cho_bj/hj/") $ camera.set_image("up_wide") cho "Oh... Okay, I can do that..." diff --git a/game/scripts/characters/genie/common.rpy b/game/scripts/characters/genie/common.rpy index 87680323..d49fca14 100644 --- a/game/scripts/characters/genie/common.rpy +++ b/game/scripts/characters/genie/common.rpy @@ -9,9 +9,9 @@ init python: side = None #showing = renpy.showing(name=tag, layer=layer) - if xpos != None or ypos != None: - xpos = states.gen.image.xpos if xpos == None else sprite_pos.get("x").get(xpos, xpos) - ypos = states.gen.image.ypos if ypos == None else sprite_pos.get("y").get(ypos, ypos) + if xpos is not None or ypos is not None: + xpos = states.gen.image.xpos if xpos is None else sprite_pos.get("x").get(xpos, xpos) + ypos = states.gen.image.ypos if ypos is None else sprite_pos.get("y").get(ypos, ypos) states.gen.image.xpos = xpos states.gen.image.ypos = ypos @@ -36,7 +36,7 @@ init python: if renpy.showing("genie", layer=layer): renpy.show(variant, layer=layer, tag="genie", at_list=at_list) - if flip != None: + if flip is not None: states.gen.image.xzoom = -1 if flip else 1 if what: diff --git a/game/scripts/characters/hermione/chibi.rpy b/game/scripts/characters/hermione/chibi.rpy index e334d82c..c2396c72 100644 --- a/game/scripts/characters/hermione/chibi.rpy +++ b/game/scripts/characters/hermione/chibi.rpy @@ -147,7 +147,7 @@ init python: # Sets up a chibi scene with Hermione and Genie in it label her_chibi_scene(action="reset", xpos="mid", ypos="base", trans=None): - if trans != None: + if trans is not None: call hide_characters hide screen bld1 diff --git a/game/scripts/characters/hermione/common.rpy b/game/scripts/characters/hermione/common.rpy index 0e0b2050..24f9ae13 100644 --- a/game/scripts/characters/hermione/common.rpy +++ b/game/scripts/characters/hermione/common.rpy @@ -69,7 +69,7 @@ init python: hermione.animation = animation redraw = True - if flip != None: + if flip is not None: hermione.xzoom = -1 if flip else 1 redraw = True diff --git a/game/scripts/characters/hermione/summon.rpy b/game/scripts/characters/hermione/summon.rpy index 9fc61642..342223f7 100644 --- a/game/scripts/characters/hermione/summon.rpy +++ b/game/scripts/characters/hermione/summon.rpy @@ -151,11 +151,11 @@ label hermione_favor_menu: label .skip_points_check: - if her_level_up != None: + if her_level_up is not None: call tutorial("milestones") menu: - "-Level Up-" (icon="interface/icons/small/levelup.webp") if her_level_up != None: + "-Level Up-" (icon="interface/icons/small/levelup.webp") if her_level_up is not None: call hermione_level_up(tier=her_level_up) jump hermione_favor_menu diff --git a/game/scripts/characters/hooch/common.rpy b/game/scripts/characters/hooch/common.rpy index 08c21fcf..4deedae3 100644 --- a/game/scripts/characters/hooch/common.rpy +++ b/game/scripts/characters/hooch/common.rpy @@ -60,7 +60,7 @@ init python: hooch.animation = animation redraw = True - if flip != None: + if flip is not None: hooch.xzoom = -1 if flip else 1 redraw = True diff --git a/game/scripts/characters/luna/common.rpy b/game/scripts/characters/luna/common.rpy index f4ddc843..3084c3d1 100644 --- a/game/scripts/characters/luna/common.rpy +++ b/game/scripts/characters/luna/common.rpy @@ -72,7 +72,7 @@ init python: luna.animation = animation redraw = True - if flip != None: + if flip is not None: luna.xzoom = -1 if flip else 1 redraw = True diff --git a/game/scripts/characters/luna/summon.rpy b/game/scripts/characters/luna/summon.rpy index 16a31fcc..35b67ddc 100644 --- a/game/scripts/characters/luna/summon.rpy +++ b/game/scripts/characters/luna/summon.rpy @@ -125,7 +125,7 @@ label luna_level_up(tier=None): # Luna Favor Menu label luna_favor_menu: menu: - "-Level Up-" (icon="interface/icons/small/levelup.webp") if lun_level_up != None: + "-Level Up-" (icon="interface/icons/small/levelup.webp") if lun_level_up is not None: call luna_level_up(tier=lun_level_up) jump luna_favor_menu diff --git a/game/scripts/characters/snape/common.rpy b/game/scripts/characters/snape/common.rpy index 6c5a9d80..f1033751 100644 --- a/game/scripts/characters/snape/common.rpy +++ b/game/scripts/characters/snape/common.rpy @@ -11,9 +11,9 @@ init python: layer = "screens" #showing = renpy.showing(name=tag, layer=layer) - if xpos != None or ypos != None: - xpos = states.sna.image.xpos if xpos == None else sprite_pos.get("x").get(xpos, xpos) - ypos = states.sna.image.ypos if ypos == None else sprite_pos.get("y").get(ypos, ypos) + if xpos is not None or ypos is not None: + xpos = states.sna.image.xpos if xpos is None else sprite_pos.get("x").get(xpos, xpos) + ypos = states.sna.image.ypos if ypos is None else sprite_pos.get("y").get(ypos, ypos) states.sna.image.xpos = xpos states.sna.image.ypos = ypos redraw = True @@ -38,7 +38,7 @@ init python: states.sna.image.animation = animation redraw = True - if flip != None: + if flip is not None: states.sna.image.xzoom = -1 if flip else 1 redraw = True diff --git a/game/scripts/characters/susan/common.rpy b/game/scripts/characters/susan/common.rpy index 0cec9062..2782cc8a 100644 --- a/game/scripts/characters/susan/common.rpy +++ b/game/scripts/characters/susan/common.rpy @@ -71,7 +71,7 @@ init python: susan.animation = animation redraw = True - if flip != None: + if flip is not None: susan.xzoom = -1 if flip else 1 redraw = True diff --git a/game/scripts/characters/tonks/chibi.rpy b/game/scripts/characters/tonks/chibi.rpy index fea8257a..e86c9a66 100644 --- a/game/scripts/characters/tonks/chibi.rpy +++ b/game/scripts/characters/tonks/chibi.rpy @@ -65,7 +65,7 @@ label ton_sit(xpos=nxpos, ypos=nypos, flip=None, chair=True): # TODO: replace th xpos = nxpos ypos = nypos - if flip != None: + if flip is not None: tonks.xzoom = -1 if flip else 1 show screen tonks_sit_ani(nxpos, nypos, chair) @@ -147,7 +147,7 @@ init python: # Sets up a chibi scene with Tonks and Genie in it label ton_chibi_scene(action="reset", xpos="mid", ypos="base", trans=None): - if trans != None: + if trans is not None: call hide_characters if trans: # Not sure if this part is needed, depends on context? diff --git a/game/scripts/characters/tonks/common.rpy b/game/scripts/characters/tonks/common.rpy index 92e6c766..f28c2f16 100644 --- a/game/scripts/characters/tonks/common.rpy +++ b/game/scripts/characters/tonks/common.rpy @@ -91,7 +91,7 @@ init python: tonks.animation = animation redraw = True - if flip != None: + if flip is not None: tonks.xzoom = -1 if flip else 1 redraw = True diff --git a/game/scripts/characters/tonks/summon.rpy b/game/scripts/characters/tonks/summon.rpy index 5dde409b..965745e1 100644 --- a/game/scripts/characters/tonks/summon.rpy +++ b/game/scripts/characters/tonks/summon.rpy @@ -109,7 +109,7 @@ label tonks_favor_menu: # call update_tonks_favors menu: - "-Level Up-" (icon="interface/icons/small/levelup.webp") if ton_level_up != None: + "-Level Up-" (icon="interface/icons/small/levelup.webp") if ton_level_up is not None: call tonks_level_up(tier=ton_level_up) jump tonks_requests diff --git a/game/scripts/events/labels.rpy b/game/scripts/events/labels.rpy index 41bc04c1..885bb60a 100644 --- a/game/scripts/events/labels.rpy +++ b/game/scripts/events/labels.rpy @@ -148,7 +148,7 @@ label teleport(position=None,effect=True,poof_label=None): #stop music fadeout 1 hide screen heal_animation - if poof_label != None: + if poof_label is not None: $ renpy.call(poof_label) show screen teleport_animation with d5 diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index 3c5678b3..35c5b5ee 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -39,7 +39,7 @@ define achievements_dict = { } init python: - if persistent.achievements == None: + if persistent.achievements is None: persistent.achievements = achievements_dict.copy() class Achievements(object): @@ -221,7 +221,7 @@ label achievement_menu(xx=150, yy=90): elif __choice == "dec": current_page += -1 elif __choice == "filter": - if current_filter == None: + if current_filter is None: current_filter = "Locked" elif current_filter == "Locked": current_filter = "Unlocked" @@ -294,7 +294,7 @@ screen achievement_menu(xx, yy): vbox: style_prefix gui.theme('achievements_filters') pos (6, 384) - if current_filter == None: + if current_filter is None: textbutton "Show: All" action Return("filter") else: textbutton "Show: [current_filter]" action Return("filter") diff --git a/game/scripts/interface/book.rpy b/game/scripts/interface/book.rpy index 3344f17f..3954267d 100644 --- a/game/scripts/interface/book.rpy +++ b/game/scripts/interface/book.rpy @@ -125,9 +125,9 @@ screen book_menu(page, pages, title, page_title, page_text, page_overflow): xpos 600 ypos 130 xsize 250 ysize 300 - if page_title[1] != None: + if page_title[1] is not None: text page_title[1] ypos -20 size 16 xalign 0.5 - if page_text[1] != None: + if page_text[1] is not None: text page_text[1] size 12 ypos 40 text "{b}"+str(page+2)+"{/b}" xalign 0.5 ypos 350 size 11 diff --git a/game/scripts/interface/brewing.rpy b/game/scripts/interface/brewing.rpy index 0c5a6ce9..10366130 100644 --- a/game/scripts/interface/brewing.rpy +++ b/game/scripts/interface/brewing.rpy @@ -38,7 +38,7 @@ label brewing_menu(xx=150, yy=90): elif __choice == "filter": if current_filter == "Unlocked": $ current_filter = None - elif current_filter == None: + elif current_filter is None: $ current_filter = "Unlocked" $ menu_items = brewing_sortfilter(inventory.get_instances_of_type("potion"), current_sorting, current_filter) @@ -137,7 +137,7 @@ screen brewing_menu(xx, yy): style_prefix gui.theme('achievements_filters') pos (6, 384) - if current_filter == None: + if current_filter is None: textbutton "Show: All" action Return("filter") else: textbutton "Show: [current_filter]" action Return("filter") diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index 895915c3..3f6651a0 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -106,7 +106,7 @@ label inventory_menu(xx=150, yy=90): elif __choice == "filter": python: - if current_filter == None: + if current_filter is None: current_filter = "Owned" else: current_filter = None @@ -276,7 +276,7 @@ screen inventory_menu(xx, yy): vbox: style_prefix gui.theme('achievements_filters') pos (6, 384) - if current_filter == None: + if current_filter is None: textbutton "Show: All" action Return("filter") else: textbutton "Show: [current_filter]" action Return("filter") @@ -337,7 +337,7 @@ screen inventory_menuitem(xx, yy): pos (24+58*(col), 113+58*(row)) add gui.format("interface/achievements/{}/iconbox.webp") - if not current_item == None and current_item.id == menu_items[i].id: + if current_item is not None and current_item.id == menu_items[i].id: add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular add crop_image_zoom(menu_items[i].get_image(), 42, 42, menu_items[i].owned <= 0) align (0.5, 0.5) diff --git a/game/scripts/inventory/potions/_potions_.txt b/game/scripts/inventory/potions/_potions_.txt index 6b5ebffc..055b1763 100644 --- a/game/scripts/inventory/potions/_potions_.txt +++ b/game/scripts/inventory/potions/_potions_.txt @@ -402,7 +402,7 @@ init -1 python: def get_playables(self): requests = [] for item in self.lib: - if hasattr(item, 'start_label') and item.start_label != None: + if hasattr(item, 'start_label') and item.start_label is not None: requests.append(item) return requests @@ -430,7 +430,7 @@ init -1 python: global p_inv, potion_lib if isinstance(potion, Potion): potion = potion.id - if potion_lib.get_id_by_name(potion) != None: + if potion_lib.get_id_by_name(potion) is not None: potion = potion_lib.get_id_by_name(potion) if potion_lib.is_valid_id(potion): if potion in p_inv.keys(): diff --git a/game/scripts/minigames/cardgame/__card_game_init__.rpy b/game/scripts/minigames/cardgame/__card_game_init__.rpy index 9cb522fb..11d1522f 100644 --- a/game/scripts/minigames/cardgame/__card_game_init__.rpy +++ b/game/scripts/minigames/cardgame/__card_game_init__.rpy @@ -683,34 +683,34 @@ init python: take_over = lambda a, b : a > b - if not y == 0 and not table_cards[x][y-1] == None and take_over(table_cards[x][y].topvalue, table_cards[x][y-1].bottomvalue): + if not y == 0 and table_cards[x][y-1] is not None and take_over(table_cards[x][y].topvalue, table_cards[x][y-1].bottomvalue): table_cards[x][y-1].playercard = table_cards[x][y].playercard - if not y == 2 and not table_cards[x][y+1] == None and take_over(table_cards[x][y].bottomvalue, table_cards[x][y+1].topvalue): + if not y == 2 and table_cards[x][y+1] is not None and take_over(table_cards[x][y].bottomvalue, table_cards[x][y+1].topvalue): table_cards[x][y+1].playercard = table_cards[x][y].playercard - if not x == 0 and not table_cards[x-1][y] == None and take_over(table_cards[x][y].leftvalue, table_cards[x-1][y].rightvalue): + if not x == 0 and table_cards[x-1][y] is not None and take_over(table_cards[x][y].leftvalue, table_cards[x-1][y].rightvalue): table_cards[x-1][y].playercard = table_cards[x][y].playercard - if not x == 2 and not table_cards[x+1][y] == None and take_over(table_cards[x][y].rightvalue, table_cards[x+1][y].leftvalue): + if not x == 2 and table_cards[x+1][y] is not None and take_over(table_cards[x][y].rightvalue, table_cards[x+1][y].leftvalue): table_cards[x+1][y].playercard = table_cards[x][y].playercard if dobelt_number: dobelt_found = [] - if not y == 0 and not table_cards[x][y-1] == None: + if not y == 0 and table_cards[x][y-1] is not None: if table_cards[x][y].topvalue == table_cards[x][y-1].bottomvalue: dobelt_found.append([x,y-1]) - if not y == 2 and not table_cards[x][y+1] == None: + if not y == 2 and table_cards[x][y+1] is not None: if table_cards[x][y].bottomvalue == table_cards[x][y+1].topvalue: dobelt_found.append([x,y+1]) - if not x == 0 and not table_cards[x-1][y] == None: + if not x == 0 and table_cards[x-1][y] is not None: if table_cards[x][y].leftvalue == table_cards[x-1][y].rightvalue: dobelt_found.append([x-1,y]) - if not x == 2 and not table_cards[x+1][y] == None: + if not x == 2 and table_cards[x+1][y] is not None: if table_cards[x][y].rightvalue == table_cards[x+1][y].leftvalue: dobelt_found.append([x+1,y]) @@ -786,8 +786,8 @@ init python: for y in range(0,3): for x in range(0,3): score = 0 - if table_cards[x][y] == None: - if not y == 0 and not table_cards[x][y-1] == None and table_cards[x][y-1].playercard: + if table_cards[x][y] is None: + if not y == 0 and table_cards[x][y-1] is not None and table_cards[x][y-1].playercard: if take_over(self.topvalue, table_cards[x][y-1].bottomvalue): score += getcardscore else: @@ -795,7 +795,7 @@ init python: else: score += wallscore - if not y == 2 and not table_cards[x][y+1] == None and table_cards[x][y+1].playercard: + if not y == 2 and table_cards[x][y+1] is not None and table_cards[x][y+1].playercard: if take_over(self.bottomvalue, table_cards[x][y+1].topvalue): score += getcardscore else: @@ -803,7 +803,7 @@ init python: else: score += wallscore - if not x == 0 and not table_cards[x-1][y] == None and table_cards[x-1][y].playercard: + if not x == 0 and table_cards[x-1][y] is not None and table_cards[x-1][y].playercard: if take_over(self.leftvalue, table_cards[x-1][y].rightvalue): score += getcardscore else: @@ -811,7 +811,7 @@ init python: else: score += wallscore - if not x == 2 and not table_cards[x+1][y] == None and table_cards[x+1][y].playercard: + if not x == 2 and table_cards[x+1][y] is not None and table_cards[x+1][y].playercard: if take_over(self.rightvalue, table_cards[x+1][y].leftvalue): score += getcardscore else: @@ -821,20 +821,20 @@ init python: if dobelt_number: dobelt_found = [] - if not y == 0 and not table_cards[x][y-1] == None: + if not y == 0 and table_cards[x][y-1] is not None: if self.topvalue == table_cards[x][y-1].bottomvalue: dobelt_found.append(table_cards[x][y-1]) - if not y == 2 and not table_cards[x][y+1] == None: + if not y == 2 and table_cards[x][y+1] is not None: if self.bottomvalue == table_cards[x][y+1].topvalue: dobelt_found.append(table_cards[x][y+1]) - if not x == 0 and not table_cards[x-1][y] == None: + if not x == 0 and table_cards[x-1][y] is not None: if self.leftvalue == table_cards[x-1][y].rightvalue: dobelt_found.append(table_cards[x-1][y]) - if not x == 2 and not table_cards[x+1][y] == None: + if not x == 2 and table_cards[x+1][y] is not None: if self.rightvalue == table_cards[x+1][y].leftvalue: dobelt_found.append(table_cards[x+1][y]) diff --git a/game/scripts/minigames/cardgame/_card_game_.rpy b/game/scripts/minigames/cardgame/_card_game_.rpy index d21c58b6..e1b24af0 100644 --- a/game/scripts/minigames/cardgame/_card_game_.rpy +++ b/game/scripts/minigames/cardgame/_card_game_.rpy @@ -3,9 +3,9 @@ init python: def start_duel(opppent_deck, after_enemy = None, rules = None, duel_player_deck = None): global standard_rules global playerdeck - if rules == None: + if rules is None: rules = standard_rules - if duel_player_deck == None: + if duel_player_deck is None: duel_player_deck = playerdeck backside_list = [] @@ -45,7 +45,7 @@ init python: response_card = "" while not(response_card == "win" or response_card == "loss"): response_card = cardgame(enemy_deck, player_deck, backside_list, rules[2], rules[3]) - if response_card == "AfterEnemy" and not after_enemy == None: + if response_card == "AfterEnemy" and after_enemy is not None: after_enemy() elif response_card == "Close": return "Close" @@ -246,7 +246,7 @@ screen card_battle(l_playerdeck, l_enemydeck, shown_cards): for y in range(0,3): for x in range(0,3): - if table_cards[x][y] == None: + if table_cards[x][y] is None: hotspot (353+124*x, 25+184*y, 125, 182) clicked Return(str(x+y*3)) else: use cardrender(table_cards[x][y], 353+124*x, 25+184*y, cardzoom=0.375, animated=True) @@ -283,7 +283,7 @@ transform cardrender(pos, zoom): screen cardrender(card, xpos_card, ypos_card, interact=False, return_value=None, cardzoom=0.5, color=None, backside=False, animated=False): zorder 14 - if return_value == None: + if return_value is None: $ return_value = card $ img = card.get_image(backside=backside) diff --git a/game/scripts/minigames/mirror/menu.rpy b/game/scripts/minigames/mirror/menu.rpy index 35fcf619..f90d1ce2 100644 --- a/game/scripts/minigames/mirror/menu.rpy +++ b/game/scripts/minigames/mirror/menu.rpy @@ -54,7 +54,7 @@ label mirror_menu(xx=150, yy=90): elif __choice == "filter": if current_filter == "Unlocked": $ current_filter = None - elif current_filter == None: + elif current_filter is None: $ current_filter = "Unlocked" $ menu_items = mirror_sortfilter(mirror.get_instances_of_tag(current_category), current_sorting, current_filter) @@ -124,7 +124,7 @@ screen mirror_menu(xx, yy): style_prefix gui.theme('achievements_filters') pos (6, 384) - if current_filter == None: + if current_filter is None: textbutton "Show: All" action Return("filter") else: textbutton "Show: [current_filter]" action Return("filter") diff --git a/game/scripts/shops/item/menu.rpy b/game/scripts/shops/item/menu.rpy index 8cc8759d..252fc388 100644 --- a/game/scripts/shops/item/menu.rpy +++ b/game/scripts/shops/item/menu.rpy @@ -207,7 +207,7 @@ screen shop_item_menuitem(xx, yy): pos (24+58*(col), 113+58*(row)) add gui.format("interface/achievements/{}/iconbox.webp") - if not current_item == None and current_item.id == menu_items[i].id: + if not current_item is None and current_item.id == menu_items[i].id: add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular add crop_image_zoom( diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index bc5b0044..c1e4db2a 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -224,7 +224,7 @@ screen wardrobe(xx, yy): use wardrobe_menu(xx, yy) if current_category == "outfits": use wardrobe_outfit_menuitem(20, 50) - elif current_subcategory != None: + elif current_subcategory is not None: use wardrobe_menuitem(20, 50) label wardrobe_menu(): From 26ecf0e6f0d39a2aaa69f564ee260dfc901e636a Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 18:01:43 +0100 Subject: [PATCH 150/249] Use a grid for the inventory (cherry picked from commit c1ab7f7b85f153b174be6ad7bfa564880a639953) --- game/scripts/interface/inventory.rpy | 67 +++++++++++++++------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index 3f6651a0..ec9591d3 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -326,43 +326,46 @@ screen inventory_menuitem(xx, yy): action Return("inc") # Add items - for i in range(current_page*items_shown, (current_page*items_shown)+items_shown): - if i < menu_items_length: - $ row = (i // 9) % 4 - $ col = i % 9 - frame: - style "empty" - xsize 48 - ysize 48 - pos (24+58*(col), 113+58*(row)) - add gui.format("interface/achievements/{}/iconbox.webp") + grid 9 4: + style "empty" + pos (24, 113) - if current_item is not None and current_item.id == menu_items[i].id: - add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular + for i in range(current_page*items_shown, (current_page*items_shown)+items_shown): + if i < menu_items_length: + $ row = (i // 9) % 4 + $ col = i % 9 + frame: + style "empty" + xsize 48 + ysize 48 + add gui.format("interface/achievements/{}/iconbox.webp") - add crop_image_zoom(menu_items[i].get_image(), 42, 42, menu_items[i].owned <= 0) align (0.5, 0.5) + if current_item is not None and current_item.id == menu_items[i].id: + add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular - button: - style gui.theme("overlay_button") - background "interface/achievements/glass_iconbox.webp" - xsize 46 ysize 46 - action Return(["select", menu_items[i]]) - tooltip menu_items[i].name + add crop_image_zoom(menu_items[i].get_image(), 42, 42, menu_items[i].owned <= 0) align (0.5, 0.5) - if menu_items[i].limit > 1 and menu_items[i].owned > 0: - if menu_items[i].infinite: - text "{unicode}∞{/unicode}" size 20 align (0.1, 0.1) offset(-1, -9) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] - else: - text str(menu_items[i].owned) size 10 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] - elif current_category == "Decorations": - if menu_items[i].in_use: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 - elif current_category in ("Books", "Quest Items"): - if menu_items[i].used: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 + button: + style gui.theme("overlay_button") + background "interface/achievements/glass_iconbox.webp" + xsize 46 ysize 46 + action Return(["select", menu_items[i]]) + tooltip menu_items[i].name - if inventory_mode == 1 and (not menu_items[i].givable or not states.active_girl in menu_items[i].usable_on): - add "#b2000040" + if menu_items[i].limit > 1 and menu_items[i].owned > 0: + if menu_items[i].infinite: + text "{unicode}∞{/unicode}" size 20 align (0.1, 0.1) offset(-1, -9) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + else: + text str(menu_items[i].owned) size 10 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + elif current_category == "Decorations": + if menu_items[i].in_use: + add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 + elif current_category in ("Books", "Quest Items"): + if menu_items[i].used: + add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 + + if inventory_mode == 1 and (not menu_items[i].givable or not states.active_girl in menu_items[i].usable_on): + add "#b2000040" if menu_items_length <= 0: text "Nothing here yet" align (0.5, 0.5) anchor (0.5, 0.5) size 24 From 19d81fa9b803164936b50356a5be7ea044fde891 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 17:40:48 +0100 Subject: [PATCH 151/249] Bug Fixes --- game/scripts/interface/door.rpy | 2 -- game/scripts/interface/inventory.rpy | 4 +++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index 53e25f06..833d3a44 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -10,8 +10,6 @@ label summon: label summon_menu(xx=723, yy=90): - call update_stats - $ map_transcript_loc = {"library": "Library", "room_g": "Gryffindor Dormitory", "room_s": "Slytherin Dormitory", "room_r": "Ravenclaw Dormitory", "room_h": "Hufflepuff Dormitory", "great_hall": "Great Hall", "courtyard": "Courtyard", "forest": "Forest", "greenhouse": "Greenhouse", "defense": "D.A.D.A Classroom", "training_grounds": "Training Grounds", "Lake": "Lake", "randomstudent": renpy.random.choice(["Classroom", "Bathroom", "Hagrid's Hut", "Weasley's Store", "Mafkin's Store", "Broom Cupboard", "Attic"]), "randomsnape": renpy.random.choice(["Classroom", "Boathouse", "Bathroom", "Snape's Office", "Hall", "Slytherin Dormitory", "Library", "Attic", "Forest", "Lake", "Dungeons", "Quidditch Cave", "Staircase", "Behind your door", "Room of Doom"]), "randomtonks": renpy.random.choice(["Classroom", "Bathroom", "Hall", "Gryffindor Dormitory", "Slytherin Dormitory", "Hufflepuff Dormitory", "Ravenclaw Dormitory", "Training Grounds", "Tonks' Room", "Quidditch Pitch", "Infirmary", "Sex Dungeon", "Hospital Wing", "Forest", "Lake", "Greenhouse", "Mafkin's Store"])} # Door dictionary diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index ec9591d3..3c72d5c4 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -329,6 +329,7 @@ screen inventory_menuitem(xx, yy): grid 9 4: style "empty" pos (24, 113) + spacing 5 for i in range(current_page*items_shown, (current_page*items_shown)+items_shown): if i < menu_items_length: @@ -338,6 +339,7 @@ screen inventory_menuitem(xx, yy): style "empty" xsize 48 ysize 48 + add gui.format("interface/achievements/{}/iconbox.webp") if current_item is not None and current_item.id == menu_items[i].id: @@ -430,4 +432,4 @@ style inventory_button: style inventory_button_text: outlines [] align (0.5, 0.5) - size 16 + size 16 \ No newline at end of file From 20c00bbc747739ccee2f89a613ddc45084f54674 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 16 Nov 2023 18:05:57 +0100 Subject: [PATCH 152/249] merge fix --- game/scripts/interface/inventory.rpy | 60 +++++++++++++--------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index 3c72d5c4..c1702c1a 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -331,43 +331,39 @@ screen inventory_menuitem(xx, yy): pos (24, 113) spacing 5 - for i in range(current_page*items_shown, (current_page*items_shown)+items_shown): - if i < menu_items_length: - $ row = (i // 9) % 4 - $ col = i % 9 - frame: - style "empty" - xsize 48 - ysize 48 + for it_item in menu_items[current_page*items_shown:(current_page+1)*items_shown]: + frame: + style "empty" + xsize 48 + ysize 48 + add gui.format("interface/achievements/{}/iconbox.webp") - add gui.format("interface/achievements/{}/iconbox.webp") + if current_item is not None and current_item.id == it_item.id: + add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular - if current_item is not None and current_item.id == menu_items[i].id: - add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular + add crop_image_zoom(it_item.get_image(), 42, 42, it_item.owned <= 0) align (0.5, 0.5) - add crop_image_zoom(menu_items[i].get_image(), 42, 42, menu_items[i].owned <= 0) align (0.5, 0.5) + button: + style gui.theme("overlay_button") + background "interface/achievements/glass_iconbox.webp" + xsize 46 ysize 46 + action Return(["select", it_item]) + tooltip it_item.name - button: - style gui.theme("overlay_button") - background "interface/achievements/glass_iconbox.webp" - xsize 46 ysize 46 - action Return(["select", menu_items[i]]) - tooltip menu_items[i].name + if it_item.limit > 1 and it_item.owned > 0: + if it_item.infinite: + text "{unicode}∞{/unicode}" size 20 align (0.1, 0.1) offset(-1, -9) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + else: + text str(it_item.owned) size 10 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + elif current_category == "Decorations": + if it_item.in_use: + add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 + elif current_category in ("Books", "Quest Items"): + if it_item.used: + add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 - if menu_items[i].limit > 1 and menu_items[i].owned > 0: - if menu_items[i].infinite: - text "{unicode}∞{/unicode}" size 20 align (0.1, 0.1) offset(-1, -9) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] - else: - text str(menu_items[i].owned) size 10 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] - elif current_category == "Decorations": - if menu_items[i].in_use: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 - elif current_category in ("Books", "Quest Items"): - if menu_items[i].used: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 - - if inventory_mode == 1 and (not menu_items[i].givable or not states.active_girl in menu_items[i].usable_on): - add "#b2000040" + if inventory_mode == 1 and (not it_item.givable or not states.active_girl in it_item.usable_on): + add "#b2000040" if menu_items_length <= 0: text "Nothing here yet" align (0.5, 0.5) anchor (0.5, 0.5) size 24 From f78c269fc841500401109a46cd9cfa93c20881ab Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 02:47:17 +0100 Subject: [PATCH 153/249] Add data privacy when computing house points the dynamic variables are needed for the show screen call (cherry picked from commit aefa88e4d24483f5c1be51206d1ef5fe5044672e) --- game/scripts/interface/house_points.rpy | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/game/scripts/interface/house_points.rpy b/game/scripts/interface/house_points.rpy index 4c6ab676..2b31d114 100644 --- a/game/scripts/interface/house_points.rpy +++ b/game/scripts/interface/house_points.rpy @@ -2,7 +2,7 @@ label points_changes: # Gets called every day/night. - python: + python hide: progress_factor = max(1, int(math.log(game.day) * 5)) # Bonuses based on Tonks and Snape friendship stat @@ -19,15 +19,17 @@ label points_changes: # Gets called every day/night. difference_factor_r = min(leader, round((progress_factor + bonus_r) * max(gryffindor, hufflepuff, slytherin)/float(ravenclaw))) difference_factor_s = min(leader, round((progress_factor + bonus_s) * max(hufflepuff, ravenclaw, gryffindor)/float(slytherin))) - points_g = renpy.random.randint(difference_factor_g//2, difference_factor_g) - points_h = renpy.random.randint(difference_factor_h//2, difference_factor_h) - points_r = renpy.random.randint(difference_factor_r//2, difference_factor_r) - points_s = renpy.random.randint(difference_factor_s//2, difference_factor_s) + renpy.dynamic( + points_g = renpy.random.randint(difference_factor_g//2, difference_factor_g), + points_h = renpy.random.randint(difference_factor_h//2, difference_factor_h), + points_r = renpy.random.randint(difference_factor_r//2, difference_factor_r), + points_s = renpy.random.randint(difference_factor_s//2, difference_factor_s), + ) - gryffindor += points_g - hufflepuff += points_h - ravenclaw += points_r - slytherin += points_s + store.gryffindor += points_g + store.hufflepuff += points_h + store.ravenclaw += points_r + store.slytherin += points_s hide screen points_changes show screen points_changes(points_s, points_g, points_r, points_h) @@ -42,7 +44,7 @@ screen points_changes(points_s, points_g, points_r, points_h): align (0.5, 0.1) at transform: on start: - alpha 0.0 + alpha 0.0 on show: yoffset 0 alpha 1.0 @@ -54,5 +56,3 @@ screen points_changes(points_s, points_g, points_r, points_h): text "+[points_h]" outlines [(1, "#000000BF", 1, 0)] size 24 color "#FBC60A" timer 3.0 action Hide("points_changes") - - From 3579e2a38b78780654b654246206582baf23315d Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 02:49:44 +0100 Subject: [PATCH 154/249] Add safe return otherwise the implicit return is at the end of the file, which means if we add another label down the file, it will be executed after give_gift (cherry picked from commit 38787bdc4c76b87be2c465b29412f93697a06f26) --- game/scripts/interface/gifts.rpy | 1 + 1 file changed, 1 insertion(+) diff --git a/game/scripts/interface/gifts.rpy b/game/scripts/interface/gifts.rpy index 99cd351d..65b30373 100644 --- a/game/scripts/interface/gifts.rpy +++ b/game/scripts/interface/gifts.rpy @@ -11,6 +11,7 @@ label give_gift(text, gift): hide screen gift with d3 $ gift.owned -= 1 + return screen gift(gift): zorder 30 From 7e3a078dce8ef516e9c486c0608b2d6fb1f42d31 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:05:12 +0100 Subject: [PATCH 155/249] Avoid single-use function (cherry picked from commit 313849696cc6416bdc17f595a3ec94703c354e5d) --- game/scripts/interface/stats.rpy | 111 +++++++++++++++---------------- 1 file changed, 54 insertions(+), 57 deletions(-) diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index 79489418..1d608d70 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -17,62 +17,6 @@ define ton_reputation_word_list = ("Teacher", "Bore", "Weirdo", "A Bit Nutty", " define ton_friendship_word_list = ("Unknown", "inferior", "employee", "advisor", "trusted advisor", "Acquaintance", "friend", "Girlfriend", "Partner in crime", "Bonnie & Clyde", "Master & Slave") #$ ton_sluttiness_word_list = ["Masochist", "Disgrace", "Street Whore", "Harlot", "Tart", "Sexually open", "Naughty Teacher", "Easy Going", "Professor", "Bore", "Nun"] -init python: - def __update_stats(): - return dict( - ### Hermione ### - - # Whoring - her_whoring_word = her_whoring_word_list[int(min(states.her.level, 24)/2.4)], - - # Reputation - her_reputation_word = her_reputation_word_list[int(min(states.her.public_level, 24)/2.4)], - - # Tutoring - her_tutoring_word = her_tutoring_word_list[int(states.her.ev.tutoring.stage/1.5)], - - # Mood - her_mood_word = her_mood_word_list[int(min(states.her.mood, 10)/1.0)], - - ### Astoria ### - #call astoria_clothing_level - #ast_cuteness_word = ast_cuteness_word_list[int(ast_clothing_level/10)], - # Mood - ast_mood_word = ast_mood_word_list[int(min(states.ast.mood, 10)/1.0)], - - ### Cho ### - - # Whoring - cho_whoring_word = cho_whoring_word_list[int(min(states.cho.level, 24)/2.4)], - - # Reputation - cho_reputation_word= cho_reputation_word_list[int(min(states.cho.public_level, 24)/2.4)], - - # Mood - cho_mood_word = cho_mood_word_list[int(min(states.cho.mood, 10)/1.0)], - - ### Snape ### - - # # Support - # sna_support_word = sna_support_word_list[int(min(sna_support, 15)/1.5)], - - # Friendship - sna_friendship_word = sna_friendship_word_list[int(min(states.sna.level, 100)/10)], - - ### Tonks ### - - # Reputation - ton_reputation_word = ton_reputation_word_list[int(min(states.ton.public_level, 24)/2.4)], - - # Support - # ton_support_word = ton_support_word_list[int(min(ton_support, 12)/1.2)], - - # Friendship - ton_friendship_word = ton_friendship_word_list[int(min(states.ton.level, 100)/10)], - - #ton_sluttiness_word = ton_sluttiness_word_list[int(ton_clothing_level/10)], - ) - label stats: $ gui.in_context("stats_menu") jump main_room_menu @@ -91,7 +35,60 @@ define stats_dict = { } label stats_menu(xx=150, yy=90): - $ renpy.dynamic(**__update_stats()) + $ renpy.dynamic( + ### Hermione ### + + # Whoring + her_whoring_word = her_whoring_word_list[int(min(states.her.level, 24)/2.4)], + + # Reputation + her_reputation_word = her_reputation_word_list[int(min(states.her.public_level, 24)/2.4)], + + # Tutoring + her_tutoring_word = her_tutoring_word_list[int(states.her.ev.tutoring.stage/1.5)], + + # Mood + her_mood_word = her_mood_word_list[int(min(states.her.mood, 10)/1.0)], + + ### Astoria ### + #call astoria_clothing_level + #ast_cuteness_word = ast_cuteness_word_list[int(ast_clothing_level/10)], + # Mood + ast_mood_word = ast_mood_word_list[int(min(states.ast.mood, 10)/1.0)], + + ### Cho ### + + # Whoring + cho_whoring_word = cho_whoring_word_list[int(min(states.cho.level, 24)/2.4)], + + # Reputation + cho_reputation_word= cho_reputation_word_list[int(min(states.cho.public_level, 24)/2.4)], + + # Mood + cho_mood_word = cho_mood_word_list[int(min(states.cho.mood, 10)/1.0)], + + ### Snape ### + + # # Support + # sna_support_word = sna_support_word_list[int(min(sna_support, 15)/1.5)], + + # Friendship + sna_friendship_word = sna_friendship_word_list[int(min(states.sna.level, 100)/10)], + + ### Tonks ### + + # Reputation + ton_reputation_word = ton_reputation_word_list[int(min(states.ton.public_level, 24)/2.4)], + + # Support + # ton_support_word = ton_support_word_list[int(min(ton_support, 12)/1.2)], + + # Friendship + ton_friendship_word = ton_friendship_word_list[int(min(states.ton.level, 100)/10)], + + #ton_sluttiness_word = ton_sluttiness_word_list[int(ton_clothing_level/10)], + ) + call screen stats(xx, yy) return From f99c81b14a7020fc21c72ea1f9f143d56d43ccc1 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:07:16 +0100 Subject: [PATCH 156/249] Factorize pos (cherry picked from commit d7c8e39b08b41a28abd2a05b0b4d6870c3b230ff) --- game/scripts/interface/stats.rpy | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index 1d608d70..79d344e7 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -118,12 +118,13 @@ screen stats(xx, yy): use close_button(key=["stats", "game_menu"]) fixed: + pos (xx, yy) if settings.get("animations"): at gui_animation - use stats_menu(current_category, stats_flags, xx, yy) - use stats_menuitem(current_category, current_item, stats_flags, xx, yy) + use stats_menu(current_category, stats_flags) + use stats_menuitem(current_category, current_item, stats_flags) -screen stats_menu(current_category, stats_flags, xx, yy): +screen stats_menu(current_category, stats_flags): tag stats_menu zorder 30 modal True @@ -131,7 +132,6 @@ screen stats_menu(current_category, stats_flags, xx, yy): window: style "empty" style_prefix gui.theme('achievements') - pos (xx, yy) xysize (207, 454) use invisible_button() @@ -180,7 +180,7 @@ screen stats_menu(current_category, stats_flags, xx, yy): xysize (48, 48) add crop_image_zoom("interface/icons/head/"+stats_dict.get(category).get("ico")+("" if stats_flags[category] else "_locked")+".webp", 42, 42) align (0.5, 0.5) -screen stats_menuitem(current_category, current_item, stats_flags, xx, yy): +screen stats_menuitem(current_category, current_item, stats_flags): tag stats_menuitem zorder 30 @@ -189,7 +189,7 @@ screen stats_menuitem(current_category, current_item, stats_flags, xx, yy): window: style "empty" style_prefix gui.theme() - pos (xx+217, yy-53) + pos (217, -53) xysize (560, 507) use invisible_button() From f2d2c045af1da8c50bee4adf61b618be63b5e299 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:08:51 +0100 Subject: [PATCH 157/249] Factorize pos (cherry picked from commit e242c0e43a2fb268c05a8c1a40d0a1b539712ac7) --- game/scripts/interface/door.rpy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index 833d3a44..92346442 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -62,18 +62,18 @@ screen summon(xx, yy): use close_button(key=["summon", "game_menu"]) fixed: + pos (xx, yy) if settings.get("animations"): at gui_animation - use summon_menu(xx, yy) + use summon_menu -screen summon_menu(xx, yy): +screen summon_menu(): tag summon_menu modal True zorder 15 window: style "empty" - pos (xx, yy) xysize (207, 454) use invisible_button() From 9665d565d88da965a33afd29ed8587baf1afd2f4 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:13:17 +0100 Subject: [PATCH 158/249] Replace show screen with call screen (cherry picked from commit 1672b2381ac0afce864f8507fe3928297e3754f3) --- game/scripts/interface/door.rpy | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index 92346442..d645ac4c 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -28,27 +28,21 @@ label summon_menu(xx=723, yy=90): $ current_sorting = summon_show_busy - label .after_init: + call screen summon(xx, yy) - show screen summon(xx, yy) + return - $ renpy.dynamic(__choice = ui.interact()) - - if __choice[0] == "summon": - hide screen summon - if not __choice[2]: - $ enable_game_menu() - $ renpy.jump_out_of_context("summon_"+__choice[1].lower()) - else: - if game.daytime or __choice[1] in ["Tonks", "Snape"]: - nar "[__choice[1]] is currently busy. Try again later." - else: - nar "[__choice[1]] is currently asleep. Try again tomorrow." +label .summon(char, busy): + if not busy: + $ enable_game_menu() + $ renpy.jump_out_of_context("summon_"+char.lower()) else: - hide screen summon - return + if game.daytime or char in ["Tonks", "Snape"]: + nar "[char] is currently busy. Try again later." + else: + nar "[char] is currently asleep. Try again tomorrow." - jump .after_init + return screen summon(xx, yy): tag summon @@ -115,10 +109,10 @@ screen summon_menu(): text_xanchor 0.5 text_size 20 if not summon_dict[char]["busy"]: - action Return(["summon", char, False]) + action Call("summon_menu.summon", char, False) else: text_color "#8C8C70" - action Return(["summon", char, True]) + action Call("summon_menu.summon", char, True) add gui.format("interface/achievements/{}/spacer_left.webp") From 03d1c9a2c4fdfcfdc72979089661baf0d5f46062 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:16:28 +0100 Subject: [PATCH 159/249] Improve and fix last (cherry picked from commit acfb09516ce125451a3ba87c1fad2e3b4013c897) --- game/scripts/interface/door.rpy | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index d645ac4c..b2b13211 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -32,15 +32,17 @@ label summon_menu(xx=723, yy=90): return -label .summon(char, busy): - if not busy: - $ enable_game_menu() - $ renpy.jump_out_of_context("summon_"+char.lower()) +label .summon(char): + $ enable_game_menu() + $ renpy.jump_out_of_context("summon_"+char.lower()) + + return + +label .summon_busy(char): + if game.daytime or char in ["Tonks", "Snape"]: + nar "[char] is currently busy. Try again later." else: - if game.daytime or char in ["Tonks", "Snape"]: - nar "[char] is currently busy. Try again later." - else: - nar "[char] is currently asleep. Try again tomorrow." + nar "[char] is currently asleep. Try again tomorrow." return @@ -109,10 +111,10 @@ screen summon_menu(): text_xanchor 0.5 text_size 20 if not summon_dict[char]["busy"]: - action Call("summon_menu.summon", char, False) + action Call("summon_menu.summon", char, from_current=True) else: text_color "#8C8C70" - action Call("summon_menu.summon", char, True) + action Call("summon_menu.summon_busy", char, from_current=True) add gui.format("interface/achievements/{}/spacer_left.webp") From db26683c25e4b5e7eb7595b888ffb87ab008c7e6 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:29:45 +0100 Subject: [PATCH 160/249] Internal tweaks (cherry picked from commit d34a96284c179ef32aed145d1aa5838949d0c04a) --- game/scripts/interface/door.rpy | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index b2b13211..ed6a11c3 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -93,11 +93,11 @@ screen summon_menu(): vbox: pos (6, 6) - $ tmp_x = 0 + $ allbusy = True for char in summon_categories_sorted: if summon_dict[char]["flag"]: if summon_show_busy or not summon_dict[char]["busy"]: - $ tmp_x += 1 + $ allbusy = False frame: style "empty" xsize 195 @@ -118,19 +118,16 @@ screen summon_menu(): add gui.format("interface/achievements/{}/spacer_left.webp") - $ image_zoom = crop_image_zoom("interface/icons/head/"+summon_dict[char]["ico"]+".webp", 42, 42, summon_dict[char]["busy"]) - button: style gui.theme("overlay_button") background gui.format("interface/achievements/{}/iconbox.webp") foreground "interface/achievements/glass_iconbox.webp" xysize (48, 48) - add image_zoom align (0.5, 0.5) + add crop_image_zoom("interface/icons/head/"+summon_dict[char]["ico"]+".webp", 42, 42, summon_dict[char]["busy"]) align (0.5, 0.5) text map_transcript_loc[summon_dict[char]["loc"]] size 10 xalign 0.625 yalign 0.9 xanchor 0.5 if not states.sna.unlocked: text "You don't know anyone" size 12 at truecenter - else: - if tmp_x <= 0: - text "All characters are busy" size 12 at truecenter + elif allbusy: + text "All characters are busy" size 12 at truecenter From d1345a051d80facdb1eceb56eb353cf993a62c78 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:31:07 +0100 Subject: [PATCH 161/249] Make variables dynamic or constant, in one case (cherry picked from commit 1918def870d185cf970ca4904447b30424350f51) --- game/scripts/interface/door.rpy | 85 ++++++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 16 deletions(-) diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index ed6a11c3..796ac0c0 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -3,6 +3,7 @@ #################################### default summon_show_busy = True +define summon_categories_sorted = ("Snape", "Tonks", "Hermione", "Cho", "Luna", "Astoria", "Susan") #"Ginny", "Daphne", "Padma", "Patil", "Myrtle", "Mafkin" label summon: $ gui.in_context("summon_menu") @@ -10,23 +11,75 @@ label summon: label summon_menu(xx=723, yy=90): - $ map_transcript_loc = {"library": "Library", "room_g": "Gryffindor Dormitory", "room_s": "Slytherin Dormitory", "room_r": "Ravenclaw Dormitory", "room_h": "Hufflepuff Dormitory", "great_hall": "Great Hall", "courtyard": "Courtyard", "forest": "Forest", "greenhouse": "Greenhouse", "defense": "D.A.D.A Classroom", "training_grounds": "Training Grounds", "Lake": "Lake", "randomstudent": renpy.random.choice(["Classroom", "Bathroom", "Hagrid's Hut", "Weasley's Store", "Mafkin's Store", "Broom Cupboard", "Attic"]), "randomsnape": renpy.random.choice(["Classroom", "Boathouse", "Bathroom", "Snape's Office", "Hall", "Slytherin Dormitory", "Library", "Attic", "Forest", "Lake", "Dungeons", "Quidditch Cave", "Staircase", "Behind your door", "Room of Doom"]), "randomtonks": renpy.random.choice(["Classroom", "Bathroom", "Hall", "Gryffindor Dormitory", "Slytherin Dormitory", "Hufflepuff Dormitory", "Ravenclaw Dormitory", "Training Grounds", "Tonks' Room", "Quidditch Pitch", "Infirmary", "Sex Dungeon", "Hospital Wing", "Forest", "Lake", "Greenhouse", "Mafkin's Store"])} + $ renpy.dynamic( + map_transcript_loc = { + "library": "Library", + "room_g": "Gryffindor Dormitory", + "room_s": "Slytherin Dormitory", + "room_r": "Ravenclaw Dormitory", + "room_h": "Hufflepuff Dormitory", + "great_hall": "Great Hall", + "courtyard": "Courtyard", + "forest": "Forest", + "greenhouse": "Greenhouse", + "defense": "D.A.D.A Classroom", + "training_grounds": "Training Grounds", + "Lake": "Lake", + "randomstudent": renpy.random.choice(( + "Classroom", + "Bathroom", + "Hagrid's Hut", + "Weasley's Store", + "Mafkin's Store", + "Broom Cupboard", + "Attic")), + "randomsnape": renpy.random.choice(( + "Classroom", + "Boathouse", + "Bathroom", + "Snape's Office", + "Hall", + "Slytherin Dormitory", + "Library", + "Attic", + "Forest", + "Lake", + "Dungeons", + "Quidditch Cave", + "Staircase", + "Behind your door", + "Room of Doom")), + "randomtonks": renpy.random.choice(( + "Classroom", + "Bathroom", + "Hall", + "Gryffindor Dormitory", + "Slytherin Dormitory", + "Hufflepuff Dormitory", + "Ravenclaw Dormitory", + "Training Grounds", + "Tonks' Room", + "Quidditch Pitch", + "Infirmary", + "Sex Dungeon", + "Hospital Wing", + "Forest", + "Lake", + "Greenhouse", + "Mafkin's Store")), + }, - # Door dictionary - $ summon_dict = { - "Snape": {"ico": "snape", "flag": states.sna.unlocked, "busy": states.sna.busy, "loc": "randomsnape"}, - "Tonks": {"ico": "tonks", "flag": states.ton.unlocked, "busy": states.ton.busy, "loc": "randomtonks"}, - "Hermione": {"ico": "hermione", "flag": states.her.unlocked, "busy": states.her.busy, "loc": states.her.map_location }, - "Cho": {"ico": "cho", "flag": states.cho.unlocked, "busy": states.cho.busy, "loc": states.cho.map_location}, - "Luna": {"ico": "luna", "flag": states.lun.unlocked, "busy": states.lun.busy, "loc": states.lun.map_location}, - "Astoria": {"ico": "astoria", "flag": states.ast.unlocked, "busy": states.ast.busy, "loc": states.ast.map_location }, - "Susan": {"ico": "susan", "flag": states.sus.unlocked, "busy": states.sus.busy, "loc": states.sus.map_location} - } - - $ summon_categories_sorted = ["Snape", "Tonks", "Hermione", "Cho", "Luna", "Astoria", "Susan"] #"Ginny", "Daphne", "Padma", "Patil", "Myrtle", "Mafkin" - $ summon_categories_sorted_length = len(summon_categories_sorted) - - $ current_sorting = summon_show_busy + # Door dictionary + summon_dict = { + "Snape": {"ico": "snape", "flag": states.sna.unlocked, "busy": states.sna.busy, "loc": "randomsnape"}, + "Tonks": {"ico": "tonks", "flag": states.ton.unlocked, "busy": states.ton.busy, "loc": "randomtonks"}, + "Hermione": {"ico": "hermione", "flag": states.her.unlocked, "busy": states.her.busy, "loc": states.her.map_location }, + "Cho": {"ico": "cho", "flag": states.cho.unlocked, "busy": states.cho.busy, "loc": states.cho.map_location}, + "Luna": {"ico": "luna", "flag": states.lun.unlocked, "busy": states.lun.busy, "loc": states.lun.map_location}, + "Astoria": {"ico": "astoria", "flag": states.ast.unlocked, "busy": states.ast.busy, "loc": states.ast.map_location }, + "Susan": {"ico": "susan", "flag": states.sus.unlocked, "busy": states.sus.busy, "loc": states.sus.map_location} + }, + ) call screen summon(xx, yy) From 7beb1e4c1d4d5a14bdab2464e84b96405536a9cf Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:38:06 +0100 Subject: [PATCH 162/249] Simplify and quicken summon list iteration (cherry picked from commit 110847e9e66a436d84279f41037dfb93e428f360) --- game/scripts/interface/door.rpy | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index 796ac0c0..074839d0 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -3,7 +3,6 @@ #################################### default summon_show_busy = True -define summon_categories_sorted = ("Snape", "Tonks", "Hermione", "Cho", "Luna", "Astoria", "Susan") #"Ginny", "Daphne", "Padma", "Patil", "Myrtle", "Mafkin" label summon: $ gui.in_context("summon_menu") @@ -71,6 +70,7 @@ label summon_menu(xx=723, yy=90): # Door dictionary summon_dict = { + # the order will be the one in the menu "Snape": {"ico": "snape", "flag": states.sna.unlocked, "busy": states.sna.busy, "loc": "randomsnape"}, "Tonks": {"ico": "tonks", "flag": states.ton.unlocked, "busy": states.ton.busy, "loc": "randomtonks"}, "Hermione": {"ico": "hermione", "flag": states.her.unlocked, "busy": states.her.busy, "loc": states.her.map_location }, @@ -78,6 +78,7 @@ label summon_menu(xx=723, yy=90): "Luna": {"ico": "luna", "flag": states.lun.unlocked, "busy": states.lun.busy, "loc": states.lun.map_location}, "Astoria": {"ico": "astoria", "flag": states.ast.unlocked, "busy": states.ast.busy, "loc": states.ast.map_location }, "Susan": {"ico": "susan", "flag": states.sus.unlocked, "busy": states.sus.busy, "loc": states.sus.map_location} + #"Ginny", "Daphne", "Padma", "Patil", "Myrtle", "Mafkin" }, ) @@ -147,9 +148,9 @@ screen summon_menu(): vbox: pos (6, 6) $ allbusy = True - for char in summon_categories_sorted: - if summon_dict[char]["flag"]: - if summon_show_busy or not summon_dict[char]["busy"]: + for char, char_dict in summon_dict.items(): + if char_dict["flag"]: + if summon_show_busy or not char_dict["busy"]: $ allbusy = False frame: style "empty" @@ -163,7 +164,7 @@ screen summon_menu(): text_xalign 0.6 text_yalign 0.5 text_xanchor 0.5 text_size 20 - if not summon_dict[char]["busy"]: + if not char_dict["busy"]: action Call("summon_menu.summon", char, from_current=True) else: text_color "#8C8C70" @@ -176,9 +177,9 @@ screen summon_menu(): background gui.format("interface/achievements/{}/iconbox.webp") foreground "interface/achievements/glass_iconbox.webp" xysize (48, 48) - add crop_image_zoom("interface/icons/head/"+summon_dict[char]["ico"]+".webp", 42, 42, summon_dict[char]["busy"]) align (0.5, 0.5) + add crop_image_zoom("interface/icons/head/"+char_dict["ico"]+".webp", 42, 42, char_dict["busy"]) align (0.5, 0.5) - text map_transcript_loc[summon_dict[char]["loc"]] size 10 xalign 0.625 yalign 0.9 xanchor 0.5 + text map_transcript_loc[char_dict["loc"]] size 10 xalign 0.625 yalign 0.9 xanchor 0.5 if not states.sna.unlocked: text "You don't know anyone" size 12 at truecenter From 93526daa17b99deb548b867b32fb42c3bebaac62 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:41:56 +0100 Subject: [PATCH 163/249] Use scene statement instead of equivalent (cherry picked from commit d132436843004f2009b3ff079e45f310606ef7f7) --- game/scripts/interface/credits.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/interface/credits.rpy b/game/scripts/interface/credits.rpy index 71f8e3a4..d99494ef 100644 --- a/game/scripts/interface/credits.rpy +++ b/game/scripts/interface/credits.rpy @@ -61,7 +61,7 @@ label credits: if not _menu: play music "music/Only 115 (Electro Loop)_125 BPM.ogg" fadein 1 fadeout 1 if_changed - $ renpy.scene("screens") + scene onlayer screens show screen credits(credits_text) with dissolve From 21c170e25655bb85b57d286d5e41cf308c77dc0e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:46:18 +0100 Subject: [PATCH 164/249] Don't use protected variable name (cherry picked from commit 2f2a9b985bd93955a9a2c87730024ead8145d725) --- game/scripts/interface/color_picker.rpy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/interface/color_picker.rpy b/game/scripts/interface/color_picker.rpy index c75bbfb9..46d88932 100644 --- a/game/scripts/interface/color_picker.rpy +++ b/game/scripts/interface/color_picker.rpy @@ -12,7 +12,7 @@ screen color_picker(color, alpha, title, pos_xy, color_default): default hue = 0 default sat = 0 default val = 0 - default _alpha = 0 # Avoid name conflict with 'alpha' screen variable in other active screens + default alpha_ = 0 # Avoid name conflict with 'alpha' screen variable in other active screens default edit_mode = False default preview_old = Solid(rgba) $ preview_new = Solid(rgba) @@ -213,7 +213,7 @@ screen color_picker(color, alpha, title, pos_xy, color_default): Transform(alpha_gradient_image, matrixcolor=ColorizeMatrix(rgba, rgba))) bar: xysize (255, 30) - value ScreenVariableValue("_alpha", range=1.0, action=Function(color_picker_update_rgba)) + value ScreenVariableValue("alpha_", range=1.0, action=Function(color_picker_update_rgba)) base_bar icon_frame thumb Image(gui.format("interface/color_picker/{}/cursor_v.webp"), xalign=0.5) thumb_offset 0 @@ -309,7 +309,7 @@ init -1 python: scope["hue"] = 1 - h scope["sat"] = s scope["val"] = v - scope["_alpha"] = a / 255.0 + scope["alpha_"] = a / 255.0 def color_picker_update_rgba(): scope = renpy.get_screen("color_picker").scope @@ -317,7 +317,7 @@ init -1 python: r = int(r * 255) g = int(g * 255) b = int(b * 255) - a = int(scope["_alpha"] * 255) + a = int(scope["alpha_"] * 255) scope["rgba"] = (r, g, b, a) update_picking_color(scope["rgba"]) renpy.restart_interaction() From a516e76f9be8fdcbb94877c522adda1565120005 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:46:34 +0100 Subject: [PATCH 165/249] Better pass kwargs this is not py2 anymore (cherry picked from commit 6b2766e66852881a1f06d4b74b597d2c51feae75) --- game/scripts/interface/color_picker.rpy | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/game/scripts/interface/color_picker.rpy b/game/scripts/interface/color_picker.rpy index 46d88932..9977e8aa 100644 --- a/game/scripts/interface/color_picker.rpy +++ b/game/scripts/interface/color_picker.rpy @@ -428,9 +428,7 @@ init -1 python: class SVGradientButton(ImageButton): def __init__(self, on_click, idle_image, *args, **kwargs): - kwargs['sensitive'] = True - kwargs['action'] = NullAction() - super(SVGradientButton, self).__init__(idle_image, *args, **kwargs) + super(SVGradientButton, self).__init__(idle_image, *args, sensitive=True, action=NullAction(), **kwargs) self.width = 0 self.height = 0 self.on_click = on_click From 1e96385c47dfe6717e441801f4da31a1ac1fb8d8 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:52:39 +0100 Subject: [PATCH 166/249] Remove dependency (cherry picked from commit 3fef9413662908223c262470c9285ec352c08998) --- game/scripts/interface/color_picker.rpy | 6 +++--- game/scripts/utility/common_functions.rpy | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/game/scripts/interface/color_picker.rpy b/game/scripts/interface/color_picker.rpy index 9977e8aa..4ff9cad0 100644 --- a/game/scripts/interface/color_picker.rpy +++ b/game/scripts/interface/color_picker.rpy @@ -19,7 +19,7 @@ screen color_picker(color, alpha, title, pos_xy, color_default): $ gradient_map = SVGradientButton( color_picker_clicked, Fixed( - Color( tuple( x * 255 for x in colorsys.hsv_to_rgb(1 - hue, 1, 1) ) ), + Color(hsv=(1-hue, 1, 1)), Frame("interface/color_picker/saturation_value_gradient.webp") ), xysize=(255, 255), @@ -305,7 +305,7 @@ init -1 python: def color_picker_update_hsva(): scope = renpy.get_screen("color_picker").scope (r, g, b, a) = scope["rgba"] - (h, s, v) = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0) + (h, s, v) = Color((r, g, b)).hsv scope["hue"] = 1 - h scope["sat"] = s scope["val"] = v @@ -313,7 +313,7 @@ init -1 python: def color_picker_update_rgba(): scope = renpy.get_screen("color_picker").scope - (r, g, b) = colorsys.hsv_to_rgb(1 - scope["hue"], scope["sat"], scope["val"]) + (r, g, b) = Color(hsv=(1 - scope["hue"], scope["sat"], scope["val"])).rgb r = int(r * 255) g = int(g * 255) b = int(b * 255) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index 2f7eac57..044f9772 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -5,7 +5,6 @@ init python early: import math import random import pygame - import colorsys import fnmatch import posixpath import re From 0d8c4df1fd9ab4e9274591da981b21bb8ee87d89 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 03:52:56 +0100 Subject: [PATCH 167/249] Remove mutable in signature and pop todo (cherry picked from commit 15b15b90858039461cf9290f652f4cb5fc387d1c) --- game/scripts/interface/color_picker.rpy | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/game/scripts/interface/color_picker.rpy b/game/scripts/interface/color_picker.rpy index 4ff9cad0..8d60eda7 100644 --- a/game/scripts/interface/color_picker.rpy +++ b/game/scripts/interface/color_picker.rpy @@ -234,11 +234,9 @@ define hue_gradient_image = HueSlider() init -1 python: - def color_picker(color=[0,0,0,0], alpha=True, title="Pick a colour", pos_xy=(240, 130), color_default=None): - # TODO: Remove external dependencies and utilise built-in Color class instead. - + def color_picker(color=(0,0,0,0), alpha=True, title="Pick a colour", pos_xy=(240, 130), color_default=None): global picking_color - picking_color = color # Color object (list) to be updated live + picking_color = list(color) # Color object (list) to be updated live start_color = list(color) # Keep a copy renpy.show_screen("color_picker", tuple(color), alpha, title, pos_xy, color_default) From c5fb9a630cd8cf3979a748a6a71cbd4697dcb44f Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 04:03:52 +0100 Subject: [PATCH 168/249] Merge labels into menus (cherry picked from commit a29b7ec28b6b1ab3894985822218368ea8acef04) --- game/scripts/interface/cheats.rpy | 39 +++++++++---------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/game/scripts/interface/cheats.rpy b/game/scripts/interface/cheats.rpy index 71612bf8..6b0931bb 100644 --- a/game/scripts/interface/cheats.rpy +++ b/game/scripts/interface/cheats.rpy @@ -11,9 +11,7 @@ label cheats: menu: "-Inventory-": - label .general: - - menu: + menu .general: "-Add 500 Gold-" (icon="interface/icons/small/gold.webp"): $ game.gold += 500 jump cheats.general @@ -86,12 +84,9 @@ label cheats: jump cheats.general "-Characters-": - label .characters: - - menu: + menu .characters: "-Tonks-" (icon="interface/icons/small/tonks.webp") if states.ton.unlocked: - label .tonks: - menu: + menu .tonks: "-Reset mood- ([states.ton.mood])" if states.ton.mood != 0: $ states.ton.mood = 0 nar "Tonks is no longer mad at you." @@ -106,8 +101,7 @@ label cheats: jump cheats.tonks "-Hermione-" (icon="interface/icons/small/hermione.webp") if states.her.unlocked: - label .hermione: - menu: + menu .hermione: "-Reset mood- ([states.her.mood])" if states.her.mood != 0: $ states.her.mood = 0 nar "Hermione is no longer mad at you." @@ -128,8 +122,7 @@ label cheats: jump cheats.hermione "-Cho-" (icon="interface/icons/small/cho.webp") if states.cho.unlocked: - label .cho: - menu: + menu .cho: "-Reset mood- ([states.cho.mood])" if states.cho.mood != 0: $ states.cho.mood = 0 nar "Cho is no longer mad at you." @@ -150,8 +143,7 @@ label cheats: jump cheats.cho "-Luna-" (icon="interface/icons/small/luna.webp") if states.lun.unlocked: - label .luna: - menu: + menu .luna: "-Reset mood- ([states.cho.mood])" if states.lun.mood != 0: $ states.lun.mood = 0 nar "Luna is no longer mad at you." @@ -172,8 +164,7 @@ label cheats: jump cheats.luna "-Astoria-" (icon="interface/icons/small/astoria.webp") if states.ast.unlocked: - label .astoria: - menu: + menu .astoria: "-Reset mood-" if states.ast.mood != 0: $ states.ast.mood = 0 nar "Astoria is no longer mad at you." @@ -194,8 +185,7 @@ label cheats: jump cheats.astoria "-Susan-" (icon="interface/icons/small/huff.webp") if states.sus.unlocked: - label .susan: - menu: + menu .susan: "-Reset mood- ([states.cho.mood])" if states.sus.mood != 0: $ states.sus.mood = 0 nar "Susan is no longer mad at you." @@ -219,9 +209,7 @@ label cheats: jump cheats "-House Points-": - label .points: - - menu: + menu .points: "-Add 200 Slytherin Points-" (icon="interface/icons/small/slyt.webp"): $ slytherin = clamp(slytherin+200, 1, 999999) call update_ui_points @@ -266,9 +254,7 @@ label cheats: jump cheats.points "-Progression-": - label .progression: - - menu: + menu .progression: "-Unlock all Mirror Stories-": python: for i in mirror.items: @@ -303,8 +289,7 @@ label cheats: menu: "-Genie Outfits-": - label .genie: - menu: + menu .genie: "-Use Default Outfit-": show genie robes hide genie @@ -359,8 +344,6 @@ label cheats: nar "All wardrobes have been unlocked." "-Permanent body alteration-": - label .alteration: - # Note: itertools.cycle breaks Ren'py so we have to rely on a good 'ol if statement # *Sigh* I wish we had match statement in python 2 :( # From d38d44268805f10f94730e6c6435754bb9106387 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 04:04:15 +0100 Subject: [PATCH 169/249] Fix variable name and move defaults (cherry picked from commit f6c0054be03f0d2406a2d6c59e9a14ab3734992c) --- game/scripts/interface/cheats.rpy | 45 +++++++++++++++---------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/game/scripts/interface/cheats.rpy b/game/scripts/interface/cheats.rpy index 6b0931bb..94c45677 100644 --- a/game/scripts/interface/cheats.rpy +++ b/game/scripts/interface/cheats.rpy @@ -1,9 +1,11 @@ - default cheat_wardrobe_alpha = False default skip_duel = False default experimental_cheats = False +default __curr_breast_type = 0 +default __curr_ass_type = 0 + label cheats: if not renpy.seen_label("cheats"): @@ -349,41 +351,38 @@ label cheats: # # Years later: Python 3 switch cases are finally here, but are not usable in renpy. :( - default _curr_breast_type = 0 - default _curr_ass_type = 0 - - menu: - "Hermione Breasts ([_curr_breast_type])" (icon="interface/icons/small/hermione.webp"): + menu .alteration: + "Hermione Breasts ([__curr_breast_type])" (icon="interface/icons/small/hermione.webp"): python: - if _curr_breast_type == 0: + if __curr_breast_type == 0: hermione.equip(her_chest_breasts1) - _curr_breast_type = 1 - elif _curr_breast_type == 1: + __curr_breast_type = 1 + elif __curr_breast_type == 1: hermione.equip(her_chest_breasts2) - _curr_breast_type = 2 - elif _curr_breast_type == 2: + __curr_breast_type = 2 + elif __curr_breast_type == 2: hermione.equip(her_chest_breasts3) - _curr_breast_type = 3 - elif _curr_breast_type == 3: + __curr_breast_type = 3 + elif __curr_breast_type == 3: hermione.unequip("chest") - _curr_breast_type = 0 + __curr_breast_type = 0 jump cheats.alteration - "Hermione Ass ([_curr_ass_type])" (icon="interface/icons/small/hermione.webp"): + "Hermione Ass ([__curr_ass_type])" (icon="interface/icons/small/hermione.webp"): python: - if _curr_ass_type == 0: + if __curr_ass_type == 0: hermione.equip(her_hips_ass1) - _curr_ass_type = 1 - elif _curr_ass_type == 1: + __curr_ass_type = 1 + elif __curr_ass_type == 1: hermione.equip(her_hips_ass2) - _curr_ass_type = 2 - elif _curr_ass_type == 2: + __curr_ass_type = 2 + elif __curr_ass_type == 2: hermione.equip(her_hips_ass3) - _curr_ass_type = 3 - elif _curr_ass_type == 3: + __curr_ass_type = 3 + elif __curr_ass_type == 3: hermione.unequip("hips") - _curr_ass_type = 0 + __curr_ass_type = 0 jump cheats.alteration From c3c0969be824d0bb0c4845259b18c4f76b58c9ac Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 04:05:49 +0100 Subject: [PATCH 170/249] Sort inplace and skip unused variable (cherry picked from commit e84d5cbdf01f37cb8dd04920c06223fd52307f26) --- game/scripts/interface/brewing.rpy | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/game/scripts/interface/brewing.rpy b/game/scripts/interface/brewing.rpy index 10366130..d18a40a6 100644 --- a/game/scripts/interface/brewing.rpy +++ b/game/scripts/interface/brewing.rpy @@ -9,7 +9,7 @@ init python: item = sorted(item, key=lambda x: natsort_key(x.name)) if sortby == "z-A": - item = sorted(item, key=lambda x: natsort_key(x.name), reverse=True) + item.sort(key=lambda x: natsort_key(x.name), reverse=True) return item @@ -25,7 +25,6 @@ label brewing_menu(xx=150, yy=90): current_sorting = "A-z" menu_items = brewing_sortfilter(inventory.get_instances_of_type("potion"), current_sorting, current_filter) - menu_items_length = len(menu_items) current_item = next(iter(menu_items), None) show screen brewing(xx, yy) @@ -42,7 +41,6 @@ label brewing_menu(xx=150, yy=90): $ current_filter = "Unlocked" $ menu_items = brewing_sortfilter(inventory.get_instances_of_type("potion"), current_sorting, current_filter) - $ menu_items_length = len(menu_items) $ current_item = next(iter(menu_items), None) elif __choice == "sort": if current_sorting == "A-z": @@ -51,7 +49,6 @@ label brewing_menu(xx=150, yy=90): $ current_sorting = "A-z" $ menu_items = brewing_sortfilter(inventory.get_instances_of_type("potion"), current_sorting, current_filter) - $ menu_items_length = len(menu_items) #$ current_item = next(iter(menu_items), None) elif __choice[0] == "make": if __choice[1].has_ingredients(): From 726406e11b652df90b53a6f4414ad7264223ffa6 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 04:07:53 +0100 Subject: [PATCH 171/249] Simplify menu position (cherry picked from commit 9479859eddefa1465b0c28e4eb71ce95ffac59f3) --- game/scripts/interface/brewing.rpy | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/game/scripts/interface/brewing.rpy b/game/scripts/interface/brewing.rpy index d18a40a6..39f568fe 100644 --- a/game/scripts/interface/brewing.rpy +++ b/game/scripts/interface/brewing.rpy @@ -76,16 +76,16 @@ screen brewing(xx, yy): use close_button fixed: + pos (xx, yy) if settings.get("animations"): at gui_animation - use brewing_menu(xx, yy) - use brewing_menuitem(xx, yy) + use brewing_menu + use brewing_menuitem -screen brewing_menu(xx, yy): +screen brewing_menu(): window: style "empty" style_prefix gui.theme('achievements') - pos (xx, yy) xysize (207, 454) use invisible_button() @@ -140,13 +140,13 @@ screen brewing_menu(xx, yy): textbutton "Show: [current_filter]" action Return("filter") textbutton "Sort by: [current_sorting]" action Return("sort") -screen brewing_menuitem(xx, yy): +screen brewing_menuitem(): default turned_on = False default drop_ingredients = False window: style "empty" - pos (xx+217, yy-53) + pos (217, -53) xysize (560, 507) use invisible_button() From 30747a50b0b4d33d3c2e1c4c9c2a0741da4d6318 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 17 Nov 2023 04:37:45 +0100 Subject: [PATCH 172/249] Don't use mutables in signatures (cherry picked from commit a88706142f7322c85a8b63163e0e16c46113475e) --- game/scripts/interface/book.rpy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/scripts/interface/book.rpy b/game/scripts/interface/book.rpy index 3954267d..76cf18a5 100644 --- a/game/scripts/interface/book.rpy +++ b/game/scripts/interface/book.rpy @@ -1,12 +1,12 @@ init python: class book_readable_class(object): - def __init__(self, title, contents=[], **kwargs): + def __init__(self, title, contents=(), **kwargs): self.title = title self.page = 0 self.overflow=None self.title = title - self.contents = contents + self.contents = list(contents) self.__dict__.update(**kwargs) self.pages = len(self.contents)-1 From 51e2f49606103a8aca4d324e7e48c17fce4602c4 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 18 Nov 2023 02:01:37 +0100 Subject: [PATCH 173/249] Avoid using an actual image reference instead of direct null (cherry picked from commit f8251f921b6287030a506b7906eadcb91fc94d30) --- game/scripts/animations/ani_astoria.rpy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/animations/ani_astoria.rpy b/game/scripts/animations/ani_astoria.rpy index 7220792a..6d1f0bca 100644 --- a/game/scripts/animations/ani_astoria.rpy +++ b/game/scripts/animations/ani_astoria.rpy @@ -88,11 +88,11 @@ image ch_ast wand_imperio: random_blink("characters/astoria/chibis/wand_imperio/ag_head_02.webp", "characters/astoria/chibis/wand_imperio/ag_head_01.webp") contains: - "blank" + Null() pause.12 "characters/astoria/chibis/wand_imperio/ag_head_03.webp" pause 1 - "blank" + Null() contains: xpos 78 @@ -113,7 +113,7 @@ image ch_ast wand_imperio: alpha 1.0 "characters/astoria/chibis/wand_imperio/smoke.webp" linear 1.0 xzoom 1.0 xpos -34 ypos 37 - "blank" + Null() contains: xpos -34 From 47da88a59ef8fcb1a39bc411c36cce13b8661a77 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 18 Nov 2023 03:58:59 +0100 Subject: [PATCH 174/249] Merge fix --- game/scripts/interface/inventory.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index c1702c1a..1bdf5744 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -329,7 +329,7 @@ screen inventory_menuitem(xx, yy): grid 9 4: style "empty" pos (24, 113) - spacing 5 + spacing 10 for it_item in menu_items[current_page*items_shown:(current_page+1)*items_shown]: frame: From 2ef20d57dae9c19e93295d0e23179ebb6bea89eb Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 17:53:07 +0000 Subject: [PATCH 175/249] Clarify and simplify weather (by Gouvernathor) remove two blank images (useless and slower than Null()) clarify in weather.rpy which are images directly shown on the screen and not just ingredients for the others simplify the screen code --- .../rooms/main_room/weather/lightning_01.webp | 3 --- .../rooms/main_room/weather/lightning_05.webp | 3 --- .../cho/events/quidditch/gryffindor_match.rpy | 2 +- game/scripts/rooms/main_room/init.rpy | 3 +-- .../rooms/main_room/objects/weather.rpy | 22 +++++++++---------- 5 files changed, 13 insertions(+), 20 deletions(-) delete mode 100644 game/images/rooms/main_room/weather/lightning_01.webp delete mode 100644 game/images/rooms/main_room/weather/lightning_05.webp diff --git a/game/images/rooms/main_room/weather/lightning_01.webp b/game/images/rooms/main_room/weather/lightning_01.webp deleted file mode 100644 index de7e8fb0..00000000 --- a/game/images/rooms/main_room/weather/lightning_01.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f7fee759e0b3cdf4c9dc6cda943bddeb6ada45b31e7171326e9e9695528e5b0a -size 34 diff --git a/game/images/rooms/main_room/weather/lightning_05.webp b/game/images/rooms/main_room/weather/lightning_05.webp deleted file mode 100644 index de7e8fb0..00000000 --- a/game/images/rooms/main_room/weather/lightning_05.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f7fee759e0b3cdf4c9dc6cda943bddeb6ada45b31e7171326e9e9695528e5b0a -size 34 diff --git a/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy b/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy index 1d3b56ef..dae3653e 100644 --- a/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy +++ b/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy @@ -1301,7 +1301,7 @@ label gryffindor_match: # Cuts to Cho who has taken off Gloves, goggles and leggings. Still wearing top, skirt, bra # Cho takes her top off - # Transition to Cho on her broom + # Transition to Cho on her broom $ cho.equip(cho_outfit_quidditch_gryffindor) $ cho.set_pose("broom") $ cho.animation = sprite_fly_idle diff --git a/game/scripts/rooms/main_room/init.rpy b/game/scripts/rooms/main_room/init.rpy index 73bddc2f..44ac03d3 100644 --- a/game/scripts/rooms/main_room/init.rpy +++ b/game/scripts/rooms/main_room/init.rpy @@ -25,13 +25,12 @@ screen main_room(): sensitive room_menu_active default objects = sorted(main_room.objects, key=lambda x: x.zorder) - default weather = "weather_[game.weather]" # Hotkeys if room_menu_active and game.day > 1 and not renpy.android: use hotkeys_main - add weather pos (430, 218) anchor (0.5, 0.5) + add "weather_[game.weather]" xycenter (430, 218) # Walls if game.daytime: diff --git a/game/scripts/rooms/main_room/objects/weather.rpy b/game/scripts/rooms/main_room/objects/weather.rpy index 94e77052..3a65ade5 100644 --- a/game/scripts/rooms/main_room/objects/weather.rpy +++ b/game/scripts/rooms/main_room/objects/weather.rpy @@ -28,13 +28,13 @@ transform cloud_move: pause 7 repeat -image weather_clear = ConditionSwitch( +image weather_clear = ConditionSwitch( # final "game.daytime", "images/rooms/main_room/weather/sky.webp", "game.moon", "images/rooms/main_room/weather/night_sky_moon.webp", "True", "images/rooms/main_room/weather/night_sky.webp", ) -image weather_overcast = ConditionSwitch( +image weather_overcast = ConditionSwitch( # final "game.daytime", "images/rooms/main_room/weather/sky_overcast.webp", "game.moon", "images/rooms/main_room/weather/night_sky_moon_overcast.webp", "True", "images/rooms/main_room/weather/night_sky_overcast.webp", @@ -73,7 +73,7 @@ image weather_cloudy_fx: pause 2 repeat -image weather_cloudy = Fixed("weather_clear", "weather_cloudy_fx", fit_first=True) +image weather_cloudy = Fixed("weather_clear", "weather_cloudy_fx", fit_first=True) # final image weather_rain_fx: animation @@ -85,7 +85,7 @@ image weather_rain_fx: pause.1 repeat -image weather_rain = Fixed("weather_overcast", "weather_rain_fx", fit_first=True) +image weather_rain = Fixed("weather_overcast", "weather_rain_fx", fit_first=True) # final image weather_snow_fx: animation @@ -111,7 +111,7 @@ image weather_snow_fx: pause.07 repeat -image weather_snow = Fixed("weather_overcast", "weather_snow_fx", fit_first=True) +image weather_snow = Fixed("weather_overcast", "weather_snow_fx", fit_first=True) # final image weather_blizzard_fx: animation @@ -137,7 +137,7 @@ image weather_blizzard_fx: pause.05 repeat -image weather_blizzard= Fixed("weather_overcast", "weather_blizzard_fx", fit_first=True) +image weather_blizzard = Fixed("weather_overcast", "weather_blizzard_fx", fit_first=True) # final image weather_storm_fx: animation @@ -145,7 +145,7 @@ image weather_storm_fx: parallel: animation pause 20 - "images/rooms/main_room/weather/lightning_01.webp" + Null() pause.1 "images/rooms/main_room/weather/lightning_02.webp" pause.1 @@ -153,15 +153,15 @@ image weather_storm_fx: pause.1 "images/rooms/main_room/weather/lightning_04.webp" pause.1 - "images/rooms/main_room/weather/lightning_05.webp" + Null() pause.1 "images/rooms/main_room/weather/lightning_06.webp" pause.1 - "images/rooms/main_room/weather/lightning_05.webp" + Null() pause.1 "images/rooms/main_room/weather/lightning_06.webp" pause.1 - "images/rooms/main_room/weather/lightning_05.webp" + Null() pause 20 repeat @@ -175,4 +175,4 @@ image weather_storm_fx: pause.1 repeat -image weather_storm = Fixed("weather_overcast", "weather_storm_fx", fit_first=True) +image weather_storm = Fixed("weather_overcast", "weather_storm_fx", fit_first=True) # final From 26b1e7f0515b0d7f7ab071f4d0135ecd5f5366bb Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 17:54:06 +0000 Subject: [PATCH 176/249] Fix weather storm and create the weather image tag (by Gouvernathor) --- game/scripts/rooms/main_room/init.rpy | 2 +- .../rooms/main_room/objects/weather.rpy | 27 +++++++------------ 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/game/scripts/rooms/main_room/init.rpy b/game/scripts/rooms/main_room/init.rpy index 44ac03d3..d293bf00 100644 --- a/game/scripts/rooms/main_room/init.rpy +++ b/game/scripts/rooms/main_room/init.rpy @@ -30,7 +30,7 @@ screen main_room(): if room_menu_active and game.day > 1 and not renpy.android: use hotkeys_main - add "weather_[game.weather]" xycenter (430, 218) + add "weather [game.weather]" xycenter (430, 218) # Walls if game.daytime: diff --git a/game/scripts/rooms/main_room/objects/weather.rpy b/game/scripts/rooms/main_room/objects/weather.rpy index 3a65ade5..b609c637 100644 --- a/game/scripts/rooms/main_room/objects/weather.rpy +++ b/game/scripts/rooms/main_room/objects/weather.rpy @@ -28,13 +28,13 @@ transform cloud_move: pause 7 repeat -image weather_clear = ConditionSwitch( # final +image weather clear = ConditionSwitch( # final "game.daytime", "images/rooms/main_room/weather/sky.webp", "game.moon", "images/rooms/main_room/weather/night_sky_moon.webp", "True", "images/rooms/main_room/weather/night_sky.webp", ) -image weather_overcast = ConditionSwitch( # final +image weather overcast = ConditionSwitch( # final "game.daytime", "images/rooms/main_room/weather/sky_overcast.webp", "game.moon", "images/rooms/main_room/weather/night_sky_moon_overcast.webp", "True", "images/rooms/main_room/weather/night_sky_overcast.webp", @@ -73,7 +73,7 @@ image weather_cloudy_fx: pause 2 repeat -image weather_cloudy = Fixed("weather_clear", "weather_cloudy_fx", fit_first=True) # final +image weather cloudy = Fixed("weather clear", "weather_cloudy_fx", fit_first=True) # final image weather_rain_fx: animation @@ -85,7 +85,7 @@ image weather_rain_fx: pause.1 repeat -image weather_rain = Fixed("weather_overcast", "weather_rain_fx", fit_first=True) # final +image weather rain = Fixed("weather overcast", "weather_rain_fx", fit_first=True) # final image weather_snow_fx: animation @@ -111,7 +111,7 @@ image weather_snow_fx: pause.07 repeat -image weather_snow = Fixed("weather_overcast", "weather_snow_fx", fit_first=True) # final +image weather snow = Fixed("weather overcast", "weather_snow_fx", fit_first=True) # final image weather_blizzard_fx: animation @@ -137,12 +137,12 @@ image weather_blizzard_fx: pause.05 repeat -image weather_blizzard = Fixed("weather_overcast", "weather_blizzard_fx", fit_first=True) # final +image weather blizzard = Fixed("weather overcast", "weather_blizzard_fx", fit_first=True) # final image weather_storm_fx: animation - parallel: + contains: animation pause 20 Null() @@ -165,14 +165,7 @@ image weather_storm_fx: pause 20 repeat - parallel: - animation - "images/rooms/main_room/weather/rain_01.webp" - pause.1 - "images/rooms/main_room/weather/rain_02.webp" - pause.1 - "images/rooms/main_room/weather/rain_03.webp" - pause.1 - repeat + contains: + "weather_rain_fx" -image weather_storm = Fixed("weather_overcast", "weather_storm_fx", fit_first=True) # final +image weather storm = Fixed("weather overcast", "weather_storm_fx", fit_first=True) # final From d4726d3be218ea3882e0c7dac973664d172bd047 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 17:56:01 +0000 Subject: [PATCH 177/249] Fix and improve big_bang (by Gouvernathor) the "on show" wasn't working for some reason and wasn't necessary anyway easeout was probaly mixed up with easein, in any case easein renders much better using easein_cubic for a sharper explosion --- game/scripts/events/ending_after.rpy | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/game/scripts/events/ending_after.rpy b/game/scripts/events/ending_after.rpy index de3784bc..6bad670f 100644 --- a/game/scripts/events/ending_after.rpy +++ b/game/scripts/events/ending_after.rpy @@ -344,9 +344,7 @@ screen big_bang(bang=False): add "images/misc/bang.webp": at transform: zoom 0.0 - anchor (0.5, 0.5) - pos (540, 300) - on show: - easeout 15.0 zoom 3 + xycenter (540, 300) + easein_cubic 15 zoom 4 else: - add "glow_effect" zoom 0.2 anchor (0.5, 0.5) align (0.5, 0.5) + add "glow_effect" zoom 0.2 align (0.5, 0.5) From 606c9c55e0bc4e60eaf9fc5c8c74e50c39d48a37 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 17:57:18 +0000 Subject: [PATCH 178/249] Merge fix --- .../rooms/main_room/objects/weather.rpy | 73 +++++++++++-------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/game/scripts/rooms/main_room/objects/weather.rpy b/game/scripts/rooms/main_room/objects/weather.rpy index b609c637..cb5aa46e 100644 --- a/game/scripts/rooms/main_room/objects/weather.rpy +++ b/game/scripts/rooms/main_room/objects/weather.rpy @@ -40,40 +40,53 @@ image weather overcast = ConditionSwitch( # final "True", "images/rooms/main_room/weather/night_sky_overcast.webp", ) -image weather_cloudy_clouds_night = Composite( - (155, 230), - (40, 40), "images/rooms/main_room/weather/night_cloud_01.webp", - (60, 60), "images/rooms/main_room/weather/night_cloud_02.webp", - (80, 80), "images/rooms/main_room/weather/night_cloud_03.webp", - ) - -image weather_cloudy_clouds_day = Composite( - (155, 230), - (40, 40), "images/rooms/main_room/weather/day_cloud_01.webp", - (60, 60), "images/rooms/main_room/weather/day_cloud_02.webp", - (80, 80), "images/rooms/main_room/weather/day_cloud_03.webp", - ) - -image weather_cloudy_clouds = ConditionSwitch( - "game.daytime", "weather_cloudy_clouds_day", - "True", "weather_cloudy_clouds_night", - ) - -image weather_cloudy_fx: - animation - "weather_cloudy_clouds" +transform cloud_move: + subpixel True choice: - pos (-100, 0) + yoffset 0 choice: - pos (-100, 15) + yoffset 15 choice: - pos (-100, 30) - - ease 15.0 xpos 120 - pause 2 + yoffset 30 + xoffset -120 + choice: + linear 12 xoffset 100 + choice: + linear 15 xoffset 100 + choice: + linear 18 xoffset 100 repeat -image weather cloudy = Fixed("weather clear", "weather_cloudy_fx", fit_first=True) # final +transform weather_cloudy_clouds(tim): + # tim is either "day" or "night" + xysize (155, 230) + + contains: + animation + pos (40, 40) + pause 10 + "images/rooms/main_room/weather/"+tim+"_cloud_01.webp" + cloud_move + + contains: + animation + pos (60, 60) + pause 5 + "images/rooms/main_room/weather/"+tim+"_cloud_02.webp" + cloud_move + + contains: + animation + pos (80, 80) + "images/rooms/main_room/weather/"+tim+"_cloud_03.webp" + cloud_move + +image weather_cloudy_clouds = ConditionSwitch( + "game.daytime", weather_cloudy_clouds("day"), + "True", weather_cloudy_clouds("night"), +) + +image weather cloudy = Fixed("weather clear", "weather_cloudy_clouds", fit_first=True) # final image weather_rain_fx: animation @@ -168,4 +181,4 @@ image weather_storm_fx: contains: "weather_rain_fx" -image weather storm = Fixed("weather overcast", "weather_storm_fx", fit_first=True) # final +image weather storm = Fixed("weather overcast", "weather_storm_fx", fit_first=True) # final \ No newline at end of file From 9d8444241b78ae2cda1d7cf13e49b748c6a3a860 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 18 Nov 2023 19:47:40 +0100 Subject: [PATCH 179/249] Optimize choice screen constants and variables (cherry picked from commit c77f2ca46e405a95f5fab6af75bfd4ae348f0a3d) --- game/scripts/gui/say.rpy | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index 5029a34f..71c7a96b 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -153,6 +153,9 @@ style quick_alt_button_text: # # https://www.renpy.org/doc/html/screen_special.html#choice +define blacklist_screens = {"say", "letter", "bld1"} +define choice_width = int(config.screen_width/2) + screen choice(items, menu_yalign=.6): tag menu modal True @@ -160,7 +163,6 @@ screen choice(items, menu_yalign=.6): style_prefix gui.theme("menu") - default blacklist_screens = {"say", "letter", "bld1"} # Combine sets default blacklist_tags = set(get_character_tag(x) for x in states.dolls) # Dont add the fade if character or saybox is present (They have their own triggers for fading) @@ -174,9 +176,8 @@ screen choice(items, menu_yalign=.6): vbox: spacing 0 - $ choice_width = int(config.screen_width/2) - $ max_progress = max([len(e.kwargs.get("progress", [])) for e in items]) + default max_progress = max(len(e.kwargs.get("progress", [])) for e in items) for i, entry in enumerate(items, 1): $ style_part = entry.kwargs.get("style", None) From f871b036dd0c388263f855419220f5e7d69b95f5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sun, 19 Nov 2023 00:23:33 +0100 Subject: [PATCH 180/249] Improve threading when predicting the wardrobe don't use single-underscore names if available, use the thread-safer invoke_in_main_thread (not required when setting the global variables) set __lock to True outside of the thread, otherwise if the thread starts late, the while loop is skipped call get_character_object in the main thread (cherry picked from commit 7a25a13926cd40e7f657f6336062aa48255b4b64) --- game/scripts/wardrobe/wardrobe.rpy | 42 ++++++++++++++++++------------ 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index c1e4db2a..3b9eddee 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -1,4 +1,3 @@ - default wardrobe_music = False default wardrobe_chitchats = True default wardrobe_autosave = False @@ -19,20 +18,28 @@ define wardrobe_subcategories_sorted = { define wardrobe_categories = ("head", "piercings & tattoos", "upper body", "upper undergarment", "lower body", "lower undergarment", "legwear", "misc") define wardrobe_outfit_schedule = ("day", "night", "cloudy", "rainy", "snowy") +default __lock = False +default __predicted = None init python: + def preload_wardrobe_assets(c): + global __lock, __predicted - _lock = False + if renpy.version_tuple < (8, 2): + renpy.start_predict_screen("wardrobe") + else: + # use the new renpy.invoke_in_main_thread + renpy.invoke_in_main_thread(renpy.start_predict_screen, "wardrobe") - def preload_wardrobe_assets(): - global _lock, _predicted - _lock = True - renpy.start_predict_screen("wardrobe") - c = get_character_object(states.active_girl) + # this is not thread-safe, but there's no better way : it's the slow part d = [v[0] for i in c.wardrobe_list for v in i.get_layers(i._hash).values()] - renpy.start_predict(*d, "interface/wardrobe/*.webp") - _predicted = d - _lock = False + + if renpy.version_tuple < (8, 2): + renpy.start_predict(*d, "interface/wardrobe/*.webp") + else: + renpy.invoke_in_main_thread(renpy.start_predict, *d, "interface/wardrobe/*.webp") + __predicted = d + __lock = False def rebuild_wardrobe_icons(items, subcat): if not settings.get("multithreading"): @@ -185,14 +192,15 @@ label _wardrobe: show loading zorder 1000 # Ensure there's no thread in use before assigning a new one. - while _lock: + while __lock: $ renpy.pause(0.5, hard=True) - $ renpy.invoke_in_thread(preload_wardrobe_assets) + $ __lock = True + $ renpy.invoke_in_thread(preload_wardrobe_assets, get_character_object(states.active_girl)) # Await thread return # Note: renpy.pause must be called from within the main thread - while _lock: + while __lock: $ renpy.pause(0.5, predict=True) hide loading @@ -203,10 +211,10 @@ label _wardrobe: show screen main_room show screen ui_top_bar - $ _game_menu_screen = "save" - $ _skipping = True - $ renpy.stop_predict(_predicted) - $ del _predicted + $ _game_menu_screen = "save" # documented + $ _skipping = True # documented + $ renpy.stop_predict(__predicted) + $ __predicted = None $ renpy.suspend_rollback(False) $ renpy.block_rollback() return From ad2e00966551f2474b18c7296fd3f5fae0f39fdf Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sun, 19 Nov 2023 00:58:33 +0100 Subject: [PATCH 181/249] Change the spinner box character (cherry picked from commit 902cf9b4d96270561256c547907e138104180f97) --- game/scripts/wardrobe/wardrobe.rpy | 40 ++++++++++++++---------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index 3b9eddee..35cd37d1 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -136,47 +136,47 @@ style loading_trivia_text: layeredimage loading: always "gui_fade" always Text("Loading", style="loading_text"): - align (0.5, 0.4) + align (0.5, 0.35) always "loading_spinner" image loading_spinner: align (0.5, 0.5) - Text("{unicode}╞▰═════════╡{/unicode}", style="loading_text") + Text("{unicode}╞╪═════════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═▰════════╡{/unicode}", style="loading_text") + Text("{unicode}╞═╪════════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞══▰═══════╡{/unicode}", style="loading_text") + Text("{unicode}╞══╪═══════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═══▰══════╡{/unicode}", style="loading_text") + Text("{unicode}╞═══╪══════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞════▰═════╡{/unicode}", style="loading_text") + Text("{unicode}╞════╪═════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═════▰════╡{/unicode}", style="loading_text") + Text("{unicode}╞═════╪════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞══════▰═══╡{/unicode}", style="loading_text") + Text("{unicode}╞══════╪═══╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═══════▰══╡{/unicode}", style="loading_text") + Text("{unicode}╞═══════╪══╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞════════▰═╡{/unicode}", style="loading_text") + Text("{unicode}╞════════╪═╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═════════▰╡{/unicode}", style="loading_text") + Text("{unicode}╞═════════╪╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞════════▰═╡{/unicode}", style="loading_text") + Text("{unicode}╞════════╪═╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═══════▰══╡{/unicode}", style="loading_text") + Text("{unicode}╞═══════╪══╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞══════▰═══╡{/unicode}", style="loading_text") + Text("{unicode}╞══════╪═══╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═════▰════╡{/unicode}", style="loading_text") + Text("{unicode}╞═════╪════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞════▰═════╡{/unicode}", style="loading_text") + Text("{unicode}╞════╪═════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═══▰══════╡{/unicode}", style="loading_text") + Text("{unicode}╞═══╪══════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞══▰═══════╡{/unicode}", style="loading_text") + Text("{unicode}╞══╪═══════╡{/unicode}", style="loading_text") pause 0.1 - Text("{unicode}╞═▰════════╡{/unicode}", style="loading_text") + Text("{unicode}╞═╪════════╡{/unicode}", style="loading_text") pause 0.1 repeat @@ -262,8 +262,6 @@ label wardrobe_menu(): label .after_init: - hide gui_fade - if not renpy.get_screen("wardrobe"): show screen wardrobe(662, 50) $ renpy.hide(get_character_tag(states.active_girl)) From ef17df3698fedb3bb1bb36f5ee90759f905d4c1c Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sun, 19 Nov 2023 01:10:50 +0100 Subject: [PATCH 182/249] Make the wardrobe variables dynamic (cherry picked from commit 9ee1de9fd05225dfb2d13fc9d1ec01f286305894) --- game/scripts/wardrobe/wardrobe.rpy | 42 ++++++++++++++++++------------ 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index 35cd37d1..ab43b627 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -236,34 +236,42 @@ screen wardrobe(xx, yy): use wardrobe_menuitem(20, 50) label wardrobe_menu(): + $ renpy.dynamic( + char_active = get_character_object(states.active_girl), + char_outfit = get_character_outfit(states.active_girl, type="last"), + ) + $ char_outfit.save() + + $ renpy.dynamic( + wardrobe_subcategories = char_active.wardrobe, + ) python: - - char_active = get_character_object(states.active_girl) - char_outfit = get_character_outfit(states.active_girl, type="last") - char_outfit.save() - - wardrobe_subcategories = char_active.wardrobe - if renpy.android: - wardrobe_subcategories.update( { "outfits": { k:char_active.outfits for k in {"load", "save", "delete", "schedule"} } } ) + wardrobe_subcategories.update(outfits=dict.fromkeys(("load", "save", "delete", "schedule"), char_active.outfits)) else: - wardrobe_subcategories.update( { "outfits": { k:char_active.outfits for k in {"load", "save", "delete", "schedule", "import", "export"} } } ) + wardrobe_subcategories.update(outfits=dict.fromkeys(("load", "save", "delete", "schedule", "import", "export"), char_active.outfits)) + $ renpy.dynamic( # Defaults - current_category = "head" - category_items = set_wardrobe_categories(current_category) - current_subcategory = list(category_items.keys())[0] if category_items else "" - current_item = char_active.get_equipped_wardrobe_item(category_items, current_subcategory) - last_track = renpy.music.get_playing() - rebuild_wardrobe_icons(category_items, current_subcategory) + current_category = "head", + category_items = set_wardrobe_categories(current_category), + ) + $ renpy.dynamic( + current_subcategory = next(iter(category_items), ""), + ) + $ renpy.dynamic( + current_item = char_active.get_equipped_wardrobe_item(category_items, current_subcategory), + last_track = renpy.music.get_playing(), + ) + $ rebuild_wardrobe_icons(category_items, current_subcategory) if wardrobe_music: play music "music/Spring_In_My_Step.ogg" fadein 1 if_changed + show screen wardrobe(662, 50) + label .after_init: - if not renpy.get_screen("wardrobe"): - show screen wardrobe(662, 50) $ renpy.hide(get_character_tag(states.active_girl)) $ renpy.config.skipping = None $ _game_menu_screen = None From 9a088d22e11314b22e03a2bd6d5307512575c1d3 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sun, 19 Nov 2023 21:56:01 +0100 Subject: [PATCH 183/249] Fix 9ee1de9 (cherry picked from commit 5252c7eae291bd2e29681ffbe705295adb3dacf0) --- game/scripts/wardrobe/wardrobe.rpy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index ab43b627..56e290ad 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -244,6 +244,7 @@ label wardrobe_menu(): $ renpy.dynamic( wardrobe_subcategories = char_active.wardrobe, + current_category = "head", ) python: if renpy.android: @@ -252,8 +253,6 @@ label wardrobe_menu(): wardrobe_subcategories.update(outfits=dict.fromkeys(("load", "save", "delete", "schedule", "import", "export"), char_active.outfits)) $ renpy.dynamic( - # Defaults - current_category = "head", category_items = set_wardrobe_categories(current_category), ) $ renpy.dynamic( From 0597621c54e0b6b364e120a27ad665886bf9c160 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 24 Mar 2024 18:18:34 +0000 Subject: [PATCH 184/249] Random Object Refactoring and a bug fix (by Gouvernathor) --- game/scripts/events/DayNight.rpy | 6 +- game/scripts/interface/door.rpy | 127 +++++++++++++++++-------------- game/scripts/shops/item/menu.rpy | 2 +- 3 files changed, 73 insertions(+), 62 deletions(-) diff --git a/game/scripts/events/DayNight.rpy b/game/scripts/events/DayNight.rpy index 38e943dc..38db7ad3 100644 --- a/game/scripts/events/DayNight.rpy +++ b/game/scripts/events/DayNight.rpy @@ -86,7 +86,8 @@ label day_start: # Randomisers random_gold = renpy.random.randint(8, 40) - map_randomobj = renpy.random.Random() + map_randomobj.seed() + door_randomobj.seed() # Send salary every 7th day if game.day % 7 == 0: @@ -194,7 +195,8 @@ label night_start: # Randomisers random_gold = renpy.random.randint(8, 40) - map_randomobj = renpy.random.Random() + map_randomobj.seed() + door_randomobj.seed() # Update map locations call set_all_map_locations diff --git a/game/scripts/interface/door.rpy b/game/scripts/interface/door.rpy index 074839d0..9a2d7f41 100644 --- a/game/scripts/interface/door.rpy +++ b/game/scripts/interface/door.rpy @@ -3,6 +3,71 @@ #################################### default summon_show_busy = True +default door_randomobj = renpy.random.Random() + +init python: + def __choice(seq): + seed = door_randomobj.getstate() + rv = door_randomobj.choice(seq) + door_randomobj.setstate(seed) + return rv + +define map_transcript_loc = dict( + library = "Library", + room_g = "Gryffindor Dormitory", + room_s = "Slytherin Dormitory", + room_r = "Ravenclaw Dormitory", + room_h = "Hufflepuff Dormitory", + great_hall = "Great Hall", + courtyard = "Courtyard", + forest = "Forest", + greenhouse = "Greenhouse", + defense = "D.A.D.A Classroom", + training_grounds = "Training Grounds", + Lake = "Lake", + randomstudent = functools.partial(__choice, ( + "Classroom", + "Bathroom", + "Hagrid's Hut", + "Weasley's Store", + "Mafkin's Store", + "Broom Cupboard", + "Attic")), + randomsnape = functools.partial(__choice, ( + "Classroom", + "Boathouse", + "Bathroom", + "Snape's Office", + "Hall", + "Slytherin Dormitory", + "Library", + "Attic", + "Forest", + "Lake", + "Dungeons", + "Quidditch Cave", + "Staircase", + "Behind your door", + "Room of Doom")), + randomtonks = functools.partial(__choice, ( + "Classroom", + "Bathroom", + "Hall", + "Gryffindor Dormitory", + "Slytherin Dormitory", + "Hufflepuff Dormitory", + "Ravenclaw Dormitory", + "Training Grounds", + "Tonks's Room", + "Quidditch Pitch", + "Infirmary", + "Sex Dungeon", + "Hospital Wing", + "Forest", + "Lake", + "Greenhouse", + "Mafkin's Store")), +) label summon: $ gui.in_context("summon_menu") @@ -11,63 +76,6 @@ label summon: label summon_menu(xx=723, yy=90): $ renpy.dynamic( - map_transcript_loc = { - "library": "Library", - "room_g": "Gryffindor Dormitory", - "room_s": "Slytherin Dormitory", - "room_r": "Ravenclaw Dormitory", - "room_h": "Hufflepuff Dormitory", - "great_hall": "Great Hall", - "courtyard": "Courtyard", - "forest": "Forest", - "greenhouse": "Greenhouse", - "defense": "D.A.D.A Classroom", - "training_grounds": "Training Grounds", - "Lake": "Lake", - "randomstudent": renpy.random.choice(( - "Classroom", - "Bathroom", - "Hagrid's Hut", - "Weasley's Store", - "Mafkin's Store", - "Broom Cupboard", - "Attic")), - "randomsnape": renpy.random.choice(( - "Classroom", - "Boathouse", - "Bathroom", - "Snape's Office", - "Hall", - "Slytherin Dormitory", - "Library", - "Attic", - "Forest", - "Lake", - "Dungeons", - "Quidditch Cave", - "Staircase", - "Behind your door", - "Room of Doom")), - "randomtonks": renpy.random.choice(( - "Classroom", - "Bathroom", - "Hall", - "Gryffindor Dormitory", - "Slytherin Dormitory", - "Hufflepuff Dormitory", - "Ravenclaw Dormitory", - "Training Grounds", - "Tonks' Room", - "Quidditch Pitch", - "Infirmary", - "Sex Dungeon", - "Hospital Wing", - "Forest", - "Lake", - "Greenhouse", - "Mafkin's Store")), - }, - # Door dictionary summon_dict = { # the order will be the one in the menu @@ -179,9 +187,10 @@ screen summon_menu(): xysize (48, 48) add crop_image_zoom("interface/icons/head/"+char_dict["ico"]+".webp", 42, 42, char_dict["busy"]) align (0.5, 0.5) - text map_transcript_loc[char_dict["loc"]] size 10 xalign 0.625 yalign 0.9 xanchor 0.5 + $ loc = map_transcript_loc[char_dict["loc"]] + text (loc() if callable(loc) else loc) size 10 xcenter 0.6 yalign 0.9 if not states.sna.unlocked: text "You don't know anyone" size 12 at truecenter elif allbusy: - text "All characters are busy" size 12 at truecenter + text "All characters are busy" size 12 at truecenter \ No newline at end of file diff --git a/game/scripts/shops/item/menu.rpy b/game/scripts/shops/item/menu.rpy index 252fc388..c3713d1c 100644 --- a/game/scripts/shops/item/menu.rpy +++ b/game/scripts/shops/item/menu.rpy @@ -43,7 +43,7 @@ label shop_item_menu(xx=150, yy=90): show screen shop_item(xx, yy) label .after_init: - $ renpy.dynamix(__choice = ui.interact()) + $ renpy.dynamic(__choice = ui.interact()) if __choice[0] == "select": $ current_item = __choice[1] From fbbb7f566599ec9b8212dd48bc2d050e65e08d84 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Sun, 24 Mar 2024 19:21:01 +0100 Subject: [PATCH 185/249] Luna Talk to me CG Posing PT 1 * Posed part of the event. * Adjusted layer order. --- game/scripts/cg/luna.rpy | 8 +- .../luna/events/favors/talk_to_me.rpy | 371 +++++++++++++++--- 2 files changed, 325 insertions(+), 54 deletions(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index d7f1d859..d44d445a 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -727,12 +727,12 @@ layeredimage lun_talk: always "lun_talk_background" always "lun_talk_torso" - group eyes prefix "eyes" auto: - attribute base_stare default - group blush prefix "blush" auto: attribute base default + group eyes prefix "eyes" auto: + attribute base_stare default + group mouth prefix "mouth" auto: attribute base default @@ -766,4 +766,4 @@ layeredimage lun_talk: attribute masturbate_variant_legs_up attribute masturbate_variant_legs_side - always "lun_talk_chest" if_not ["arms_grab_chest", "legs_side", "legs_up"] \ No newline at end of file + always "lun_talk_chest" if_not ["arms_grab_chest", "legs_side", "legs_up"] diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index e93fadaa..6e4c11d4 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -1130,253 +1130,526 @@ label ll_pf_talk_T4_E1_repeat: gen "On the desk, if you please..." ("base", xpos="far_left", ypos="head") lun "Oh! Okay then!" ("smile", "base", "base", "downL") + show screen blkfade + with d5 + if game.daytime: - show lun_talk as cg zorder 16 + show lun_talk mouth_soft as cg zorder 16 else: - show lun_talk as cg zorder 16 at color_temperature(1.0) + show lun_talk mouth_soft as cg zorder 16 at color_temperature(1.0) + + hide screen blkfade + with d5 lun "You are going to bait the wrackspurts again, [name_genie_luna]?" gen "That's right." + + show lun_talk eyes_closed mouth_base as cg with d3 + lun "Then my purpose for today is to display my naked body as a way to assist with the completion of this task, correct?" gen "*Err*..." gen "(Why is she suddenly speaking like that?)" + + show lun_talk eyebrows_raised eyes_base_stare mouth_timid as cg with d3 + lun "You taught me previously that observing my naked body is of great assistance when you're baiting wrackspurts." gen "Right?" + + show lun_talk eyebrows_surprised eyes_wide_stare mouth_smile as cg with d3 + lun "Yep!" gen "Well...{w=0.4} Good job on listening...{w=0.4} I guess?" + + show lun_talk eyebrows_base eyes_base_down mouth_base as cg with d3 + lun "*Mmm*...{w=0.4} Thank you [name_genie_luna]." + + show lun_talk eyebrows_worried eyes_closed as cg with d3 + lun "I'm delighted that you've recognized my sincere efforts in paying close attention and retaining all the knowledge we've acquired thus far!" + + show lun_talk eyebrows_worried eyes_narrow_down mouth_timid as cg with d3 + gen "(Is she trying to fish for compliments?)" gen "*Ahem*... Excellent work [name_luna_genie]... Speaking of attention." + show lun_talk eyebrows_base as cg with d3 + nar "You clutch at your robes, as you feel your cock pushing against it..." + show lun_talk eyebrows_worried eyes_base_stare mouth_smile as cg with d3 + lun "Oh, go right ahead, [name_genie_luna]!" nar "You pull out your cock and start stroking it." gen "There we go... Finally free from that wretched prison." - lun "I hope you haven't had to endure it for too long, [name_genie_luna]." + + show lun_talk eyes_base_down mouth_soft as cg with d3 + + lun "I hope you haven't had to endure them for too long, [name_genie_luna]." + + show lun_talk eyes_narrow_down mouth_pout as cg with d3 + lun "I can't imagine what it would feel like to have a penis stuck in such a tight space." gen "I'm sure we can satiate that curiosity, one way or another...{w=0.4} Or three if you're really kinky." + + show lun_talk eyebrows_base eyes_base_stare mouth_soft as cg with d3 + lun "Three, [name_genie_luna]? But I've only ever seen you wear the one set of trousers." gen "...{w=0.4} Let's focus on the task." + + show lun_talk eyes_base_stare mouth_smile as cg with d3 + lun "Sure thing! What do you need me to do?" - gen "Simply sitting there and looking as beautiful as you always do should be more than sufficient." + gen "Simply laying there and looking as beautiful as you always do should be more than sufficient." + + show lun_talk eyes_base_right mouth_base as cg with d3 + lun "Oh... Okay..." gen "*Ahem*... Although, you'd be of great help if you pushed your breasts together a little bit." - lun "My breasts?" - gen "Yes... Push those beautiful breasts together for me, will you?" + lun "..." + gen "[name_luna_genie]?" + show lun_talk eyebrows_surprised eyes_base_stare mouth_soft as cg with d3 + + lun "*Huh*?" + gen "Could you push your breasts together?" + + show lun_talk eyebrows_base eyes_narrow_down as cg with d3 + + lun "My breasts?" + gen "Yes...{w=0.4} Push those beautiful breasts together for me, will you?" + + show lun_talk eyes_base_down as cg with d3 + pause 0.4 #Breasts pushed together pose - show lun_talk arms_grab_chest as cg + show lun_talk arms_grab_chest eyes_base_stare mouth_timid as cg with d5 nar "*Fap* *Fap* *Fap*..." - lun "..." + show lun_talk blush_heavy eyes_base_right as cg with d5 + lun "..." #Blushing gen "[name_luna_genie]?" - lun "Y-- Yes [name_genie_luna], is everything okay?" + + show lun_talk eyebrows_worried eyes_base_stare mouth_soft as cg with d3 + + lun "Y--{w=0.2} Yes [name_genie_luna], is everything okay?" gen "I was just about to ask you the same question." - lun "Me? What do you mean?" + + show lun_talk eyebrows_surprised eyes_wide_stare as cg with d3 + + lun "Me? I'm--{w=0.2} I feel fine... Why?" gen "You're blushing." + + show lun_talk eyebrows_base eyes_base_down mouth_open as cg with d3 + lun "I am?" gen "Very much so." + + show lun_talk eyebrows_surprised eyes_wide_stare mouth_open_wide as cg with d3 + lun "Please don't tell me it's a {b}case of the vapours{/b}!" gen "The vapours? Yes, it must be! Fortunately, I have the ideal treatment for--" gen "(Hold on... Didn't that bogus get disproven hundreds of years ago?)" + + show lun_talk eyebrows_worried eyes_base_right mouth_open as cg with d3 + lun "So, it is the vapours! Tell, me [name_genie_luna], how much steam is coming out of my ears!?" gen "...{w=0.4} There's no steam coming out of your ears, [name_luna_genie]." - lun "Oh... Thank heavens..." + + show lun_talk eyes_closed as cg with d3 + + lun "Oh...{w=0.4} Thank heavens..." + + show lun_talk eyebrows_surprised eyes_base_down mouth_soft as cg with d3 + lun "But if not the vapours, what else could have caused this?" + gen "Let me think..." gen "Did something particular cross your mind before your cheeks turned all rosy?" + + show lun_talk eyes_narrow_right as cg with d3 + lun "*Hmm*..." + + show lun_talk eyes_base_right as cg with d3 + lun "I was just thinking about what you had just said." gen "Which was?" + + show lun_talk eyes_narrow_down as cg with d3 + lun "You were saying I was looking beautiful..." gen "Thinking about that made you blush?" + + show lun_talk mouth_soft as cg with d3 + lun "I believe so..." + + show lun_talk mouth_timid as cg with d3 + lun "When you complimented me on my looks previously, I figured that it was merely a tactic to help me master baiting." + + show lun_talk mouth_base as cg with d3 + lun "But this time, I'm not the one doing it, so it made me realise that you must have been sincere." gen "..." - #Base pose + #stops squeezing breasts + show lun_talk -arms_grab_chest eyes_base_up mouth_pout as cg with d5 lun "*Sigh*...{w=0.4} I suppose I've become accustomed to guys only saying things like that sarcastically, mocking my choice of attire." - #Genie stops jerking - nar "You stop masturbating, and move your eyes away from Luna's body to look into her eyes..." - gen "Yes, unfortunately, this school is teeming with exceptionally shallow individuals." + + show lun_talk eyebrows_raised eyes_base_stare mouth_soft as cg with d3 + lun "[name_genie_luna]?" + + gen "Could you lift your legs a bit, so that I may get a better view of your butt?" + + show lun_talk eyebrows_base mouth_open as cg with d3 + + lun "Oh, of course [name_genie_luna]..." + + show lun_talk legs_side mouth_base as cg with d5 + pause 0.4 + + gen "Now, where was I...{w=0.4} Oh yes..." gen "Allow me to pose you a question, [name_luna_genie]." - lun "Oh, of course [name_genie_luna]." gen "Do you like the clothing that you wear?" + + show lun_talk eyebrows_surprised eyes_wide_stare mouth_soft as cg with d3 + lun "Very much so!" gen "Then if it brings you joy, why worry about what others think?" - lun "I suppose..." + + show lun_talk eyebrows_base eyes_base_left as cg with d3 + + lun "I...{w=0.4} I suppose..." gen "In fact, I feel bad for them." + + show lun_talk eyebrows_surprised eyes_base_stare mouth_open as cg with d3 + lun "You do?!" gen "Of course I do." gen "If you lack the capability to look past someone's clothing, then you'll never get the chance to learn and experience what's underneath." - lun "I... I've never thought of it that way..." + + show lun_talk eyebrows_base eyes_base_down mouth_soft as cg with d3 + + lun "I...{w=0.4} I've never thought of it that way..." + + nar "You stop masturbating, and move your eyes away from Luna's ass to look into her eyes..." + gen "Try not to take what they say to heart, [name_luna_genie]." gen "As long as you continue to be yourself, I have no doubt that the friendships you make will feel more authentic and genuine." + + show lun_talk eyebrows_base eyes_narrow_down mouth_base as cg with d3 + lun "Yes... Perhaps you're right..." + show lun_talk arm_left_masturbate_variant_legs_side as cg with d5 + nar "You watch Luna, as she unconsciously moves her hand to between her legs and starts fingering herself..." gen "Take me, for example – I consistently approach people with both an open heart and an open mind." gen "If I had their mindset, I might've ended up walking right past all the unique and beautiful individuals such as yourself." - lun "..." #Looks down - nar "Luna goes quiet for a moment, taking in what you just said..." + show lun_talk mouth_soft as cg with d3 - gen "Not only that... I firmly believe that we should celebrate each other's uniqueness." - lun "*Mmm*... Truly?" + lun "..." + + nar "Luna doesn't respond, and you push on, while she's still processing what you just said..." + + gen "Not only that...{w=0.4} I firmly believe that we should celebrate each other's uniqueness." + + show lun_talk eyebrows_raised as cg with d3 + + lun "*Mmm*...{w=0.4} Truly?" gen "Of course!" gen "How about you share something you believe is unique about yourself, and I'll explain why I think it makes you truly exceptional!" + + show lun_talk eyebrows_worried mouth_timid as cg with d3 + lun "Oh...{w=0.4} *Ehm*...{w=0.4} Something unique..." + + show lun_talk eyes_narrow_down mouth_base as cg with d3 + lun "*Mmm*... You've put me on the spot..." gen "What about your clothing?" - lun "Oh... Well, I suppose my fondness for wearing my own creations is quite a unique trait." + + show lun_talk mouth_smile as cg with d3 + + lun "Oh...{w=0.4} Well, I suppose my fondness for wearing my own creations is quite a unique trait." gen "To me, this clearly indicates that you're a creative, free-spirited, and adventurous individual." + + show lun_talk eyes_base_down as cg with d3 + lun "..." gen "What else?" + + show lun_talk eyes_narrow_down mouth_base as cg with d3 + lun "*Ah*...{w=0.4} I...{w=0.4} Well, I've never really thought about it before..." gen "Then, let me share a couple of things I've learned about you from the time we've spent researching together..." + + show lun_talk eyebrows_worried mouth_smile as cg with d3 + lun "[name_genie_luna], you don't have to--" gen "You show great enthusiasm about everything you do...{w=0.4} And that energy and passion make any task more enjoyable..." + + show lun_talk eyes_narrow_right mouth_soft as cg with d3 + lun "[name_genie_luna]..." gen "Your ability to adapt and pick up new skills quickly is remarkable..." + + show lun_talk eyes_narrow_stare as cg with d3 + lun "..." gen "And you always go above and beyond to ensure that we reach the desired result..." gen "All excellent qualities, don't you think?" + + show lun_talk eyes_narrow_up mouth_base as cg with d3 + lun "..." gen "[name_luna_genie]?" nar "As you address Luna once more, you can't help but notice that her attention has been somewhat diverted towards her nether regions..." gen "(*Hmm*... Looks like she's getting off from being validated...)" - gen "Tell me a little bit about your creations that you're particularly proud off..." + gen "[name_luna_genie]..." + + show lun_talk eyebrows_raised eyes_narrow_stare mouth_base as cg with d3 + + lun "*Hmm*?" + gen "Tell me a little bit about the creations you're particularly proud off..." + + show lun_talk eyebrows_base eyes_narrow_left as cg with d3 + lun "*Ah*... *Ehm*... Well, there's my cork necklace..." gen "A cork necklace?" gen "(That's one of the dumbest things I've ever heard...)" - lun "Well, I just figured--{w=0.2} *Ah*...{w=0.4} Why not create a necklace that's not only stylish but also practical." + + show lun_talk eyes_narrow_stare mouth_smile as cg with d3 + + lun "One day, I had this epiphany...{w=0.4} *Ah*...{w=0.4} Why hasn't anyone created a necklace that's not only stylish but also practical?" gen "Hold on..." gen "That's brilliant!" + + show lun_talk eyes_base_stare as cg with d3 + lun "You--{w=0.2} *Ah*...{w=0.4} You really think so?" gen "Most assuredly! I've found myself presented with plenty of holes in the need of being plugged!" - gen "But I never thought about carrying a cork for that specific usage before." + gen "But I never thought about carrying a cork for that specific purpose before." + + show lun_talk mouth_base as cg with d3 + lun "Oh... Well, if you ever need one..." gen "Yes, I'm sure we could find a use for it in our research." + + show lun_talk eyebrows_raised mouth_soft as cg with d3 + lun "In--{w=0.2} *Ah*...{w=0.4} Our research?" gen "Certainly!" gen "Speaking of necklace... Since you've been so helpful, I think I better reward you with a \"pearl necklace\"." + show lun_talk eyebrows_worried eyes_narrow_stare mouth_base as cg with d3 + nar "Luna's eyes glaze over once again, and she begins panting slightly." lun "*Ah*...{w=0.4} That...{w=0.4} That's very kind of you, [name_genie_luna]..." + + show lun_talk eyes_closed as cg with d3 + lun "But--{w=0.4} *Ah*...{w=0.4} I'm not doing this for the sake of being rewarded." gen "I'm aware of that, although that doesn't mean I can't show you my appreciation." gen "Not everyone would agree to undress inside the headmaster's office..." + + show lun_talk mouth_smile as cg with d3 + lun "*Ah*...{w=0.4} Because it's--{w=0.2} *Mmm*...{w=0.4} Chilly, [name_genie_luna]?" gen "Sure!" + show lun_talk eyes_narrow_down as cg with d3 nar "Luna smiles and glances down at your cock, but as she does, her expression quickly shifts into one of shock..." lun "*Don't worry, I'm--" - #stops fingering + show lun_talk eyes_base_down arm_left_rest mouth_open as cg with d3 + pause 0.2 + show lun_talk legs_down eyebrows_surprised eyes_wide_down mouth_open_wide as cg with d5 lun "[name_genie_luna]! You stopped stroking your [name_geniepenis_luna]!" gen "My what? Oh...{w=0.4} So I have..." + + show lun_talk eyebrows_worried eyes_base_down mouth_open as cg with d3 + lun "Please, [name_genie_luna], resume the baiting before it's too late!" gen "Right." nar "Grabbing your cock once more, you resume your stroking, fixing your gaze back towards Luna's naked body..." gen "There we are... No need to panic." + + show lun_talk eyes_closed mouth_soft as cg with d3 + lun "*Phew*..." + + show lun_talk eyes_base_stare mouth_pout as cg with d3 + lun "I'm sorry [name_genie_luna]... I didn't realise that I had been distracting you..." gen "No harm done, [name_luna_genie]... In fact, it appears your distraction may have excited the spratters even more." + + show lun_talk eyebrows_base mouth_soft as cg with d3 + lun "It did? But how--" gen "I'm not only talking about the ones afflicting myself... If you hadn't realised, you were touching yourself just a moment ago." + + show lun_talk eyebrows_surprised eyes_wide_stare mouth_open as cg with d3 + lun "I was?!" + + show lun_talk eyes_wide_down as cg with d3 + lun "I...{w=0.4} How did I not realise..." + + show lun_talk eyebrows_worried eyes_base_down mouth_soft as cg with d3 + lun "We... We were only talking about..." + show lun_talk eyes_narrow_down as cg with d3 + nar "Luna's eyes glaze over slightly, as a dreamy and distant expression spreads across her face..." lun "{size=-4}But why would that result in me touching myself...{/size}" nar "Luna suddenly goes quiet, as if pondering on what to say next..." - lun "The only thing I can remember being at the forefront of my mind..." - lun "Is how glad I am to have someone who genuinely listens and understands me..." - lun "And how before I sought your assistance, I had become so accustomed to people trying to distance themselves from me..." - lun "How before I stepped foot inside your office, not a single soul would even dare to..." + show lun_talk mouth_soft as cg with d3 + + lun "The only thing I can remember thinking..." + lun "Was how glad I am to have someone who genuinely listens and understands me..." + + show lun_talk eyebrows_base as cg with d3 + + lun "How before I sought your assistance, I had become so accustomed to people trying to distance themselves from me..." + lun "Before I stepped foot inside your office, not a single soul would even dare to..." + + show lun_talk eyes_closed as cg with d3 + lun "{size=-4}Touch me...{/size}" - #speed lines - nar "Suddenly snapping back to reality, Luna's legs begin quivering..." + nar "As the final words leaves her lips, Luna's legs quiver slightly..." - lun "[name_genie_luna], something's happening to me!" + show lun_talk eyebrows_worried eyes_base_stare mouth_open as cg with d3 + + lun "[name_genie_luna]... something's happening to me!" gen "No need to worry, [name_luna_genie]... Just tell me what's going on." + + show lun_talk eyes_wide_down mouth_open as cg with d3 + lun "My body...{w=0.4} It feels hot!" + + show lun_talk eyes_base_down as cg with d3 + lun "And for some reason..." + + show lun_talk eyes_narrow_down mouth_open_wide as cg with d3 + lun "The only thing I can think about is you, stroking your penis!" gen "That's hardly difficult to imagine, since it's precisely what I'm doing." + + show lun_talk eyes_narrow_stare mouth_soft as cg with d3 + lun "I know... But it's so clear in my mind...{w=0.2} And...{w=0.2} And..." + + show lun_talk eyes_wide_stare mouth_open as cg with d3 + lun "Please, [name_genie_luna]...{w=0.4} Can I--{w=0.2} I need to touch myself--" gen "Not yet, [name_luna_genie]! I'm not there yet!" + + show lun_talk eyes_base_stare as cg with d3 + lun "But, [name_genie_luna]!" - gen "Close your eyes for a bit, and allow me to catch up to you." + gen "Spread you legs, and allow me to catch up to you." + + show lun_talk eyes_narrow_down mouth_soft as cg with d3 + lun "But, how is that going to--" gen "Do it, [name_luna_genie]!" - #Base pose #closed eyes + show lun_talk legs_side eyes_wide_down mouth_soft as cg with d3 + pause 0.2 + show lun_talk legs_up arm_left_hold_leg_variant_legs_up arm_right_hold_leg_variant_legs_up eyes_wide_stare as cg with d3 + with hpunch + lun "!!!" gen "Good." - gen "Now, just wait for a little bit to see if the feeling subsides." + gen "Now, close your eyes and just wait for a little bit to see if the feeling subsides." + + #luna closes eyes + show lun_talk eyes_closed mouth_open as cg with d3 - #squeezing breasts pose nar "You keep stroking your cock, while watching the girl squirm uncomfortably." gen "Is it working?" + + show lun_talk eyebrows_base as cg with d3 + lun "I--{w=0.2} I don't think so [name_genie_luna]...{w=0.4} The image of your penis is still at the forefront of my mind." gen "Even just thinking about it is making you feel this hot and bothered?" + + show lun_talk mouth_open_wide as cg with d3 + lun "I--{w=0.2} Yes, I think so!" gen "Good... Then we've learned something today." + + show lun_talk eyebrows_base as cg with d3 + lun "[name_genie_luna], please!" + menu: "-Deny her for a bit longer-": gen "I'm not there yet, [name_luna_genie]." + + show lun_talk eyebrows_worried mouth_timid as cg with d3 lun "But--" + + show lun_talk mouth_open as cg with d3 + lun "Tell me what to do! How can I help?!" gen "*Hmm*..." - #Luna opens her eyes + + show lun_talk eyebrows_surprised eyes_wide_stare mouth_open as cg with d3 lun "Wait, I know!" - #Luna spreads her pussy + + show lun_talk arm_left_spread_variant_legs_up mouth_smile as cg with d3 gen "By the great--" + + show lun_talk eyes_base_down as cg with d3 + lun "Is it working [name_genie_luna]? Can I do it now, can I, can I?" gen "Oh, yes!" + + show lun_talk eyes_base_down as cg with d3 + lun "Thank you!!" "-Allow her to join you-": gen "Alright then, [name_luna_genie]... I'm almost there." gen "You may open your eyes and join me." + + show lun_talk eyebrows_surprised eyes_wide_stare mouth_open as cg with d3 + lun "Thank you, [name_genie_luna]!" #open eyes - #fingering pose + show lun_talk legs_side arm_left_masturbate_variant_legs_side arm_right_hold_leg_variant_legs_side eyes_narrow_up mouth_ahegao as cg with d3 nar "Luna immediately plunges her fingers inside her wet pussy." nar "As she does, an expression of ecstasy spreads across her face as her oncoming orgasm rushes through her body." lun "[name_genie_luna]!" gen "That's it, girl! Take this!" - #Luna and Genie "*Nnngh*!!" - - #Luna and genie cums, Luna squiring on desk, and genie shooting ropes across her face and tits with kissiris lun "{heart}{heart}*Ah*!!!{heart}{heart}" @@ -1400,22 +1673,20 @@ label ll_pf_talk_T4_E1_repeat: lun "*Mmm*... Thank you, [name_genie_luna]." lun "*Hmm*... I'm all sticky now..." - #Luna squeezes her breasts together again. gen "*Ngh*!!" lun "[name_genie_luna], are you alright?" - gen "Yes, I'm fine... But you should probably stop doing that, or I might have to go again..." - lun "Oh... Sorry, [name_genie_luna]!" + gen "Yes... I'm--{w=0.2} *Ah*...{w=0.4} Great..." + lun "*Ah*...{w=0.4} I'm glad..." show screen blkfade with d5 - #TODO hide CG - nar "As Luna swiftly attempts to get off your desk, she accidentally slides off the edge, which causes her to tumble and land on the tiled floor with a soft slapping sound." nar "As you peer over the edge, you're met with a shocked and bewildered looking Luna." nar "She looks up at you, and you can't help but laugh a little at how silly she looks, down on the floor and still covered in cum." nar "Before you get the chance to check on her properly, she lets out a giggle and stands up." + hide cg hide screen blkfade with d5 @@ -1458,7 +1729,7 @@ label ll_pf_talk_T4_E1_repeat: #Luna leaves call lun_walk(action="leave") - gen "(And here I thought Genie's had strong libido's...)" ("base", xpos="far_left", ypos="head") + gen "(And here I thought genies had strong libidos...)" ("base", xpos="far_left", ypos="head") $ _wearing_clothes = False #reset jump ll_pf_talk_end From f0c9aaa153d0023fd269e649140c7bac08839e33 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 18 Nov 2023 03:54:37 +0100 Subject: [PATCH 186/249] Rebase the achievements system on the builtin feature a lot of work, but entirely backwards-compatible ! no visible change (no intended ones at least) except maybe performance --- game/scripts/interface/achievements.rpy | 410 ++++++++++++------------ 1 file changed, 212 insertions(+), 198 deletions(-) diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index 35c5b5ee..7cad9f44 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -1,122 +1,118 @@ -define achievements_dict = { - "unlockher": ["Characters", "Granger Danger", "Awarded for unlocking Hermione Granger.", False, "interface/icons/head/hermione.webp", False], - "unlockcho": ["Characters", "Chang Dynasty", "Awarded for unlocking Cho Chang.", False, "interface/icons/head/cho.webp", False], - "unlocklun": ["Characters", "Looney Tunes", "Awarded for unlocking Luna Lovegood.", False, "interface/icons/head/luna.webp", False], - "unlockast": ["Characters", "Green Peas", "Awarded for unlocking Astoria Greengrass.", False, "interface/icons/head/astoria.webp", False], - "unlockton": ["Characters", "Nymphadoreador", "Awarded for unlocking Nymphadora Tonks.", False, "interface/icons/head/tonks.webp", False], - "overwhored": ["Characters", "Overwhored", "Awarded for fully corrupting Hermione.", False, "interface/icons/head/hermione.webp", False], - "unlocksus": ["Characters", "Boner", "Awarded for unlocking Susan Bones.", False, "interface/icons/head/susan.webp", False], - "unlocksna": ["Characters", "Strictly colleagues", "Awarded for unlocking Severus Snape.", False, "interface/icons/head/snape.webp", False], - "mirror": ["Mirror", "Mirror, mirror on the wall..", "Awarded for unlocking the Room of Requirement.", False, "images/rooms/room_of_requirement/mirror_hover.webp", False], - "gold": ["General", "Gold Digger", "Awarded for having 10,000 gold in total.", False, "interface/icons/gold.webp", False], - "drunkard": ["General", "Drunken Master", "Awarded for collecting 25 bottles of wine.", False, "interface/icons/wine.webp", True], - "workaholic": ["General", "Workaholic", "Awarded for completing five full reports.", False, "interface/icons/generic_scroll.webp", False], - "fireplace": ["General", "Feel the Heat", "Awarded for lighting the fireplace 5 times or more.", False, "images/rooms/main_room/fireplace/fireplace_idle.webp", True], - "peta": ["General", "I think I forgot something...", "Awarded for not feeding the bird for 50 days.... \nYou monster.\n{size=-4}Disclaimer: No real nor fictional animals were harmed in the process.{/size}", False, "images/rooms/main_room/phoenix/phoenix_01.webp", True], - "petpal": ["General", "Regular stroking", "Awarded for petting the bird 25 times.", False, "images/rooms/main_room/phoenix/phoenix_01.webp", False], - "postman": ["Cardgame", "Poster Boy", "Awarded for buying all posters from the token shop.", False, "interface/icons/agrabah_poster.webp", False], - "hats": ["Cardgame", "Mad Hatter", "Awarded for buying all hat decorations from the token shop.", False, "interface/icons/icon_gambler_hat.webp", False], - "daddy": ["Characters", "Who's your daddy?", "Awarded for letting Hermione call you a {size=-5}(sugar){/size} daddy.", False, "interface/icons/head/hermione.webp", True], - "pantiesfap": ["Characters", "I sneezed on them...", "Awarded for rubbing one out on Hermione's panties.", False, "characters/genie/chibis/jerk_off/02.webp", False], - "pantiesfapcho": ["Characters", "Exercise is important", "Awarded for rubbing one out on Cho's panties.", False, "characters/genie/chibis/jerk_off/02.webp", False], - "bros": ["Characters", "Bros before hoes", "Awarded for becoming best pals with Snape.", False, "interface/icons/head/snape.webp", False], - "knock": ["Characters", "*Knock* *knock*", "Awarded for telling Hermione to go away during her introductory events.", False, "images/rooms/main_room/door/door_idle.webp", True], - "decorator": ["Cardgame", "Decorator", "Awarded for decorating the office for the first time.", False, "interface/icons/stag_trophy.webp", False], - "flashback": ["Cardgame", "Flashback", "Awarded for retelling what actually happened...", False, "interface/icons/cards.webp", True], - "start": ["General", "Welcome to Hogwarts!", "Awarded for finishing the intro.", False, "interface/icon.webp", False], - "export": ["General", "Sharing is caring", "Awarded for exporting an outfit through the wardrobe menu.", False, "interface/wardrobe/icons/load.webp", False], - "Credits": ["General", "New game, who this?", "Awarded for checking out the Credits Menu.", False, "interface/icons/silver_scroll.webp", False], - "Cardwin": ["Cardgame", "Time to duel", "Awarded for winning your first Card game duel.", False, "interface/icons/cards.webp", False], - "puzzle": ["General", "Down the hatch!", "Awarded for wasting a bottle of unbelievably rare phoenix tears by drinking it.", False, "interface/icons/item_potion.webp", True], - "ending": ["General", "Bittersweet Farewell", "Awarded for reaching the original ending.", False, "interface/icons/silver.webp", True], +init python: + from collections import namedtuple + AchievementKind = namedtuple("AchievementKind", ("category", "name", "description", "icon", "secret")) + AchievementKind.title = AchievementKind.name + +define achievements_db = { + # id : (categoryname, title, description, icon, secret) + "unlockher": AchievementKind("Characters", "Granger Danger", "Awarded for unlocking Hermione Granger.", "interface/icons/head/hermione.webp", False), + "unlockcho": AchievementKind("Characters", "Chang Dynasty", "Awarded for unlocking Cho Chang.", "interface/icons/head/cho.webp", False), + "unlocklun": AchievementKind("Characters", "Looney Tunes", "Awarded for unlocking Luna Lovegood.", "interface/icons/head/luna.webp", False), + "unlockast": AchievementKind("Characters", "Green Peas", "Awarded for unlocking Astoria Greengrass.", "interface/icons/head/astoria.webp", False), + "unlockton": AchievementKind("Characters", "Nymphadoreador", "Awarded for unlocking Nymphadora Tonks.", "interface/icons/head/tonks.webp", False), + "overwhored": AchievementKind("Characters", "Overwhored", "Awarded for fully corrupting Hermione.", "interface/icons/head/hermione.webp", False), + "unlocksus": AchievementKind("Characters", "Boner", "Awarded for unlocking Susan Bones.", "interface/icons/head/susan.webp", False), + "unlocksna": AchievementKind("Characters", "Strictly colleagues", "Awarded for unlocking Severus Snape.", "interface/icons/head/snape.webp", False), + "mirror": AchievementKind("Mirror", "Mirror, mirror on the wall..", "Awarded for unlocking the Room of Requirement.", "images/rooms/room_of_requirement/mirror_hover.webp", False), + "gold": AchievementKind("General", "Gold Digger", "Awarded for having 10,000 gold in total.", "interface/icons/gold.webp", False), + "drunkard": AchievementKind("General", "Drunken Master", "Awarded for collecting 25 bottles of wine.", "interface/icons/wine.webp", True), + "workaholic": AchievementKind("General", "Workaholic", "Awarded for completing five full reports.", "interface/icons/generic_scroll.webp", False), + "fireplace": AchievementKind("General", "Feel the Heat", "Awarded for lighting the fireplace 5 times or more.", "images/rooms/main_room/fireplace/fireplace_idle.webp", True), + "peta": AchievementKind("General", "I think I forgot something...", "Awarded for not feeding the bird for 50 days.... \nYou monster.\n{size=-4}Disclaimer: No real nor fictional animals were harmed in the process.{/size}", "images/rooms/main_room/phoenix/phoenix_01.webp", True), + "petpal": AchievementKind("General", "Regular stroking", "Awarded for petting the bird 25 times.", "images/rooms/main_room/phoenix/phoenix_01.webp", False), + "postman": AchievementKind("Cardgame", "Poster Boy", "Awarded for buying all posters from the token shop.", "interface/icons/agrabah_poster.webp", False), + "hats": AchievementKind("Cardgame", "Mad Hatter", "Awarded for buying all hat decorations from the token shop.", "interface/icons/icon_gambler_hat.webp", False), + "daddy": AchievementKind("Characters", "Who's your daddy?", "Awarded for letting Hermione call you a {size=-5}(sugar){/size} daddy.", "interface/icons/head/hermione.webp", True), + "pantiesfap": AchievementKind("Characters", "I sneezed on them...", "Awarded for rubbing one out on Hermione's panties.", "characters/genie/chibis/jerk_off/02.webp", False), + "pantiesfapcho": AchievementKind("Characters", "Exercise is important", "Awarded for rubbing one out on Cho's panties.", "characters/genie/chibis/jerk_off/02.webp", False), + "bros": AchievementKind("Characters", "Bros before hoes", "Awarded for becoming best pals with Snape.", "interface/icons/head/snape.webp", False), + "knock": AchievementKind("Characters", "*Knock* *knock*", "Awarded for telling Hermione to go away during her introductory events.", "images/rooms/main_room/door/door_idle.webp", True), + "decorator": AchievementKind("Cardgame", "Decorator", "Awarded for decorating the office for the first time.", "interface/icons/stag_trophy.webp", False), + "flashback": AchievementKind("Cardgame", "Flashback", "Awarded for retelling what actually happened...", "interface/icons/cards.webp", True), + "start": AchievementKind("General", "Welcome to Hogwarts!", "Awarded for finishing the intro.", "interface/icon.webp", False), + "export": AchievementKind("General", "Sharing is caring", "Awarded for exporting an outfit through the wardrobe menu.", "interface/wardrobe/icons/load.webp", False), + "Credits": AchievementKind("General", "New game, who this?", "Awarded for checking out the Credits Menu.", "interface/icons/silver_scroll.webp", False), + "Cardwin": AchievementKind("Cardgame", "Time to duel", "Awarded for winning your first Card game duel.", "interface/icons/cards.webp", False), + "puzzle": AchievementKind("General", "Down the hatch!", "Awarded for wasting a bottle of unbelievably rare phoenix tears by drinking it.", "interface/icons/item_potion.webp", True), + "ending": AchievementKind("General", "Bittersweet Farewell", "Awarded for reaching the original ending.", "interface/icons/silver.webp", True), #1.37 HG achievements - "busted": ["Characters", "BUSTED!", "Awarded for getting busted by Hermione when busting a nut.", False, "interface/icons/head/hermione.webp", False], - "herstrip": ["Characters", "Dance lessons", "Awarded for having Hermione dance naked in front of you... and Snape.", False, "interface/icons/head/hermione.webp", False], - "herkiss": ["Characters", "First Kiss", "Awarded for having Hermione make out with you-- r... cock...", False, "interface/icons/head/hermione.webp", False], - "hertits": ["Characters", "Boobs Lover", "Awarded for sticking it between Hermione's fun bags.", False, "interface/icons/head/hermione.webp", False], - "headlib": ["Characters", "Head Librarian", "Awarded for releasing your seed in Hermione's mouth.", False, "interface/icons/head/hermione.webp", False], - "nerdgasm": ["Characters", "Nerdgasm", "Awarded for doing the deed with Hermione.", False, "interface/icons/head/hermione.webp", False] + "busted": AchievementKind("Characters", "BUSTED!", "Awarded for getting busted by Hermione when busting a nut.", "interface/icons/head/hermione.webp", False), + "herstrip": AchievementKind("Characters", "Dance lessons", "Awarded for having Hermione dance naked in front of you... and Snape.", "interface/icons/head/hermione.webp", False), + "herkiss": AchievementKind("Characters", "First Kiss", "Awarded for having Hermione make out with you-- r... cock...", "interface/icons/head/hermione.webp", False), + "hertits": AchievementKind("Characters", "Boobs Lover", "Awarded for sticking it between Hermione's fun bags.", "interface/icons/head/hermione.webp", False), + "headlib": AchievementKind("Characters", "Head Librarian", "Awarded for releasing your seed in Hermione's mouth.", "interface/icons/head/hermione.webp", False), + "nerdgasm": AchievementKind("Characters", "Nerdgasm", "Awarded for doing the deed with Hermione.", "interface/icons/head/hermione.webp", False) } +init python hide: + for name in achievements_db: + achievement.register(name) + + # keep the achievements from earlier versions + if isinstance(persistent.achievements, dict): + # id : [categoryname, title, description, unlocked, icon, secret] + for k, v in persistent.achievements.items(): + if v[3]: + achievement.grant(k) + del persistent.achievements + init python: - if persistent.achievements is None: - persistent.achievements = achievements_dict.copy() class Achievements(object): + """ + Useless class, to be rolled out. + """ - def __init__(self): - self.achievements = persistent.achievements - self.attempt_repair() - - if config.developer: - self.validate() - - def validate(self): + @staticmethod + def validate(): """Check if icons are loadable at init""" - for i in self.achievements.values(): - if not renpy.loadable(i[4]): - raise IOError("\"{}\"".format(i[4])) + for i in achievements_db.values(): + if not renpy.loadable(i.icon): + raise IOError(repr(i.icon)) - def attempt_repair(self): - """Achievements are kept in a persistent state which is shared across versions, - because of that, they occassionally might need to be checked - if the set values are equal to the pre-defined values. + @staticmethod + def status(id): + return achievement.has(id) - Attempted repair will try to fix the mismatched values without resetting the completion status.""" - - # Save unlock states - unlock_states = {k: v[3] for k, v in self.achievements.items()} - # Keys that should not exist in the persistent state anymore - orphans = self.achievements.keys() - achievements_dict.keys() - - # Making some K-pop - for k in orphans: - self.achievements.pop(k, None) - - self.achievements.update(achievements_dict) - - # Reapply unlock states - for k, v in self.achievements.items(): - v[3] = unlock_states.get(k, False) - - def status(self, id): - return self.achievements.get(id)[3] - - def unlock(self, id, silent=False): + @staticmethod + def unlock(id, silent=False): if _in_replay: return - if persistent.achievements[id][3] == False: - self.achievements[id][3] = True - persistent.achievements[id][3] = True + if not achievement.has(id): + achievement.grant(id) if not silent: renpy.play('sounds/achievement.ogg') - renpy.show_screen("achievement_window", msg=persistent.achievements[id][1], title="Achievement unlocked!", icon=persistent.achievements[id][4]) + renpy.show_screen("achievement_window", msg=achievements_db[id].title, title="Achievement unlocked!", icon=achievements_db[id].icon) + @staticmethod def lock(self, id): - self.achievements[id][3] = False - persistent.achievements[id][3] = False + achievement.clear(id) + + def achievement_sortfilter(lst, sortby="A-z", filtering=None): + """ + Takes a list/iterable of achievement ids, returns a list of achievement ids + """ - def achievement_sortfilter(item, sortby="A-z", filtering=None): if filtering == "Locked": - item = [x for x in item if x[1][3] is False] + lst = (x for x in lst if not achievement.has(x)) elif filtering == "Unlocked": - item = [x for x in item if x[1][3] is True] + lst = filter(achievement.has, lst) elif filtering == "Secret": - item = [x for x in item if x[1][5] is True] + lst = (x for x in lst if achievements_db[x].secret is True) # Always sort alphabetically first. - item = sorted(item, key=lambda x: natsort_key(x[1][1])) + lst = sorted(lst, key=lambda x: natsort_key(achievements_db[x].title)) if sortby == "z-A": - item = sorted(item, key=lambda x: natsort_key(x[1][1]), reverse=True) - elif current_sorting == "Unlocked": - item = sorted(item, key=lambda x: x[1][3] is False) - elif current_sorting == "Locked": - item = sorted(item, key=lambda x: x[1][3] is True) + lst.sort(key=lambda x: natsort_key(achievements_db[x].title), reverse=True) + elif sortby == "Unlocked": + lst.sort(key=lambda x: not achievement.has(x)) + elif sortby == "Locked": + lst.sort(key=achievement.has) - return item + return lst default achievements = Achievements() @@ -166,61 +162,43 @@ screen achievement_window(msg="", title="", icon=None, xpos=0, ypos=60): text msg size 14 xalign 0.5 xanchor 0.5 timer 6.0 action Hide("achievement_window") -transform rotate_circular(): +transform rotate_circular(t=7): on show, appear, start: subpixel True rotate 0 - linear 7.0 rotate 360 + linear t rotate 360 repeat #################################### ############# Menu ################# #################################### -label achievement: - $ gui.in_context("achievement_menu") - jump main_room_menu +define achievement_categories_sorted = ("All", "General", "Characters", "Cardgame", "Mirror") +define items_shown = 36 -label achievement_menu(xx=150, yy=90): +init python: + class __SetCategory(Action): + def __init__(self, category): + self.category = category - python: - achievement_categories_sorted = ["All", "General", "Characters", "Cardgame", "Mirror"] + def __call__(self): + global current_category + global number_unlocked - items_shown = 36 - current_page = 0 - current_category = achievement_categories_sorted[0] - current_filter = None - current_sorting = "Unlocked" - - category_items = list(persistent.achievements.items()) - menu_items = achievement_sortfilter(category_items, current_sorting, current_filter) - menu_items_length = len(menu_items) - current_item = next(iter(menu_items), None) - - renpy.show_screen("achievements", xx, yy) - - label .after_init: - - python: - renpy.dynamic(__choice = ui.interact()) - - if __choice[0] == "select": - current_item = __choice[1] - elif __choice[0] == "category": - current_category = __choice[1] + current_category = self.category if current_category == "All": - category_items = list(persistent.achievements.items()) + category_items = achievements_db else: - category_items = [x for x in list(persistent.achievements.items()) if current_category in x[1][0]] - menu_items = achievement_sortfilter(category_items, current_sorting, current_filter) - menu_items_length = len(menu_items) - current_page = 0 - current_item = next(iter(menu_items), None) - elif __choice == "inc": - current_page += 1 - elif __choice == "dec": - current_page += -1 - elif __choice == "filter": + category_items = filter((lambda x: current_category==achievements_db[x].category), achievements_db) + __regen(category_items) + number_unlocked = len(tuple(filter(achievement.has, menu_items))) + + class __Filter(Action): + # TODO: in 8.2, replace with CycleVariable("current_filter", (None, "Locked", "Unlocked", "Secret")) + def __call__(self): + global current_filter + global number_unlocked + if current_filter is None: current_filter = "Locked" elif current_filter == "Locked": @@ -229,11 +207,14 @@ label achievement_menu(xx=150, yy=90): current_filter = "Secret" else: current_filter = None - menu_items = achievement_sortfilter(category_items, current_sorting, current_filter) - menu_items_length = len(menu_items) - current_page = 0 - current_item = next(iter(menu_items), None) - elif __choice == "sort": + __regen() + number_unlocked = len(tuple(filter(achievement.has, menu_items))) + + class __Sort(Action): + # TODO: in 8.2, replace with CycleVariable("current_sorting", ("A-z", "z-A", "Unlocked", "Locked")) + def __call__(self): + global current_sorting + if current_sorting == "A-z": current_sorting = "z-A" elif current_sorting == "z-A": @@ -242,15 +223,42 @@ label achievement_menu(xx=150, yy=90): current_sorting = "Locked" else: current_sorting = "A-z" - menu_items = achievement_sortfilter(category_items, current_sorting, current_filter) - menu_items_length = len(menu_items) - current_page = 0 - current_item = next(iter(menu_items), None) - else: - renpy.hide_screen("achievements") - renpy.return_statement() + __regen() - jump .after_init + def __regen(category_items=achievements_db): + global menu_items + global menu_items_length + global current_page + global current_item + + menu_items = achievement_sortfilter(category_items, current_sorting, current_filter) + menu_items_length = len(menu_items) + current_page = 0 + current_item = next(iter(menu_items), None) + renpy.restart_interaction() + +label achievement: + $ gui.in_context("achievement_menu") + jump main_room_menu + +label achievement_menu(xx=150, yy=90): + + $ renpy.dynamic( + current_page = 0, + current_category = achievement_categories_sorted[0], + current_filter = None, + current_sorting = "Unlocked", + menu_items = achievement_sortfilter(achievements_db, "Unlocked", None), + number_unlocked = len(tuple(filter(achievement.has, achievements_db))) + ) + $ renpy.dynamic( + menu_items_length = len(menu_items), + current_item = next(iter(menu_items), None), + ) + + call screen achievements(xx, yy) + + return screen achievements(xx, yy): tag achievements @@ -265,16 +273,16 @@ screen achievements(xx, yy): use close_button fixed: + pos (xx, yy) if settings.get("animations"): at gui_animation - use achievement_menu(xx, yy) - use achievement_menuitem(xx, yy) + use achievement_menu() + use achievement_menuitem() -screen achievement_menu(xx, yy): +screen achievement_menu(): window: style "empty" style_prefix gui.theme('achievements') - pos (xx, yy) xysize (207, 454) use invisible_button() @@ -288,22 +296,22 @@ screen achievement_menu(xx, yy): vbox: textbutton category: selected (current_category == category) - action Return(["category", category]) + action __SetCategory(category) add gui.format("interface/achievements/{}/spacer_left.webp") vbox: style_prefix gui.theme('achievements_filters') pos (6, 384) if current_filter is None: - textbutton "Show: All" action Return("filter") + textbutton "Show: All" action __Filter() else: - textbutton "Show: [current_filter]" action Return("filter") - textbutton "Sort by: [current_sorting]" action Return("sort") + textbutton "Show: [current_filter]" action __Filter() + textbutton "Sort by: [current_sorting]" action __Sort() -screen achievement_menuitem(xx, yy): +screen achievement_menuitem(): window: style "empty" - pos (xx+217, yy-53) + pos (217, -53) xysize (560, 507) use invisible_button() @@ -313,7 +321,7 @@ screen achievement_menuitem(xx, yy): text "Achievements" size 22 xalign 0.5 ypos 65 - text "Unlocked: "+str(len([x for x in menu_items if x[1][3] is True]))+"/[menu_items_length]" size 12 pos (24, 70) + text "Unlocked: [number_unlocked]/[menu_items_length]" size 12 pos (24, 70) # Page counter if menu_items_length > items_shown: @@ -331,71 +339,80 @@ screen achievement_menuitem(xx, yy): idle gui.format("interface/frames/{}/arrow_up.webp") if not current_page <= 0: hover image_hover(gui.format("interface/frames/{}/arrow_up.webp")) - action Return("dec") + action SetVariable("current_page", current_page-1) + # TODO: in 8.2, replace with IncrementVariable("current_page", -1) imagebutton: idle Transform(gui.format("interface/frames/{}/arrow_up.webp"), yzoom = -1.0) if current_page < math.ceil((menu_items_length-1)/items_shown)-1: hover Transform(image_hover(gui.format("interface/frames/{}/arrow_up.webp")), yzoom = -1.0) - action Return("inc") + action SetVariable("current_page", current_page+1) + # TODO: in 8.2, replace with IncrementVariable("current_page") # Add items - for i in range(current_page*items_shown, (current_page*items_shown)+items_shown): - if i < menu_items_length: - $ row = (i // 9) % 4 - $ col = i % 9 + grid 9 4: + style "empty" + pos (24, 113) + spacing 10 + + for it_item in menu_items[current_page*items_shown:(current_page+1)*items_shown]: + $ it_item_data = achievements_db[it_item] + $ it_item_unlocked = achievement.has(it_item) frame: style "empty" xsize 48 ysize 48 - pos (24+58*(col), 113+58*(row)) add gui.format("interface/achievements/{}/iconbox.webp") - if current_item and current_item[0] == menu_items[i][0]: + if current_item and current_item == it_item: add "interface/achievements/glow.webp" align (0.5, 0.5) zoom 0.105 alpha 0.7 at rotate_circular - if menu_items[i][1][4]: - if menu_items[i][1][3]: - $ image_zoom = crop_image_zoom(menu_items[i][1][4], 42, 42) - elif not menu_items[i][1][5]: - $ image_zoom = crop_image_zoom(menu_items[i][1][4], 42, 42, True) - else: - $ image_zoom = crop_image_zoom("interface/achievements/secret.webp", 35, 35, True) + if it_item_unlocked or not it_item_data.secret: + $ image_zoom = crop_image_zoom(it_item_data.icon, 42, 42, not it_item_unlocked) + else: + $ image_zoom = crop_image_zoom("interface/achievements/secret.webp", 35, 35, True) - if menu_items[i][1][0] == "Characters" and not (menu_items[i][1][5] is True and not menu_items[i][1][3] is True): - add image_zoom align (0.5, 1.0) yoffset -3 + add image_zoom: + xalign .5 + if it_item_data.category == "Characters" and (it_item_unlocked or not it_item_data.secret): + yalign 1. + yoffset -3 else: - add image_zoom align (0.5, 0.5) + yalign .5 button: style gui.theme("overlay_button") background "interface/achievements/glass_iconbox.webp" xsize 48 ysize 48 - action Return(["select", menu_items[i]]) - if menu_items[i][1][5] and not menu_items[i][1][3]: + action SetVariable("current_item", it_item) + if it_item_data.secret and not it_item_unlocked: tooltip "???" else: - tooltip str(menu_items[i][1][1]) + tooltip it_item_data.name if current_item: + $ current_item_data = achievements_db[current_item] + $ current_item_unlocked = achievement.has(current_item) frame: style "empty" xsize 96 ysize 96 pos (24, 375) add gui.format("interface/achievements/{}/icon_selected.webp") - if current_item[1][4]: - if current_item[1][3]: - $ image_zoom = crop_image_zoom(current_item[1][4], 84, 84) + + if current_item_unlocked or not current_item_data.secret: + $ image_zoom = crop_image_zoom(current_item_data.icon, 84, 84, not current_item_unlocked) + else: + $ image_zoom = crop_image_zoom("interface/achievements/secret.webp", 70, 70, True) + + add image_zoom: + xalign .5 + if current_item_data.category == "Characters" and (current_item_unlocked or not current_item_data.secret): + yalign 1. + yoffset -7 else: - if current_item[1][5]: - $ image_zoom = crop_image_zoom("interface/achievements/secret.webp", 70, 70, True) - else: - $ image_zoom = crop_image_zoom(current_item[1][4], 84, 84, True) - if current_item[1][0] == "Characters" and not (current_item[1][5] is True and not current_item[1][3] is True): - add image_zoom align (0.5, 1.0) yoffset -7 - else: - add image_zoom align (0.5, 0.5) + yalign .5 + add "interface/achievements/glass_selected.webp" pos (6, 6) add gui.format("interface/achievements/{}/highlight.webp") pos (112, 375) @@ -403,21 +420,18 @@ screen achievement_menuitem(xx, yy): hbox: spacing 5 xalign 0.5 - text current_item[1][1] ypos 380 size 16 xoffset 45 - if current_item[1][3]: + text current_item_data.name ypos 380 size 16 xoffset 45 + if current_item_unlocked: add "interface/unlocked_True.webp" xoffset 45 ypos 377 else: add "interface/unlocked_False.webp" xoffset 45 ypos 377 hbox: pos (132, 407) xsize 410 - if current_item[1][3]: - text current_item[1][2] size 12 + if current_item_unlocked or not current_item_data.secret: + text current_item_data.description size 12 else: - if current_item[1][5]: - text "???" size 12 - else: - text current_item[1][2] size 12 + text "???" size 12 # Category styles style achievements_categories_button is empty: @@ -454,4 +468,4 @@ style light_achievements_filters_button: style achievements_filters_button_text is default: align (0.5, 0.5) size 12 - outlines [] + outlines [] \ No newline at end of file From 019ca9e9a9f6877063eebc8c8a0c6b42ae274920 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 18 Nov 2023 05:00:01 +0100 Subject: [PATCH 187/249] Allow several achievements to be displayed at the same time like in steam the change to popup_animation is not thoroughly tested (cherry picked from commit f714e482f6bdca4d419eb077eb5b3f500c44ce51) --- game/scripts/interface/achievements.rpy | 19 +++++++++++++++++-- game/scripts/interface/popup.rpy | 11 ++++------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index 7cad9f44..18bdb765 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -60,7 +60,7 @@ init python: class Achievements(object): """ - Useless class, to be rolled out. + Useless class, can't be rolled out because of pickle and save compatibility. """ @staticmethod @@ -84,7 +84,7 @@ init python: if not silent: renpy.play('sounds/achievement.ogg') - renpy.show_screen("achievement_window", msg=achievements_db[id].title, title="Achievement unlocked!", icon=achievements_db[id].icon) + __popup_stack.append(id) @staticmethod def lock(self, id): @@ -118,6 +118,21 @@ default achievements = Achievements() ### +init python: + # intentionaly not a define nor a default + __popup_stack = [] + + config.after_default_callbacks.append(__popup_stack.clear) + config.always_shown_screens.append("achievement_main") + +screen achievement_main(): + layer "interface" + + vbox: + for id index id in __popup_stack[:3]: + use achievement_window(msg=achievements_db[id].title, title="Achievement unlocked!", icon=achievements_db[id].icon) + timer 6 action Function(__popup_stack.remove, id) + label popup(msg="", title="", icon=None, xpos=0, ypos=60, sound=True, soundfile='sounds/achievement.ogg'): if sound: play sound soundfile diff --git a/game/scripts/interface/popup.rpy b/game/scripts/interface/popup.rpy index 38eddb1a..09be4cc2 100644 --- a/game/scripts/interface/popup.rpy +++ b/game/scripts/interface/popup.rpy @@ -1,11 +1,8 @@ transform popup_animation(time=4.0, xx=-200): - on start: - xoffset xx - on show: - xoffset xx - linear 0.5 xoffset absolute(0) - pause time - linear 0.5 xoffset absolute(xx) + xoffset xx + linear 0.5 xoffset absolute(0) + pause time + linear 0.5 xoffset absolute(xx) screen popup_window(msg="", xpos=0, ypos=60): tag popup_window From b62b7bcc3a009258001b5e0b9abda8b00623e1cc Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 25 Mar 2024 14:39:35 +0000 Subject: [PATCH 188/249] Achievements System Tweaks for Ren'py 8.2.X --- game/scripts/interface/achievements.rpy | 38 ++----------------------- game/scripts/utility/updater.rpy | 4 +-- 2 files changed, 5 insertions(+), 37 deletions(-) diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index 18bdb765..f5e7a7c6 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -208,38 +208,6 @@ init python: __regen(category_items) number_unlocked = len(tuple(filter(achievement.has, menu_items))) - class __Filter(Action): - # TODO: in 8.2, replace with CycleVariable("current_filter", (None, "Locked", "Unlocked", "Secret")) - def __call__(self): - global current_filter - global number_unlocked - - if current_filter is None: - current_filter = "Locked" - elif current_filter == "Locked": - current_filter = "Unlocked" - elif current_filter == "Unlocked": - current_filter = "Secret" - else: - current_filter = None - __regen() - number_unlocked = len(tuple(filter(achievement.has, menu_items))) - - class __Sort(Action): - # TODO: in 8.2, replace with CycleVariable("current_sorting", ("A-z", "z-A", "Unlocked", "Locked")) - def __call__(self): - global current_sorting - - if current_sorting == "A-z": - current_sorting = "z-A" - elif current_sorting == "z-A": - current_sorting = "Unlocked" - elif current_sorting == "Unlocked": - current_sorting = "Locked" - else: - current_sorting = "A-z" - __regen() - def __regen(category_items=achievements_db): global menu_items global menu_items_length @@ -318,10 +286,10 @@ screen achievement_menu(): style_prefix gui.theme('achievements_filters') pos (6, 384) if current_filter is None: - textbutton "Show: All" action __Filter() + textbutton "Show: All" action [CycleVariable("current_filter", (None, "Locked", "Unlocked", "Secret")), __regen] else: - textbutton "Show: [current_filter]" action __Filter() - textbutton "Sort by: [current_sorting]" action __Sort() + textbutton "Show: [current_filter]" action [CycleVariable("current_filter", (None, "Locked", "Unlocked", "Secret")), __regen] + textbutton "Sort by: [current_sorting]" action [CycleVariable("current_sorting", ("A-z", "z-A", "Unlocked", "Locked")), __regen] screen achievement_menuitem(): window: diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 5c029e77..cfc81517 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -211,6 +211,8 @@ init python: doll.body.matrix = IdentityMatrix() + delattr(store, "achievements_dict") + if current > latest: raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest)) @@ -219,8 +221,6 @@ init python: setattr(store, "_savecompat", True) message = "Have fun!" - achievements.attempt_repair() - renpy.call_in_new_context("modal_popup", "Update Successful", "\nYour save file has been successfully updated to version {{b}}{}{{/b}}.\n\n{}".format(config.version, message), None, "Hurray!") renpy.block_rollback() From 38d2494bc3e89cff6f2bc653ec559a86732a2200 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 25 Mar 2024 14:57:36 +0000 Subject: [PATCH 189/249] Fix conflicting properties (by Gouvernathor) big work what was reliable before is now not, in recent versions of renpy, which is why we added that new config (which I put in say.rpy, but it can be moved somewhere else) Also fixes the game_menu's title position, incidentally some changes are incompatible with my diary and achievement branches, respectively, they will need to be merged with a bit of manual care --- .../characters/hermione/events/intro.rpy | 2 +- game/scripts/characters/luna/events/intro.rpy | 2 +- game/scripts/gui/main_menu.rpy | 6 +-- game/scripts/gui/say.rpy | 7 ++-- game/scripts/interface/achievements.rpy | 4 +- game/scripts/interface/book.rpy | 1 - game/scripts/interface/credits.rpy | 4 +- game/scripts/interface/inventory.rpy | 14 +++---- game/scripts/interface/map.rpy | 42 +++++++------------ game/scripts/interface/screens.rpy | 1 - game/scripts/interface/stats.rpy | 4 +- game/scripts/interface/topbar.rpy | 2 - .../minigames/cardgame/_card_game_.rpy | 2 +- .../minigames/cardgame/_deck_builder_.rpy | 16 +++---- game/scripts/minigames/mirror/menu.rpy | 6 +-- game/scripts/minigames/puzzle.rpy | 3 +- game/scripts/options.rpy | 4 +- game/scripts/rooms/main_room/objects/desk.rpy | 10 ++--- game/scripts/shops/item/menu.rpy | 18 ++++---- game/scripts/utility/editor.rpy | 2 +- game/scripts/wardrobe/wardrobe.rpy | 1 - 21 files changed, 66 insertions(+), 85 deletions(-) diff --git a/game/scripts/characters/hermione/events/intro.rpy b/game/scripts/characters/hermione/events/intro.rpy index 37bfeedb..50d63e0c 100644 --- a/game/scripts/characters/hermione/events/intro.rpy +++ b/game/scripts/characters/hermione/events/intro.rpy @@ -105,7 +105,7 @@ label hermione_intro_E1: zoom 1.0 align (0.5, 0.5) pos (-520, -70) - easein_quad 3.0 align (0.0, 0.0) pos (0, 0) zoom 0.5 + easein_quad 3.0 anchor (0.0, 0.0) pos (0, 0) zoom 0.5 menu: "\"Good morning, Hermione.\"" if d_flag_01: diff --git a/game/scripts/characters/luna/events/intro.rpy b/game/scripts/characters/luna/events/intro.rpy index 46f2290c..0838dec1 100644 --- a/game/scripts/characters/luna/events/intro.rpy +++ b/game/scripts/characters/luna/events/intro.rpy @@ -85,7 +85,7 @@ label luna_intro_E1: show CG luna as cg zorder 17: subpixel True zoom 1.0 - easein_quad 3.0 align (.0, .0) pos (0, 0) zoom 0.5 # pos (0, 0) not necessary in next renpy version + easein_quad 3.0 anchor (.0, .0) pos (0, 0) zoom 0.5 # use align (0, 0) in next renpy version gen "What are you doing in my office?" gen "Did Snape send you here? Surely--" diff --git a/game/scripts/gui/main_menu.rpy b/game/scripts/gui/main_menu.rpy index ec01c15a..c0526ef3 100644 --- a/game/scripts/gui/main_menu.rpy +++ b/game/scripts/gui/main_menu.rpy @@ -176,9 +176,9 @@ screen game_menu(title, scroll=None, yinitial=0.0): padding (15, 15, 15, 15) transclude - use navigation(title) + use navigation(title): - label title anchor (0.5, 0.5) align (0.9, 0.15) + label title xalign .5 if main_menu and not title == "Updater": key "game_menu" action ShowMenu("main_menu") @@ -229,7 +229,7 @@ screen navigation(title=None): default show_quick_start = False default show_dev_start = False - default is_sensitive = not bool(title == "Updater") + default is_sensitive = title != "Updater" key "keydown_K_LSHIFT" action SetLocalVariable("show_quick_start", True) key "keyup_K_LSHIFT" action SetLocalVariable("show_quick_start", False) diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index 71c7a96b..49af47c2 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -44,7 +44,7 @@ screen say(who, what, side_image=None, icon=None): ypos 1000 if side_image: - add side_image yalign 1.0 yanchor 1.0 zoom 0.5 + add side_image yalign 1.0 zoom 0.5 else: add SideImage() @@ -213,8 +213,9 @@ screen choice(items, menu_yalign=.6): hbox: spacing 2 xpos choice_width - 5 - align (1.0, 0.5) - for i in range(0, max_progress): + xanchor 1. + yalign .5 + for i in range(max_progress): if i < len(progress): add progress[i] else: diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index f5e7a7c6..0d197bda 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -173,8 +173,8 @@ screen achievement_window(msg="", title="", icon=None, xpos=0, ypos=60): ypos 12 spacing 10 xalign 0.5 - text title size 18 xalign 0.5 xanchor 0.5 - text msg size 14 xalign 0.5 xanchor 0.5 + text title size 18 xalign 0.5 + text msg size 14 xalign 0.5 timer 6.0 action Hide("achievement_window") transform rotate_circular(t=7): diff --git a/game/scripts/interface/book.rpy b/game/scripts/interface/book.rpy index 76cf18a5..12f69908 100644 --- a/game/scripts/interface/book.rpy +++ b/game/scripts/interface/book.rpy @@ -134,7 +134,6 @@ screen book_menu(page, pages, title, page_title, page_text, page_overflow): imagebutton: pos (878, 100) ysize 400 - xalign 1.0 # Next if page < pages: idle Transform("interface/book/hover.webp", alpha=0) diff --git a/game/scripts/interface/credits.rpy b/game/scripts/interface/credits.rpy index d99494ef..16f5a1e3 100644 --- a/game/scripts/interface/credits.rpy +++ b/game/scripts/interface/credits.rpy @@ -133,10 +133,10 @@ screen credits(credits=credits_text, duration=credits_duration, chibis=credits_c zoom 0.5 if left: pos (20, config.screen_height - 20) - align (0.0, 1.0) + anchor (0.0, 1.0) else: pos (config.screen_width - 20, config.screen_height - 20) - align (1.0, 1.0) + anchor (1.0, 1.0) text credits: at credits_scroll(duration) diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index 1bdf5744..44c23305 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -268,9 +268,9 @@ screen inventory_menu(xx, yy): # Gold & Tokens null height 16 - text "{color=#daa520}Gold{/color} {outlinecolor=#ffffff00}[game.gold]{/outlinecolor}" size 12 outlines [ (2, "#000", 0, 0) ] xalign 0.1 xanchor 0 + text "{color=#daa520}Gold{/color} {outlinecolor=#ffffff00}[game.gold]{/outlinecolor}" size 12 outlines [ (2, "#000", 0, 0) ] xpos 0.1 xanchor 0 add gui.format("interface/achievements/{}/spacer_left.webp") - text "{color=#2055da}Tokens{/color} {outlinecolor=#ffffff00}[tokens]{/outlinecolor}" size 12 outlines [ (2, "#000", 0, 0) ] xalign 0.1 xanchor 0 + text "{color=#2055da}Tokens{/color} {outlinecolor=#ffffff00}[tokens]{/outlinecolor}" size 12 outlines [ (2, "#000", 0, 0) ] xpos 0.1 xanchor 0 add gui.format("interface/achievements/{}/spacer_left.webp") vbox: @@ -357,16 +357,16 @@ screen inventory_menuitem(xx, yy): text str(it_item.owned) size 10 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] elif current_category == "Decorations": if it_item.in_use: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 + add "interface/topbar/icon_check.webp" align (1.0, 1.0) offset (-3, -3) zoom 0.5 elif current_category in ("Books", "Quest Items"): if it_item.used: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-3, -3) zoom 0.5 + add "interface/topbar/icon_check.webp" align (1.0, 1.0) offset (-3, -3) zoom 0.5 if inventory_mode == 1 and (not it_item.givable or not states.active_girl in it_item.usable_on): add "#b2000040" if menu_items_length <= 0: - text "Nothing here yet" align (0.5, 0.5) anchor (0.5, 0.5) size 24 + text "Nothing here yet" align (0.5, 0.5) size 24 if current_item: frame: @@ -386,10 +386,10 @@ screen inventory_menuitem(xx, yy): text "[current_item.owned]" size 14 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] elif current_category == "Decorations": if current_item.in_use: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-6, -6) + add "interface/topbar/icon_check.webp" align (1.0, 1.0) offset (-6, -6) elif current_category in ("Books", "Quest Items"): if current_item.used: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-6, -6) + add "interface/topbar/icon_check.webp" align (1.0, 1.0) offset (-6, -6) if inventory_mode == 1 and (not current_item.givable or not states.active_girl in current_item.usable_on): add "#b2000040" diff --git a/game/scripts/interface/map.rpy b/game/scripts/interface/map.rpy index 1d2f2d1e..3750550e 100644 --- a/game/scripts/interface/map.rpy +++ b/game/scripts/interface/map.rpy @@ -397,10 +397,8 @@ screen map_screen_characters(): if states.her.map_location == "forest": # Mark forest event. add "interface/achievements/glow.webp" xycenter (her_map_xpos, her_map_ypos) zoom 0.15 alpha 0.5 at rotate_circular imagebutton: - xpos her_map_xpos - ypos her_map_ypos - xalign 0.5 - yalign 0.5 + xcenter her_map_xpos + ycenter her_map_ypos idle "interface/map/name_hermione.webp" hover "interface/map/name_hermione_hover.webp" hovered SetScreenVariable("ball_hint", "summon_hermione") @@ -410,10 +408,8 @@ screen map_screen_characters(): #Luna if states.lun.unlocked: imagebutton: - xpos lun_map_xpos - ypos lun_map_ypos - xalign 0.5 - yalign 0.5 + xcenter lun_map_xpos + ycenter lun_map_ypos idle "interface/map/name_luna.webp" hover "interface/map/name_luna_hover.webp" hovered SetScreenVariable("ball_hint", "summon_luna") @@ -423,10 +419,8 @@ screen map_screen_characters(): #Astoria if states.ast.unlocked: imagebutton: - xpos ast_map_xpos - ypos ast_map_ypos - xalign 0.5 - yalign 0.5 + xcenter ast_map_xpos + ycenter ast_map_ypos idle "interface/map/name_astoria.webp" hover "interface/map/name_astoria_hover.webp" hovered SetScreenVariable("ball_hint", "summon_astoria") @@ -436,10 +430,8 @@ screen map_screen_characters(): #Susan if states.sus.unlocked: imagebutton: - xpos sus_map_xpos - ypos sus_map_ypos - xalign 0.5 - yalign 0.5 + xcenter sus_map_xpos + ycenter sus_map_ypos idle "interface/map/name_susan.webp" hover "interface/map/name_susan_hover.webp" hovered SetScreenVariable("ball_hint", "summon_susan") @@ -449,10 +441,8 @@ screen map_screen_characters(): #Cho if states.cho.unlocked: imagebutton: - xpos cho_map_xpos - ypos cho_map_ypos - xalign 0.5 - yalign 0.5 + xcenter cho_map_xpos + ycenter cho_map_ypos idle "interface/map/name_cho.webp" hover "interface/map/name_cho_hover.webp" hovered SetScreenVariable("ball_hint", "summon_cho") @@ -462,10 +452,8 @@ screen map_screen_characters(): #Snape if states.sna.unlocked: imagebutton: - xpos sna_map_xpos - ypos sna_map_ypos - xalign 0.5 - yalign 0.5 + xcenter sna_map_xpos + ycenter sna_map_ypos idle "interface/map/name_snape.webp" hover "interface/map/name_snape_hover.webp" hovered SetScreenVariable("ball_hint", "summon_snape") @@ -475,10 +463,8 @@ screen map_screen_characters(): #Tonks if states.ton.unlocked: imagebutton: - xpos ton_map_xpos - ypos ton_map_ypos - xalign 0.5 - yalign 0.5 + xcenter ton_map_xpos + ycenter ton_map_ypos idle "interface/map/name_tonks.webp" hover "interface/map/name_tonks_hover.webp" hovered SetScreenVariable("ball_hint", "summon_tonks") diff --git a/game/scripts/interface/screens.rpy b/game/scripts/interface/screens.rpy index 0419b668..54033ea8 100644 --- a/game/scripts/interface/screens.rpy +++ b/game/scripts/interface/screens.rpy @@ -41,7 +41,6 @@ screen close_button(xoffset=0, yoffset=0, action=Return("Close"), key=["game_men imagebutton: keyboard_focus False xalign 1.0 - xanchor 1.0 offset (xoffset, yoffset) idle gui.format("interface/topbar/buttons/{}/ui_close.webp") hover image_hover(gui.format("interface/topbar/buttons/{}/ui_close.webp")) diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index 79d344e7..30494c92 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -261,9 +261,9 @@ screen stats_menuitem(current_category, current_item, stats_flags): if current_subcategory == "overview": if stats_flags[current_category]: - text current_item["name"] size 20 xalign 0.5 xanchor 0.5 ypos 5 + text current_item["name"] size 20 xalign 0.5 ypos 5 else: - text "???" size 20 xalign 0.5 xanchor 0.5 ypos 5 + text "???" size 20 xalign 0.5 ypos 5 vbox: xoffset 10 diff --git a/game/scripts/interface/topbar.rpy b/game/scripts/interface/topbar.rpy index c4108a9f..a7881376 100644 --- a/game/scripts/interface/topbar.rpy +++ b/game/scripts/interface/topbar.rpy @@ -118,7 +118,6 @@ screen ui_points(): xalign 0.5 xsize 162 ysize 64 - xanchor 0.5 if not persistent.toggle_points and not toggle_points: add "interface/topbar/slytherin.webp" yanchor housepoints_y[slytherin_place] @@ -209,7 +208,6 @@ screen ui_menu(): add gui.format("interface/topbar/{}/menu.webp") vbox: - xanchor 0.5 xalign 0.5 ypos 15 textbutton "Save" action ShowMenu("save") background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ] diff --git a/game/scripts/minigames/cardgame/_card_game_.rpy b/game/scripts/minigames/cardgame/_card_game_.rpy index e1b24af0..430dabb3 100644 --- a/game/scripts/minigames/cardgame/_card_game_.rpy +++ b/game/scripts/minigames/cardgame/_card_game_.rpy @@ -343,7 +343,7 @@ screen advance_deck(): screen card_end_message(message): zorder 15 - text "{color=#FFF}{size=+40}[message]{/size}{/color}" xpos 540 ypos 300 xalign 0.5 yalign 0.5 outlines [ (5, "#000", 0, 0) ] + text "{color=#FFF}{size=+40}[message]{/size}{/color}" xcenter 540 ycenter 300 outlines [ (5, "#000", 0, 0) ] screen rules_display(game_rules_list): tag rules diff --git a/game/scripts/minigames/cardgame/_deck_builder_.rpy b/game/scripts/minigames/cardgame/_deck_builder_.rpy index 35775f0e..0ac595e1 100644 --- a/game/scripts/minigames/cardgame/_deck_builder_.rpy +++ b/game/scripts/minigames/cardgame/_deck_builder_.rpy @@ -111,7 +111,7 @@ screen deck_builder_screen(): #Page info $ str_currentpage = currentpage+1 $ str_currentpage_max = int(math.ceil((len(unlocked_cards)-1)/card_shown)+1.0) - text "{color=#FFFFFF}{size=-5}Page [str_currentpage]/[str_currentpage_max]{/size}{/color}" xpos 215 ypos 360 text_align 0.5 xalign 0.5 + text "{color=#FFFFFF}{size=-5}Page [str_currentpage]/[str_currentpage_max]{/size}{/color}" xcenter 215 ypos 360 text_align 0.5 #Gallery button imagebutton: @@ -161,7 +161,7 @@ screen deck_builder_gallery(): use cardrender(card, 18+80*col, 67+125*row, False, cardzoom=0.25, color=card_exist(unlocked_cards, card)) imagebutton: - anchor (1.0, 0.0) + yanchor 0.0 ypos 18 xalign 0.98 @@ -277,22 +277,22 @@ screen deck_builder_tutorial(): add "images/cardgame/guide/[deck_guide_helper].webp" xpos 600 ypos 250 if deck_guide_helper == "numbers_guide": - add "images/cardgame/guide/[deck_guide_helper].webp" xpos 540 ypos 300 xalign 0.5 yalign 0.5 + add "images/cardgame/guide/[deck_guide_helper].webp" xcenter 540 ycenter 300 if deck_guide_helper == "tier_guide": - add "images/cardgame/guide/[deck_guide_helper].webp" xpos 500 ypos 200 xanchor 0.5 + add "images/cardgame/guide/[deck_guide_helper].webp" xcenter 500 ypos 200 if deck_guide_helper == "cho_stage2": - add "images/cardgame/guide/[deck_guide_helper].webp" xpos 540 ypos 300 xalign 0.5 yalign 0.5 + add "images/cardgame/guide/[deck_guide_helper].webp" xcenter 540 ycenter 300 if deck_guide_helper == "cho_stage3": - add "images/cardgame/guide/[deck_guide_helper].webp" xpos 540 ypos 300 xalign 0.5 yalign 0.5 + add "images/cardgame/guide/[deck_guide_helper].webp" xcenter 540 ycenter 300 if deck_guide_helper == "cho_stage4": - add "images/cardgame/guide/[deck_guide_helper].webp" xpos 540 ypos 300 xalign 0.5 yalign 0.5 + add "images/cardgame/guide/[deck_guide_helper].webp" xcenter 540 ycenter 300 if deck_guide_helper == "fight_guide": - add "images/cardgame/guide/[deck_guide_helper].webp" xpos 540 ypos 360 xalign 0.5 + add "images/cardgame/guide/[deck_guide_helper].webp" xcenter 540 ypos 360 ##Back button #imagebutton: diff --git a/game/scripts/minigames/mirror/menu.rpy b/game/scripts/minigames/mirror/menu.rpy index f90d1ce2..38be1a86 100644 --- a/game/scripts/minigames/mirror/menu.rpy +++ b/game/scripts/minigames/mirror/menu.rpy @@ -163,9 +163,9 @@ screen mirror_menuitem(xx, yy): xfill True action Return(["select", ev]) if is_unlocked and not ev.seen: - text "NEW" style "wardrobe_item_caption" anchor (1.0, 1.0) align (1.0, 1.0) offset (-5, -5) + text "NEW" style "wardrobe_item_caption" align (1.0, 1.0) offset (-5, -5) if ev.played: - add "interface/topbar/icon_check.webp" anchor (1.0, 1.0) align (1.0, 1.0) offset (-5, -5) zoom 0.7 + add "interface/topbar/icon_check.webp" align (1.0, 1.0) offset (-5, -5) zoom 0.7 vbox: text ev.name text "By {}".format(authors) size 10 @@ -173,7 +173,7 @@ screen mirror_menuitem(xx, yy): if menu_items_length <= 0: - text "Nothing here yet" align (0.5, 0.5) anchor (0.5, 0.5) size 24 + text "Nothing here yet" align (0.5, 0.5) size 24 if current_item: frame: diff --git a/game/scripts/minigames/puzzle.rpy b/game/scripts/minigames/puzzle.rpy index db7a1855..fa091823 100644 --- a/game/scripts/minigames/puzzle.rpy +++ b/game/scripts/minigames/puzzle.rpy @@ -91,7 +91,8 @@ screen puzzle_minigame(): vbox: yanchor 0.0 - align (0.5, 0.85) + ypos 0.85 + xalign .5 textbutton "-Hint-" xalign 0.5 action ToggleScreenVariable("hint", True, False) if tries >= 75: textbutton "-Force it open-" xalign 0.5 action Return(False) at pulse_hover diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index a32c4828..51f68e95 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -41,7 +41,6 @@ define config.version = "1.46" define compatible_version = 1.451 define config.name = "Witch Trainer Silver" - # Application window settings define config.window_title = f"{config.name} (v{config.version}{' PRE-RELEASE' if prerelease else ''}) ({get_renderer()}) ({renpy.bits}-bit)" define config.window_icon = "gui/icon.webp" @@ -128,6 +127,9 @@ define config.enter_replay_transition = None define config.exit_replay_transition = None define config.say_attribute_transition = d3 +# Engine Compatibility +define config.check_conflicting_properties = True + # Python define config.open_file_encoding = "utf-8" diff --git a/game/scripts/rooms/main_room/objects/desk.rpy b/game/scripts/rooms/main_room/objects/desk.rpy index 5b45cbce..fdcce574 100644 --- a/game/scripts/rooms/main_room/objects/desk.rpy +++ b/game/scripts/rooms/main_room/objects/desk.rpy @@ -156,9 +156,8 @@ screen desk_menu(): #Book if item_store_intro_done: - add "interface/desk/book.webp" xalign 1.0 xpos 1080 ypos 0 + add "interface/desk/book.webp" xalign 1.0 ypos 0 imagebutton: - xpos 1080 ypos 0 xalign 1.0 idle "interface/desk/book.webp" @@ -169,9 +168,8 @@ screen desk_menu(): action Return("inventory") #Tissue Box - add "interface/desk/tissues.webp" xalign 1.0 xpos 1080 ypos 320 + add "interface/desk/tissues.webp" xalign 1.0 ypos 320 imagebutton: - xpos 1080 ypos 320 xalign 1.0 idle "interface/desk/tissues.webp" @@ -186,7 +184,7 @@ screen desk_menu(): imagebutton: xpos -10 ypos 0 - xalign 0.0 + xanchor 0.0 idle "interface/desk/work.webp" hover "interface/desk/work_hover.webp" hovered SetScreenVariable("ball_hint", "work") @@ -197,8 +195,6 @@ screen desk_menu(): #Cards if states.cardgame.unlocked: #Or letter_cards_unlock.read #Day 26+ imagebutton: - xpos 0 - ypos 600 xalign 0.0 yalign 1.0 idle "interface/desk/cards.webp" diff --git a/game/scripts/shops/item/menu.rpy b/game/scripts/shops/item/menu.rpy index c3713d1c..76a22c92 100644 --- a/game/scripts/shops/item/menu.rpy +++ b/game/scripts/shops/item/menu.rpy @@ -227,17 +227,17 @@ screen shop_item_menuitem(xx, yy): if menu_items[i].currency == "tokens": if tokens >= menu_items[i].price: - text "{color=#2055da}T{/color} [price]" size 10 align (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "{color=#2055da}T{/color} [price]" size 10 pos (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] else: - text "{color=#2055da}T{/color} {color=#ff0000}[price]{/color}" size 10 align (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "{color=#2055da}T{/color} {color=#ff0000}[price]{/color}" size 10 pos (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] else: if game.gold >= menu_items[i].price: - text "{color=#daa520}G{/color} [price]" size 10 align (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "{color=#daa520}G{/color} [price]" size 10 pos (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] else: - text "{color=#daa520}G{/color} {color=#ff0000}[price]{/color}" size 10 align (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "{color=#daa520}G{/color} {color=#ff0000}[price]{/color}" size 10 pos (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] if menu_items_length <= 0: - text "Nothing here yet" align (0.5, 0.5) anchor (0.5, 0.5) size 24 + text "Nothing here yet" align (0.5, 0.5) size 24 if current_item: frame: @@ -258,14 +258,14 @@ screen shop_item_menuitem(xx, yy): if current_item.currency == "tokens": if tokens >= current_item.price: - text "{color=#2055da}T{/color} [current_item.price]" size 14 align (0.9, 0.9) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "{color=#2055da}T{/color} [current_item.price]" size 14 pos (0.9, 0.9) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] else: - text "{color=#2055da}T{/color} {color=#ff0000}[current_item.price]{/color}" size 14 align (0.90, 0.90) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "{color=#2055da}T{/color} {color=#ff0000}[current_item.price]{/color}" size 14 pos (0.90, 0.90) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] else: if game.gold >= current_item.price: - text "{color=#daa520}G{/color} [current_item.price]" size 14 align (0.9, 0.9) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "{color=#daa520}G{/color} [current_item.price]" size 14 pos (0.9, 0.9) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] else: - text "{color=#daa520}G{/color} {color=#ff0000}[current_item.price]{/color}" size 14 align (0.90, 0.90) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] + text "{color=#daa520}G{/color} {color=#ff0000}[current_item.price]{/color}" size 14 pos (0.90, 0.90) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ] add gui.format("interface/achievements/{}/highlight.webp") pos (112, 375) add gui.format("interface/achievements/{}/spacer.webp") pos (120, 398) diff --git a/game/scripts/utility/editor.rpy b/game/scripts/utility/editor.rpy index 8583bf6a..fb3ff8d5 100644 --- a/game/scripts/utility/editor.rpy +++ b/game/scripts/utility/editor.rpy @@ -441,7 +441,7 @@ screen editor(): drag: pos (50, 50) - maximum (500, 500) + ymaximum 500 xsize 500 frame: diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index 56e290ad..b1644f01 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -689,7 +689,6 @@ screen wardrobe_menu(xx, yy): corner1 (184, 218) corner2 (924, 1200) zoom 0.45 - anchor (0.5, 1.0) align (0.5, 1.0) # Easter Egg (Headpats, boobs, pussy) From a89f7b8161c5b26014769547c4acf7e2ea454859 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 25 Mar 2024 15:22:06 +0000 Subject: [PATCH 190/249] Update Credits --- game/scripts/interface/credits.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/interface/credits.rpy b/game/scripts/interface/credits.rpy index 16f5a1e3..948ead77 100644 --- a/game/scripts/interface/credits.rpy +++ b/game/scripts/interface/credits.rpy @@ -12,7 +12,7 @@ define credits_text = "\n".join([ credits_title("Writing"), credits_group("Johnny", "MadMerlin", "Livvypoo", "Mo"), credits_title("Programming"), - credits_group("Asease1", "LoafyLemon", "TropeCode"), + credits_group("Asease1", "LoafyLemon", "TropeCode", "Gouvernathor"), credits_title("Music"), credits_group( "Kevin MacLeod\n{size=-5}{color=#808080}{k=0.7}\"Anguish\"\n\"Awkward Meeting\"\n\"Deadly Roulette\"\n\"Brittle Rille\"\n\"Firebrand\"\n\"Chipper Doodle v2\"\n\"Dark Fog\"\n\"Despair\"\n\"Game Over Theme\"\n\"Boss Theme\"\n\"Hitman\"\n\"Music for Manatees\"\n\"Plaint\"\n\"Fuzzball Parade\"\n\"Teddy Bear Waltz\"\n\"Scheming Weasel (Slower version)\"\n\"Open Those Bright Eyes\"\n\"Wallpaper\"\n\"Hidden Agenda\"\n\"Aquarium\"\n\"Court of the Queen\"\n\"Machinations\"\n\"Brandenburg Concerto No. 4 in G, Movement I (Allegro), BWV 1049\"\n\"March of the spoons\"\n\"The other side of the door\"{/k}{/color}{/size}\n", From d25cd0fc2a73641e35c0b9346dc5bea02befa4a2 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 26 Mar 2024 19:20:38 +0000 Subject: [PATCH 191/249] New logo and bug fix * Added new logo * Fixed credits scroll animation --- android-presplash.jpg | 4 ++-- game/gui/logos/title.webp | 4 ++-- game/images/logo/title.webp | 4 ++-- game/presplash_background.png | 4 ++-- game/scripts/interface/credits.rpy | 4 +--- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/android-presplash.jpg b/android-presplash.jpg index d5065958..4af5b8fd 100644 --- a/android-presplash.jpg +++ b/android-presplash.jpg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2070b44b629d06f348f69b343ce6c68dc726fcd69651ae69f14d344bc39aaaa -size 225181 +oid sha256:cdd41f942ef276949834fe85534b7e27c8b20bc1d935fabfba664314c214f611 +size 213055 diff --git a/game/gui/logos/title.webp b/game/gui/logos/title.webp index 18981bff..16872b11 100644 --- a/game/gui/logos/title.webp +++ b/game/gui/logos/title.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5480426620329bb1550417afd586d90cf76aa1721813ac806d1b8207460cba3b -size 71242 +oid sha256:a2a71593c65c4971aa09967bcb6911a56fa36ea6a413f433ef709ef6cb80e9d4 +size 32480 diff --git a/game/images/logo/title.webp b/game/images/logo/title.webp index 6437b6fd..16872b11 100644 --- a/game/images/logo/title.webp +++ b/game/images/logo/title.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:077221102d4ec99397c0a37acc71b64ce8770e6ca7d41c938c7e57804ff93744 -size 70382 +oid sha256:a2a71593c65c4971aa09967bcb6911a56fa36ea6a413f433ef709ef6cb80e9d4 +size 32480 diff --git a/game/presplash_background.png b/game/presplash_background.png index 1a287e29..bdbbb7f3 100644 --- a/game/presplash_background.png +++ b/game/presplash_background.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b58111f165b61c76a43fcc702efe9bad27bbf10e4b4d96cf8a3313a97c9fbcdb -size 302255 +oid sha256:a6512374cdb87334db5769d0e768896dd40756f7b9630fcacf76710366cf2d34 +size 218675 diff --git a/game/scripts/interface/credits.rpy b/game/scripts/interface/credits.rpy index 948ead77..44abb8f3 100644 --- a/game/scripts/interface/credits.rpy +++ b/game/scripts/interface/credits.rpy @@ -111,10 +111,7 @@ transform credits_chibi_fade(start, duration): transform credits_scroll(duration): subpixel True - - xalign 0.5 yanchor 0.0 - ypos (config.screen_height / 2 - 125) pause 1 parallel: linear (duration - 1) yanchor 1.0 @@ -142,5 +139,6 @@ screen credits(credits=credits_text, duration=credits_duration, chibis=credits_c at credits_scroll(duration) xsize credits_width text_align 0.5 + xalign 0.5 color "#fff" outlines [(2, "#000", 0, 0)] From 6d6f58538e9cd1599ed375221264a67206d7962a Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 26 Mar 2024 19:34:11 +0000 Subject: [PATCH 192/249] Bug fixes * Fixed presplash loading bar * Disabled sparkle in title animation --- game/presplash_background.png | 4 +- game/scripts/animations/common.rpy | 86 +++++++++++++++--------------- game/scripts/gui/_images_.rpy | 84 ++++++++++++++--------------- 3 files changed, 87 insertions(+), 87 deletions(-) diff --git a/game/presplash_background.png b/game/presplash_background.png index bdbbb7f3..70946d4a 100644 --- a/game/presplash_background.png +++ b/game/presplash_background.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6512374cdb87334db5769d0e768896dd40756f7b9630fcacf76710366cf2d34 -size 218675 +oid sha256:d3c15511fab40a0d56d95c0a94c73d99ba4325d2d076bf9e7d2d5d90aefd892a +size 218364 diff --git a/game/scripts/animations/common.rpy b/game/scripts/animations/common.rpy index 2e5d1cf4..ab56e70d 100644 --- a/game/scripts/animations/common.rpy +++ b/game/scripts/animations/common.rpy @@ -341,54 +341,54 @@ image title_ani: pause.1 repeat - #sparkle - contains: - animation - xpos 798 - ypos 200 - xanchor 0.5 - yanchor 0.5 - zoom 0.0 - "images/title/sparkle.webp" - linear 0.8 zoom 1.0 - linear 0.5 zoom 0.0 - pause 5 - repeat + # #sparkle + # contains: + # animation + # xpos 798 + # ypos 200 + # xanchor 0.5 + # yanchor 0.5 + # zoom 0.0 + # "images/title/sparkle.webp" + # linear 0.8 zoom 1.0 + # linear 0.5 zoom 0.0 + # pause 5 + # repeat - #shine silver (synchronized) - contains: - animation - xpos 848 - ypos 230 - xanchor 0.5 - yanchor 0.5 - zoom 0.0 - "images/title/sparkle.webp" - pause 1.3 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 + # #shine silver (synchronized) + # contains: + # animation + # xpos 848 + # ypos 230 + # xanchor 0.5 + # yanchor 0.5 + # zoom 0.0 + # "images/title/sparkle.webp" + # pause 1.3 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 - xpos 870 - ypos 205 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 + # xpos 870 + # ypos 205 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 - xpos 914 - ypos 227 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 + # xpos 914 + # ypos 227 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 - xpos 948 - ypos 233 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 + # xpos 948 + # ypos 233 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 - xpos 999 - ypos 226 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 - pause 12.6 - repeat + # xpos 999 + # ypos 226 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 + # pause 12.6 + # repeat # Other game menu background image menu_ani: diff --git a/game/scripts/gui/_images_.rpy b/game/scripts/gui/_images_.rpy index 525d3b65..39ddc9e9 100644 --- a/game/scripts/gui/_images_.rpy +++ b/game/scripts/gui/_images_.rpy @@ -91,53 +91,53 @@ image game_title: #TODO Add sparkle to game logo # #sparkle - contains: - subpixel True - xpos 50 - ypos 200 - xanchor 0.5 - yanchor 0.5 - zoom 0.0 - "gui/main_menu/sparkle.webp" - linear 0.8 zoom 1.0 - linear 0.5 zoom 0.0 - pause 5 - repeat + # contains: + # subpixel True + # xpos 50 + # ypos 200 + # xanchor 0.5 + # yanchor 0.5 + # zoom 0.0 + # "gui/main_menu/sparkle.webp" + # linear 0.8 zoom 1.0 + # linear 0.5 zoom 0.0 + # pause 5 + # repeat - # #shine silver (synchronized) - contains: - subpixel True - xpos 115 - ypos 222 - xanchor 0.5 - yanchor 0.5 - zoom 0.0 - "images/title/sparkle.webp" - pause 1.3 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 + # # #shine silver (synchronized) + # contains: + # subpixel True + # xpos 115 + # ypos 222 + # xanchor 0.5 + # yanchor 0.5 + # zoom 0.0 + # "images/title/sparkle.webp" + # pause 1.3 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 - xpos 135 - ypos 192 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 + # xpos 135 + # ypos 192 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 - xpos 186 - ypos 217 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 + # xpos 186 + # ypos 217 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 - xpos 220 - ypos 223 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 + # xpos 220 + # ypos 223 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 - xpos 275 - ypos 220 - linear 0.5 zoom 1.0 - linear 0.5 zoom 0.0 - pause 12.6 - repeat + # xpos 275 + # ypos 220 + # linear 0.5 zoom 1.0 + # linear 0.5 zoom 0.0 + # pause 12.6 + # repeat image candle_fire: "gui/main_menu/candle/fire_01.webp" From c56404b169855fc3ce2fd576cef04ee1ccc832c8 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 27 Mar 2024 14:49:16 +0000 Subject: [PATCH 193/249] Refactoring * Removed no longer required chibi edits. --- .../luna/chibis/inspect_body_lean/breast_nude_01.webp | 3 --- .../luna/chibis/inspect_body_lean/breast_nude_02.webp | 3 --- .../luna/chibis/inspect_body_lean/breast_nude_03.webp | 3 --- .../luna/chibis/inspect_body_lean/breast_nude_04.webp | 3 --- .../luna/chibis/inspect_body_lean/breast_nude_05.webp | 3 --- .../luna/chibis/inspect_body_lean/breast_nude_06.webp | 3 --- .../characters/luna/chibis/inspect_body_lean/idle_nude_01.webp | 3 --- .../characters/luna/chibis/inspect_body_lean/idle_nude_02.webp | 3 --- game/characters/luna/chibis/inspect_body_lean/vag_nude_01.webp | 3 --- game/characters/luna/chibis/inspect_body_lean/vag_nude_02.webp | 3 --- game/characters/luna/chibis/inspect_body_lean/vag_nude_03.webp | 3 --- game/characters/luna/chibis/inspect_body_lean/vag_nude_04.webp | 3 --- game/characters/luna/chibis/inspect_body_lean/vag_nude_05.webp | 3 --- game/characters/luna/chibis/inspect_body_lean/vag_nude_06.webp | 3 --- .../luna/chibis/inspect_body_stand/Idle_clothed_01.webp | 3 --- .../luna/chibis/inspect_body_stand/breast_nude_01.webp | 3 --- .../luna/chibis/inspect_body_stand/breast_nude_02.webp | 3 --- .../luna/chibis/inspect_body_stand/breast_nude_03.webp | 3 --- .../luna/chibis/inspect_body_stand/breast_nude_04.webp | 3 --- .../luna/chibis/inspect_body_stand/breast_nude_05.webp | 3 --- .../luna/chibis/inspect_body_stand/breast_nude_06.webp | 3 --- .../luna/chibis/inspect_body_stand/idle_clothed_02.webp | 3 --- .../luna/chibis/inspect_body_stand/idle_nude_01.webp | 3 --- .../luna/chibis/inspect_body_stand/idle_nude_02.webp | 3 --- .../characters/luna/chibis/inspect_body_stand/vag_nude_01.webp | 3 --- .../characters/luna/chibis/inspect_body_stand/vag_nude_02.webp | 3 --- .../characters/luna/chibis/inspect_body_stand/vag_nude_03.webp | 3 --- .../characters/luna/chibis/inspect_body_stand/vag_nude_04.webp | 3 --- .../characters/luna/chibis/inspect_body_stand/vag_nude_05.webp | 3 --- .../characters/luna/chibis/inspect_body_stand/vag_nude_06.webp | 3 --- game/characters/luna/chibis/sit_on_lap.webp | 3 --- 31 files changed, 93 deletions(-) delete mode 100644 game/characters/luna/chibis/inspect_body_lean/breast_nude_01.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/breast_nude_02.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/breast_nude_03.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/breast_nude_04.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/breast_nude_05.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/breast_nude_06.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/idle_nude_01.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/idle_nude_02.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/vag_nude_01.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/vag_nude_02.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/vag_nude_03.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/vag_nude_04.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/vag_nude_05.webp delete mode 100644 game/characters/luna/chibis/inspect_body_lean/vag_nude_06.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/Idle_clothed_01.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/breast_nude_01.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/breast_nude_02.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/breast_nude_03.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/breast_nude_04.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/breast_nude_05.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/breast_nude_06.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/idle_clothed_02.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/idle_nude_01.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/idle_nude_02.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/vag_nude_01.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/vag_nude_02.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/vag_nude_03.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/vag_nude_04.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/vag_nude_05.webp delete mode 100644 game/characters/luna/chibis/inspect_body_stand/vag_nude_06.webp delete mode 100644 game/characters/luna/chibis/sit_on_lap.webp diff --git a/game/characters/luna/chibis/inspect_body_lean/breast_nude_01.webp b/game/characters/luna/chibis/inspect_body_lean/breast_nude_01.webp deleted file mode 100644 index 3f905ec3..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/breast_nude_01.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:48e5ce87ea7b08190f456de886868a0f4586622512607f28a2ba09abbac8711c -size 37730 diff --git a/game/characters/luna/chibis/inspect_body_lean/breast_nude_02.webp b/game/characters/luna/chibis/inspect_body_lean/breast_nude_02.webp deleted file mode 100644 index d09f4d26..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/breast_nude_02.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b90f435b6adcd80aa33f9ee438e3377983156715a0774c16fcd44bd32247ae19 -size 37672 diff --git a/game/characters/luna/chibis/inspect_body_lean/breast_nude_03.webp b/game/characters/luna/chibis/inspect_body_lean/breast_nude_03.webp deleted file mode 100644 index b2f7fabd..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/breast_nude_03.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:975b4c2cd0ddb0b8d0182d7bbe37f258e6cbf4535ff3790e11ef146ffb8eaec0 -size 37668 diff --git a/game/characters/luna/chibis/inspect_body_lean/breast_nude_04.webp b/game/characters/luna/chibis/inspect_body_lean/breast_nude_04.webp deleted file mode 100644 index 0d9ce630..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/breast_nude_04.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:524f94286027f46e82677fda613650da74a331705ff1367188394bf64318bb0e -size 37714 diff --git a/game/characters/luna/chibis/inspect_body_lean/breast_nude_05.webp b/game/characters/luna/chibis/inspect_body_lean/breast_nude_05.webp deleted file mode 100644 index f303604f..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/breast_nude_05.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d06e59b6700ffedfa1b5787ff9f072effb5bab01cf812200ecf243b0c5d3cab -size 37702 diff --git a/game/characters/luna/chibis/inspect_body_lean/breast_nude_06.webp b/game/characters/luna/chibis/inspect_body_lean/breast_nude_06.webp deleted file mode 100644 index bd76a0f7..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/breast_nude_06.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f30d2ce70a8860652bdbc4db73d2c54205ebfceebd61f4059b915fdc2fba581 -size 37634 diff --git a/game/characters/luna/chibis/inspect_body_lean/idle_nude_01.webp b/game/characters/luna/chibis/inspect_body_lean/idle_nude_01.webp deleted file mode 100644 index 768bcf5f..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/idle_nude_01.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:32e4ea4c978a58fdd145d600b2d299a81106c001d7c1ac7a12641ec56ea0b3a8 -size 37620 diff --git a/game/characters/luna/chibis/inspect_body_lean/idle_nude_02.webp b/game/characters/luna/chibis/inspect_body_lean/idle_nude_02.webp deleted file mode 100644 index e2be7a8c..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/idle_nude_02.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2225be884c36e8a5528d7379b99608d51a3ec9f4b09df235511e18b925c3b6fd -size 37584 diff --git a/game/characters/luna/chibis/inspect_body_lean/vag_nude_01.webp b/game/characters/luna/chibis/inspect_body_lean/vag_nude_01.webp deleted file mode 100644 index 768bcf5f..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/vag_nude_01.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:32e4ea4c978a58fdd145d600b2d299a81106c001d7c1ac7a12641ec56ea0b3a8 -size 37620 diff --git a/game/characters/luna/chibis/inspect_body_lean/vag_nude_02.webp b/game/characters/luna/chibis/inspect_body_lean/vag_nude_02.webp deleted file mode 100644 index b6321ebb..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/vag_nude_02.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a469e897fc340c855929f6220d238d10acb35470e5afbd481eaeff475ea8310 -size 37540 diff --git a/game/characters/luna/chibis/inspect_body_lean/vag_nude_03.webp b/game/characters/luna/chibis/inspect_body_lean/vag_nude_03.webp deleted file mode 100644 index e2be7a8c..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/vag_nude_03.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2225be884c36e8a5528d7379b99608d51a3ec9f4b09df235511e18b925c3b6fd -size 37584 diff --git a/game/characters/luna/chibis/inspect_body_lean/vag_nude_04.webp b/game/characters/luna/chibis/inspect_body_lean/vag_nude_04.webp deleted file mode 100644 index 50ff5060..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/vag_nude_04.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a326daccc1f8fe21050aa72b5a78450635710483a81927cfbaff1d5e25f63fa5 -size 37588 diff --git a/game/characters/luna/chibis/inspect_body_lean/vag_nude_05.webp b/game/characters/luna/chibis/inspect_body_lean/vag_nude_05.webp deleted file mode 100644 index 4e09f87c..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/vag_nude_05.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1cb754c3dd5af052c72fbbb3f213bccce2c2a21da493ddb47e970e89281384bd -size 37590 diff --git a/game/characters/luna/chibis/inspect_body_lean/vag_nude_06.webp b/game/characters/luna/chibis/inspect_body_lean/vag_nude_06.webp deleted file mode 100644 index 567727ed..00000000 --- a/game/characters/luna/chibis/inspect_body_lean/vag_nude_06.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dffa476a9b445eecd5dba49c22ace8795fc5f9862ba2f631bbad79fc5ed7c2a3 -size 37602 diff --git a/game/characters/luna/chibis/inspect_body_stand/Idle_clothed_01.webp b/game/characters/luna/chibis/inspect_body_stand/Idle_clothed_01.webp deleted file mode 100644 index 965140e1..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/Idle_clothed_01.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6be88c66af84aa1cdb185839e2651835abea085fbc4f9b7a1663713717b0d7c9 -size 36460 diff --git a/game/characters/luna/chibis/inspect_body_stand/breast_nude_01.webp b/game/characters/luna/chibis/inspect_body_stand/breast_nude_01.webp deleted file mode 100644 index 862658ea..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/breast_nude_01.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4b692918e0c76a16bb81ec722061c725b6c75fd69606b0d0132ff6f8e5ab81b7 -size 36834 diff --git a/game/characters/luna/chibis/inspect_body_stand/breast_nude_02.webp b/game/characters/luna/chibis/inspect_body_stand/breast_nude_02.webp deleted file mode 100644 index 2929964a..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/breast_nude_02.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2d441d3d87201225e7324b8fc242eb762c5623f5d779ae39292313896d8d587 -size 36530 diff --git a/game/characters/luna/chibis/inspect_body_stand/breast_nude_03.webp b/game/characters/luna/chibis/inspect_body_stand/breast_nude_03.webp deleted file mode 100644 index 86714413..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/breast_nude_03.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:edbe69edd79a96466be36863b9b2e6c23b62ac838bd08127085039dfe6ee8723 -size 36766 diff --git a/game/characters/luna/chibis/inspect_body_stand/breast_nude_04.webp b/game/characters/luna/chibis/inspect_body_stand/breast_nude_04.webp deleted file mode 100644 index b931e25d..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/breast_nude_04.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:377a413cb4025082ba108577d4a462dac099af5cef277c05825b0e440785a5ef -size 36558 diff --git a/game/characters/luna/chibis/inspect_body_stand/breast_nude_05.webp b/game/characters/luna/chibis/inspect_body_stand/breast_nude_05.webp deleted file mode 100644 index 03ce08f0..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/breast_nude_05.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da81bf98083d21b2fa388041234939454384a82d8931cd83ca3b89f1d052cd9e -size 36828 diff --git a/game/characters/luna/chibis/inspect_body_stand/breast_nude_06.webp b/game/characters/luna/chibis/inspect_body_stand/breast_nude_06.webp deleted file mode 100644 index b27817d8..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/breast_nude_06.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:039f3a2bda7fa3e668ed8d583a26089ddf96ae6e526fdf036f96c9b77c20eb06 -size 36446 diff --git a/game/characters/luna/chibis/inspect_body_stand/idle_clothed_02.webp b/game/characters/luna/chibis/inspect_body_stand/idle_clothed_02.webp deleted file mode 100644 index 0fcd1334..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/idle_clothed_02.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c49b024eeb23ad1d514b2a7905fe766b7f676065a22da3078a171c9f93219867 -size 36360 diff --git a/game/characters/luna/chibis/inspect_body_stand/idle_nude_01.webp b/game/characters/luna/chibis/inspect_body_stand/idle_nude_01.webp deleted file mode 100644 index 73d14fd2..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/idle_nude_01.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0afcc61b10978f9d4a7458610bf8e3908d5f5646666c6a915cfab5d3797388f1 -size 36664 diff --git a/game/characters/luna/chibis/inspect_body_stand/idle_nude_02.webp b/game/characters/luna/chibis/inspect_body_stand/idle_nude_02.webp deleted file mode 100644 index c95d96a6..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/idle_nude_02.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e3a083d3a421c4fb4470bb809e471ac5bfeabfc38a20b6465607cc2c932bd1d8 -size 36556 diff --git a/game/characters/luna/chibis/inspect_body_stand/vag_nude_01.webp b/game/characters/luna/chibis/inspect_body_stand/vag_nude_01.webp deleted file mode 100644 index 73d14fd2..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/vag_nude_01.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0afcc61b10978f9d4a7458610bf8e3908d5f5646666c6a915cfab5d3797388f1 -size 36664 diff --git a/game/characters/luna/chibis/inspect_body_stand/vag_nude_02.webp b/game/characters/luna/chibis/inspect_body_stand/vag_nude_02.webp deleted file mode 100644 index 7f4440df..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/vag_nude_02.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d3811c16ebf9308e95c64f8acc4119eade36d42e38df3722f889ccd49f30a31e -size 36334 diff --git a/game/characters/luna/chibis/inspect_body_stand/vag_nude_03.webp b/game/characters/luna/chibis/inspect_body_stand/vag_nude_03.webp deleted file mode 100644 index c95d96a6..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/vag_nude_03.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e3a083d3a421c4fb4470bb809e471ac5bfeabfc38a20b6465607cc2c932bd1d8 -size 36556 diff --git a/game/characters/luna/chibis/inspect_body_stand/vag_nude_04.webp b/game/characters/luna/chibis/inspect_body_stand/vag_nude_04.webp deleted file mode 100644 index bb1203f5..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/vag_nude_04.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f863e5744868fe6f63120a7b2635081de1f9053bb0e0e659beffb990d9affc7a -size 36308 diff --git a/game/characters/luna/chibis/inspect_body_stand/vag_nude_05.webp b/game/characters/luna/chibis/inspect_body_stand/vag_nude_05.webp deleted file mode 100644 index 5f1e773c..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/vag_nude_05.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:95d1c507e2f0a4ad71cd219ab4559aa538f253657608a2309813fe1f08136f13 -size 36630 diff --git a/game/characters/luna/chibis/inspect_body_stand/vag_nude_06.webp b/game/characters/luna/chibis/inspect_body_stand/vag_nude_06.webp deleted file mode 100644 index 3e4a99d6..00000000 --- a/game/characters/luna/chibis/inspect_body_stand/vag_nude_06.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ddbc1ee64bb915e9500f87b46ca2824f3e5f8b26e492daebabab0cf2d2861df5 -size 36522 diff --git a/game/characters/luna/chibis/sit_on_lap.webp b/game/characters/luna/chibis/sit_on_lap.webp deleted file mode 100644 index 1bbc38fc..00000000 --- a/game/characters/luna/chibis/sit_on_lap.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b5c635c98358b35d5ee97c02ba1b21918818ea8a800c4d1cf7646ebb70dd828b -size 35016 From ee23310ae04b83d450f8d3f7ec962cfb6b394407 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 27 Mar 2024 16:04:38 +0100 Subject: [PATCH 194/249] Refactoring * Removed old Luna chibi animations. * Minor text edits. --- game/scripts/animations/ani_luna.rpy | 114 --------------------------- game/scripts/interface/stats.rpy | 8 +- 2 files changed, 4 insertions(+), 118 deletions(-) diff --git a/game/scripts/animations/ani_luna.rpy b/game/scripts/animations/ani_luna.rpy index 0436bf50..00dd540b 100644 --- a/game/scripts/animations/ani_luna.rpy +++ b/game/scripts/animations/ani_luna.rpy @@ -146,120 +146,6 @@ image ch_lun blink_robe: pause 3 repeat -image ch_lun_scene sit_on_lap: - zoom 0.5 - contains: - "characters/genie/chibis/jerk_off_behind_desk/desk_01.webp" - contains: - "characters/luna/chibis/sit_on_lap.webp" - -image ch_lun_scene sit_on_lap_grope: - zoom 0.5 - contains: - "ch_gen jerk_off_behind_desk" - contains: - "characters/luna/chibis/sit_on_lap.webp" - -image ch_lun_scene inspect_idle_naked: - zoom 0.5 - "characters/luna/chibis/inspect_body_stand/idle_nude_01.webp" - pause 1 - "characters/luna/chibis/inspect_body_stand/idle_nude_02.webp" - pause 1 - "characters/luna/chibis/inspect_body_stand/idle_nude_01.webp" - pause 2 - "characters/luna/chibis/inspect_body_stand/idle_nude_02.webp" - pause 1 - repeat - -image ch_lun_scene inspect_lean_idle_naked: - zoom 0.5 - "characters/luna/chibis/inspect_body_lean/idle_nude_01.webp" - pause 1 - "characters/luna/chibis/inspect_body_lean/idle_nude_02.webp" - pause 1 - "characters/luna/chibis/inspect_body_lean/idle_nude_01.webp" - pause 2 - "characters/luna/chibis/inspect_body_lean/idle_nude_02.webp" - pause 1 - repeat - -image ch_lun_scene inspect_idle: - zoom 0.5 - "characters/luna/chibis/inspect_body_stand/idle_clothed_01.webp" - pause 1 - "characters/luna/chibis/inspect_body_stand/idle_clothed_02.webp" - pause 1 - "characters/luna/chibis/inspect_body_stand/idle_clothed_01.webp" - pause 2 - "characters/luna/chibis/inspect_body_stand/idle_clothed_02.webp" - pause 1 - repeat - -image ch_lun_scene inspect_grope_breasts_naked: - zoom 0.5 - "characters/luna/chibis/inspect_body_stand/breast_nude_01.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/breast_nude_02.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/breast_nude_03.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/breast_nude_04.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/breast_nude_05.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/breast_nude_06.webp" - pause .75 - repeat - -image ch_lun_scene inspect_grope_vagina_naked: - zoom 0.5 - "characters/luna/chibis/inspect_body_stand/vag_nude_01.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/vag_nude_02.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/vag_nude_03.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/vag_nude_04.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/vag_nude_05.webp" - pause .75 - "characters/luna/chibis/inspect_body_stand/vag_nude_06.webp" - pause .75 - repeat - -image ch_lun_scene inspect_lean_grope_breasts_naked: - zoom 0.5 - "characters/luna/chibis/inspect_body_lean/breast_nude_01.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/breast_nude_02.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/breast_nude_03.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/breast_nude_04.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/breast_nude_05.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/breast_nude_06.webp" - pause .75 - repeat - -image ch_lun_scene inspect_lean_grope_vagina_naked: - zoom 0.5 - "characters/luna/chibis/inspect_body_lean/vag_nude_01.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/vag_nude_02.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/vag_nude_03.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/vag_nude_04.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/vag_nude_05.webp" - pause .75 - "characters/luna/chibis/inspect_body_lean/vag_nude_06.webp" - pause .75 - repeat - # Luna CG image luna_bj_loop_1: diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index 30494c92..9e4a494a 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -1,9 +1,9 @@ default stats_show_locked = False define her_whoring_word_list = ("Pure", "Naive", "Curious", "Naughty", "Perverse", "Immoral", "Slutty", "Shameless", "Cumslut", "Total Cumslut", "Shameless Cumslut") -define her_reputation_word_list = ("Teacher's pet", "School star", "good girl", "minx", "slutty schoolgirl", "easy lay", "whore", "slut for sex", "gryffindor whore", "school cumdump", "mudblood cumdump") -#$ slutWords = ["Teacher's pet", "School star", "good girl", "headmaster's pet", "slutty schoolgirl", "slut", "headmaster's slut", "daddy's girl", "gryffindor slut", "Dumbledore's whore", "Dumbledore's cumdump"] -define her_tutoring_word_list = ("Not started", "naive", "tempted", "curious", "tainted", "eager", "sinful", "perverted", "corrupted", "depraved", "shattered") +define her_reputation_word_list = ("Teacher's Pet", "School Star", "Good girl", "Minx", "Slutty Schoolgirl", "Easy Lay", "Whore", "Slut for sex", "Gryffindor Whore", "School Cumdump", "Mudblood Cumdump") +#$ slutWords = ["Teacher's pet", "School Star", "Good Girl", "Headmaster's Pet", "Slutty Schoolgirl", "Slut", "Headmaster's Slut", "Daddy's Girl", "Gryffindor Slut", "Dumbledore's Whore", "Dumbledore's Cumdump"] +define her_tutoring_word_list = ("Not Started", "Naive", "Tempted", "Curious", "Tainted", "Eager", "Sinful", "Perverted", "Corrupted", "Depraved", "Shattered") define her_mood_word_list = ("Cheerful", "Reluctant", "Gloomy", "Stern", "Slightly Annoyed", "Annoyed", "Upset", "Outraged", "Mad", "Angry", "Very Angry") #$ ast_cuteness_word_list = ["Ugly Duckling", "Swot", "", "", "", "", "", "Cutypie", "", "", ""] define ast_mood_word_list = ("Cheerful", "Reluctant", "Gloomy", "Stern", "Slightly Annoyed", "Annoyed", "Upset", "Outraged", "Mad", "Angry", "Very Angry") @@ -14,7 +14,7 @@ define cho_mood_word_list = ("Cheerful", "Reluctant", "Gloomy", "Stern", "Slight define sna_friendship_word_list = ("Unknown", "Colleague", "Confidant", "Trusted", "Acquaintance", "Friend", "Good friend", "Homie", "If I had to pick a dude...", "BFF", "Bros") define ton_reputation_word_list = ("Teacher", "Bore", "Weirdo", "A Bit Nutty", "Easy Going", "Tart", "Naughty Teacher", "Slutty Teacher", "Slag", "Shameful", "Disgrace") # $ ton_support_word_list = ["Undecided", "Modest", "Candid", "Unbiased", "Positive", "Fair", "Neutral", "Biased", "Scummy", "Cruel", "Heartless"] -define ton_friendship_word_list = ("Unknown", "inferior", "employee", "advisor", "trusted advisor", "Acquaintance", "friend", "Girlfriend", "Partner in crime", "Bonnie & Clyde", "Master & Slave") +define ton_friendship_word_list = ("Unknown", "Inferior", "Employee", "Advisor", "Trusted advisor", "Acquaintance", "Friend", "Girlfriend", "Partner in crime", "Bonnie & Clyde", "Master & Slave") #$ ton_sluttiness_word_list = ["Masochist", "Disgrace", "Street Whore", "Harlot", "Tart", "Sexually open", "Naughty Teacher", "Easy Going", "Professor", "Bore", "Nun"] label stats: From 6176e0cddaf3f4f82b79db6725a82a40361a6803 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 27 Mar 2024 15:47:21 +0000 Subject: [PATCH 195/249] Cum layers * Added cum layers for 'Talk To Me' CG. --- game/images/CG/lun_talk/luna/lun_talk_cum_chest.webp | 3 +++ game/images/CG/lun_talk/luna/lun_talk_cum_chin.webp | 3 +++ game/images/CG/lun_talk/luna/lun_talk_cum_desk.webp | 3 +++ game/images/CG/lun_talk/luna/lun_talk_cum_hand.webp | 3 +++ game/images/CG/lun_talk/luna/lun_talk_cum_stomach.webp | 3 +++ game/scripts/cg/luna.rpy | 2 ++ 6 files changed, 17 insertions(+) create mode 100644 game/images/CG/lun_talk/luna/lun_talk_cum_chest.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_cum_chin.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_cum_desk.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_cum_hand.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_cum_stomach.webp diff --git a/game/images/CG/lun_talk/luna/lun_talk_cum_chest.webp b/game/images/CG/lun_talk/luna/lun_talk_cum_chest.webp new file mode 100644 index 00000000..90545785 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_cum_chest.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc7183f3b3d13121051462c75382f3bb2495b352706d557d8405a4f2eea29ff1 +size 16770 diff --git a/game/images/CG/lun_talk/luna/lun_talk_cum_chin.webp b/game/images/CG/lun_talk/luna/lun_talk_cum_chin.webp new file mode 100644 index 00000000..a473b36f --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_cum_chin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c697dfe5b9a51bd7998d7738a0f610f4265cd7047c29f9f1c9ec8472239b33b +size 14058 diff --git a/game/images/CG/lun_talk/luna/lun_talk_cum_desk.webp b/game/images/CG/lun_talk/luna/lun_talk_cum_desk.webp new file mode 100644 index 00000000..1d63d023 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_cum_desk.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c81808e38ad87d9496e95790412afe685b9687a533473ded445e4e1c4439ed1 +size 21334 diff --git a/game/images/CG/lun_talk/luna/lun_talk_cum_hand.webp b/game/images/CG/lun_talk/luna/lun_talk_cum_hand.webp new file mode 100644 index 00000000..3ed2c205 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_cum_hand.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54491a388b479fc0e9382c6e578bb7e3c379138100829c6812b1b254e043dd7e +size 14826 diff --git a/game/images/CG/lun_talk/luna/lun_talk_cum_stomach.webp b/game/images/CG/lun_talk/luna/lun_talk_cum_stomach.webp new file mode 100644 index 00000000..e5b17f75 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_cum_stomach.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ef2b95f70d4adc7d09796e4829e961c89fc756445020eb0bd209d32c83b5fe1 +size 12496 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index d44d445a..b138efa8 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -767,3 +767,5 @@ layeredimage lun_talk: attribute masturbate_variant_legs_side always "lun_talk_chest" if_not ["arms_grab_chest", "legs_side", "legs_up"] + + group cum prefix "cum" auto multiple From a91e0efe725c9021d5e886905938639caea880c0 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 27 Mar 2024 16:12:09 +0000 Subject: [PATCH 196/249] Wetness layers * Added wetness layers for 'Talk To Me' CG. --- game/images/CG/lun_talk/luna/lun_talk_wet_legs_down.webp | 3 +++ game/images/CG/lun_talk/luna/lun_talk_wet_legs_side.webp | 3 +++ game/images/CG/lun_talk/luna/lun_talk_wet_legs_up.webp | 3 +++ game/scripts/cg/luna.rpy | 1 + 4 files changed, 10 insertions(+) create mode 100644 game/images/CG/lun_talk/luna/lun_talk_wet_legs_down.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_wet_legs_side.webp create mode 100644 game/images/CG/lun_talk/luna/lun_talk_wet_legs_up.webp diff --git a/game/images/CG/lun_talk/luna/lun_talk_wet_legs_down.webp b/game/images/CG/lun_talk/luna/lun_talk_wet_legs_down.webp new file mode 100644 index 00000000..bf69eafb --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_wet_legs_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c077150a067dc1638be633bb52ca092b99d562ce37f07885948e0da654832aa7 +size 7412 diff --git a/game/images/CG/lun_talk/luna/lun_talk_wet_legs_side.webp b/game/images/CG/lun_talk/luna/lun_talk_wet_legs_side.webp new file mode 100644 index 00000000..b6da26b0 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_wet_legs_side.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b13f0b720fae397eb1f3f74f4a9ce7fd21022642e9211306128ee55e3469ccc6 +size 8276 diff --git a/game/images/CG/lun_talk/luna/lun_talk_wet_legs_up.webp b/game/images/CG/lun_talk/luna/lun_talk_wet_legs_up.webp new file mode 100644 index 00000000..b6da26b0 --- /dev/null +++ b/game/images/CG/lun_talk/luna/lun_talk_wet_legs_up.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b13f0b720fae397eb1f3f74f4a9ce7fd21022642e9211306128ee55e3469ccc6 +size 8276 diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index b138efa8..d94f93fa 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -769,3 +769,4 @@ layeredimage lun_talk: always "lun_talk_chest" if_not ["arms_grab_chest", "legs_side", "legs_up"] group cum prefix "cum" auto multiple + group wet prefix "wet" auto From fffdc788a27bf39dd7b831b993eaf7641b2dd7e2 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 27 Mar 2024 16:20:57 +0000 Subject: [PATCH 197/249] Bug fix * Fixed breast layer order for 'Talk To Me' CG. --- game/scripts/cg/luna.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index d94f93fa..61a2a69a 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -766,7 +766,7 @@ layeredimage lun_talk: attribute masturbate_variant_legs_up attribute masturbate_variant_legs_side - always "lun_talk_chest" if_not ["arms_grab_chest", "legs_side", "legs_up"] + always "lun_talk_chest" if_not ["arms_grab_chest", "legs_side"] group cum prefix "cum" auto multiple group wet prefix "wet" auto From dcb2f3034855cb375d728b3033e3f4625290a6f0 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 27 Mar 2024 16:28:35 +0000 Subject: [PATCH 198/249] Bugfix * Fixed another layering issue --- game/scripts/cg/luna.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/cg/luna.rpy b/game/scripts/cg/luna.rpy index 61a2a69a..66ab1629 100644 --- a/game/scripts/cg/luna.rpy +++ b/game/scripts/cg/luna.rpy @@ -748,7 +748,6 @@ layeredimage lun_talk: group arm_left prefix "arm_left" if_not ["arms_grab_chest"]: attribute rest default - attribute spread_variant_legs_up always "lun_talk_chest" if_not ["arms_grab_chest", "legs_down"] attribute arms_grab_chest @@ -765,6 +764,7 @@ layeredimage lun_talk: attribute hold_leg_variant_legs_side attribute masturbate_variant_legs_up attribute masturbate_variant_legs_side + attribute spread_variant_legs_up always "lun_talk_chest" if_not ["arms_grab_chest", "legs_side"] From 699db8d14f8d71e0dd1094ce17f65910aa5a71d7 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 27 Mar 2024 20:10:54 +0100 Subject: [PATCH 199/249] Luna Doll cum layers * Added "light" face cum layers. --- game/characters/luna/poses/default/cum/face/light/cum.webp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/characters/luna/poses/default/cum/face/light/cum.webp b/game/characters/luna/poses/default/cum/face/light/cum.webp index dd8c8623..fb6decc9 100644 --- a/game/characters/luna/poses/default/cum/face/light/cum.webp +++ b/game/characters/luna/poses/default/cum/face/light/cum.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:baa1b5134b28f37276d0c36825bb7f0d489bcef523cbe9c36077f4f04d67e86b -size 3512 +oid sha256:d8c14134f4d998f3d1bf4c2a9f0177dbbe390c9ee35816aa26525e6cea9eac34 +size 2768 From c6d00ae49d9d9eaafd376c7367aac380ee3d0762 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Wed, 27 Mar 2024 20:11:14 +0100 Subject: [PATCH 200/249] fix --- game/characters/luna/poses/default/cum/face/light/skin.webp | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 game/characters/luna/poses/default/cum/face/light/skin.webp diff --git a/game/characters/luna/poses/default/cum/face/light/skin.webp b/game/characters/luna/poses/default/cum/face/light/skin.webp new file mode 100644 index 00000000..6fbb7bcc --- /dev/null +++ b/game/characters/luna/poses/default/cum/face/light/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4f16469f76fa22ea43a2346407a802434ae02dff4da1c40bec6af146a42feae +size 94 From 1d6cc4fb473d135b43b3eed35fc7ff30481748d5 Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Thu, 28 Mar 2024 15:59:36 +0100 Subject: [PATCH 201/249] Luna Talk to me CG posing * Posed the remainder of the event. --- .../luna/events/favors/talk_to_me.rpy | 133 ++++++++++++------ 1 file changed, 90 insertions(+), 43 deletions(-) diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index 6e4c11d4..01497f8a 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -1349,7 +1349,9 @@ label ll_pf_talk_T4_E1_repeat: lun "Yes... Perhaps you're right..." + play sound "sounds/slick_02.ogg" show lun_talk arm_left_masturbate_variant_legs_side as cg with d5 + play background "sounds/slickloop.ogg" fadein 2 nar "You watch Luna, as she unconsciously moves her hand to between her legs and starts fingering herself..." @@ -1476,6 +1478,7 @@ label ll_pf_talk_T4_E1_repeat: lun "*Don't worry, I'm--" + stop background fadeout 2 show lun_talk eyes_base_down arm_left_rest mouth_open as cg with d3 pause 0.2 show lun_talk legs_down eyebrows_surprised eyes_wide_down mouth_open_wide as cg with d5 @@ -1624,6 +1627,7 @@ label ll_pf_talk_T4_E1_repeat: show lun_talk eyebrows_surprised eyes_wide_stare mouth_open as cg with d3 lun "Wait, I know!" + play sound "sounds/slick_02.ogg" show lun_talk arm_left_spread_variant_legs_up mouth_smile as cg with d3 gen "By the great--" @@ -1632,99 +1636,140 @@ label ll_pf_talk_T4_E1_repeat: lun "Is it working [name_genie_luna]? Can I do it now, can I, can I?" gen "Oh, yes!" - show lun_talk eyes_base_down as cg with d3 - - lun "Thank you!!" "-Allow her to join you-": gen "Alright then, [name_luna_genie]... I'm almost there." gen "You may open your eyes and join me." - show lun_talk eyebrows_surprised eyes_wide_stare mouth_open as cg with d3 - - lun "Thank you, [name_genie_luna]!" #open eyes - + show lun_talk eyebrows_base eyes_base_stare mouth_smile as cg with d3 + lun "Thank you!" #open eyes + play sound "sounds/slick_02.ogg" + play background "sounds/slickloopveryfast.ogg" fadein 2 show lun_talk legs_side arm_left_masturbate_variant_legs_side arm_right_hold_leg_variant_legs_side eyes_narrow_up mouth_ahegao as cg with d3 nar "Luna immediately plunges her fingers inside her wet pussy." nar "As she does, an expression of ecstasy spreads across her face as her oncoming orgasm rushes through her body." + show lun_talk eyebrows_base as cg with d3 lun "[name_genie_luna]!" - gen "That's it, girl! Take this!" + play sound "sounds/slick_02.ogg" with kissiris + show lun_talk wet_legs_side mouth_open as cg with d3 lun "{heart}{heart}*Ah*!!!{heart}{heart}" - call cum_block - gen "*Argh*!!" - lun "{heart}[name_genie_luna]!{heart}" - lun "They won't stop--" - lun "{size=+5}{heart}{heart}Coming!{heart}{heart}{/size}" - gen "Then let them--" - gen "Come!" - call cum_block - pause .5 - with kissiris - gen "*Argh*-- *heavy panting*" - lun "{size=+4}{heart}*Ah*!!!{heart}{/size}" - gen "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." + gen "That's it, girl! Take this!" + play sound "sounds/slick_01.ogg" + show lun_talk cum_chin as cg with d3 + show lun_talk cum_chest as cg with d3 + gen "*Argh*!!" + + show lun_talk mouth_base as cg with d3 + lun "{heart}[name_genie_luna]...{heart}" + lun "They won't stop--" + gen "Hold it, girl!" + + show lun_talk eyebrows_worried mouth_timid as cg with d3 + + lun "But--" + gen "Come!" + + with kissiris + stop background fadeout 2 + play sound "sounds/slick_02.ogg" + show lun_talk arm_right_rest arm_left_rest cum_stomach mouth_open eyes_closed eyebrows_worried as cg with d3 + pause 0.5 + show lun_talk cum_hand cum_desk as cg with d3 + "Luna and Genie" "{size=+4}Aaaaah!!!{/size}" + lun "*Ah*...{w=0.4} Wow...{w=0.4} That was..." + show lun_talk legs_down eyes_base_stare mouth_base as cg with d3 lun "Amazing..." - gen "Great job, [name_luna_genie]." + gen "*Ah*...{w=0.4} Great job, [name_luna_genie]." + + show lun_talk eyebrows_base as cg with d3 lun "*Mmm*... Thank you, [name_genie_luna]." + + show lun_talk eyes_base_down arms_grab_chest as cg with d3 lun "*Hmm*... I'm all sticky now..." gen "*Ngh*!!" + + show lun_talk eyebrows_surprised eyes_base_stare mouth_soft as cg with d3 lun "[name_genie_luna], are you alright?" gen "Yes... I'm--{w=0.2} *Ah*...{w=0.4} Great..." - lun "*Ah*...{w=0.4} I'm glad..." + gen "But you should probably stop pushing your breasts together... Or we may have to go again..." + + show lun_talk eyes_base_down mouth_pout as cg with d3 + lun "*Hmm*...{w=0.4}{nw}" + show lun_talk arm_left_rest mouth_base as cg + lun "*Hmm*...{fast} Alright then...{w=0.4} If you say so..." + + show lun_talk -arms_grab_chest arm_right_rest arm_left_rest mouth_base as cg with d3 show screen blkfade with d5 - nar "As Luna swiftly attempts to get off your desk, she accidentally slides off the edge, which causes her to tumble and land on the tiled floor with a soft slapping sound." + hide luna_main + + lun "" ("smile", "base", "base", "mid") + $ luna.set_cum(face="light") + $ luna.set_cum(pussy="squirt_post") + + nar "Luna swiftly attempts a backwards roll to get off your desk..." + nar "As she does, she accidentally slides off the edge, which causes her to tumble and land on the tiled floor with a soft slapping sound." nar "As you peer over the edge, you're met with a shocked and bewildered looking Luna." - nar "She looks up at you, and you can't help but laugh a little at how silly she looks, down on the floor and still covered in cum." - nar "Before you get the chance to check on her properly, she lets out a giggle and stands up." + nar "She looks up at you, and you can't help but chuckle a little at how silly she looks, down on the floor and still covered in cum." + nar "Giggling back at you, Luna wipes the cum off her body, and then gets up onto her feet." + + call lun_chibi("stand", "desk", "base") hide cg hide screen blkfade with d5 - #TODO Add cum on Luna's face (may cut this if Loafy wants cum elsewhere) - - lun "*Giggles*..." ("base", "base", "base", "mid") - gen "*Ahem*... I believe you've still got something on your face and chest..." ("base", xpos="far_left", ypos="head") - lun "I do?" ("base", "base", "base", "mid") + lun "*Giggles*..." ("smile", "narrow", "base", "mid") + gen "*Ahem*... I believe you've still got something on your face..." ("base", xpos="far_left", ypos="head") + lun "I do?" ("soft", "base", "base", "down") if not states.lun.ev.ll_pf_blowjob_T4_E1_intro_complete: gen "Yes, and you should probably clean it up before you leave..." ("base", xpos="far_left", ypos="head") lun "Oh...{w=0.4} Okay then!" ("base", "base", "base", "mid") - #TODO remove cum + play sound "sounds/cloth_sound3.ogg" + $ luna.set_cum(face=None) + with d3 else: - lun "Oh, your cum!" ("base", "base", "base", "mid") - lun "How did that happen?" ("base", "base", "base", "mid") - gen "*Err*..." ("base", xpos="far_left", ypos="head") - lun "Weird... I must've blanked out for a moment..." ("base", "base", "base", "mid") - #TODO remove cum + lun "Oh! I've still got some of your cum on my chin!" ("grin", "base", "base", "down") + lun "Very impressive, [name_genie_luna]! If you're releasing them at such a velocity... Surely that means we must be doing something right!" ("smile", "narrow", "base", "mid") + gen "Surely." ("base", xpos="far_left", ypos="head") + lun "..." ("grin", "base", "base", "mid") + gen "So...{w=0.4} Are you going to wipe your chin, or what?" ("base", xpos="far_left", ypos="head") + lun "Oh, right... Duh!" ("grin", "narrow", "raised", "down") + play sound "sounds/cloth_sound3.ogg" + $ luna.set_cum(face=None) + with d3 if states.lun.ev.ll_pf_blowjob_T4_E2_intro_complete: - lun "Sorry, [lun_genie_name]... I know I should probably have tried to swallow them..." ("base", "base", "base", "mid") + lun "Sorry, [name_genie_luna]... I know I should've tried to swallow them..." ("open", "base", "base", "down") gen "Don't worry about that..." ("base", xpos="far_left", ypos="head") - lun "Are you feeling better, [name_genie_luna]?" ("base", "base", "base", "mid") + lun "Are you feeling better, [name_genie_luna]?" ("soft", "base", "base", "mid") gen "*Huh*? Oh yes, very much so!" ("base", xpos="far_left", ypos="head") - lun "Great! I am as well!" ("base", "base", "base", "mid") - lun "Of course... It's not really the same when you're not the one touching me..." ("base", "base", "base", "mid") + lun "Great! I am as well!" ("grin", "narrow", "base", "mid") + lun "Of course... It's not really the same as when you're the one touching me..." ("base", "narrow", "base", "down") gen "..." ("grin", xpos="far_left", ypos="head") if _wearing_clothes: + $ luna.set_cum(None) + $ renpy.sound.play("sounds/cloth_sound3.ogg") $ luna.wear("all") + with d3 + pause .5 lun "Well then, I better be off!" ("base", "base", "base", "mid") gen "Right." ("base", xpos="far_left", ypos="head") - lun "Please, don't hesitate to inform me whenever you need my help again." ("base", "base", "base", "mid") + lun "Please, don't hesitate to inform me whenever you need my help again." ("grin", "base", "base", "mid") gen "Already thinking about next time, [name_luna_genie]? We just finished!" ("base", xpos="far_left", ypos="head") - lun "Oh...{w=0.4} *Ehm*...{w=0.4} Bye then!" ("base", "base", "base", "mid") + lun @ cheeks blush "Oh...{w=0.4} *Ehm*...{w=0.4} Bye then!" ("grin", "base", "base", "R") #Luna leaves call lun_walk(action="leave") @@ -1732,4 +1777,6 @@ label ll_pf_talk_T4_E1_repeat: gen "(And here I thought genies had strong libidos...)" ("base", xpos="far_left", ypos="head") $ _wearing_clothes = False #reset + $ luna.set_cum(None) + jump ll_pf_talk_end From 5efd3158471e96d470fe23d4bb6e49dfd5c81508 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Thu, 28 Mar 2024 15:48:16 +0000 Subject: [PATCH 202/249] Bug fixes, Save Compatibility, Secularisation --- .../characters/cho/events/quidditch/gryffindor_match.rpy | 2 +- game/scripts/characters/luna/events/favors/talk_to_me.rpy | 2 +- game/scripts/characters/luna/favors.rpy | 8 ++++---- game/scripts/characters/susan/wardrobe_reactions.rpy | 2 +- game/scripts/utility/updater.rpy | 2 -- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy b/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy index dae3653e..79900d1a 100644 --- a/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy +++ b/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy @@ -2000,7 +2000,7 @@ label gryffindor_match_return: gen "...{w=0.8}{nw}" ("base", xpos="far_left", ypos="head") gen "...{w=0.8}{nw}" ("angry", xpos="far_left", ypos="head") - hoo "Prison? No, not that, thank heavens." ("open", "shocked", "shocked", "mid") + hoo "Prison? No, not that, thank Merlin." ("open", "shocked", "shocked", "mid") hoo "But she could kiss getting into any sort of professional league goodbye." ("open", "shocked", "base", "down") gen "Kiss--" ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/luna/events/favors/talk_to_me.rpy b/game/scripts/characters/luna/events/favors/talk_to_me.rpy index 01497f8a..2f7cdcd0 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -1261,7 +1261,7 @@ label ll_pf_talk_T4_E1_repeat: show lun_talk eyes_closed as cg with d3 - lun "Oh...{w=0.4} Thank heavens..." + lun "Oh...{w=0.4} Thank Merlin..." show lun_talk eyebrows_surprised eyes_base_down mouth_soft as cg with d3 diff --git a/game/scripts/characters/luna/favors.rpy b/game/scripts/characters/luna/favors.rpy index e3ba02da..a5c3436f 100644 --- a/game/scripts/characters/luna/favors.rpy +++ b/game/scripts/characters/luna/favors.rpy @@ -20,10 +20,10 @@ default lun_ev_play_with_yourself_t3_e3 = Event(id="lun_ev_play_with_yourself_t3 default lun_ev_play_with_yourself_t3_e4 = Event(id="lun_ev_play_with_yourself_t3_e4", label="ll_pf_masturbate_T3_E4_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) default lun_ev_play_with_yourself_t4_e1 = Event(id="lun_ev_play_with_yourself_t4_e1", label="ll_pf_masturbate_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) -default lun_ev_blowjob_t4_e1 = Event(id="lun_ev_blowjob_t4_e1", label="ll_pf_blowjob_T4_E1_intro", req="states.lun:tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) -default lun_ev_blowjob_t4_e2 = Event(id="lun_ev_blowjob_t4_e2", label="ll_pf_blowjob_T4_E2_intro", req="states.lun:tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) -default lun_ev_blowjob_t4_e3 = Event(id="lun_ev_blowjob_t4_e3", label="ll_pf_blowjob_T4_E3_intro", req="states.lun:tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) -default lun_ev_blowjob_t4_e4 = Event(id="lun_ev_blowjob_t4_e4", label="ll_pf_blowjob_T4_E4_repeat", req="states.lun:tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False) +default lun_ev_blowjob_t4_e1 = Event(id="lun_ev_blowjob_t4_e1", label="ll_pf_blowjob_T4_E1_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_blowjob_t4_e2 = Event(id="lun_ev_blowjob_t4_e2", label="ll_pf_blowjob_T4_E2_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_blowjob_t4_e3 = Event(id="lun_ev_blowjob_t4_e3", label="ll_pf_blowjob_T4_E3_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) +default lun_ev_blowjob_t4_e4 = Event(id="lun_ev_blowjob_t4_e4", label="ll_pf_blowjob_T4_E4_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False) define luna_favors = [ ("lun_eventqueue_talk_to_me", "Talk to me!"), diff --git a/game/scripts/characters/susan/wardrobe_reactions.rpy b/game/scripts/characters/susan/wardrobe_reactions.rpy index f43130b6..0ad7efa2 100644 --- a/game/scripts/characters/susan/wardrobe_reactions.rpy +++ b/game/scripts/characters/susan/wardrobe_reactions.rpy @@ -215,7 +215,7 @@ label sus_reaction_equip_outfit_fail(item): gen "Put your latex underwear on for me." ("base", xpos="far_left", ypos="head") sus @ cheeks blush "The-- The what?!?" ("angry", "wide", "shocked", "mid") gen "These!" ("grin", xpos="far_left", ypos="head") - sus @ cheeks blush "Oh, heavens!" ("clench", "wide", "base", "down") + sus @ cheeks blush "Oh, by Merlin's beard!" ("clench", "wide", "base", "down") sus @ cheeks blush "I can't wear these!" ("open", "happyCl", "worried", "mid") gen "Of course you can! I made sure to have them made specifically for your size of--" ("base", xpos="far_left", ypos="head") gen "I mean, your size!" ("angry", xpos="far_left", ypos="head") diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index cfc81517..80fea2d3 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -211,8 +211,6 @@ init python: doll.body.matrix = IdentityMatrix() - delattr(store, "achievements_dict") - if current > latest: raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest)) From aaa5ff6beb559a4dd6634ffbfa6c2c3b992238cd Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Fri, 29 Mar 2024 15:22:18 +0100 Subject: [PATCH 203/249] Fixed issues reported by lint --- .../hermione/events/favors/dance_for_me_masturbate.rpy | 4 ++-- .../hermione/events/favors/dance_for_me_snape.rpy | 4 ++-- .../hermione/events/favors/give_me_a_handy.rpy | 6 +++--- .../hermione/events/favors/give_me_a_tittyjob.rpy | 2 +- .../hermione/events/requests/wear_my_cum.rpy | 10 +++++----- game/scripts/characters/hermione/talk.rpy | 6 +++--- .../characters/luna/events/favors/inspect_her_body.rpy | 2 +- .../luna/events/favors/masturbate_for_me.rpy | 10 +++++----- game/scripts/characters/luna/events/favors/suck_it.rpy | 6 +++--- game/scripts/characters/luna/gifts.rpy | 2 +- .../tonks/events/requests/hands-on_lessons.rpy | 2 +- 11 files changed, 27 insertions(+), 27 deletions(-) diff --git a/game/scripts/characters/hermione/events/favors/dance_for_me_masturbate.rpy b/game/scripts/characters/hermione/events/favors/dance_for_me_masturbate.rpy index 432a73ca..40e91934 100644 --- a/game/scripts/characters/hermione/events/favors/dance_for_me_masturbate.rpy +++ b/game/scripts/characters/hermione/events/favors/dance_for_me_masturbate.rpy @@ -466,7 +466,7 @@ label hg_pf_strip_T5_fingering: her "*Gah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("open_tongue", "narrow", "worried", "dead") play background "sounds/slickloop.ogg" her "[name_genie_hermione]...{heart}{heart}{heart}" ("angry", "narrow", "worried", "mid") - her "............." ("grin", "closed", "worried", "up", cheeks="none") + her "............." ("grin", "closed", "worried", "up",cheeks=False) stop background nar "Hermione takes a minute to collect herself." @@ -842,7 +842,7 @@ label hg_pf_strip_T6_fingering: her @ cheeks blush "*Ah*...{w=0.4} *Ah*...{heart}" ("grin", "narrow", "worried", "dead") her @ cheeks blush "Yes...{w=0.4} yes, [name_genie_hermione]...{w=0.4} Just give me a moment...{heart}" ("base", "narrow", "base", "up") her @ cheeks blush "(How will I ever be able to achieve this... on my own...{heart})" ("soft", "narrow", "base", "down") - her "" ("soft", "narrow", "base", "down", cheeks="none") + her "" ("soft", "narrow", "base", "down",cheeks=False) $ states.her.status.masturbating = True diff --git a/game/scripts/characters/hermione/events/favors/dance_for_me_snape.rpy b/game/scripts/characters/hermione/events/favors/dance_for_me_snape.rpy index 18e67960..6422821d 100644 --- a/game/scripts/characters/hermione/events/favors/dance_for_me_snape.rpy +++ b/game/scripts/characters/hermione/events/favors/dance_for_me_snape.rpy @@ -564,7 +564,7 @@ label hg_pf_strip_T4_snape_masturbate: sna "Yes..." ("snape_20") sna "Now shake that ass for me, you harlot!" - her "......." ("annoyed", "closed", "annoyed", "mid", cheeks="none") + her "......." ("annoyed", "closed", "annoyed", "mid",cheeks=False) pause .5 nar "All of a sudden, Hermione breaks into a series of rather complex pirouettes." @@ -936,6 +936,6 @@ label hg_pf_strip_T4_snape_results: gen "[name_hermione_genie]?" ("base", xpos="far_left", ypos="head") her "Oh... No, not that I can think of at this moment, [name_genie_hermione]." ("angry", "base", "base", "mid") gen "Very well... You've certainly earned your points today." ("base", xpos="far_left", ypos="head") - her "Oh, right... The points..." ("angry", "mid", "base", "mid") + her "Oh, right... The points..." ("angry", "base", "base", "mid") jump end_hg_pf_strip diff --git a/game/scripts/characters/hermione/events/favors/give_me_a_handy.rpy b/game/scripts/characters/hermione/events/favors/give_me_a_handy.rpy index 376f51e7..9f9e0afe 100644 --- a/game/scripts/characters/hermione/events/favors/give_me_a_handy.rpy +++ b/game/scripts/characters/hermione/events/favors/give_me_a_handy.rpy @@ -1209,7 +1209,7 @@ label hg_pf_handjob_2_cumming: her "Speaking of which... May I receive my payment now, please?" ("base", "base", "base", "mid") else: her "Maybe next time..." ("base", "narrow", "base", "down") - her "May I receive my payment now, please?" ("base", "closed", "base", "mid", cheeks="none") + her "May I receive my payment now, please?" ("base", "closed", "base", "mid",cheeks=False) gen "Of course..." ("base", xpos="far_left", ypos="head") "\"-Too late, ejaculate!-\"": @@ -1271,7 +1271,7 @@ label hg_pf_handjob_2_cumming: her "Well, then I suppose there was nothing that could be done about this mess..." ("angry", "closed", "base", "mid") her "I will just wipe it off the best I can before I go, and hope that nobody will notice..." ("grin", "narrow", "base", "dead") gen "Don't forget your payment..." ("base", xpos="far_left", ypos="head") - her "Oh, and my payment! May I receive that, as well?" ("angry", "squint", "base", "mid", cheeks="none") + her "Oh, and my payment! May I receive that, as well?" ("angry", "squint", "base", "mid",cheeks=False) gen "Of course, [name_hermione_genie]..." ("base", xpos="far_left", ypos="head") "-Cum in her mouth!-" if states.her.status.gokkun: # Has swallowed cum before. @@ -1333,6 +1333,6 @@ label hg_pf_handjob_2_cumming: her "[name_genie_hermione]!" ("angry", "base", "base", "mid") her "... I'll have my payment now, if you please..." ("angry", "squint", "base", "R") gen "Of course... Can't keep your classmates waiting..." ("base", xpos="far_left", ypos="head") - her "..." ("angry", "base", "base", "mid", cheeks="none") + her "..." ("angry", "base", "base", "mid",cheeks=False) jump end_hg_pf_handjob diff --git a/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy b/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy index ab71bb33..d54d9790 100644 --- a/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy +++ b/game/scripts/characters/hermione/events/favors/give_me_a_tittyjob.rpy @@ -639,7 +639,7 @@ label hg_pf_titjob_1: her "Thank you, [name_genie_hermione]..." ("open", "narrow", "base", "R", emote="sweat") else: gen "..." ("grin", xpos="far_left", ypos="head") - her "..." ("soft", "happy", "base", "base", emote="sweat") + her "..." ("soft", "happy", "base", "down", emote="sweat") gen "For someone who's never swallowed before, I'd say you went well above exceeding my expectations." ("grin", xpos="far_left", ypos="head") her "Well above..." ("soft", "narrow", "base", "down", emote="sweat") gen "Indeed! You did an \"outstanding\" job, [name_hermione_genie]!" ("grin", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/hermione/events/requests/wear_my_cum.rpy b/game/scripts/characters/hermione/events/requests/wear_my_cum.rpy index 92ef0261..cebfb7e7 100644 --- a/game/scripts/characters/hermione/events/requests/wear_my_cum.rpy +++ b/game/scripts/characters/hermione/events/requests/wear_my_cum.rpy @@ -405,7 +405,7 @@ label hg_pr_cumslut: gen "Eager, to attend classes are we?" ("base", xpos="far_left", ypos="head") her "That's not--" ("angry", "squint", "base", "mid") gen "You're free to go, [name_hermione_genie]...{w=0.4} Dismissed." ("base", xpos="far_left", ypos="head") - her "...{w=0.4} Let me just hide this mess first." ("angry", "narrow", "base", "down", cheeks="none") + her "...{w=0.4} Let me just hide this mess first." ("angry", "narrow", "base", "down",cheeks=False) "\"Just use your head!\"": # Cum on hair @@ -449,7 +449,7 @@ label hg_pr_cumslut: gen "Yes?" ("base", xpos="far_left", ypos="head") her "*Hmph*...{w=0.4} Nevermind..." ("annoyed", "narrow", "base", "R") gen "Now that the pipe's been cleaned, I believe it's time for you to head off to class." ("base", xpos="far_left", ypos="head") - her "Right..." ("open", "squint", "base", "R", cheeks="none") + her "Right..." ("open", "squint", "base", "R",cheeks=False) hide hermione_main stop music fadeout 4.0 @@ -680,7 +680,7 @@ label hg_pr_cumslut: her "......" ("base", "base", "base", "mid") her "Will that be all, [name_genie_hermione]?" ("open", "base", "base", "mid") gen "Yes...{w=0.4} That was great, [name_hermione_genie]...{w=0.4} Although, I don't suppose you could kiss it, for good luck?" ("base", xpos="far_left", ypos="head") - her "......" ("base", "narrow", "base", "mid", cheeks="none") + her "......" ("base", "narrow", "base", "mid",cheeks=False) hide hermione_main play sound "sounds/kiss.ogg" @@ -724,7 +724,7 @@ label hg_pr_cumslut: her "My face...{w=0.4} It's all covered..." ("disgust", "narrow", "base", "down") her "How am I supposed to hide this..." ("disgust", "happyCl", "base", "mid") gen "I don't really care if you hide it or not, just don't miss your lectures..." ("base", xpos="far_left", ypos="head") - her "..." ("annoyed", "narrow", "base", "mid", cheeks="none") + her "..." ("annoyed", "narrow", "base", "mid",cheeks=False) "\"In your hair!\"": $ states.her.ev.hg_pf_cumslut.choice = "hair" @@ -760,7 +760,7 @@ label hg_pr_cumslut: gen "I see it as a positive thing." ("base", xpos="far_left", ypos="head") her "What is that supposed to mean?" ("angry", "base", "base", "mid") gen "It makes it way less likely that my cum will slide off." ("base", xpos="far_left", ypos="head") - her "..." ("disgust", "base", "base", "mid", cheeks="none") + her "..." ("disgust", "base", "base", "mid",cheeks=False) hide hermione_main diff --git a/game/scripts/characters/hermione/talk.rpy b/game/scripts/characters/hermione/talk.rpy index f4571059..198b5b8b 100644 --- a/game/scripts/characters/hermione/talk.rpy +++ b/game/scripts/characters/hermione/talk.rpy @@ -570,7 +570,7 @@ label hermione_change_fail: her "(I think...)" ("annoyed", "base", "worried", "R") elif temp_name == "Hottie": her "I don't think that would be appropriate, [name_genie_hermione]..." ("open", "closed", "base", "mid") - gen "You'd feel a lot better if you tried to be less critical of yourself... " ("base", xpos="far_left", ypos="head") + gen "You'd feel a lot better if you tried to be less critical of yourself..." ("base", xpos="far_left", ypos="head") her "*Huh*?" ("open", "base", "base", "mid") elif temp_name == "Angel": her "I certainly am!" ("open", "closed", "base", "mid") @@ -630,10 +630,10 @@ label hermione_change_fail: gen "*Err*... Nothing..." ("base", xpos="far_left", ypos="head") her "*Hmph*..." ("annoyed", "narrow", "angry", "mid") elif temp_name == "Mudblood": - her "A...{w=0.5} A...{w=0.5}{nw} " ("shock", "wide", "base", "stare") + her "A...{w=0.5} A...{w=0.5}{nw}" ("shock", "wide", "base", "stare") her "A... A... M--Mm..." ("normal", "wide", "base", "stare") gen "(This will end up badly...)" ("base", xpos="far_left", ypos="head") - gen "Mad stud! That's what I said" ("base", xpos="far_left", ypos="head") + gen "Mad stud! That's what I said!" ("base", xpos="far_left", ypos="head") her "*Huh?*" ("normal", "wide", "base", "mid") gen "Let's resume the favour trading... You mad stud, you..." ("base", xpos="far_left", ypos="head") else: diff --git a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy index c388b8c4..26e61796 100644 --- a/game/scripts/characters/luna/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/luna/events/favors/inspect_her_body.rpy @@ -620,7 +620,7 @@ label ll_pf_inspect_T2_E2_intro: show lun_grind cumshot as cg2 with d3 pause 1 - nar "You grab Luna's ass, and as a rush of of pleasure courses through your body, you unload a torrent of semen all over it." + nar "You grab Luna's ass, and as a rush of pleasure courses through your body, you unload a torrent of semen all over it." lun "(What did he just--)" gen "*Ah*..." diff --git a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy index b24a3c4b..c9d0b0a1 100644 --- a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy +++ b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy @@ -284,7 +284,7 @@ label ll_pf_masturbate_T3_E1_intro: lun "Really? Thank you so much, [name_genie_luna]." ("base", "happyCl", "base", "mid") gen "Certainly." ("base", xpos="far_left", ypos="head") gen "Bestow shall I in you, my teaching of all, young padawan!" ("base", xpos="far_left", ypos="head") - lun "Sorry?" ("soft", "base", "base", "mid",cheeks="none") + lun "Sorry?" ("soft", "base", "base", "mid",cheeks=False) lun "I'm not sure exactly what you mean, [name_genie_luna]." ("angry", "narrow", "base", "mid") gen "Yes, Indeed... You still have more to learn before reaching your true potential..." ("base", xpos="far_left", ypos="head") lun "*Huh*?" ("upset", "narrow", "base", "mid") @@ -573,7 +573,7 @@ label ll_pf_masturbate_T3_E2_intro: lun "Was that just to help me with..." ("soft", "narrow", "base", "downL") lun "Actually... Forget I asked, [name_genie_luna]..." ("angry", "narrow", "base", "downL") lun "I... I'll just head back to my dorms now..." ("angry", "base", "base", "R") - lun "" ("mad", "base", "base", "R",cheeks="none") + lun "" ("mad", "base", "base", "R",cheeks=False) gen "Of course, good job today--" ("base", xpos="far_left", ypos="head") call lun_walk(action="leave") @@ -758,7 +758,7 @@ label ll_pf_masturbate_T3_E3_intro: gen "Is everything okay?" ("base", xpos="far_left", ypos="head") lun "Look at all these wrackspurts!" ("mad", "base", "base", "down") gen "..." ("base", xpos="far_left", ypos="head") - lun "I didn't think I'd be able to release this many at once." ("smile", "narrow", "base", "down",cheeks="none") + lun "I didn't think I'd be able to release this many at once." ("smile", "narrow", "base", "down",cheeks=False) gen "Sure took me by surprise..." ("grin", xpos="far_left", ypos="head") lun "Am I a master baiter now?" ("crooked_smile", "base", "base", "mid") @@ -986,7 +986,7 @@ label ll_pf_masturbate_T3_E4_repeat: easein_quad 10.0 zoom 1.0 pos (-1040, -600) #Luna naked bent over pose - lun "Now where did I put my spectrespecs..." ("base", "base", "base", "mid",cheeks="none") + lun "Now where did I put my spectrespecs..." ("base", "base", "base", "mid",cheeks=False) nar "Luna bends down and begins checking around the floor for her glasses." gen "Very fine indeed..." @@ -1313,7 +1313,7 @@ label ll_pf_masturbate_T4_E1_repeat: $ luna.set_cum(pussy="squirt_post") lun "" ("crooked_smile", "narrow", "base", "stare") - lun "*Ah*...{heart}" ("grin", "narrow", "base", "up", cheeks="none") + lun "*Ah*...{heart}" ("grin", "narrow", "base", "up",cheeks=False) # End of masturbate section diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 6acec4cc..32efc838 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -55,7 +55,7 @@ label ll_pf_blowjob_T4_E1_intro: gen "I think it's about time we try a new technique to deal with those wankspurs." ("base", xpos="far_left", ypos="head") lun "This is the idea that you had, after I've told you about Professor Trelawney reading me my future?" ("open", "base", "base", "mid", xpos="base", ypos="base", trans=d3) gen "That's--" ("base", xpos="far_left", ypos="head") - lun "\"I will soon find something new within me, that will propel me forward on the path towards my destiny!\"" ("grin", "closed", "base", "mid") + lun "\"I will soon find something new within me, that will propel me forward on the path towards my destiny\"!" ("grin", "closed", "base", "mid") lun "That's what she said!" ("grin", "base", "base", "mid") lun "Oh my goodness, I can hardly wait!" ("smile", "wide", "base", "mid") lun "These sessions have been so much fun." ("smile", "happyCl", "base", "mid") @@ -1179,7 +1179,7 @@ label ll_pf_blowjob_T4_E4_repeat: gen "What do you--{w=0.2} I'm asking you to suck my dick again, [name_luna_genie]!" ("base", xpos="far_left", ypos="head") lun "Oh! Of course, [name_genie_luna]! Why didn't you say so?" ("grin", "base", "base", "stare") gen "..." ("base", xpos="far_left", ypos="head") - lun "Either way... There's no need to to ask!" ("base", "base", "base", "mid") + lun "Either way... There's no need to ask!" ("base", "base", "base", "mid") lun "As I said before..." ("grin", "base", "base", "mid") lun "My mouth is here for you, whenever you need it!" ("smile", "base", "base", "mid") gen "Oh right... You did say that." ("base", xpos="far_left", ypos="head") @@ -1234,7 +1234,7 @@ label ll_pf_blowjob_T4_E4_repeat: gen "Only when I've hinted towards trying the other hole." show lun_blowjob_personal_pose1 eyes_halflid_stare as cg with d3 - lun "A magical hole? " + lun "A magical hole?" gen "Some would say it is..." show lun_blowjob_personal_pose1 mouth_base as cg with d3 diff --git a/game/scripts/characters/luna/gifts.rpy b/game/scripts/characters/luna/gifts.rpy index f02fe736..eb5fff2a 100644 --- a/game/scripts/characters/luna/gifts.rpy +++ b/game/scripts/characters/luna/gifts.rpy @@ -190,7 +190,7 @@ label give_lun_gift(gift_item): elif gift_item == firewhisky_ITEM: lun "Firewhisky... How lovely!" ("grin", "base", "base", "down") call give_gift("You give the firewhisky to Luna...", gift_item) - lun "Thank you, [name_genie_luna]" ("base", "base", "base", "mid") + lun "Thank you, [name_genie_luna]." ("base", "base", "base", "mid") lun "" (xpos="base",ypos="base") hide luna_main diff --git a/game/scripts/characters/tonks/events/requests/hands-on_lessons.rpy b/game/scripts/characters/tonks/events/requests/hands-on_lessons.rpy index 4f950950..c3fd6ccb 100644 --- a/game/scripts/characters/tonks/events/requests/hands-on_lessons.rpy +++ b/game/scripts/characters/tonks/events/requests/hands-on_lessons.rpy @@ -48,7 +48,7 @@ label nt_pr_grope_start: if not _events_completed_any: # Tell her to be even lewder for the next level of favors. gen "I'd like you to go out and have some handsy fun with your students." ("base", xpos="far_left", ypos="head") - ton "Just like that? " ("open", "base", "raised", "mid") + ton "Just like that?" ("open", "base", "raised", "mid") gen "Just like that, but I want you to be more handsy this time." ("grin", xpos="far_left", ypos="head") ton "I can certainly do that..." ("horny", "base", "base", "mid") ton "See you after class...{heart}" ("base", "happyCl", "base", "mid") From 1a8b0908d13c57643ced4181c5cc3e47bee3f587 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Fri, 29 Mar 2024 16:55:57 +0000 Subject: [PATCH 204/249] Update whitespace --- game/images.whitespace | 571 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 516 insertions(+), 55 deletions(-) diff --git a/game/images.whitespace b/game/images.whitespace index cc222521..cacdf480 100644 --- a/game/images.whitespace +++ b/game/images.whitespace @@ -1268,8 +1268,6 @@ characters/emotes/animated/t4.webp:29,32,31,30 characters/emotes/animated/thought_01.webp:5,5,57,50 characters/emotes/animated/thought_02.webp:5,5,57,50 characters/emotes/blank.webp:0,0,0,0 -characters/genie/angry.webp:652,370,212,165 -characters/genie/base.webp:132,190,962,2310 characters/genie/base/average_covered.webp:123,25,486,1175 characters/genie/base/average_nude.webp:123,25,478,1175 characters/genie/base/b03.webp:1,13,372,587 @@ -1283,7 +1281,6 @@ characters/genie/base/muscular_covered.webp:1,25,746,1175 characters/genie/base/muscular_nude.webp:1,25,746,1175 characters/genie/base/open.webp:0,4,598,1196 characters/genie/base/showing.webp:0,4,598,1196 -characters/genie/beard.webp:578,492,356,186 characters/genie/chibis/drinking/01.webp:52,43,395,500 characters/genie/chibis/drinking/01_day.webp:218,43,333,484 characters/genie/chibis/drinking/02.webp:52,43,398,500 @@ -1408,8 +1405,6 @@ characters/genie/chibis/working/07.webp:81,52,366,458 characters/genie/chibis/working/08.webp:81,52,366,458 characters/genie/chibis/working/09.webp:81,52,366,458 characters/genie/dick_1.webp:368,772,204,202 -characters/genie/grin.webp:634,370,230,179 -characters/genie/hair.webp:576,75,102,131 characters/genie/mage.webp:2,0,411,510 characters/genie/mage10.webp:0,0,403,510 characters/genie/mage11.webp:2,0,415,510 @@ -1426,16 +1421,6 @@ characters/genie/mage6.webp:0,0,415,510 characters/genie/mage7.webp:0,0,419,510 characters/genie/mage8.webp:0,0,414,510 characters/genie/mage9.webp:2,0,409,510 -characters/genie/open.webp:642,370,222,191 -characters/genie/outfits/robes.webp:57,123,1071,2377 -characters/genie/outfits/robes_beard.webp:578,492,356,186 -characters/genie/outfits/santa.webp:223,127,879,2373 -characters/genie/outfits/santa_beard_angry.webp:574,396,302,467 -characters/genie/outfits/santa_beard_base.webp:574,395,302,468 -characters/genie/outfits/santa_beard_grin.webp:574,403,302,460 -characters/genie/outfits/santa_beard_open.webp:574,385,302,478 -characters/genie/outfits/santa_beard_smile.webp:574,402,302,461 -characters/genie/smile.webp:580,370,297,242 characters/hermione/chibis/01.webp:0,9,175,169 characters/hermione/chibis/Wand/aka16.webp:18,6,80,122 characters/hermione/chibis/Wand/aka17.webp:18,6,80,122 @@ -3620,39 +3605,8 @@ characters/hooch/poses/default/face/pupils/downR/expression.webp:437,368,75,17 characters/hooch/poses/default/face/pupils/mid/expression.webp:435,364,75,18 characters/hooch/poses/default/face/pupils/stare/expression.webp:432,364,71,18 characters/hooch/poses/default/face/pupils/up/expression.webp:431,362,70,17 -characters/luna/chibis/inspect_body_lean/breast_nude_01.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/breast_nude_02.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/breast_nude_03.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/breast_nude_04.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/breast_nude_05.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/breast_nude_06.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/idle_nude_01.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/idle_nude_02.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/vag_nude_01.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/vag_nude_02.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/vag_nude_03.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/vag_nude_04.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/vag_nude_05.webp:92,54,367,456 -characters/luna/chibis/inspect_body_lean/vag_nude_06.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/Idle_clothed_01.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/breast_nude_01.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/breast_nude_02.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/breast_nude_03.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/breast_nude_04.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/breast_nude_05.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/breast_nude_06.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/idle_clothed_02.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/idle_nude_01.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/idle_nude_02.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/vag_nude_01.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/vag_nude_02.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/vag_nude_03.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/vag_nude_04.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/vag_nude_05.webp:92,54,367,456 -characters/luna/chibis/inspect_body_stand/vag_nude_06.webp:92,54,367,456 characters/luna/chibis/luna_stand.webp:20,2,180,345 characters/luna/chibis/luna_stand_topless.webp:20,2,180,345 -characters/luna/chibis/sit_on_lap.webp:193,76,159,320 characters/luna/chibis/walk/l_walk_a_01.webp:20,2,180,342 characters/luna/chibis/walk/l_walk_a_02.webp:17,2,183,345 characters/luna/chibis/walk/l_walk_a_03.webp:12,2,188,342 @@ -4250,13 +4204,16 @@ characters/luna/poses/default/clothes/top/top_torn/outline.webp:429,470,318,326 characters/luna/poses/default/clothes/top/top_torn/skin.webp:438,508,304,274 characters/luna/poses/default/cum/body/heavy/cum.webp:458,472,255,320 characters/luna/poses/default/cum/body/light/cum.webp:532,510,181,282 -characters/luna/poses/default/cum/breasts/heavy/cum.webp:448,538,194,169 +characters/luna/poses/default/cum/breasts/heavy/cum.webp:447,535,222,165 +characters/luna/poses/default/cum/breasts/heavy/skin.webp:450,537,220,152 characters/luna/poses/default/cum/breasts/light/cum.webp:532,552,89,149 characters/luna/poses/default/cum/crotch/heavy/cum.webp:459,769,181,252 characters/luna/poses/default/cum/crotch/light/cum.webp:501,769,73,154 -characters/luna/poses/default/cum/face/heavy/cum.webp:512,382,126,132 -characters/luna/poses/default/cum/face/light/cum.webp:597,393,33,72 -characters/luna/poses/default/cum/hair/heavy/cum.webp:478,247,190,169 +characters/luna/poses/default/cum/face/heavy/cum.webp:517,321,102,166 +characters/luna/poses/default/cum/face/heavy/skin.webp:521,322,99,127 +characters/luna/poses/default/cum/face/light/cum.webp:528,438,68,49 +characters/luna/poses/default/cum/face/light/skin.webp:0,0,0,0 +characters/luna/poses/default/cum/hair/heavy/default/cum.webp:470,247,274,271 characters/luna/poses/default/cum/hair/light/cum.webp:496,263,117,100 characters/luna/poses/default/cum/legs/heavy/cum.webp:457,860,215,340 characters/luna/poses/default/cum/legs/light/cum.webp:510,860,146,191 @@ -5288,7 +5245,7 @@ characters/tonks/poses/default/clothes/pubes/stuble/0.webp:508,909,78,48 characters/tonks/poses/default/clothes/pubes/unshaved/0.webp:514,908,63,53 characters/tonks/poses/default/clothes/robe/auror_coat/0.webp:396,499,449,701 characters/tonks/poses/default/clothes/robe/auror_coat/0_back.webp:454,496,218,704 -characters/tonks/poses/default/clothes/robe/auror_coat/0_front.webp:694,736,128,148 +characters/tonks/poses/default/clothes/robe/auror_coat/0_front.webp:694,737,128,147 characters/tonks/poses/default/clothes/robe/auror_coat/1.webp:472,608,202,461 characters/tonks/poses/default/clothes/robe/auror_coat/armfix.webp:432,826,295,101 characters/tonks/poses/default/clothes/robe/auror_coat/outline.webp:394,497,452,703 @@ -5584,7 +5541,7 @@ gui/icon.webp:101,1,430,630 gui/logos/discord.webp:20,13,112,128 gui/logos/patreon.webp:20,22,110,106 gui/logos/silverstudiogames.webp:0,0,325,46 -gui/logos/title.webp:0,0,339,242 +gui/logos/title.webp:0,17,339,190 gui/main_menu/00.webp:0,0,2160,1200 gui/main_menu/00b.webp:0,0,2160,1200 gui/main_menu/01.webp:0,0,2160,1200 @@ -6861,11 +6818,502 @@ images/CG/her_vibrators/public/hermione/her_vibrators_public_vibrator_upper_egg. images/CG/her_vibrators/public/hermione/her_vibrators_public_vibrator_upper_tape.webp:1022,366,209,124 images/CG/her_vibrators/public/hermione/her_vibrators_public_wetness_legs.webp:1078,732,97,137 images/CG/her_vibrators/public/hermione/her_vibrators_public_wetness_vagina.webp:1104,680,55,78 +images/CG/lun_blowjob/personal/lun_blowjob_personal_background.webp:0,0,4320,2400 +images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_arm_idle.webp:1034,0,991,837 +images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_back.webp:1333,1272,602,914 +images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_front.webp:0,0,3256,2400 +images/CG/lun_blowjob/personal/lun_blowjob_personal_genie_trousers.webp:1294,1241,2009,1159 +images/CG/lun_blowjob/personal/lun_blowjob_personal_tabletop.webp:596,0,3724,1147 +images/CG/lun_blowjob/personal/lun_blowjob_personal_vignette.webp:0,0,4320,2400 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame0.webp:1883,996,107,342 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame1.webp:1874,682,253,677 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame2.webp:1864,575,343,821 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame3.webp:1852,314,529,1090 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4.webp:1852,189,740,1215 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_frame4_alt.webp:1852,189,740,1215 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_cum_precum.webp:1879,1309,31,34 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_base.webp:1612,431,2148,1969 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_cheeks_blush.webp:1920,861,532,405 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_angry.webp:1957,735,506,237 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_base.webp:1956,730,515,153 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_raised.webp:1953,688,518,195 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_shocked.webp:1956,710,515,165 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyebrows_worried.webp:1962,735,502,162 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_down_hearts.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_left.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_right.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_squint_hearts.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_stare_hearts.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_base_up_hearts.webp:1968,792,463,200 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_closed.webp:1967,813,458,185 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_down_hearts.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_left.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_right.webp:1970,811,460,179 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_squint_hearts.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_stare_hearts.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_halflid_up_hearts.webp:1970,811,460,175 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_down_hearts.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_left.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_right.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_squint_hearts.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_stare_hearts.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_eyes_wide_up_hearts.webp:1967,780,465,225 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_hair.webp:1745,235,1285,1345 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_annoyed.webp:1972,1116,124,95 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_base.webp:2007,1133,215,85 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_full.webp:1880,956,465,340 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_grin.webp:1996,1122,209,126 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_neutral.webp:2003,1131,145,85 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open.webp:2019,1133,131,149 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_cum.webp:2009,1128,148,151 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_spit.webp:2019,1133,131,149 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_open_tongue.webp:2019,1133,131,166 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_soft.webp:2003,1143,141,115 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_spitting.webp:1950,1146,186,164 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_mouth_swallow.webp:2000,1131,148,109 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down.webp:1466,1478,663,665 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_shadow.webp:2073,1530,154,519 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_down_speedlines.webp:1459,1477,669,694 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up.webp:1530,1334,763,756 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_shadow.webp:1826,1450,410,646 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_luna_stroke_up_speedlines.webp:1529,1334,731,709 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis.webp:1514,1299,505,880 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_shadow.webp:1976,1425,165,469 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_penis_spit.webp:1541,1299,480,843 +images/CG/lun_blowjob/personal/pose1/lun_blowjob_personal_pose1_throatpie_frame0.webp:1577,1058,515,954 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_base.webp:1617,565,2134,1835 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_angry.webp:1872,970,450,211 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_base.webp:1859,993,481,187 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_raised.webp:1848,961,483,204 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_shocked.webp:1868,982,460,153 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyebrows_worried.webp:1845,1011,489,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down.webp:1866,1066,425,223 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_down_hearts.webp:1866,1066,425,223 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_left.webp:1866,1066,425,213 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_right.webp:1866,1066,425,213 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint.webp:1866,1066,425,213 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_squint_hearts.webp:1866,1066,425,213 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare.webp:1866,1066,425,213 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_stare_hearts.webp:1866,1066,425,213 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up.webp:1866,1066,425,213 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_base_up_hearts.webp:1866,1066,425,213 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_closed.webp:1862,1067,437,223 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down.webp:1870,1081,420,208 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_down_hearts.webp:1870,1081,420,208 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_left.webp:1870,1081,420,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_right.webp:1870,1081,420,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint.webp:1870,1081,420,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_squint_hearts.webp:1870,1081,420,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare.webp:1870,1081,420,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_stare_hearts.webp:1870,1081,420,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up.webp:1870,1081,420,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_halflid_up_hearts.webp:1870,1081,420,197 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down.webp:1863,1052,429,241 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_down_hearts.webp:1863,1052,429,241 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_left.webp:1863,1052,429,239 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_right.webp:1863,1052,429,239 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint.webp:1863,1052,429,239 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_squint_hearts.webp:1863,1052,429,239 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare.webp:1863,1052,429,239 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_stare_hearts.webp:1863,1052,429,239 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up.webp:1863,1052,429,239 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_eyes_wide_up_hearts.webp:1863,1052,429,239 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_hair.webp:1665,398,1246,1427 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_kiss.webp:1978,1419,146,210 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_mouth_lick.webp:1964,1400,160,245 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_luna_stroke_down.webp:1481,1657,634,540 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis.webp:1518,1450,592,727 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_penis_spit.webp:1636,1451,476,675 +images/CG/lun_blowjob/personal/pose2/lun_blowjob_personal_pose2_throatpie_frame0.webp:1640,1165,720,866 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_genie_arm_petting.webp:1041,637,1186,1039 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_base.webp:1535,743,2238,1657 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_angry.webp:1715,1123,452,145 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_base.webp:1705,1147,480,117 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_raised.webp:1692,1118,481,133 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_shocked.webp:1713,1131,450,90 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyebrows_worried.webp:1695,1160,491,134 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down.webp:1711,1222,430,180 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_down_hearts.webp:1711,1222,430,180 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_left.webp:1711,1222,430,173 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_right.webp:1711,1222,430,173 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint.webp:1711,1222,430,173 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_squint_hearts.webp:1711,1222,430,173 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare.webp:1711,1222,430,173 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_stare_hearts.webp:1711,1222,430,173 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up.webp:1711,1222,430,173 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_base_up_hearts.webp:1711,1222,430,173 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_closed.webp:1715,1218,445,176 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down.webp:1717,1232,426,175 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_down_hearts.webp:1717,1232,426,175 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_left.webp:1717,1232,426,161 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_right.webp:1717,1232,426,161 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint.webp:1717,1232,426,161 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_squint_hearts.webp:1717,1232,426,161 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare.webp:1717,1232,426,161 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_stare_hearts.webp:1717,1232,426,161 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up.webp:1717,1232,426,161 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_halflid_up_hearts.webp:1717,1232,426,161 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down.webp:1708,1210,433,215 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_down_hearts.webp:1708,1210,433,215 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_left.webp:1708,1210,433,197 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_right.webp:1708,1210,433,197 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint.webp:1708,1210,433,197 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_squint_hearts.webp:1708,1210,433,197 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare.webp:1708,1210,433,197 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_stare_hearts.webp:1708,1210,433,197 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up.webp:1708,1210,433,197 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_eyes_wide_up_hearts.webp:1708,1210,433,197 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_hair.webp:1491,457,1169,1536 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_mouth_suck.webp:1809,1553,216,356 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_luna_stroke_down.webp:1420,1781,600,554 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis.webp:1494,1431,557,749 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_penis_spit.webp:1548,1561,509,582 +images/CG/lun_blowjob/personal/pose3/lun_blowjob_personal_pose3_throatpie_frame0.webp:1621,1351,578,680 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_genie_arm_petting.webp:1117,727,953,1065 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_base.webp:1466,780,2314,1620 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_angry.webp:1567,1222,482,128 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_base.webp:1559,1243,510,100 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_raised.webp:1545,1220,510,109 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_shocked.webp:1567,1200,475,114 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyebrows_worried.webp:1552,1248,519,132 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down.webp:1564,1328,462,175 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_down_hearts.webp:1564,1328,462,175 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_left.webp:1564,1328,462,167 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_right.webp:1564,1328,462,167 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint.webp:1564,1328,462,167 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_squint_hearts.webp:1564,1328,462,167 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare.webp:1564,1328,462,167 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_stare_hearts.webp:1564,1328,462,167 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up.webp:1564,1328,462,167 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_base_up_hearts.webp:1564,1328,462,167 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_closed.webp:1570,1324,477,169 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down.webp:1570,1338,458,172 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_down_hearts.webp:1570,1338,458,172 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_left.webp:1570,1338,458,155 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_right.webp:1570,1338,458,155 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint.webp:1570,1338,458,155 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_squint_hearts.webp:1570,1338,458,155 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare.webp:1570,1338,458,155 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_stare_hearts.webp:1570,1338,458,155 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up.webp:1570,1338,458,155 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_halflid_up_hearts.webp:1570,1338,458,155 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down.webp:1560,1315,467,213 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_down_hearts.webp:1560,1315,467,213 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_left.webp:1560,1315,467,194 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_right.webp:1560,1315,467,194 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint.webp:1560,1315,467,194 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_squint_hearts.webp:1560,1315,467,194 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare.webp:1560,1315,467,194 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_stare_hearts.webp:1560,1315,467,194 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up.webp:1560,1315,467,194 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_eyes_wide_up_hearts.webp:1560,1315,467,194 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_hair.webp:1374,523,1187,1540 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_mouth_suck.webp:1725,1681,233,181 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_luna_stroke_down.webp:1420,1791,592,545 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis.webp:1494,1431,557,749 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_penis_spit.webp:1548,1657,509,486 +images/CG/lun_blowjob/personal/pose4/lun_blowjob_personal_pose4_throatpie_frame0.webp:1578,1467,535,564 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_genie_arm_petting.webp:966,892,991,967 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_base.webp:1304,975,2464,1425 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_angry.webp:1411,1442,515,116 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_base.webp:1402,1452,545,98 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_raised.webp:1387,1442,545,104 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_shocked.webp:1410,1408,508,132 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyebrows_worried.webp:1395,1463,555,126 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down.webp:1407,1551,495,172 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_down_hearts.webp:1407,1551,495,172 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_left.webp:1407,1551,495,161 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_right.webp:1407,1551,495,161 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint.webp:1407,1551,495,161 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_squint_hearts.webp:1407,1551,495,161 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare.webp:1407,1551,495,161 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_stare_hearts.webp:1407,1551,495,161 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up.webp:1407,1551,495,161 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_base_up_hearts.webp:1407,1551,495,161 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_closed.webp:1414,1548,511,163 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down.webp:1414,1562,490,167 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_down_hearts.webp:1414,1562,490,167 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_left.webp:1414,1562,490,149 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_right.webp:1414,1562,490,149 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint.webp:1414,1562,490,149 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_squint_hearts.webp:1414,1562,490,149 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare.webp:1414,1562,490,149 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_stare_hearts.webp:1414,1562,490,149 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up.webp:1414,1562,490,149 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_halflid_up_hearts.webp:1414,1562,490,149 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down.webp:1403,1539,500,209 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_down_hearts.webp:1403,1539,500,209 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_left.webp:1403,1539,500,187 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_right.webp:1403,1539,500,187 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint.webp:1403,1539,500,187 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_squint_hearts.webp:1403,1539,500,187 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare.webp:1403,1539,500,187 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_stare_hearts.webp:1403,1539,500,187 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up.webp:1403,1539,500,187 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_eyes_wide_up_hearts.webp:1403,1539,500,187 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_frothing.webp:1564,1922,256,134 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_hair.webp:1203,708,1274,1585 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_mouth_suck.webp:1582,1911,250,179 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_luna_stroke_down.webp:1264,2016,628,384 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis.webp:1494,1431,557,749 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_penis_spit.webp:1548,1657,332,486 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame0.webp:1589,1832,236,222 +images/CG/lun_blowjob/personal/pose5/lun_blowjob_personal_pose5_throatpie_frame1.webp:1427,1711,554,379 +images/CG/lun_grind/lun_grind_background.webp:0,0,2880,3840 +images/CG/lun_grind/lun_grind_body_grind.webp:0,0,2783,3840 +images/CG/lun_grind/lun_grind_body_idle.webp:0,0,2766,3798 +images/CG/lun_grind/lun_grind_body_spread.webp:0,0,2783,3840 +images/CG/lun_grind/lun_grind_cumshot_frame0.webp:1409,3138,76,47 +images/CG/lun_grind/lun_grind_cumshot_frame1.webp:1402,3047,92,140 +images/CG/lun_grind/lun_grind_cumshot_frame2.webp:1346,2791,151,394 +images/CG/lun_grind/lun_grind_cumshot_frame3.webp:1322,2716,187,491 +images/CG/lun_grind/lun_grind_cumshot_frame4.webp:1245,2547,383,689 +images/CG/lun_grind/lun_grind_cumshot_frame5.webp:1245,2547,383,689 +images/CG/lun_grind/lun_grind_penis_grind_frame0.webp:1225,3123,435,717 +images/CG/lun_grind/lun_grind_penis_grind_frame1.webp:1223,3145,427,695 +images/CG/lun_grind/lun_grind_penis_tease_frame0.webp:1248,3391,400,449 +images/CG/lun_grind/lun_grind_penis_tease_frame1.webp:1251,3367,392,473 +images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame0.webp:1753,1261,377,547 +images/CG/lun_inspect/genie/alt/lun_inspect_genie_arm_right_touch_pussy_frame1.webp:1751,1259,382,544 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_grab_tits.webp:1737,405,1619,1387 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_both_touch_tits.webp:1675,405,1681,1387 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_grab.webp:2034,405,1322,1387 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_left_hold.webp:2343,412,1204,1444 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_idle.webp:1509,406,994,625 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame0.webp:1753,1261,377,717 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_spread_legs_touch_pussy_frame1.webp:1751,1259,382,722 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_mound.webp:1772,406,731,1351 +images/CG/lun_inspect/genie/lun_inspect_genie_arm_right_touch_tit.webp:1675,406,828,903 +images/CG/lun_inspect/genie/lun_inspect_genie_body.webp:955,400,2187,1760 +images/CG/lun_inspect/genie/lun_inspect_genie_clothes.webp:2445,0,915,1785 +images/CG/lun_inspect/genie/lun_inspect_genie_clothes_back.webp:931,1128,2224,1032 +images/CG/lun_inspect/genie/lun_inspect_genie_clothes_hood.webp:2453,148,368,659 +images/CG/lun_inspect/genie/lun_inspect_genie_head.webp:2411,0,577,748 +images/CG/lun_inspect/lun_inspect_background.webp:0,0,3840,2160 +images/CG/lun_inspect/lun_inspect_background_breastfix.webp:1623,1010,185,361 +images/CG/lun_inspect/lun_inspect_chair.webp:0,0,3436,2160 +images/CG/lun_inspect/lun_inspect_vignette.webp:0,0,3840,2160 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_arm_idle.webp:1212,1274,676,349 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_body.webp:1285,64,1576,2096 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_bra.webp:1700,693,816,664 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_blush.webp:2036,208,321,205 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_breath.webp:1930,348,258,236 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyebrows_base.webp:2067,131,258,85 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_right.webp:2058,184,269,99 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up.webp:2058,184,269,99 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_eyes_base_up_hearts.webp:2058,184,269,99 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open.webp:2074,352,136,136 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao.webp:2070,353,145,182 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_face_mouth_open_ahegao_spit.webp:2070,353,145,206 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_back.webp:1878,166,800,679 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_hair_front.webp:1941,0,649,613 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shadow.webp:1260,728,1544,1432 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_shirt.webp:1699,517,1099,1137 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_skirt.webp:1579,1465,899,618 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_head_back_legs_together_luna_stockings.webp:1286,1734,702,426 +images/CG/lun_inspect/luna/head_back_legs_together/lun_inspect_legs_together_luna_arm_idle.webp:1212,1274,676,349 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_idle.webp:1212,1274,676,349 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_arm_masturbate.webp:1791,1280,322,675 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_body.webp:1143,64,1718,2096 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_bra.webp:1700,693,816,664 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_blush.webp:2036,208,321,205 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_breath.webp:1930,348,258,236 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyebrows_base.webp:2067,131,258,85 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_right.webp:2058,184,269,99 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up.webp:2058,184,269,99 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_eyes_base_up_hearts.webp:2058,184,269,99 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open.webp:2074,352,136,136 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao.webp:2070,353,145,182 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_face_mouth_open_ahegao_spit.webp:2070,353,145,206 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_moist.webp:1835,1849,238,169 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_squirt.webp:1888,1847,141,46 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_fluids_wet.webp:1804,1849,269,199 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_back.webp:1878,166,800,679 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_hair_front.webp:1941,0,649,613 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_panties.webp:1818,1500,643,467 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shadow.webp:1112,728,1692,1432 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_shirt.webp:1699,517,1099,1137 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_skirt.webp:1577,1465,1016,695 +images/CG/lun_inspect/luna/head_back_spread_legs/lun_inspect_head_back_spread_legs_luna_stockings.webp:1143,1729,1352,431 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_idle.webp:1212,1274,676,349 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_arm_masturbate.webp:1791,1280,322,675 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_body.webp:1285,101,1576,2059 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra.webp:1700,693,816,664 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_bra_grab.webp:1757,691,742,606 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_shirt.webp:1699,517,1099,1137 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_skirt.webp:1579,1465,899,618 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_clothes_stockings.webp:1286,1734,702,426 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_blush.webp:2036,365,302,207 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_angry.webp:2015,286,296,50 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_base.webp:2014,277,299,56 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_raised.webp:2008,270,305,53 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_shocked.webp:2011,264,299,82 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyebrows_worried.webp:2019,277,292,67 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_down.webp:2026,319,274,81 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_left.webp:2026,319,274,81 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_right.webp:2026,319,274,81 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_squint.webp:2026,319,274,81 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_stare.webp:2026,319,274,81 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_base_up.webp:2026,319,274,81 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_closed.webp:2036,328,266,74 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_down.webp:2031,328,269,71 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_left.webp:2031,328,269,71 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_right.webp:2031,328,269,71 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_squint.webp:2031,328,269,72 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_stare.webp:2031,328,269,71 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_halflid_up.webp:2031,328,269,71 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_down.webp:2024,315,277,91 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_left.webp:2024,315,277,91 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_right.webp:2024,315,277,91 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_squint.webp:2024,315,277,91 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_stare.webp:2024,315,277,91 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_eyes_wide_up.webp:2024,315,277,91 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_annoyed.webp:2087,514,78,45 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_base.webp:2098,515,127,44 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_grin.webp:2090,508,126,69 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral.webp:2096,515,87,44 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_neutral_cum.webp:2094,515,89,50 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open.webp:2103,513,86,83 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_cum.webp:2098,509,94,86 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_spit.webp:2103,513,86,83 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue.webp:2104,513,85,95 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_open_tongue_spit.webp:2104,513,85,96 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_soft.webp:2098,520,87,66 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_spit.webp:2084,521,96,105 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_face_mouth_swallow.webp:2014,432,280,160 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_back.webp:1928,224,699,608 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_hair_front.webp:1927,0,680,798 +images/CG/lun_inspect/luna/legs_together/lun_inspect_legs_together_luna_shadow.webp:1260,728,1544,1432 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_idle.webp:1212,1274,676,349 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_arm_masturbate.webp:1791,1280,322,675 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_body.webp:1143,101,1718,2059 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra.webp:1700,693,816,664 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_bra_grab.webp:1757,691,742,606 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_panties.webp:1818,1500,643,467 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_shirt.webp:1699,517,1099,1137 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_skirt.webp:1577,1465,1016,695 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_clothes_stockings.webp:1143,1729,1352,431 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_blush.webp:2036,365,302,207 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_angry.webp:2015,286,296,50 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_base.webp:2014,277,299,56 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_raised.webp:2008,270,305,53 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_shocked.webp:2011,264,299,82 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyebrows_worried.webp:2019,277,292,67 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_down.webp:2026,319,274,81 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_left.webp:2026,319,274,81 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_right.webp:2026,319,274,81 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_squint.webp:2026,319,274,81 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_stare.webp:2026,319,274,81 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_base_up.webp:2026,319,274,81 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_closed.webp:2036,328,266,74 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_down.webp:2031,328,269,71 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_left.webp:2031,328,269,71 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_right.webp:2031,328,269,71 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_squint.webp:2031,328,269,72 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_stare.webp:2031,328,269,71 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_halflid_up.webp:2031,328,269,71 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_down.webp:2024,315,277,91 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_left.webp:2024,315,277,91 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_right.webp:2024,315,277,91 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_squint.webp:2024,315,277,91 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_stare.webp:2024,315,277,91 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_eyes_wide_up.webp:2024,315,277,91 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_annoyed.webp:2087,514,78,45 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_base.webp:2098,515,127,44 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_grin.webp:2090,508,126,69 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral.webp:2096,515,87,44 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_neutral_cum.webp:2094,515,89,50 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open.webp:2103,513,86,83 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_cum.webp:2098,509,94,86 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_spit.webp:2103,513,86,83 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue.webp:2104,513,85,95 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_open_tongue_spit.webp:2104,513,85,96 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_soft.webp:2098,520,87,66 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_spit.webp:2084,521,96,105 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_face_mouth_swallow.webp:2014,432,280,160 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_moist.webp:1835,1849,238,169 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_squirt.webp:1888,1847,141,46 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_fluids_wet.webp:1804,1849,269,199 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_back.webp:1928,224,699,608 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_hair_front.webp:1927,0,680,798 +images/CG/lun_inspect/luna/spread_legs/lun_inspect_spread_legs_luna_shadow.webp:1112,728,1692,1432 images/CG/lun_intro/bg.webp:0,0,2160,1200 images/CG/lun_intro/day_overlay.webp:0,0,3840,2160 images/CG/lun_intro/luna.webp:917,277,1149,891 images/CG/lun_intro/luna_naked.webp:917,277,1138,892 images/CG/lun_intro/night_overlay.webp:0,0,3840,2160 +images/CG/lun_talk/lun_talk_background.webp:0,0,3840,2160 +images/CG/lun_talk/lun_talk_book.webp:374,1202,923,678 +images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_side.webp:2080,765,395,829 +images/CG/lun_talk/luna/lun_talk_arm_left_hold_leg_variant_legs_up.webp:2080,765,573,592 +images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_side.webp:1673,765,572,1135 +images/CG/lun_talk/luna/lun_talk_arm_left_masturbate_variant_legs_up.webp:1673,765,582,1135 +images/CG/lun_talk/luna/lun_talk_arm_left_rest.webp:2077,765,927,630 +images/CG/lun_talk/luna/lun_talk_arm_left_spread_variant_legs_up.webp:1755,765,491,1115 +images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_side.webp:1300,765,325,926 +images/CG/lun_talk/luna/lun_talk_arm_right_hold_leg_variant_legs_up.webp:1072,765,553,664 +images/CG/lun_talk/luna/lun_talk_arm_right_rest.webp:831,764,792,629 +images/CG/lun_talk/luna/lun_talk_arms_grab_chest.webp:1434,765,832,587 +images/CG/lun_talk/luna/lun_talk_blush_base.webp:1663,444,331,208 +images/CG/lun_talk/luna/lun_talk_blush_heavy.webp:1663,442,331,211 +images/CG/lun_talk/luna/lun_talk_chest.webp:1516,849,665,476 +images/CG/lun_talk/luna/lun_talk_cum_chest.webp:1813,965,65,372 +images/CG/lun_talk/luna/lun_talk_cum_chin.webp:1756,683,98,255 +images/CG/lun_talk/luna/lun_talk_cum_desk.webp:1714,1890,130,268 +images/CG/lun_talk/luna/lun_talk_cum_hand.webp:1773,1643,129,209 +images/CG/lun_talk/luna/lun_talk_cum_stomach.webp:1815,1337,67,234 +images/CG/lun_talk/luna/lun_talk_eyebrows_base.webp:1668,411,288,47 +images/CG/lun_talk/luna/lun_talk_eyebrows_raised.webp:1668,390,284,68 +images/CG/lun_talk/luna/lun_talk_eyebrows_surprised.webp:1672,395,281,50 +images/CG/lun_talk/luna/lun_talk_eyebrows_upset.webp:1673,395,276,56 +images/CG/lun_talk/luna/lun_talk_eyebrows_worried.webp:1668,415,282,46 +images/CG/lun_talk/luna/lun_talk_eyes_base_ahegao.webp:1674,448,280,76 +images/CG/lun_talk/luna/lun_talk_eyes_base_down.webp:1674,448,280,77 +images/CG/lun_talk/luna/lun_talk_eyes_base_left.webp:1674,448,280,76 +images/CG/lun_talk/luna/lun_talk_eyes_base_right.webp:1674,448,280,76 +images/CG/lun_talk/luna/lun_talk_eyes_base_stare.webp:1674,448,280,76 +images/CG/lun_talk/luna/lun_talk_eyes_base_up.webp:1674,448,280,76 +images/CG/lun_talk/luna/lun_talk_eyes_closed.webp:1678,445,269,79 +images/CG/lun_talk/luna/lun_talk_eyes_narrow_ahegao.webp:1675,450,279,69 +images/CG/lun_talk/luna/lun_talk_eyes_narrow_down.webp:1675,450,279,69 +images/CG/lun_talk/luna/lun_talk_eyes_narrow_left.webp:1675,450,279,69 +images/CG/lun_talk/luna/lun_talk_eyes_narrow_right.webp:1675,450,279,69 +images/CG/lun_talk/luna/lun_talk_eyes_narrow_stare.webp:1675,450,279,69 +images/CG/lun_talk/luna/lun_talk_eyes_narrow_up.webp:1675,450,279,69 +images/CG/lun_talk/luna/lun_talk_eyes_wide_ahegao.webp:1675,441,279,87 +images/CG/lun_talk/luna/lun_talk_eyes_wide_down.webp:1675,441,279,87 +images/CG/lun_talk/luna/lun_talk_eyes_wide_left.webp:1675,441,279,87 +images/CG/lun_talk/luna/lun_talk_eyes_wide_right.webp:1675,441,279,87 +images/CG/lun_talk/luna/lun_talk_eyes_wide_stare.webp:1675,441,279,87 +images/CG/lun_talk/luna/lun_talk_eyes_wide_up.webp:1675,441,279,87 +images/CG/lun_talk/luna/lun_talk_hair.webp:1469,107,766,675 +images/CG/lun_talk/luna/lun_talk_legs_down.webp:1086,1329,1491,831 +images/CG/lun_talk/luna/lun_talk_legs_side.webp:368,812,2978,1182 +images/CG/lun_talk/luna/lun_talk_legs_up.webp:499,6,2630,1991 +images/CG/lun_talk/luna/lun_talk_mouth_ahegao.webp:1773,620,109,118 +images/CG/lun_talk/luna/lun_talk_mouth_base.webp:1769,635,118,50 +images/CG/lun_talk/luna/lun_talk_mouth_open.webp:1775,627,109,75 +images/CG/lun_talk/luna/lun_talk_mouth_open_wide.webp:1774,618,108,94 +images/CG/lun_talk/luna/lun_talk_mouth_pout.webp:1796,629,85,54 +images/CG/lun_talk/luna/lun_talk_mouth_smile.webp:1766,634,126,62 +images/CG/lun_talk/luna/lun_talk_mouth_soft.webp:1777,633,97,59 +images/CG/lun_talk/luna/lun_talk_mouth_timid.webp:1784,636,85,50 +images/CG/lun_talk/luna/lun_talk_torso.webp:1468,239,767,1235 +images/CG/lun_talk/luna/lun_talk_wet_legs_down.webp:1783,1706,116,181 +images/CG/lun_talk/luna/lun_talk_wet_legs_side.webp:1782,1701,121,186 +images/CG/lun_talk/luna/lun_talk_wet_legs_up.webp:1782,1701,121,186 images/animation/00.webp:0,0,0,0 images/animation/23_jerking_off_sperm.webp:28,124,213,131 images/animation/Bouquet0.webp:16,34,72,89 @@ -7049,6 +7497,20 @@ images/cardgame/t1/susan/sus_schoolgirl_v1.webp:0,0,320,480 images/cardgame/t1/susan/sus_schoolgirl_v2.webp:0,0,320,480 images/cardgame/t1/susan/sus_schoolgirl_v3.webp:0,0,320,480 images/cardgame/t1/susan/sus_schoolgirl_v4.webp:0,0,320,480 +images/characters/genie/genie_bbase.webp:132,190,962,2310 +images/characters/genie/genie_face_angry.webp:652,370,212,165 +images/characters/genie/genie_face_grin.webp:634,370,230,179 +images/characters/genie/genie_face_open.webp:642,370,222,191 +images/characters/genie/genie_face_smile.webp:580,370,297,242 +images/characters/genie/genie_goatee.webp:578,492,356,186 +images/characters/genie/genie_outfit_nude.webp:576,75,102,131 +images/characters/genie/genie_outfit_robes.webp:57,123,1071,2377 +images/characters/genie/genie_outfit_santa.webp:223,127,879,2373 +images/characters/genie/genie_santa_beard_angry.webp:574,396,302,467 +images/characters/genie/genie_santa_beard_base.webp:574,395,302,468 +images/characters/genie/genie_santa_beard_grin.webp:574,403,302,460 +images/characters/genie/genie_santa_beard_open.webp:574,385,302,478 +images/characters/genie/genie_santa_beard_smile.webp:574,402,302,461 images/dueling/damage/0.webp:31,135,44,33 images/dueling/damage/100.webp:6,93,62,26 images/dueling/damage/200.webp:8,93,59,25 @@ -7195,7 +7657,7 @@ images/logo/patreon.webp:0,0,296,56 images/logo/patreon_hover.webp:0,0,329,62 images/logo/renpy.webp:8,0,134,225 images/logo/silverstudiogames.webp:0,0,325,46 -images/logo/title.webp:27,1,353,258 +images/logo/title.webp:0,17,339,190 images/magic/heal01.webp:23,434,346,166 images/magic/heal02.webp:23,416,351,184 images/magic/heal03.webp:21,397,353,203 @@ -7482,11 +7944,9 @@ images/rooms/main_room/weather/cloud_small.webp:4,9,155,30 images/rooms/main_room/weather/day_cloud_01.webp:5,9,33,10 images/rooms/main_room/weather/day_cloud_02.webp:9,14,74,20 images/rooms/main_room/weather/day_cloud_03.webp:6,7,48,12 -images/rooms/main_room/weather/lightning_01.webp:0,0,0,0 images/rooms/main_room/weather/lightning_02.webp:51,14,100,156 images/rooms/main_room/weather/lightning_03.webp:26,50,89,145 images/rooms/main_room/weather/lightning_04.webp:0,0,155,230 -images/rooms/main_room/weather/lightning_05.webp:0,0,0,0 images/rooms/main_room/weather/lightning_06.webp:0,0,155,230 images/rooms/main_room/weather/night_cloud_01.webp:5,9,33,10 images/rooms/main_room/weather/night_cloud_02.webp:9,14,74,20 @@ -7843,6 +8303,7 @@ interface/desk/watch/sun.webp:0,0,67,67 interface/desk/watch_hover.webp:1,0,241,155 interface/desk/work.webp:0,0,259,431 interface/desk/work_hover.webp:0,0,276,464 +interface/frames/cg_frame.webp:0,0,199,3840 interface/frames/gold/arrow.webp:68,26,32,48 interface/frames/gold/arrow2.webp:0,0,32,48 interface/frames/gold/arrow_up.webp:0,0,48,32 From 1cc33743305a1693e114591e0f8ea0dc9ff34211 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Fri, 29 Mar 2024 18:08:55 +0000 Subject: [PATCH 205/249] Update build info --- .gitignore | 1 + game/scripts/options.rpy | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index bb942e86..29644655 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,7 @@ game/cache/ project.json android.json *.keystore +*.pem # Ren'py logs traceback.txt diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index 51f68e95..28d4e35b 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -154,6 +154,7 @@ init python: build.include_update = True build.include_old_themes = False build.exclude_empty_directories = True + build.update_formats += ['zsync'] build.classify("**.rpy", "renpy") build.classify("**.rpyc", "all") @@ -185,6 +186,9 @@ init python: build.classify("**~", None) build.classify("**.db", None) build.classify("**.zip", None) + build.classify("android.keystore", None) + build.classify("bundle.keystore", None) + build.classify("update.pem", None) build.classify("cache/**", "android") build.classify("game/saves/**", None) From 3ebb5c53f4148f3e08293f255dd991fc7f856c0e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 19:41:37 +0100 Subject: [PATCH 206/249] Factorize check (cherry picked from commit 40be2ccf181bf4eaf160c7e4711c79663ca650d3) --- game/scripts/wardrobe/functions.rpy | 50 +++++++++++------------------ 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/game/scripts/wardrobe/functions.rpy b/game/scripts/wardrobe/functions.rpy index dc56eaa4..21243323 100644 --- a/game/scripts/wardrobe/functions.rpy +++ b/game/scripts/wardrobe/functions.rpy @@ -1,42 +1,38 @@ init -1 python: - def get_character_progression(key): + def __check_exists(key): if not key in states.dolls: raise KeyError("{!r} character is undefined.".format(key)) + + def get_character_progression(key): + __check_exists(key) return getattr(states, f"{key[:3]}").level def get_character_scheduling(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(states, f"{key[:3]}").wardrobe_scheduling def get_character_requirement(key, type): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(renpy.store, key[:3]+"_requirements").get(type, 0) def get_character_response(key, type): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(renpy.store, key[:3]+"_responses").get(type) def get_character_object(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(store, key) def get_character_outfit(key, type="default"): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(store, "{}_outfit_{}".format(key[:3], type)) def get_character_body(key, type="default"): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(store, "{}_body_{}".format(key[:3], type)) def get_character_outfit_req(key, item): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) if not isinstance(item, DollOutfit): raise TypeError("{!r} is not a DollOutfit instance.".format(item)) @@ -53,43 +49,35 @@ init -1 python: print("\n".join(req)) def get_character_tag(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return "{}_main".format(key) def get_character_sayer(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(store, key[:3]) def get_character_gift_label(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return "give_{}_gift".format(key[:3]) def get_character_potion_check_label(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return "{}_potion_check".format(key[:3]) def get_character_potion_check(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(store, "{}_potion_check".format(key[:3])) def get_character_unlock(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(states, f"{key[:3]}").unlocked def get_character_gifted(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(states, f"{key[:3]}").gifted def get_character_mood(key): - if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + __check_exists(key) return getattr(states, f"{key[:3]}").mood def get_outfit_score(outfit): From 9182e5b7508d8c0b6e4ec055149fc16c1b9d8704 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 19:42:57 +0100 Subject: [PATCH 207/249] Unnecessary formatting (cherry picked from commit c816674c7cca025921f2046427b002cc1cfde3ac) --- game/scripts/wardrobe/functions.rpy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/game/scripts/wardrobe/functions.rpy b/game/scripts/wardrobe/functions.rpy index 21243323..e8dfc65d 100644 --- a/game/scripts/wardrobe/functions.rpy +++ b/game/scripts/wardrobe/functions.rpy @@ -5,11 +5,11 @@ init -1 python: def get_character_progression(key): __check_exists(key) - return getattr(states, f"{key[:3]}").level + return getattr(states, key[:3]).level def get_character_scheduling(key): __check_exists(key) - return getattr(states, f"{key[:3]}").wardrobe_scheduling + return getattr(states, key[:3]).wardrobe_scheduling def get_character_requirement(key, type): __check_exists(key) @@ -70,15 +70,15 @@ init -1 python: def get_character_unlock(key): __check_exists(key) - return getattr(states, f"{key[:3]}").unlocked + return getattr(states, key[:3]).unlocked def get_character_gifted(key): __check_exists(key) - return getattr(states, f"{key[:3]}").gifted + return getattr(states, key[:3]).gifted def get_character_mood(key): __check_exists(key) - return getattr(states, f"{key[:3]}").mood + return getattr(states, key[:3]).mood def get_outfit_score(outfit): """Returns outfit 'lewdness' score""" From f673985bc38b9adebfdac672b041982d752f93b5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 19:43:42 +0100 Subject: [PATCH 208/249] Avoid shadowing the builtin (cherry picked from commit e4d64839b8919f784ae2b0c46523dfda4532780b) --- game/scripts/wardrobe/functions.rpy | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/game/scripts/wardrobe/functions.rpy b/game/scripts/wardrobe/functions.rpy index e8dfc65d..7b0fa13b 100644 --- a/game/scripts/wardrobe/functions.rpy +++ b/game/scripts/wardrobe/functions.rpy @@ -11,25 +11,25 @@ init -1 python: __check_exists(key) return getattr(states, key[:3]).wardrobe_scheduling - def get_character_requirement(key, type): + def get_character_requirement(key, typ): __check_exists(key) - return getattr(renpy.store, key[:3]+"_requirements").get(type, 0) + return getattr(renpy.store, key[:3]+"_requirements").get(typ, 0) - def get_character_response(key, type): + def get_character_response(key, typ): __check_exists(key) - return getattr(renpy.store, key[:3]+"_responses").get(type) + return getattr(renpy.store, key[:3]+"_responses").get(typ) def get_character_object(key): __check_exists(key) return getattr(store, key) - def get_character_outfit(key, type="default"): + def get_character_outfit(key, typ="default"): __check_exists(key) - return getattr(store, "{}_outfit_{}".format(key[:3], type)) + return getattr(store, "{}_outfit_{}".format(key[:3], typ)) - def get_character_body(key, type="default"): + def get_character_body(key, typ="default"): __check_exists(key) - return getattr(store, "{}_body_{}".format(key[:3], type)) + return getattr(store, "{}_body_{}".format(key[:3], typ)) def get_character_outfit_req(key, item): __check_exists(key) From cc6e76d1549644d1bc1e095377cbb10309a5c8b9 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 19:49:01 +0100 Subject: [PATCH 209/249] Generalized use of f-strings (cherry picked from commit fa0acdbfffcc4ea84a90ed321eba6577582c7f76) --- game/scripts/wardrobe/functions.rpy | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/game/scripts/wardrobe/functions.rpy b/game/scripts/wardrobe/functions.rpy index 7b0fa13b..6c0dc6a0 100644 --- a/game/scripts/wardrobe/functions.rpy +++ b/game/scripts/wardrobe/functions.rpy @@ -1,7 +1,7 @@ init -1 python: def __check_exists(key): if not key in states.dolls: - raise KeyError("{!r} character is undefined.".format(key)) + raise KeyError(f"{key!r} character is undefined.") def get_character_progression(key): __check_exists(key) @@ -25,32 +25,32 @@ init -1 python: def get_character_outfit(key, typ="default"): __check_exists(key) - return getattr(store, "{}_outfit_{}".format(key[:3], typ)) + return getattr(store, f"{key[:3]}_outfit_{typ}") def get_character_body(key, typ="default"): __check_exists(key) - return getattr(store, "{}_body_{}".format(key[:3], typ)) + return getattr(store, f"{key[:3]}_body_{typ}") def get_character_outfit_req(key, item): __check_exists(key) if not isinstance(item, DollOutfit): - raise TypeError("{!r} is not a DollOutfit instance.".format(item)) + raise TypeError(f"{item!r} is not a DollOutfit instance.") - req = ["{}: {}".format(i.type, i.level) for i in item.group] + req = [f"{i.type}: {i.level}" for i in item.group] has_bra = any(i.type == "bra" for i in item.group) has_panties = any(i.type == "panties" for i in item.group) if not has_bra: - req += ["NO BRA: {}".format(get_character_requirement(key, "unequip bra"))] + req.append(f'NO BRA: {get_character_requirement(key, "unequip bra")}') if not has_panties: - req += ["NO PANTIES: {}".format(get_character_requirement(key, "unequip panties"))] + req.append(f'NO PANTIES: {get_character_requirement(key, "unequip panties")}') print("\n".join(req)) def get_character_tag(key): __check_exists(key) - return "{}_main".format(key) + return f"{key}_main" def get_character_sayer(key): __check_exists(key) @@ -58,15 +58,15 @@ init -1 python: def get_character_gift_label(key): __check_exists(key) - return "give_{}_gift".format(key[:3]) + return f"give_{key[:3]}_gift" def get_character_potion_check_label(key): __check_exists(key) - return "{}_potion_check".format(key[:3]) + return f"{key[:3]}_potion_check" def get_character_potion_check(key): __check_exists(key) - return getattr(store, "{}_potion_check".format(key[:3])) + return getattr(store, f"{key[:3]}_potion_check") def get_character_unlock(key): __check_exists(key) From 5659c4e4f4a695cefef4d370192a2fd2f741517a Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 19:53:28 +0100 Subject: [PATCH 210/249] Fix kwarg calls (cherry picked from commit 489f43cd0b2eee7b90997a17a70c3dee240094c4) --- game/scripts/doll/init.rpy | 6 +++--- game/scripts/wardrobe/wardrobe.rpy | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/doll/init.rpy b/game/scripts/doll/init.rpy index 28040f02..1fee5851 100644 --- a/game/scripts/doll/init.rpy +++ b/game/scripts/doll/init.rpy @@ -5,13 +5,13 @@ init python: for c in states.dolls: char = get_character_object(c) - body_default = get_character_body(c, type="default") + body_default = get_character_body(c, typ="default") char.equip(body_default) - outfit_default = get_character_outfit(c, type="default") + outfit_default = get_character_outfit(c, typ="default") char.equip(outfit_default) - outfit_last = outfit = get_character_outfit(c, type="last") + outfit_last = outfit = get_character_outfit(c, typ="last") outfit_last.save() char.set_face(mouth="base", eyes="base", eyebrows="base", pupils="mid", cheeks="none", tears="none") diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index b1644f01..aa4a914a 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -238,7 +238,7 @@ screen wardrobe(xx, yy): label wardrobe_menu(): $ renpy.dynamic( char_active = get_character_object(states.active_girl), - char_outfit = get_character_outfit(states.active_girl, type="last"), + char_outfit = get_character_outfit(states.active_girl, typ="last"), ) $ char_outfit.save() From b62fbcb17974c00d53d2baf1d381d2ca7f91b64e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 19:56:38 +0100 Subject: [PATCH 211/249] More f-strings (cherry picked from commit 15b6025d39a32e55c6dbc82630c1801a19158c8b) --- game/scripts/wardrobe/reactions.rpy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/game/scripts/wardrobe/reactions.rpy b/game/scripts/wardrobe/reactions.rpy index 81ff28b8..0c7efa2a 100644 --- a/game/scripts/wardrobe/reactions.rpy +++ b/game/scripts/wardrobe/reactions.rpy @@ -1,12 +1,12 @@ init python: def wardrobe_check_category(category): - req = get_character_requirement(states.active_girl, "category {}".format(category)) + req = get_character_requirement(states.active_girl, f"category {category}") flag = get_character_progression(states.active_girl) return (flag >= req) def wardrobe_check_touch(what): - req = get_character_requirement(states.active_girl, "touch {}".format(what)) + req = get_character_requirement(states.active_girl, f"touch {what}") flag = get_character_progression(states.active_girl) return (flag >= req) @@ -18,7 +18,7 @@ init python: return (flag >= req) def wardrobe_check_unequip(item): - req = get_character_requirement(states.active_girl, "unequip {}".format(item.type)) + req = get_character_requirement(states.active_girl, f"unequip {item.type}") flag = get_character_progression(states.active_girl) return (flag >= req) @@ -45,7 +45,7 @@ init python: if not item.blacklist: return True - req = max( ( get_character_requirement(states.active_girl, "unequip {}".format(i)) for i in item.blacklist ) ) + req = max((get_character_requirement(states.active_girl, f"unequip {i}") for i in item.blacklist)) flag = get_character_progression(states.active_girl) return (flag >= req) @@ -53,7 +53,7 @@ init python: def wardrobe_fallback_required(item): fallbacks = {"top", "bottom", "bra", "panties"} char = get_character_object(states.active_girl) - req = [get_character_requirement(states.active_girl, "unequip {}".format(i)) for i in fallbacks if not char.is_equipped(i) and not i in char.blacklist] + req = [get_character_requirement(states.active_girl, f"unequip {i}") for i in fallbacks if not char.is_equipped(i) and not i in char.blacklist] if not req: return False From d9f9454a0337adb69ec6d9d163043a3741c13fae Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 20:07:43 +0100 Subject: [PATCH 212/249] Translation doesn't work like that (cherry picked from commit 5fa2a0ff198f14648f24aee637f802fdde3d202e) --- game/scripts/gui/save_files.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/gui/save_files.rpy b/game/scripts/gui/save_files.rpy index 5be285e3..cccb1a4d 100644 --- a/game/scripts/gui/save_files.rpy +++ b/game/scripts/gui/save_files.rpy @@ -92,7 +92,7 @@ screen file_slots(title): $ minutes, seconds = divmod(int(playtime), 60) $ hours, minutes = divmod(minutes, 60) - text FileTime(slot, format=_(slot_time_format)) + text FileTime(slot, format=slot_time_format) text "Day: {}".format(day) text "Playtime: {}H {}M {}S".format(hours, minutes, seconds) else: From a7a9fe2d9e64cf98fb3093661e2b06ae446dd07d Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 20:31:41 +0100 Subject: [PATCH 213/249] A bunch more f-strings I'm not done (cherry picked from commit be88d0ed7e9857e31a33d74c0325952e942cc675) --- game/scripts/cg/xray.rpy | 6 +-- game/scripts/characters/genie/common.rpy | 2 +- game/scripts/characters/hermione/chibi.rpy | 8 +-- game/scripts/chibis/classes.rpy | 16 +++--- game/scripts/doll/bodypart.rpy | 4 +- game/scripts/doll/clothes.rpy | 6 +-- game/scripts/doll/clothes_dynamic.rpy | 2 +- game/scripts/doll/face.rpy | 4 +- game/scripts/doll/makeup.rpy | 2 +- game/scripts/doll/outfits.rpy | 3 +- game/scripts/gui/_gui_.rpy | 4 +- game/scripts/gui/history.rpy | 2 +- game/scripts/gui/preferences.rpy | 10 ++-- game/scripts/gui/save_files.rpy | 8 +-- game/scripts/gui/say.rpy | 2 +- game/scripts/interface/brewing.rpy | 2 +- game/scripts/interface/parcel.rpy | 6 +-- game/scripts/interface/tutorials.rpy | 5 +- game/scripts/inventory/classes.rpy | 50 ++++++++++--------- game/scripts/inventory/game.rpy | 8 +-- .../minigames/cardgame/_card_game_.rpy | 2 +- game/scripts/minigames/mirror/classes.rpy | 8 +-- game/scripts/minigames/mirror/menu.rpy | 2 +- game/scripts/minigames/puzzle.rpy | 2 +- game/scripts/mods.rpy | 4 +- game/scripts/rooms/labels.rpy | 4 +- game/scripts/rooms/quidditch_stands/init.rpy | 8 +-- game/scripts/rooms/quidditch_stands2/init.rpy | 6 +-- game/scripts/shops/dress/menu.rpy | 4 +- game/scripts/utility/common_functions.rpy | 2 +- 30 files changed, 100 insertions(+), 92 deletions(-) diff --git a/game/scripts/cg/xray.rpy b/game/scripts/cg/xray.rpy index fd620e74..d95af604 100644 --- a/game/scripts/cg/xray.rpy +++ b/game/scripts/cg/xray.rpy @@ -82,12 +82,12 @@ init python: child = getattr(self, layer) if isinstance(child, ImageReference): - name = getattr(self, "_{}".format(layer)) - attributes = renpy.get_attributes(name) or renpy.get_attributes("{}_{}".format(tag_prefix, layer)) + name = getattr(self, f"_{layer}") + attributes = renpy.get_attributes(name) or renpy.get_attributes(f"{tag_prefix}_{layer}") if attributes: attributes = " ".join(attributes) - child = ImageReference("{} {}".format(name, attributes)) + child = ImageReference(f"{name} {attributes}") elif child.name != name: child = ImageReference(name) else: diff --git a/game/scripts/characters/genie/common.rpy b/game/scripts/characters/genie/common.rpy index d49fca14..2591fc40 100644 --- a/game/scripts/characters/genie/common.rpy +++ b/game/scripts/characters/genie/common.rpy @@ -24,7 +24,7 @@ init python: states.gen.image.offset = (0, 600) if face: - variant = "genie {}".format(face) + variant = f"genie {face}" renpy.set_tag_attributes(variant) side = "genie" diff --git a/game/scripts/characters/hermione/chibi.rpy b/game/scripts/characters/hermione/chibi.rpy index c2396c72..07b26c43 100644 --- a/game/scripts/characters/hermione/chibi.rpy +++ b/game/scripts/characters/hermione/chibi.rpy @@ -82,7 +82,7 @@ init python: else: chibi["base"] = "ch_hem walk_robe_n" else: - chibi["base"] = "ch_hem walk" + chibi["base"] = "ch_hem walk" elif not chibi.action or chibi.action == "stand": # Determine clothing state @@ -97,7 +97,7 @@ init python: else: chibi["base"] = "ch_hem blink_robe_n" else: - chibi["base"] = "ch_hem blink" + chibi["base"] = "ch_hem blink" elif chibi.action == "dance": # Determine clothing state @@ -140,9 +140,9 @@ init python: elif chibi.action in ("drink_potion", "sniff_potion", "hold_potion"): if not hermione.is_any_worn("top", "bottom"): - chibi["base"] = "ch_hem {}_nude".format(chibi.action) + chibi["base"] = f"ch_hem {chibi.action}_nude" else: - chibi["base"] = "ch_hem {}".format(chibi.action) + chibi["base"] = f"ch_hem {chibi.action}" # Sets up a chibi scene with Hermione and Genie in it diff --git a/game/scripts/chibis/classes.rpy b/game/scripts/chibis/classes.rpy index fda56e1d..2e8abea5 100644 --- a/game/scripts/chibis/classes.rpy +++ b/game/scripts/chibis/classes.rpy @@ -14,7 +14,7 @@ screen chibi(chibi_object): screen chibi_emote(emote, chibi_object): zorder chibi_object.zorder sensitive False - add "emo_{}".format(emote): + add f"emo_{emote}": at emote_effect anchor (0.5, 1.0) pos chibi_object.pos @@ -45,12 +45,12 @@ init -1 python: def get_chibi_object(name): """Get a chibi object by its character's name.""" - name = "{}_chibi".format(name) + name = f"{name}_chibi" c = getattr(renpy.store, name, None) if c and isinstance(c, Chibi): return c else: - raise Exception("Chibi object not found. {}".format(name)) + raise Exception(f"Chibi object not found. {name}") def complete_chibi_moves(**elapsed): """Resume old chibi action after (multiple) reduced move calls.""" @@ -120,7 +120,7 @@ init -1 python: if image_path: self.image_path = image_path else: - self.image_path = "characters/{}/chibis".format(tag) + self.image_path = f"characters/{tag}/chibis" if actions: # Override class variable for this instance @@ -138,11 +138,11 @@ init -1 python: self.transform = None # Define a screen for the chibi - self.screen_tag = "{}_chibi".format(tag) + self.screen_tag = f"{tag}_chibi" renpy.define_screen(self.screen_tag, Chibi._screen, tag=self.screen_tag, zorder="chibi_object.zorder") # Define a screen for the chibi emote - self.emote_tag = "{}_chibi_emote".format(tag) + self.emote_tag = f"{tag}_chibi_emote" renpy.define_screen(self.emote_tag, Chibi._emote_screen, tag=self.emote_tag, zorder="chibi_object.zorder") @staticmethod @@ -282,7 +282,7 @@ init -1 python: # Combine with base transform return combine_transforms(self.base_transform(), trans(*args)) elif config.developer: - raise Exception("Expected a transform: {}".format(name)) + raise Exception(f"Expected an ATL transform: {name}") # No transform was given or found return self.base_transform() @@ -358,7 +358,7 @@ init -1 python: room = room or renpy.store.states.room chibi_room = ChibiRoom.rooms.get(room, None) if not chibi_room: - raise Exception("Chibi room is not defined for {}".format(room)) + raise Exception(f"Chibi room is not defined for {room}") return chibi_room @staticmethod diff --git a/game/scripts/doll/bodypart.rpy b/game/scripts/doll/bodypart.rpy index 2bdc3379..fccf8b98 100644 --- a/game/scripts/doll/bodypart.rpy +++ b/game/scripts/doll/bodypart.rpy @@ -37,7 +37,7 @@ init 1 python: ltype, *tails = fn.rsplit("_") # if not ltype in types: - # print("Invalid layer type for file: {}".format(f)) + # print(f"Invalid layer type for file: {f}") # continue zorder = types.get(ltype) or self.zorder @@ -50,7 +50,7 @@ init 1 python: lmodifier, *tails = tails if not lmodifier in modifiers: - print("Invalid modifier for file: {}".format(f)) + print(f"Invalid modifier for file: {f}") continue zorder_mod = modifiers.get(lmodifier) diff --git a/game/scripts/doll/clothes.rpy b/game/scripts/doll/clothes.rpy index 287b08ac..1d4fbc08 100644 --- a/game/scripts/doll/clothes.rpy +++ b/game/scripts/doll/clothes.rpy @@ -108,7 +108,7 @@ init python: ltype, *tails = fn.rsplit("_") if not ltype.isdigit() and not ltype in types: - print("Invalid layer type for file: {}".format(f)) + print(f"Invalid layer type for file: {f}") continue zorder = z if (z := types.get(ltype)) is not None else self.zorder @@ -121,7 +121,7 @@ init python: lmodifier, *tails = tails if not lmodifier in modifiers: - print("Invalid modifier for file: {}".format(f)) + print(f"Invalid modifier for file: {f}") continue zorder_mod = modifiers.get(lmodifier) @@ -319,7 +319,7 @@ init python: # Method 4 average = (0.3333, 0.3333, 0.3333) - + return Transform(img, maxsize=maxsize, matrixcolor=SepiaMatrix(c, desat=average)*OpacityMatrix(c.alpha)) except TypeError: diff --git a/game/scripts/doll/clothes_dynamic.rpy b/game/scripts/doll/clothes_dynamic.rpy index dad5497d..f97d7d73 100644 --- a/game/scripts/doll/clothes_dynamic.rpy +++ b/game/scripts/doll/clothes_dynamic.rpy @@ -131,7 +131,7 @@ init python: lmodifier, *tails = tails if not lmodifier in modifiers: - print("Invalid modifier for file: {}".format(f)) + print(f"Invalid modifier for file: {f}") continue zorder_mod = modifiers.get(lmodifier) diff --git a/game/scripts/doll/face.rpy b/game/scripts/doll/face.rpy index c655ea91..2befdd73 100644 --- a/game/scripts/doll/face.rpy +++ b/game/scripts/doll/face.rpy @@ -54,7 +54,7 @@ init python: ltype, *tails = fn.rsplit("_") if not ltype in types: - print("Invalid layer type for file: {}".format(f)) + print(f"Invalid layer type for file: {f}") continue zorder = types.get(ltype) or face_layers.get(part) @@ -63,7 +63,7 @@ init python: lmodifier, *tails = tails if not lmodifier in modifiers: - print("Invalid modifier for file: {}".format(f)) + print(f"Invalid modifier for file: {f}") continue zorder_mod = modifiers.get(lmodifier) diff --git a/game/scripts/doll/makeup.rpy b/game/scripts/doll/makeup.rpy index 83beb706..041e8199 100644 --- a/game/scripts/doll/makeup.rpy +++ b/game/scripts/doll/makeup.rpy @@ -49,7 +49,7 @@ init python: lmodifier, *tails = tails if not lmodifier in modifiers: - print("Invalid modifier for file: {}".format(f)) + print(f"Invalid modifier for file: {f}") continue zorder_mod = modifiers.get(lmodifier) diff --git a/game/scripts/doll/outfits.rpy b/game/scripts/doll/outfits.rpy index 5b3a1bb4..d48c8869 100644 --- a/game/scripts/doll/outfits.rpy +++ b/game/scripts/doll/outfits.rpy @@ -218,7 +218,7 @@ init python: d, "interface/wardrobe/export_frame.webp", Text(states.active_girl, align=(0.5, 0.995)), - Text("Ver. {}".format(config.version), size=10, align=(0.99, 0.99)) + Text(f"Ver. {config.version}", size=10, align=(0.99, 0.99)) ) displayable_to_file(d, path, size=(310, 470) ) @@ -286,4 +286,3 @@ init python: if self.has_type(arg): return True return False - diff --git a/game/scripts/gui/_gui_.rpy b/game/scripts/gui/_gui_.rpy index 5408841e..11ea40a9 100644 --- a/game/scripts/gui/_gui_.rpy +++ b/game/scripts/gui/_gui_.rpy @@ -26,7 +26,9 @@ init python in gui: The returned form is "{theme}_{name}", so styles can fall back on parent styles. """ theme = "dark" if is_dark() else "light" - return "{}_{}".format(theme, name) if name else theme + if name: + return f"{theme}_{name}" + return theme def format(template): """ diff --git a/game/scripts/gui/history.rpy b/game/scripts/gui/history.rpy index 4421da72..3574a9cc 100644 --- a/game/scripts/gui/history.rpy +++ b/game/scripts/gui/history.rpy @@ -36,7 +36,7 @@ screen history(): if "icon" in entry.show_args: $ icon = entry.show_args["icon"] - add Fixed(gui.format("interface/achievements/{}/iconbox.webp"), Transform("interface/icons/head/{}.webp".format(icon), xzoom=-1, size=(40, 40), align=(0.5, 0.5)), fit_first=True) + add Fixed(gui.format("interface/achievements/{}/iconbox.webp"), Transform(f"interface/icons/head/{icon}.webp", xzoom=-1, size=(40, 40), align=(0.5, 0.5)), fit_first=True) if entry.who: text entry.who: diff --git a/game/scripts/gui/preferences.rpy b/game/scripts/gui/preferences.rpy index 20dc544e..06ba5630 100644 --- a/game/scripts/gui/preferences.rpy +++ b/game/scripts/gui/preferences.rpy @@ -138,7 +138,7 @@ screen preferences_visuals(): label "Framerate" - textbutton ("{} fps".format(int(renpy.get_refresh_rate()))) action [Preference("gl framerate", None), Notify(fps_msg)] + textbutton (f"{int(renpy.get_refresh_rate())} fps") action [Preference("gl framerate", None), Notify(fps_msg)] if renpy.get_refresh_rate() > 60: textbutton "60 fps" action [Preference("gl framerate", 60), Notify(fps_msg)] textbutton "30 fps" action [Preference("gl framerate", 30), Notify(fps_msg)] @@ -178,7 +178,7 @@ screen preferences_visuals(): hbox: bar value DictValue(persistent.custom_settings, "image_cache_size", range=1792, max_is_zero=False, style="slider", offset=256, step=128, force_step=True, action=Notify("Restart the game to apply image cache size changes.")) tooltip "Improves performance at a cost of higher memory usage." - + text get_gpu_info() yalign 1.0 size 10 screen preferences_sound(): @@ -325,9 +325,9 @@ auto saves, quick saves, and manual saves.{/size}\n Are you sure?""" define gui.SAVE_INCOMPATIBLE_WARNING = """{color=#7a0000}Warning!{/color} -{size=-4}The save file you are attempting to load is not compatible -with the current game version. While you can try loading it, -doing so may result in unexpected crashes and bugs. +{size=-4}The save file you are attempting to load is not compatible +with the current game version. While you can try loading it, +doing so may result in unexpected crashes and bugs. Proceed anyway?""" diff --git a/game/scripts/gui/save_files.rpy b/game/scripts/gui/save_files.rpy index cccb1a4d..a50545bb 100644 --- a/game/scripts/gui/save_files.rpy +++ b/game/scripts/gui/save_files.rpy @@ -93,8 +93,8 @@ screen file_slots(title): $ hours, minutes = divmod(minutes, 60) text FileTime(slot, format=slot_time_format) - text "Day: {}".format(day) - text "Playtime: {}H {}M {}S".format(hours, minutes, seconds) + text f"Day: {day}" + text f"Playtime: {hours}H {minutes}M {seconds}S" else: text "INCOMPATIBLE VERSION" color "#f00" @@ -104,7 +104,7 @@ screen file_slots(title): key "save_delete" action FileDelete(slot) else: - text "Empty Slot {}.".format(FileSlotName(slot, gui.file_slot_cols * gui.file_slot_rows)) style "slot_button_text" + text f"Empty Slot {FileSlotName(slot, gui.file_slot_cols * gui.file_slot_rows)}." style "slot_button_text" ## Buttons to access other pages. hbox: @@ -131,7 +131,7 @@ screen file_slots(title): xminimum 40 action FilePage(page) if page < 10: - keysym "K_{}".format(page) + keysym f"K_{page}" textbutton _(">") action FilePageNext() diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index 49af47c2..d58bea62 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -193,7 +193,7 @@ screen choice(items, menu_yalign=.6): style "empty" if style_part: - style_prefix gui.theme("{}_menu".format(style_part)) + style_prefix gui.theme(f"{style_part}_menu") fit_first "height" diff --git a/game/scripts/interface/brewing.rpy b/game/scripts/interface/brewing.rpy index 39f568fe..d164c172 100644 --- a/game/scripts/interface/brewing.rpy +++ b/game/scripts/interface/brewing.rpy @@ -170,7 +170,7 @@ screen brewing_menuitem(): text "Usable on:" size 12 hbox: for c in current_item.usable_on: - add "interface/icons/head/{}.webp".format(c) size (24, 24) + add f"interface/icons/head/{c}.webp" size (24, 24) hbox: spacing 10 diff --git a/game/scripts/interface/parcel.rpy b/game/scripts/interface/parcel.rpy index f8c75595..f82778df 100644 --- a/game/scripts/interface/parcel.rpy +++ b/game/scripts/interface/parcel.rpy @@ -62,11 +62,11 @@ init python: icon = item.image if quantity == 1: - text = "You have received one {}.".format(item.name) + text = f"You have received one {item.name}." else: - text = "You have received {} pieces of {}.".format(num_to_word(quantity), item.name) + text = f"You have received {num_to_word(quantity)} pieces of {item.name}." else: - items = ", ".join( [" ".join( [str(x[1]), x[0].name] ) for x in self.contents] ) + items = ", ".join(f"{x[1]} {x[0].name}" for x in self.contents) icon = "interface/icons/box_brown_"+str(random.randint(1, 4))+".webp" text = "You have received your ordered items:\n{size=-4}"+items+"{/size}" diff --git a/game/scripts/interface/tutorials.rpy b/game/scripts/interface/tutorials.rpy index 4d83dd07..9ef94c3d 100644 --- a/game/scripts/interface/tutorials.rpy +++ b/game/scripts/interface/tutorials.rpy @@ -55,8 +55,9 @@ screen tutorial(entry): text "Tutorial" size 10 yalign 0.5 text tutorial_dict[entry][0] size 16 xalign 0.5 yalign 0.5 - if renpy.loadable("interface/tutorials/{}.webp".format(entry)): - add "interface/tutorials/{}.webp".format(entry) xalign 0.5 + $ formated = f"interface/tutorials/{entry}.webp" + if renpy.loadable(formated): + add formated xalign 0.5 text tutorial_dict[entry][1] size 12 diff --git a/game/scripts/inventory/classes.rpy b/game/scripts/inventory/classes.rpy index 86247e87..7f25cd6d 100644 --- a/game/scripts/inventory/classes.rpy +++ b/game/scripts/inventory/classes.rpy @@ -26,7 +26,9 @@ init python: self.func = func self.label = label self.limit = limit - self.image = "interface/icons/{}.webp".format(self.id) if image == "default" else image + if image == "default": + image = f"interface/icons/{self.id}.webp" + self.image = image self.currency = currency self.caption = caption @@ -42,10 +44,10 @@ init python: def use(self): if not self.usable: - raise Exception("Item {!r} is not usable as it does not have any function or a label.".format(self.name)) + raise Exception(f"Item {self.name!r} is not usable as it does not have any function or a label.") if self.owned == 0: - raise Exception("Item {!r} owned count is equal to zero.".format(self.name)) + raise Exception(f"Item {self.name!r} owned count is equal to zero.") if not self.type == "quest": # Quest items require manual triggers, it's more convenient. @@ -62,10 +64,10 @@ init python: def give(self, who): if not self.givable: - raise Exception("Item {!r} is not marked as givable.".format(self.name)) + raise Exception(f"Item {self.name!r} is not marked as givable.") if self.owned == 0: - raise Exception("Item {!r} owned count is equal to zero.".format(self.name)) + raise Exception(f"Item {self.name!r} owned count is equal to zero.") if not self.type == "quest": # Quest items require manual triggers, it's more convenient. @@ -103,8 +105,10 @@ init python: def __init__(self, id, type, name, placement, price=0, desc="", unlocked=True, image="default", room_image="default", room_image_hover=None, owned=0, replaces=False, use_action=None, replace_action=None, replace_anchor=None, replace_pos=None): super(Decoration, self).__init__(id, type, name, price, desc, unlocked, None, None, 1, image, False, "tokens", "Apply", owned) - self.room_image = Transform("images/rooms/main_room/decorations/{}.webp".format(self.id), zoom=self.room_scale) if room_image == "default" else Transform(room_image, zoom=self.room_scale) - self.room_image_hover = Transform(room_image_hover, zoom=self.room_scale) if room_image_hover else self.room_image + if room_image == "default": + room_image = f"images/rooms/main_room/decorations/{self.id}.webp" + self.room_image = Transform(room_image, zoom=self.room_scale) + self.room_image_hover = Transform(room_image_hover or room_image, zoom=self.room_scale) self.usable = True self.placement = placement self.in_use = False @@ -119,7 +123,7 @@ init python: def use(self): if self.owned == 0: - raise Exception("Decoration {!r} owned count is equal to zero.".format(self.name)) + raise Exception(f"Decoration {self.name!r} owned count is equal to zero.") achievements.unlock("decorator") @@ -152,10 +156,10 @@ init python: self.make_intro = False self.in_progress = {i: False for i in usable_on} - self.usable = bool( renpy.has_label("{}_use".format(self.label)) ) + self.usable = bool(renpy.has_label(f"{self.label}_use")) if self.recipe is None: - raise Exception("Potion {!r} recipe is empty!".format(self.name)) + raise Exception(f"Potion {self.name!r} recipe is empty!") def has_ingredients(self): return all(x.owned > 0 for x in self.recipe) @@ -163,7 +167,7 @@ init python: def set_active(self, who): """Marks the event as 'in progress' and will trigger a return event in the morning/evening.""" if not who in list(self.in_progress.keys()): - raise Exception("Potion {!r} is not marked as usable on {!r}.".format(self.name, who)) + raise Exception(f"Potion {self.name!r} is not marked as usable on {who!r}.") self.in_progress[who] = True @@ -176,7 +180,7 @@ init python: i.owned -= 1 self.owned += 1 - label = "{}_make".format(self.label) + label = f"{self.label}_make" if renpy.has_label(label) and not self.make_intro: self.make_intro = True @@ -191,17 +195,17 @@ init python: def give(self, who): """Use potion on """ - give_label = "{}_{}_give".format(who[:3], self.label) - check_label = "{}_potion_check".format(who[:3]) + give_label = f"{who[:3]}_{self.label}_give" + check_label = f"{who[:3]}_potion_check" if not renpy.has_label(give_label): - raise Exception("Potion {!r} give label doesn't exist.".format(self.name)) + raise Exception(f"Potion {self.name!r} give label doesn't exist.") if not renpy.has_label(check_label): - raise Exception("Potion {!r} check label doesn't exist for {!r}.".format(self.name, who)) + raise Exception(f"Potion {self.name!r} check label doesn't exist for {who!r}.") if self.owned == 0: - raise Exception("Potion {!r} owned count is equal to zero.".format(self.name)) + raise Exception(f"Potion {self.name!r} owned count is equal to zero.") if not self.check_progression(who): self.jump(check_label) @@ -212,13 +216,13 @@ init python: def use(self): """Use potion on Genie""" - label = "{}_use".format(self.label) + label = f"{self.label}_use" if not renpy.has_label(label): - raise Exception("Potion {!r} has no use label.".format(self.name)) + raise Exception(f"Potion {self.name!r} has no use label.") if self.owned == 0: - raise Exception("Potion {!r} owned count is equal to zero.".format(self.name)) + raise Exception(f"Potion {self.name!r} owned count is equal to zero.") self.owned -= 1 self.jump(label) @@ -227,12 +231,12 @@ init python: """Play the return event for """ if not self.in_progress[who]: - raise Exception("Potion {!r} is not marked as in progress.".format(self.name)) + raise Exception(f"Potion {self.name!r} is not marked as in progress.") - label = "{}_{}_return".format(who[:3], self.label) + label = f"{who[:3]}_{self.label}_return" if not renpy.has_label(label): - raise Exception("Potion {!r} has no return label.".format(self.name)) + raise Exception(f"Potion {self.name!r} has no return label.") self.in_progress[who] = False self.jump(label) diff --git a/game/scripts/inventory/game.rpy b/game/scripts/inventory/game.rpy index e4ff5df2..6f7fa0cf 100644 --- a/game/scripts/inventory/game.rpy +++ b/game/scripts/inventory/game.rpy @@ -1,13 +1,13 @@ init -100 python: def show_gold(st, at, old, new): if st > 1.0: - return Text("G {}".format(new)), None + return Text(f"G {new}"), None else: if new > old: - value = int( (new-old)*(1.0-st) ) + 1 + value = int((new-old)*(1.0-st)) + 1 d = Text("G {}\n+{}".format(old + int((new-old)*st), value)) else: - value = int( (old-new)*(1.0-st) ) + 1 + value = int((old-new)*(1.0-st)) + 1 d = Text("G {}\n-{}".format(old - int((old-new)*st), value)) return d, 0.01 @@ -62,7 +62,7 @@ init -100 python: value = renpy.random.choices(self.weather_types, weights=self.weather_weights)[0] if not value in self.weather_types: - raise ValueError("Unsupported weather type: {!r}".format(value)) + raise ValueError(f"Unsupported weather type: {value!r}") self._weather = value diff --git a/game/scripts/minigames/cardgame/_card_game_.rpy b/game/scripts/minigames/cardgame/_card_game_.rpy index 430dabb3..5496ab84 100644 --- a/game/scripts/minigames/cardgame/_card_game_.rpy +++ b/game/scripts/minigames/cardgame/_card_game_.rpy @@ -223,7 +223,7 @@ init python: geniecard_level = tier # Change card image for each respective card. for card in cards_dynamic: - card.imagepath = card.imagepath.split("_v")[0] + "_v{}.webp".format(geniecard_level) + card.imagepath = card.imagepath.partition("_v")[0] + f"_v{geniecard_level}.webp" renpy.show_screen("advance_deck") renpy.pause() diff --git a/game/scripts/minigames/mirror/classes.rpy b/game/scripts/minigames/mirror/classes.rpy index d485f897..011c3021 100644 --- a/game/scripts/minigames/mirror/classes.rpy +++ b/game/scripts/minigames/mirror/classes.rpy @@ -34,7 +34,9 @@ init 5 python: self.unlocked = unlocked self.label = label self.label_rewards = label_rewards - self.image = "interface/icons/{}.webp".format(self.id) if image == "default" else image + if image == "default": + image = f"interface/icons/{self.id}.webp" + self.image = image self.req = self.validate_req(req) self.authors = authors self.tags = tags @@ -58,12 +60,12 @@ init 5 python: return None if not isinstance(req, str): - raise TypeError("MirrorEvent {!r} requirement has to be a string, got {!r}.".format(self.id, type(req))) + raise TypeError(f"MirrorEvent {self.id!r} requirement has to be a string, got {type(req)!r}.") output = eval(req) if not isinstance(output, bool): - raise TypeError("MirrorEvent {!r} requirement must evaluate to a boolean type, got {!r}.".format(self.id, type(output))) + raise TypeError(f"MirrorEvent {self.id!r} requirement must evaluate to a boolean type, got {type(output)!r}.") return req def play(self): diff --git a/game/scripts/minigames/mirror/menu.rpy b/game/scripts/minigames/mirror/menu.rpy index 38be1a86..42f90b5c 100644 --- a/game/scripts/minigames/mirror/menu.rpy +++ b/game/scripts/minigames/mirror/menu.rpy @@ -168,7 +168,7 @@ screen mirror_menuitem(xx, yy): add "interface/topbar/icon_check.webp" align (1.0, 1.0) offset (-5, -5) zoom 0.7 vbox: text ev.name - text "By {}".format(authors) size 10 + text f"By {authors}" size 10 add gui.format("interface/achievements/{}/spacer_left.webp") diff --git a/game/scripts/minigames/puzzle.rpy b/game/scripts/minigames/puzzle.rpy index fa091823..bb622af4 100644 --- a/game/scripts/minigames/puzzle.rpy +++ b/game/scripts/minigames/puzzle.rpy @@ -53,7 +53,7 @@ screen puzzle_minigame(): grid 4 4: for i, tile in enumerate(tiles): - $ img = "interface/puzzle/{}.webp".format(tile) + $ img = f"interface/puzzle/{tile}.webp" $ empty = tiles.index(15) $ is_valid = (i in (empty-1, empty+1, empty-4, empty+4) and not ( (empty % 4 == 3) and (i % 4 == 0) ) diff --git a/game/scripts/mods.rpy b/game/scripts/mods.rpy index 78d9af71..cb2e3964 100644 --- a/game/scripts/mods.rpy +++ b/game/scripts/mods.rpy @@ -20,7 +20,7 @@ init -999: path = os.path.split(manifest)[0] files = [x for x in all_files if path in x] scripts = [x for x in files if x.endswith(".rpym")] - logo = "{}/logo.webp".format(path) + logo = f"{path}/logo.webp" if not renpy.loadable(logo): logo = "#000" @@ -50,7 +50,7 @@ init -999: global mods_incompatible for i in persistent.mods_enabled.copy(): control, major, *minor = mods_list[i]["GameVer"].split(" ")[0].split(".") - ver = float("{}.{}{}".format(control, major, "".join(minor))) + ver = float(f"{control}.{major}{''.join(minor)}") if ver < mods_compatible: persistent.mods_enabled.remove(i) diff --git a/game/scripts/rooms/labels.rpy b/game/scripts/rooms/labels.rpy index 14fbb4db..1852f722 100644 --- a/game/scripts/rooms/labels.rpy +++ b/game/scripts/rooms/labels.rpy @@ -11,10 +11,10 @@ label room(room=None, hide_screens=True, stop_sound=True): stop weather fadeout 0.5 $ renpy.stop_predict_screen(states.room) - $ renpy.stop_predict("images/rooms/{}/*.webp".format(states.room)) + $ renpy.stop_predict(f"images/rooms/{states.room}/*.webp") $ states.room = room $ renpy.start_predict_screen(states.room) - $ renpy.start_predict("images/rooms/{}/*.webp".format(states.room)) + $ renpy.start_predict(f"images/rooms/{states.room}/*.webp") if room == "main_room": # Update sound effects diff --git a/game/scripts/rooms/quidditch_stands/init.rpy b/game/scripts/rooms/quidditch_stands/init.rpy index cdfadf52..e8c49a1b 100644 --- a/game/scripts/rooms/quidditch_stands/init.rpy +++ b/game/scripts/rooms/quidditch_stands/init.rpy @@ -68,13 +68,13 @@ label quidditch_stands(hidden=False, reset=False, **kwargs): screen quidditch_stands_back(weather, rain=False, crowd=(), crowd_bj=False, crowd_react=(None, None, None), tree_fire=False, puddles=False, **kwargs): zorder 0 - add "images/rooms/quidditch_stands/bg_{}.webp".format(weather) zoom 0.5 + add f"images/rooms/quidditch_stands/bg_{weather}.webp" zoom 0.5 if tree_fire: add "quid_stands_fire" pos (870, -15) for c in crowd: - add "images/rooms/quidditch_stands/crowd_{}.webp".format(c) zoom 0.5 + add f"images/rooms/quidditch_stands/crowd_{c}.webp" zoom 0.5 if crowd_bj: add "crowd_bj" zoom 0.5 @@ -91,13 +91,13 @@ screen quidditch_stands_back(weather, rain=False, crowd=(), crowd_bj=False, crow screen quidditch_stands_mid(weather, **kwargs): zorder 8 - add "images/rooms/quidditch_stands/podium_{}.webp".format(weather) zoom 0.5 + add f"images/rooms/quidditch_stands/podium_{weather}.webp" zoom 0.5 screen quidditch_stands_front(weather, spotlight=False, hole=False, rain=False, **kwargs): zorder 8 - add "images/rooms/quidditch_stands/fg_{}.webp".format(weather) zoom 0.5 + add f"images/rooms/quidditch_stands/fg_{weather}.webp" zoom 0.5 if hole: add "images/rooms/quidditch_stands/hole.webp" zoom 0.5 diff --git a/game/scripts/rooms/quidditch_stands2/init.rpy b/game/scripts/rooms/quidditch_stands2/init.rpy index f5497edd..da5a9fe7 100644 --- a/game/scripts/rooms/quidditch_stands2/init.rpy +++ b/game/scripts/rooms/quidditch_stands2/init.rpy @@ -20,10 +20,10 @@ label quidditch_stands2(hidden=False, reset=False, **kwargs): screen quidditch_stands_back2(weather, crowd=(), crowd_react=(None, None, None), **kwargs): zorder 0 - add "images/rooms/quidditch_stands2/bg_{}.webp".format(weather) zoom 0.5 + add f"images/rooms/quidditch_stands2/bg_{weather}.webp" zoom 0.5 for c in crowd: - add "images/rooms/quidditch_stands2/crowd_{}.webp".format(c) zoom 0.5 + add f"images/rooms/quidditch_stands2/crowd_{c}.webp" zoom 0.5 add crowd_react[0] pos (570, 140) add crowd_react[1] pos (720, 90) @@ -32,4 +32,4 @@ screen quidditch_stands_back2(weather, crowd=(), crowd_react=(None, None, None), screen quidditch_stands_front2(weather, **kwargs): zorder 8 - add "images/rooms/quidditch_stands2/fg_{}.webp".format(weather) zoom 0.5 + add f"images/rooms/quidditch_stands2/fg_{weather}.webp" zoom 0.5 diff --git a/game/scripts/shops/dress/menu.rpy b/game/scripts/shops/dress/menu.rpy index b82ff599..9ca396e7 100644 --- a/game/scripts/shops/dress/menu.rpy +++ b/game/scripts/shops/dress/menu.rpy @@ -105,7 +105,7 @@ label shop_dress_menu: hide screen shop_dress hide screen blktone - $ _tmp = "tomorrow" if transit_time == 1 else "in about {} days".format(str(transit_time)) + $ _tmp = "tomorrow" if transit_time == 1 else f"in about {transit_time} days" maf "You can expect a parcel [_tmp]." # Executes callbacks upon receival of the parcel. @@ -160,7 +160,7 @@ screen shop_dress_menu(): pos (6, 6) for category in category_items.keys(): if get_character_unlock(category): - $ icon = Fixed(icon_bg, Frame( Transform("interface/icons/head/{}.webp".format(category), fit="contain"), xysize=(42, 42), offset=(3, 3)), "interface/achievements/glass_iconbox.webp") + $ icon = Fixed(icon_bg, Frame( Transform(f"interface/icons/head/{category}.webp", fit="contain"), xysize=(42, 42), offset=(3, 3)), "interface/achievements/glass_iconbox.webp") vbox: textbutton category: diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index 044f9772..2fe4f051 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -112,7 +112,7 @@ init python early: defaults_set.remove(arg) changed_set.remove(arg) elif config.developer: - raise Exception("The variable `{}` was not previously set with a default value.".format(arg)) + raise Exception(f"The variable {arg!r} was not previously set with a default value.") renpy.execute_default_statement(False) def disable_game_menu(): From 068629d34db72acdaea48484942fb2ce017641b5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 20:36:44 +0100 Subject: [PATCH 214/249] Warn about using reset_variables (cherry picked from commit 04f76d2b548941cb61f570a6211a681b898be115) --- game/scripts/utility/common_functions.rpy | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index 2fe4f051..964e7543 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -102,7 +102,10 @@ init python early: print(e) def reset_variables(*args): - """Resets the given variables to their default values.""" + """ + Resets the given variables to their default values. + Should not be used : instead, define the base value and have a function set the defaulted one to the defined value (or a copy of it). + """ # Refer to renpy.ast.Default.set_default for implementation details defaults_set = renpy.store._defaults_set changed_set = renpy.store.__dict__.ever_been_changed From 36582d0f9c210e7399452deb63f325729a1df163 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 21:58:22 +0100 Subject: [PATCH 215/249] Final f-string batch some uses of str.format remain, but converting them would be more trouble than it's worth (cherry picked from commit f17cffa3ec5329988a58c76f8fa4f3fe4846a6fc) --- game/scripts/inventory/potions/_potions_.txt | 8 +++---- game/scripts/utility/devtools.rpy | 24 ++++++++++---------- game/scripts/utility/editor.rpy | 6 ++--- game/scripts/utility/engine.rpy | 8 +++---- game/scripts/utility/lint.rpy | 4 ++-- game/scripts/utility/translation.rpy | 24 ++++++++++---------- game/scripts/utility/updater.rpy | 8 +++---- game/scripts/wardrobe/studio.rpy | 11 ++++----- game/scripts/wardrobe/wardrobe.rpy | 6 ++--- 9 files changed, 49 insertions(+), 50 deletions(-) diff --git a/game/scripts/inventory/potions/_potions_.txt b/game/scripts/inventory/potions/_potions_.txt index 055b1763..62a529af 100644 --- a/game/scripts/inventory/potions/_potions_.txt +++ b/game/scripts/inventory/potions/_potions_.txt @@ -331,15 +331,15 @@ init -1 python: def get_store_menu_item(self, disabled=False): if disabled: - return gui.menu_item('-{}-'.format(self.name), None, style="disabled") + return gui.menu_item(f'-{self.name}-', None, style="disabled") else: - return gui.menu_item('-{}-'.format(self.name), self) + return gui.menu_item(f'-{self.name}-', self) def get_craft_menu_item(self, disabled=False): if disabled: - return gui.menu_item('-Craft: "{}"-'.format(self.name), self.ingredients, style="disabled") + return gui.menu_item(f'-Craft: "{self.name}"-', self.ingredients, style="disabled") else: - return gui.menu_item('-Craft: "{}"-'.format(self.name), self.id) + return gui.menu_item(f'-Craft: "{self.name}"-', self.id) def get_mix_text(self): return ">You mix the {i}" + potion_lib.get_name_by_id(self.ingredients[0]) \ diff --git a/game/scripts/utility/devtools.rpy b/game/scripts/utility/devtools.rpy index 6e9510d1..74e5ab4b 100644 --- a/game/scripts/utility/devtools.rpy +++ b/game/scripts/utility/devtools.rpy @@ -15,16 +15,16 @@ python early: return "DirectX" if preferences.renderer == "angle2" else "OpenGL" class stdcol: - PURPLE = '\033[1;35;48m' - CYAN = '\033[1;36;48m' - BOLD = '\033[1;37;48m' - BLUE = '\033[1;34;48m' - GREEN = '\033[1;32;48m' - YELLOW = '\033[1;33;48m' - RED = '\033[1;31;48m' - BLACK = '\033[1;30;48m' - UNDERLINE = '\033[4;37;48m' - END = '\033[1;37;0m' + PURPLE = '\033[1;35;48m' + CYAN = '\033[1;36;48m' + BOLD = '\033[1;37;48m' + BLUE = '\033[1;34;48m' + GREEN = '\033[1;32;48m' + YELLOW = '\033[1;33;48m' + RED = '\033[1;31;48m' + BLACK = '\033[1;30;48m' + UNDERLINE = '\033[4;37;48m' + END = '\033[1;37;0m' if config.developer: # Debug @@ -42,7 +42,7 @@ python early: orphaned.append(i) if orphaned: - raise Exception("Orphaned compiled scripts detected, please delete them before continuing:\n{}".format(orphaned)) + raise Exception(f"Orphaned compiled scripts detected, please delete them before continuing:\n{orphaned}") detect_orphaned_rpyc_files() @@ -91,7 +91,7 @@ init -2 python: return Image(file + ".png") if config.developer: - raise IOError("Missing image: {}".format(path)) + raise IOError(f"Missing image: {path}") return Image("images/blank.webp") def missing_label_func(name): diff --git a/game/scripts/utility/editor.rpy b/game/scripts/utility/editor.rpy index fb3ff8d5..28f2aa3e 100644 --- a/game/scripts/utility/editor.rpy +++ b/game/scripts/utility/editor.rpy @@ -86,7 +86,7 @@ init python: elif what == "temp_attr": setattr(node, "temporary_attributes", tuple(contents)) else: - raise TypeError("Type {!r} is not implemented.".format(what)) + raise TypeError(f"Type {what!r} is not implemented.") def replace_expression(self, expr, val): node = self.node @@ -97,14 +97,14 @@ init python: # We need to make sure not to add quotes # to expressions or variables. if isinstance(val, str): - val = "\"{}\"".format(val) + val = repr(val) # Insert new expression d = self.get_expressions_active(who) d[expr] = val # Convert to list of tuples - # l = [(k, "\"{}\"".format(v)) for k, v in d.items() if not v is None] # This is faster, but not robust enough. + # l = [(k, repr(v)) for k, v in d.items() if not v is None] # This is faster, but not robust enough. l = _list() l2 = _list() diff --git a/game/scripts/utility/engine.rpy b/game/scripts/utility/engine.rpy index d02a4e4a..7e0803df 100644 --- a/game/scripts/utility/engine.rpy +++ b/game/scripts/utility/engine.rpy @@ -39,13 +39,13 @@ init python: if cache_size >= cache_limit: if config.developer: - print("Cache limit reached, purging cache... ({}/{})\n{}".format(cache_size, cache_limit, renpy.get_filename_line())) + print(f"Cache limit reached, purging cache... ({cache_size}/{cache_limit})\n{renpy.get_filename_line()}") cache.clear() if renpy.game.interface is not None: if config.developer: - print("Statements limit reached, cleaning textures... ({})\n{}".format(self.limit, renpy.get_filename_line())) + print(f"Statements limit reached, cleaning textures... ({self.limit})\n{renpy.get_filename_line()}") renpy.game.interface.full_redraw = True renpy.game.interface.restart_interaction = True @@ -144,13 +144,13 @@ python early hide: # return (_CallException, (self.label, self.args, self.kwargs, self.from_current)) # class _JumpException(Exception): - + # def __init__(self, label): # for i in renpy.config._label_callbacks: # i(label) # class _JumpOutException(Exception): - + # def __init__(self, label): # for i in renpy.config._label_callbacks: # i(label) diff --git a/game/scripts/utility/lint.rpy b/game/scripts/utility/lint.rpy index 0124978c..9dfa4b81 100644 --- a/game/scripts/utility/lint.rpy +++ b/game/scripts/utility/lint.rpy @@ -137,7 +137,7 @@ init -1 python: renpy.lint.report_node = node has_failed = True - msg = "{!r} requires an integer, or a pre-defined named position, not {!r}".format(key, val) + msg = f"{key!r} requires an integer, or a pre-defined named position, not {val!r}" renpy.lint.report(msg) # This would require fixing hundreds of calls. Might postpone it... @@ -161,7 +161,7 @@ init -1 python: if key == "emote": msg = repr(key) - fn = "characters/{}/emote/{}.webp".format(SAYERS.get(who), val) + fn = f"characters/{SAYERS.get(who)}/emote/{val}.webp" if not has_failed: # Avoid repeating node destination diff --git a/game/scripts/utility/translation.rpy b/game/scripts/utility/translation.rpy index e2eba6f8..9c67f39a 100644 --- a/game/scripts/utility/translation.rpy +++ b/game/scripts/utility/translation.rpy @@ -75,7 +75,7 @@ init python in cli: for i, s in enumerate(strings): n = round(float(i)/(nstrings)*100) - print("\rGenerating strings for {} ... Total progress:{} % ... Stage 2/2".format(language, n), end="") + print(f"\rGenerating strings for {language} ... Total progress:{n} % ... Stage 2/2", end="") tlfn = renpy.translation.generation.translation_filename(s) @@ -96,17 +96,17 @@ init python in cli: tlfn = os.path.join(renpy.config.gamedir, renpy.config.tl_directory, language, tlfn) f = open_tl_file(tlfn, mode="w") - f.write(u"translate {} strings:\n".format(language)) - f.write(u"\n") + f.write(f"translate {language} strings:\n") + f.write("\n") for s in sl: original = s.text translation = stl.translate(s.text) # Keeps translated strings - f.write(u" # {}:{}\n".format(elide_filename(s.filename), s.line)) - f.write(u" old \"{}\"\n".format(quote_unicode(original))) - f.write(u" new \"{}\"\n".format(quote_unicode(translation))) - f.write(u"\n") + f.write(f" # {elide_filename(s.filename)}:{s.line}\n") + f.write(f" old \"{quote_unicode(original)}\"\n") + f.write(f" new \"{quote_unicode(translation)}\"\n") + f.write("\n") def retranslate(): translator = renpy.game.script.translator @@ -135,7 +135,7 @@ init python in cli: for language in translator.languages: - print("\rGenerating dialogues for {} ... Total progress:{} % ... Stage 1/2".format(language, n), end="") + print(f"\rGenerating dialogues for {language} ... Total progress:{n} % ... Stage 1/2", end="") for _, trans in translator.file_translates[filepath]: @@ -159,9 +159,9 @@ init python in cli: f = open_tl_file(fp, mode="w") - f.write(u"# {}:{}\n".format(trans.filename, trans.linenumber)) - f.write(u"translate {} {}:\n".format(language, trans.identifier.replace(".", "_"))) - f.write(u"\n") + f.write(f"# {trans.filename}:{trans.linenumber}\n") + f.write("translate {} {}:\n".format(language, trans.identifier.replace(".", "_"))) + f.write("\n") for n in trans.block: f.write(u" # " + n.get_code() + "\n") @@ -196,7 +196,7 @@ init python in cli: f.close() if args.dry: - print("Removal required: {}".format(filepath)) + print(f"Removal required: {filepath}") else: os.unlink(filepath) os.unlink(filepath + "c") diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 80fea2d3..0f43ee80 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -106,7 +106,7 @@ init python: current = getattr(store, "version", latest) if current < 1.452: - + for i in states.dolls: doll = getattr(store, i) doll._sprite = DefaultQueue() @@ -121,7 +121,7 @@ init python: # Fix makeup object types inside saved outfits if j.has_type("makeup"): - + objects = [x.parent.clone() for x in j.group] j.group = objects @@ -212,7 +212,7 @@ init python: doll.body.matrix = IdentityMatrix() if current > latest: - raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest)) + raise Exception(f"Loaded save file is incompatible. (Save Version: {current}, Game Version: {latest})") if current < latest: setattr(store, "version", latest) @@ -226,7 +226,7 @@ init python: def version_logo(): url = UPDATE_URL - filename = "logo_{}.webp".format(UPDATE_VER) + filename = f"logo_{UPDATE_VER}.webp" path = os.path.join(config.basedir, "update", filename) # Read file if exists diff --git a/game/scripts/wardrobe/studio.rpy b/game/scripts/wardrobe/studio.rpy index 7ff49051..27372133 100644 --- a/game/scripts/wardrobe/studio.rpy +++ b/game/scripts/wardrobe/studio.rpy @@ -30,7 +30,7 @@ init python in studio: fp, fn = os.path.split(f) fn, ext = os.path.splitext(fn) expression = os.path.split(fp)[1] - + if part in ("cheeks", "tears"): expressions = d.setdefault(charname, _dict()).setdefault(part, _list((False,))) @@ -203,7 +203,7 @@ screen studio(): $ bg_blur = studio.choices["background"]["blur"] $ bg_matrix = bg_hue*bg_saturation*bg_brightness $ bg_image = studio.choices["background"]["list"][studio.choices["background"]["image"]] - $ bg_image = "images/rooms/_bg_/{}.webp".format(bg_image) + $ bg_image = f"images/rooms/_bg_/{bg_image}.webp" $ bg = Transform(bg_image, matrixcolor=bg_matrix, blur=bg_blur) $ ov_hue = HueMatrix(studio.choices["overlay"]["hue"]) @@ -214,9 +214,8 @@ screen studio(): $ ov_matrix = ov_hue*ov_saturation*ov_brightness $ ov_image = studio.choices["overlay"]["list"][studio.choices["overlay"]["image"]] - if not ov_image is None: - $ ov_image = "images/rooms/overlays/{}.webp".format(ov_image) - $ ov = Transform(ov_image, matrixcolor=ov_matrix, blur=ov_blur, alpha=ov_alpha) + if ov_image is not None: + $ ov = Transform(f"images/rooms/overlays/{ov_image}.webp", matrixcolor=ov_matrix, blur=ov_blur, alpha=ov_alpha) else: $ ov = None @@ -337,7 +336,7 @@ screen studio(): selected v[1] text_color ("#009900" if active else "#f9d592") text_hover_color "#fff" text_first_indent 20 - background Transform("interface/icons/head/{}.webp".format(k), size=(16, 16), offset=(22, 3)) + background Transform(f"interface/icons/head/{k}.webp", size=(16, 16), offset=(22, 3)) vbox: align (1.0, 1.0) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index aa4a914a..46002df2 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -777,7 +777,7 @@ screen wardrobe_menuitem(xx, yy): pos (12, 108) for subcategory in category_items.keys(): - $ icon = lock_wardrobe_icon("interface/wardrobe/icons/{}.webp".format(subcategory)) + $ icon = lock_wardrobe_icon(f"interface/wardrobe/icons/{subcategory}.webp") button: focus_mask None @@ -830,7 +830,7 @@ screen wardrobe_outfit_menuitem(xx, yy): pos (8, 108) for subcategory in category_items.keys(): - $ icon = lock_wardrobe_icon("interface/wardrobe/icons/{}.webp".format(subcategory)) + $ icon = lock_wardrobe_icon(f"interface/wardrobe/icons/{subcategory}.webp") $ action = Return(["subcategory", subcategory]) if subcategory == "schedule" and not get_character_scheduling(states.active_girl): @@ -903,7 +903,7 @@ screen wardrobe_schedule_menuitem(item): spacing 0 for i in wardrobe_outfit_schedule: $ boolean = "" if item.schedule[i] else "Not " - $ caption = "{}worn during the {}".format(boolean, i) if i in ("day", "night") else "{}worn in {} weather".format(boolean, i) + $ caption = f"{boolean}worn during the {i}" if i in ("day", "night") else f"{boolean}worn in {i} weather" textbutton i: style gui.theme("dropdown") tooltip caption From faba726a3dda9269c97b1283f058b58c8db5b841 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 21:58:59 +0100 Subject: [PATCH 216/249] Avoid code duplication and using throwaway variables (cherry picked from commit 66f8f5ab2880399faf40e0c1157c7ef9be75b7d9) --- game/scripts/wardrobe/wardrobe.rpy | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index 46002df2..04161228 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -638,22 +638,16 @@ screen wardrobe_menu(xx, yy): yspacing 18 for i, category in enumerate(wardrobe_categories): - if wardrobe_check_category(category): - $ icon = Fixed(icon_bg, Transform("interface/wardrobe/icons/categories/{}/{}.webp".format(states.active_girl, category), zoom=0.45, anchor=(0.5, 0.5), align=(0.5, 0.5)), icon_frame) - else: - $ icon = Fixed(icon_bg, Transform("interface/wardrobe/icons/categories/{}/{}.webp".format(states.active_girl, category), zoom=0.45, anchor=(0.5, 0.5), align=(0.5, 0.5), matrixcolor=SaturationMatrix(0.0)), icon_frame) - $ icon_xoffset = -18 if (i % 2) == 0 else 18 - button: focus_mask None xysize (72, 72) - background lock_wardrobe_icon(icon) + background lock_wardrobe_icon(Fixed(icon_bg, Transform(f"interface/wardrobe/icons/categories/{states.active_girl}/{category}.webp", zoom=0.45, anchor=(0.5, 0.5), align=(0.5, 0.5), matrixcolor=(IdentityMatrix() if wardrobe_check_category(category) else SaturationMatrix(0.0))), icon_frame)) activate_sound "sounds/scroll.ogg" tooltip category sensitive (not bool(DollThread._count)) action Return(["category", category]) if current_category == category: - xoffset icon_xoffset + xoffset -18 if (i % 2) == 0 else 18 # Outfits and Studio hbox: From af2142393f6c526b672355928ed69b14d9a1a623 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 22:05:15 +0100 Subject: [PATCH 217/249] Remove another throwaway variable (cherry picked from commit f39cebc06fc4537fe51bf8a25053224f8c5e2ce7) --- game/scripts/wardrobe/studio.rpy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/game/scripts/wardrobe/studio.rpy b/game/scripts/wardrobe/studio.rpy index 27372133..3f8003b5 100644 --- a/game/scripts/wardrobe/studio.rpy +++ b/game/scripts/wardrobe/studio.rpy @@ -293,13 +293,12 @@ screen studio(): vbox: label "Overlay" default ov_dict = studio.choices["overlay"] - $ ov_active = bool(ov_dict["image"] > 0) hbox: add "interface/studio/overlay.webp" size icon_size bar value DictValue(ov_dict, "image", len(ov_dict["list"])-1, False, step=1, force_step=True) tooltip "Overlay Image" - if ov_active: + if ov_dict["image"] > 0: hbox: add "interface/studio/hue.webp" size icon_size bar value DictValue(ov_dict, "hue", 360.0, False, step=1.0, force_step=True) tooltip "Overlay Hue" From 7f71d15e7068099ff86a65ed45dbba20dcfb66d7 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 22:06:04 +0100 Subject: [PATCH 218/249] Speedup dict accesses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nested dicts are حَرَام but due punishment will come at a later time (cherry picked from commit ffc47109ed49d4928151e9c83fa14d1a378e928e) --- game/scripts/wardrobe/studio.rpy | 74 +++++++++++++++++--------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/game/scripts/wardrobe/studio.rpy b/game/scripts/wardrobe/studio.rpy index 3f8003b5..13fe690f 100644 --- a/game/scripts/wardrobe/studio.rpy +++ b/game/scripts/wardrobe/studio.rpy @@ -48,16 +48,17 @@ init python in studio: d = {} for i in renpy.store.states.dolls: - d[i] = {} - d[i]["eyebrows"] = faces[i].get("eyebrows", [None]).index("base") - d[i]["eyes"] = faces[i].get("eyes", [None]).index("base") - d[i]["mouth"] = faces[i].get("mouth", [None]).index("base") - d[i]["pupils"] = faces[i].get("pupils", [None]).index("mid") - d[i]["cheeks"] = faces[i].get("cheeks", [False]).index(False) - d[i]["tears"] = faces[i].get("tears", [False]).index(False) - d[i]["zoom"] = 0.5 - d[i]["flip"] = 1 - d[i]["alpha"] = 1.0 + d[i] = di = {} + fi = faces[i] + di["eyebrows"] = fi.get("eyebrows", [None]).index("base") + di["eyes"] = fi.get("eyes", [None]).index("base") + di["mouth"] = fi.get("mouth", [None]).index("base") + di["pupils"] = fi.get("pupils", [None]).index("mid") + di["cheeks"] = fi.get("cheeks", [False]).index(False) + di["tears"] = fi.get("tears", [False]).index(False) + di["zoom"] = 0.5 + di["flip"] = 1 + di["alpha"] = 1.0 d["background"] = { "image": 0, @@ -89,20 +90,22 @@ init python in studio: return d def get_face(char): - eyebrows = choices[char]["eyebrows"] - eyes = choices[char]["eyes"] - mouth = choices[char]["mouth"] - pupils = choices[char]["pupils"] - cheeks = choices[char]["cheeks"] - tears = choices[char]["tears"] + cho = choices[char] + eyebrows = cho["eyebrows"] + eyes = cho["eyes"] + mouth = cho["mouth"] + pupils = cho["pupils"] + cheeks = cho["cheeks"] + tears = cho["tears"] + fa = faces[char] d = { - "eyebrows": faces[char]["eyebrows"][eyebrows], - "eyes": faces[char]["eyes"][eyes], - "mouth": faces[char]["mouth"][mouth], - "pupils": faces[char]["pupils"][pupils], - "cheeks": faces[char]["cheeks"][cheeks], - "tears": faces[char]["tears"][tears], + "eyebrows": fa["eyebrows"][eyebrows], + "eyes": fa["eyes"][eyes], + "mouth": fa["mouth"][mouth], + "pupils": fa["pupils"][pupils], + "cheeks": fa["cheeks"][cheeks], + "tears": fa["tears"][tears], } return d @@ -134,9 +137,10 @@ init python in studio: def drag_update(drag): drag.char_obj.set_face(**get_face(drag.char_name)) - zoom = choices[drag.char_name]["zoom"] - flip = choices[drag.char_name]["flip"] - alpha = choices[drag.char_name]["alpha"] + cho = choices[drag.char_name] + zoom = cho["zoom"] + flip = cho["flip"] + alpha = cho["alpha"] d = Flatten(drag.char_obj.image) d = Transform(d, zoom=zoom, xzoom=flip, alpha=alpha) @@ -144,15 +148,17 @@ init python in studio: return def drag_reset(drag): - choices[drag.char_name]["eyebrows"] = faces[drag.char_name]["eyebrows"].index("base") - choices[drag.char_name]["eyes"] = faces[drag.char_name]["eyes"].index("base") - choices[drag.char_name]["mouth"] = faces[drag.char_name]["mouth"].index("base") - choices[drag.char_name]["pupils"] = faces[drag.char_name]["pupils"].index("mid") - choices[drag.char_name]["cheeks"] = faces[drag.char_name]["cheeks"].index(False) - choices[drag.char_name]["tears"] = faces[drag.char_name]["tears"].index(False) - choices[drag.char_name]["zoom"] = 0.5 - choices[drag.char_name]["flip"] = 1 - choices[drag.char_name]["alpha"] = 1.0 + cho = choices[drag.char_name] + fa = faces[drag.char_name] + cho["eyebrows"] = fa["eyebrows"].index("base") + cho["eyes"] = fa["eyes"].index("base") + cho["mouth"] = fa["mouth"].index("base") + cho["pupils"] = fa["pupils"].index("mid") + cho["cheeks"] = fa["cheeks"].index(False) + cho["tears"] = fa["tears"].index(False) + cho["zoom"] = 0.5 + cho["flip"] = 1 + cho["alpha"] = 1.0 drag.char_obj.set_face(**get_face(drag.char_name)) From 707e14e0cff96e2eeac05257e6b15e50983df27f Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 22:10:26 +0100 Subject: [PATCH 219/249] fix (cherry picked from commit 375b77b2abc7d3e3d6a162304f5a3153d922d905) --- game/scripts/wardrobe/wardrobe.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index 04161228..3cc0a1b8 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -647,7 +647,7 @@ screen wardrobe_menu(xx, yy): sensitive (not bool(DollThread._count)) action Return(["category", category]) if current_category == category: - xoffset -18 if (i % 2) == 0 else 18 + xoffset (-18 if (i % 2) == 0 else 18) # Outfits and Studio hbox: From 04a07328fe95d1898d8a55db0ef656f56ee7b28f Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Tue, 26 Mar 2024 23:10:18 +0100 Subject: [PATCH 220/249] Cleanup (cherry picked from commit 17ebf501709a4b9ae82052610e06a58f34134192) --- game/scripts/wardrobe/studio.rpy | 55 ++++++++++++++------------------ 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/game/scripts/wardrobe/studio.rpy b/game/scripts/wardrobe/studio.rpy index 13fe690f..03629a54 100644 --- a/game/scripts/wardrobe/studio.rpy +++ b/game/scripts/wardrobe/studio.rpy @@ -9,58 +9,55 @@ init python in studio: import functools import posixpath - Transform = renpy.store.Transform - Flatten = renpy.store.Flatten - Drag = renpy.store.Drag - get_character_object = renpy.store.get_character_object + from store import Transform, Flatten, Drag, get_character_object @functools.cache def get_faces(): - d = _dict() + faces = _dict() for charname in renpy.store.states.dolls: charobj = get_character_object(charname) extensions = charobj.extensions + face = faces.setdefault(charname, _dict()) for part in charobj.face._face.keys(): path = posixpath.join("characters", charname, "poses", charobj.pose, "face", part) + if part in ("cheeks", "tears"): + expressions = face.setdefault(part, _list((False,))) + else: + expressions = face.setdefault(part, _list()) + for f in renpy.list_files(): fp, fn = os.path.split(f) fn, ext = os.path.splitext(fn) expression = os.path.split(fp)[1] - - if part in ("cheeks", "tears"): - expressions = d.setdefault(charname, _dict()).setdefault(part, _list((False,))) - else: - expressions = d.setdefault(charname, _dict()).setdefault(part, _list()) - if not fp.startswith(path) or not ext in extensions: continue if not expression in expressions: expressions.append(expression) - return d + return faces def get_choices(): - d = {} + choices = {} for i in renpy.store.states.dolls: - d[i] = di = {} + choices[i] = ci = {} fi = faces[i] - di["eyebrows"] = fi.get("eyebrows", [None]).index("base") - di["eyes"] = fi.get("eyes", [None]).index("base") - di["mouth"] = fi.get("mouth", [None]).index("base") - di["pupils"] = fi.get("pupils", [None]).index("mid") - di["cheeks"] = fi.get("cheeks", [False]).index(False) - di["tears"] = fi.get("tears", [False]).index(False) - di["zoom"] = 0.5 - di["flip"] = 1 - di["alpha"] = 1.0 + ci["eyebrows"] = fi.get("eyebrows", [None]).index("base") + ci["eyes"] = fi.get("eyes", [None]).index("base") + ci["mouth"] = fi.get("mouth", [None]).index("base") + ci["pupils"] = fi.get("pupils", [None]).index("mid") + ci["cheeks"] = fi.get("cheeks", [False]).index(False) + ci["tears"] = fi.get("tears", [False]).index(False) + ci["zoom"] = 0.5 + ci["flip"] = 1 + ci["alpha"] = 1.0 - d["background"] = { + choices["background"] = { "image": 0, "alpha": 1.0, "hue": 0, @@ -70,7 +67,7 @@ init python in studio: "list": ["wall_day", "castle", "forest", "quidditch_pitch", "highlight", "versus", "corridor", "custom"] } - d["overlay"] = { + choices["overlay"] = { "image": 0, "alpha": 1.0, "hue": 0, @@ -79,15 +76,11 @@ init python in studio: "blur": 0.0, "list": [None, "curtains", "card", "g_bottom", "g_left", "g_circular"] } - return d + return choices def get_drags(): active_girl = renpy.store.states.active_girl - d = {} - - for i in renpy.store.states.dolls: - d[i] = [drag_init(getattr(renpy.store, i)), (i == active_girl)] - return d + return {i: [drag_init(getattr(renpy.store, i)), (i == active_girl)] for i in renpy.store.states.dolls} def get_face(char): cho = choices[char] From b489b59545c8234e6c69a24a1102897070096c33 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 27 Mar 2024 00:26:14 +0100 Subject: [PATCH 221/249] Add decorator (cherry picked from commit 8e80555393f6913d80cd5a35cf5d3ff7e62b82f5) --- game/scripts/cds.rpy | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/game/scripts/cds.rpy b/game/scripts/cds.rpy index fe6458ec..72304acc 100644 --- a/game/scripts/cds.rpy +++ b/game/scripts/cds.rpy @@ -1,3 +1,27 @@ +python early hide: + import inspect + __register_params = frozenset(inspect.signature(renpy.register_statement).parameters).difference({"name", "parse"}) + def register_decorator(cls): + """ + A class decorator which registers a new statement. + + The name of the statement will be the class name unless a `name` class attribute is present, which should be a string. + + The `parse` method should be a static method that returns an object which will be passed to the other methods as `self`. + Returning an instance of the class is disabled for now. + """ + # security + def raiser(*args, **kwargs): + raise NotImplementedError("Returning an instance of the class is disabled") + cls.__init__ = raiser + + name = getattr(cls, "name", cls.__name__) + parse = getattr(cls, "parse", cls) # left in + renpy.register_statement(name, + parse=parse, + **{k:getattr(cls, k) for k in __register_params.intersection(vars(cls))}) + return cls + python early: def parse_chibi(l): who = l.simple_expression() From 630ede144ca0d8f033a0748daa967dd9ddc3d283 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 27 Mar 2024 00:26:23 +0100 Subject: [PATCH 222/249] Add dynamic statement (cherry picked from commit e98680d12319cc97fa76fc3a2696761f251c6fdd) --- game/scripts/cds.rpy | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/game/scripts/cds.rpy b/game/scripts/cds.rpy index 72304acc..c6137e08 100644 --- a/game/scripts/cds.rpy +++ b/game/scripts/cds.rpy @@ -22,6 +22,38 @@ python early hide: **{k:getattr(cls, k) for k in __register_params.intersection(vars(cls))}) return cls + @register_decorator + class dynamic: + block = "possible" + + @staticmethod + def parse(l): + rv = {} + + def parse_simple(ll): + target = ll.require(ll.name, "variable name") + if target in rv: + ll.error(f"Variable {target} already set in the same dynamic block") + ll.require("=", "equals sign") + expression = ll.simple_expression() + ll.expect_eol() + rv[target] = expression + + if l.match(":"): + l.expect_block("dynamic block") + l.expect_eol() + ll = l.subblock_lexer() + while ll.advance(): + parse_simple(ll) + else: + parse_simple(l) + + return rv + + def execute(self): + evaled = {n: eval(e) for n, e in self.items()} + renpy.dynamic(**evaled) + python early: def parse_chibi(l): who = l.simple_expression() @@ -96,11 +128,11 @@ python early: return {"blocks": blocks} def next_random(p): - blocks = [(block, weight, condition) for block, weight, condition in p["blocks"] if eval(condition)] - total_weight = sum(weight for _, weight, _ in blocks) + blocks = [(block, weight) for block, weight, condition in p["blocks"] if eval(condition)] + total_weight = sum(weight for _, weight in blocks) n = renpy.random.random() * total_weight - for block, weight, _ in blocks: + for block, weight in blocks: if n <= weight: break else: From ea59c387d2baa394ffc619c8ca39956fc710d9ef Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Wed, 27 Mar 2024 00:30:17 +0100 Subject: [PATCH 223/249] Turn unnecessary class into namespace (cherry picked from commit 34165c7b2b484156628d8b7887fcd609c2450685) --- game/scripts/doll/main.rpy | 2 +- game/scripts/doll/outfits.rpy | 2 +- game/scripts/utility/punk.rpy | 189 +++++++++++++++++----------------- 3 files changed, 94 insertions(+), 99 deletions(-) diff --git a/game/scripts/doll/main.rpy b/game/scripts/doll/main.rpy index 80f33566..b200f6ad 100644 --- a/game/scripts/doll/main.rpy +++ b/game/scripts/doll/main.rpy @@ -538,7 +538,7 @@ init python: # Grab data if fromfile: try: - imported = ImagePayload().extract(path) + imported = image_payload.extract(path) except Exception as e: renpy.notify("Import failed: Corrupted file.") print(e) diff --git a/game/scripts/doll/outfits.rpy b/game/scripts/doll/outfits.rpy index d48c8869..d6e6313c 100644 --- a/game/scripts/doll/outfits.rpy +++ b/game/scripts/doll/outfits.rpy @@ -222,7 +222,7 @@ init python: ) displayable_to_file(d, path, size=(310, 470) ) - ImagePayload().inject("_temp.png", filename, str(exported)) + image_payload.inject("_temp.png", filename, str(exported)) os.remove(path) else: set_clipboard(exported) diff --git a/game/scripts/utility/punk.rpy b/game/scripts/utility/punk.rpy index d510f9a6..75ce236c 100644 --- a/game/scripts/utility/punk.rpy +++ b/game/scripts/utility/punk.rpy @@ -4,139 +4,134 @@ ## Implementation and changes ## ## LoafyLemon ## ##################################### -init python: +init python in image_payload: import binascii import struct import zlib - class ImagePayload(NoRollback): + CHUNK_TYPE_END = "IEND" + CHUNK_TYPE_PUNK = "wtSi" + MAX_BYTES = 2147483647 + SIGNATURE_BYTES = 8 + BYTES_IN_KB = 2014 - CHUNK_TYPE_END = "IEND" - CHUNK_TYPE_PUNK = "wtSi" - MAX_BYTES = 2147483647 - SIGNATURE_BYTES = 8 - BYTES_IN_KB = 2014 + def bytes_to_hex(b): + return b.hex() - def __init__(self): - pass + def bytes_to_utf(b): + return b.decode() - def bytes_to_hex(self, b): - return b.hex() + def bytes_to_int(b): + return int(bytes_to_hex(b), 16) - def bytes_to_utf(self, b): - return b.decode() + def read_bytes(f, byte_count: int): + return f.read(byte_count) - def bytes_to_int(self, b): - return int(self.bytes_to_hex(b), 16) + def rewind_bytes(f, byte_count): + f.seek(f.tell() - byte_count) - def read_bytes(self, f, byte_count: int): - return f.read(byte_count) + def get_file_length(f): + f.seek(0, os.SEEK_END) + file_length = f.tell() + f.seek(0) - def rewind_bytes(self, f, byte_count): - f.seek(f.tell() - byte_count) + return file_length - def get_file_length(self, f): - f.seek(0, os.SEEK_END) - file_length = f.tell() - f.seek(0) + def read_chunk(f): + chunk_size = read_bytes(f, 4) + chunk_type = read_bytes(f, 4) + chunk_content = read_bytes(f, bytes_to_int(chunk_size)) + chunk_crc = read_bytes(f, 4) - return file_length + return [chunk_size, chunk_type, chunk_content, chunk_crc] - def read_chunk(self, f): - chunk_size = self.read_bytes(f, 4) - chunk_type = self.read_bytes(f, 4) - chunk_content = self.read_bytes(f, self.bytes_to_int(chunk_size)) - chunk_crc = self.read_bytes(f, 4) + def inject_punk_chunk(f, content): + chunk_size = len(content) - return [chunk_size, chunk_type, chunk_content, chunk_crc] + if chunk_size > MAX_BYTES: + raise ValueError(f"Cannot inject more than {MAX_BYTES} bytes") - def inject_punk_chunk(self, f, content): - chunk_size = len(content) + print(f"Injecting {CHUNK_TYPE_PUNK} chunk {chunk_size / BYTES_IN_KB} kb") - if chunk_size > self.MAX_BYTES: - raise ValueError(f"Cannot inject more than {self.MAX_BYTES} bytes") + # Create a byte array to store our chunk data in. + tmp_bytes = bytearray() + # First write the chunk type + tmp_bytes.extend(CHUNK_TYPE_PUNK.encode()) + # Now write the bytes of whatever we're trying to hide + tmp_bytes.extend(content) - print(f"Injecting {self.CHUNK_TYPE_PUNK} chunk {chunk_size / self.BYTES_IN_KB} kb") + # Write the chunk size + f.write(bytearray(struct.pack("!i", chunk_size))) - # Create a byte array to store our chunk data in. - tmp_bytes = bytearray() - # First write the chunk type - tmp_bytes.extend(self.CHUNK_TYPE_PUNK.encode()) - # Now write the bytes of whatever we're trying to hide - tmp_bytes.extend(content) + # And the content + f.write(tmp_bytes) - # Write the chunk size - f.write(bytearray(struct.pack("!i", chunk_size))) + crc = binascii.crc32(tmp_bytes) + crc_bytes = crc.to_bytes(4, "big") + print("Chunk CRC", bytes_to_hex(crc_bytes)) + f.write(crc_bytes) - # And the content - f.write(tmp_bytes) + print("Chunk injected!") - crc = binascii.crc32(tmp_bytes) - crc_bytes = crc.to_bytes(4, "big") - print("Chunk CRC", self.bytes_to_hex(crc_bytes)) - f.write(crc_bytes) + def list(input): + path = os.path.join(config.gamedir, "outfits", input) - print("Chunk injected!") + with open(path, "rb") as input_file: - def list(self, input): - path = os.path.join(config.gamedir, "outfits", input) + input_file_length = get_file_length(input_file) + input_file.read(SIGNATURE_BYTES) - with open(path, "rb") as input_file: + while True: + chunk_size, chunk_type, chunk_content, chunk_crc = read_chunk(input_file) + chunk_type_str = bytes_to_utf(chunk_type) + print(f"Chunk {chunk_type_str}, {bytes_to_int(chunk_size)} bytes") - input_file_length = self.get_file_length(input_file) - input_file.read(self.SIGNATURE_BYTES) + if input_file.tell() >= input_file_length: + return - while True: - chunk_size, chunk_type, chunk_content, chunk_crc = self.read_chunk(input_file) - chunk_type_str = self.bytes_to_utf(chunk_type) - print(f"Chunk {chunk_type_str}, {self.bytes_to_int(chunk_size)} bytes") + def inject(input, output, content): + input_path = os.path.join(config.gamedir, "outfits", input) + output_path = os.path.join(config.gamedir, "outfits", output) + content = zlib.compress(str(content).encode()) - if input_file.tell() >= input_file_length: - return + with open(input_path, "rb") as input_file, open(output_path, "wb") as output_file: - def inject(self, input, output, content): - input_path = os.path.join(config.gamedir, "outfits", input) - output_path = os.path.join(config.gamedir, "outfits", output) - content = zlib.compress(str(content).encode()) + input_file_length = get_file_length(input_file) + output_file.write(input_file.read(SIGNATURE_BYTES)) - with open(input_path, "rb") as input_file, open(output_path, "wb") as output_file: + while True: + chunk_size, chunk_type, chunk_content, chunk_crc = read_chunk(input_file) + chunk_type_str = bytes_to_utf(chunk_type) + print(f"Chunk {chunk_type_str}, {bytes_to_int(chunk_size)} bytes") - input_file_length = self.get_file_length(input_file) - output_file.write(input_file.read(self.SIGNATURE_BYTES)) + if chunk_type_str == CHUNK_TYPE_END: + inject_punk_chunk(output_file, content) - while True: - chunk_size, chunk_type, chunk_content, chunk_crc = self.read_chunk(input_file) - chunk_type_str = self.bytes_to_utf(chunk_type) - print(f"Chunk {chunk_type_str}, {self.bytes_to_int(chunk_size)} bytes") + output_file.write(chunk_size) + output_file.write(chunk_type) + output_file.write(chunk_content) + output_file.write(chunk_crc) - if chunk_type_str == self.CHUNK_TYPE_END: - self.inject_punk_chunk(output_file, content) + if input_file.tell() >= input_file_length: + return - output_file.write(chunk_size) - output_file.write(chunk_type) - output_file.write(chunk_content) - output_file.write(chunk_crc) + def extract(input): + print("Attempting to extract punked data from", input) + path = os.path.join(config.gamedir, "outfits", input) - if input_file.tell() >= input_file_length: - return + with open(path, "rb") as input_file: - def extract(self, input): - print("Attempting to extract punked data from", input) - path = os.path.join(config.gamedir, "outfits", input) + input_file_length = get_file_length(input_file) + input_file.read(SIGNATURE_BYTES) - with open(path, "rb") as input_file: + while True: + chunk_size, chunk_type, chunk_content, chunk_crc = read_chunk(input_file) + chunk_type_str = bytes_to_utf(chunk_type) - input_file_length = self.get_file_length(input_file) - input_file.read(self.SIGNATURE_BYTES) + if chunk_type_str == CHUNK_TYPE_PUNK: + print("Found a punk chunk worth", bytes_to_int(chunk_size), "bytes") + return zlib.decompress(chunk_content).decode() - while True: - chunk_size, chunk_type, chunk_content, chunk_crc = self.read_chunk(input_file) - chunk_type_str = self.bytes_to_utf(chunk_type) - - if chunk_type_str == self.CHUNK_TYPE_PUNK: - print("Found a punk chunk worth", self.bytes_to_int(chunk_size), "bytes") - return zlib.decompress(chunk_content).decode() - - if input_file.tell() >= input_file_length: - print("No punked data found") - return + if input_file.tell() >= input_file_length: + print("No punked data found") + return From 6408942054ed2c3794639db6a713a09ee2449ac4 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 28 Mar 2024 22:27:10 +0100 Subject: [PATCH 224/249] Exception type (cherry picked from commit a048b0e3cc23b7b7fe1802e0e77ff56374acf3f8) --- game/scripts/cds.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/cds.rpy b/game/scripts/cds.rpy index c6137e08..49a5835b 100644 --- a/game/scripts/cds.rpy +++ b/game/scripts/cds.rpy @@ -12,7 +12,7 @@ python early hide: """ # security def raiser(*args, **kwargs): - raise NotImplementedError("Returning an instance of the class is disabled") + raise TypeError("Returning an instance of the class is disabled") cls.__init__ = raiser name = getattr(cls, "name", cls.__name__) From c5c04ff79e55d94b682ff4c02f65a232d782471f Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Thu, 28 Mar 2024 22:28:53 +0100 Subject: [PATCH 225/249] Convert existing cds using the new system (cherry picked from commit 4770be5f1b3571896020aea5de84bba208cc749c) --- game/scripts/cds.rpy | 140 ++++++++++++++++++++----------------------- 1 file changed, 66 insertions(+), 74 deletions(-) diff --git a/game/scripts/cds.rpy b/game/scripts/cds.rpy index 49a5835b..74e84582 100644 --- a/game/scripts/cds.rpy +++ b/game/scripts/cds.rpy @@ -54,96 +54,88 @@ python early hide: evaled = {n: eval(e) for n, e in self.items()} renpy.dynamic(**evaled) -python early: - def parse_chibi(l): - who = l.simple_expression() - action = l.simple_expression() + @register_decorator + class chibi: + @staticmethod + def parse(l): + who = l.simple_expression() + action = l.simple_expression() - return (who, action) + return (who, action) - def execute_chibi(p): - print(f"{p}") - who, action = p - func = eval(f"{who}_chibi.{action}") + def execute(self): + print(f"{self}") + who, action = self + func = eval(f"{who}_chibi.{action}") - # print(f"Execution: {who} {action}") + # print(f"Execution: {who} {action}") + + def lint(self): + who, action = self + try: + chibi = eval(f"{who}_chibi") + except Exception: + renpy.error(f"Character chibi not defined: {who}") + + def predict(self): + who, action = self - def lint_chibi(p): - who, action = p - try: chibi = eval(f"{who}_chibi") - except Exception: - renpy.error(f"Character chibi not defined: {who}") + doll = eval(f"{who}") - def predict_chibi(p): - who, action = p + layers = ( + l[0] for pose in chibi.poses.keys() + for k in doll.states.values() if k[0] and k[2] + for l in k[0].get_layers(k[0]._hash, subpath=posixpath.join("chibi", pose)).values() + ) - chibi = eval(f"{who}_chibi") - doll = eval(f"{who}") + return layers - layers = ( - l[0] for pose in chibi.poses.keys() - for k in doll.states.values() if k[0] and k[2] - for l in k[0].get_layers(k[0]._hash, subpath=posixpath.join("chibi", pose)).values() - ) + @register_decorator + class random: + block = True + predict_all = True - return layers + @staticmethod + def parse(l): + l.require(":") + l.expect_eol() - renpy.register_statement( - name="chibi", - parse=parse_chibi, - execute=execute_chibi, - lint=lint_chibi, - predict=predict_chibi, - ) + ll = l.subblock_lexer() + blocks = [] - def parse_random(l): - l.require(":") - l.expect_eol() + while ll.advance(): + with ll.catch_error(): + weight = 1.0 + condition = "True" - ll = l.subblock_lexer() - blocks = [] + if ll.keyword("block"): + ll.expect_block("block") - while ll.advance(): - with ll.catch_error(): - weight = 1.0 - condition = "True" + block = ll.subblock_lexer().renpy_block() - if ll.keyword("block"): - ll.expect_block("block") + if ll.keyword("weight"): + weight = float(ll.require(ll.float)) - block = ll.subblock_lexer().renpy_block() + if ll.keyword("if"): + ll.expect_block("if block") + condition = ll.require(ll.python_expression) + else: + block = ll.renpy_statement() - if ll.keyword("weight"): - weight = float(ll.require(ll.float)) + blocks.append((block, weight, condition)) - if ll.keyword("if"): - ll.expect_block("if block") - condition = ll.require(ll.python_expression) + return {"blocks": blocks} + + def next(self): + blocks = [(block, weight) for block, weight, condition in self["blocks"] if eval(condition)] + total_weight = sum(weight for _, weight in blocks) + n = renpy.random.random() * total_weight + + for block, weight in blocks: + if n <= weight: + break else: - block = ll.renpy_statement() + n -= weight - blocks.append((block, weight, condition)) - - return {"blocks": blocks} - - def next_random(p): - blocks = [(block, weight) for block, weight, condition in p["blocks"] if eval(condition)] - total_weight = sum(weight for _, weight in blocks) - n = renpy.random.random() * total_weight - - for block, weight in blocks: - if n <= weight: - break - else: - n -= weight - - return block - - renpy.register_statement( - name="random", - block=True, - predict_all=True, - parse=parse_random, - next=next_random, - ) + return block From fb7fc5300e7536e014d02249ceb1fda07e0f9ef2 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Fri, 29 Mar 2024 21:04:30 +0100 Subject: [PATCH 226/249] hotfix (cherry picked from commit 750d8dff4df83b7d8e7d2c63e9e25885da5f8fa9) --- game/scripts/interface/achievements.rpy | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index 0d197bda..3e6f966c 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -57,7 +57,6 @@ init python hide: del persistent.achievements init python: - class Achievements(object): """ Useless class, can't be rolled out because of pickle and save compatibility. @@ -70,9 +69,7 @@ init python: if not renpy.loadable(i.icon): raise IOError(repr(i.icon)) - @staticmethod - def status(id): - return achievement.has(id) + status = staticmethod(achievement.has) @staticmethod def unlock(id, silent=False): @@ -86,9 +83,7 @@ init python: renpy.play('sounds/achievement.ogg') __popup_stack.append(id) - @staticmethod - def lock(self, id): - achievement.clear(id) + lock = staticmethod(achievement.clear) def achievement_sortfilter(lst, sortby="A-z", filtering=None): """ @@ -451,4 +446,4 @@ style light_achievements_filters_button: style achievements_filters_button_text is default: align (0.5, 0.5) size 12 - outlines [] \ No newline at end of file + outlines [] From 62cb39cd19999930681ce9adf7a9ae3c033f5065 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 30 Mar 2024 17:17:14 +0100 Subject: [PATCH 227/249] Default queues instead of using instanciation magic (cherry picked from commit f7f0ecb566194b39898328560d1576577bae66a8) --- game/scripts/characters/astoria/spells.rpy | 4 +++- game/scripts/characters/cho/favors.rpy | 4 +++- game/scripts/characters/cho/requests.rpy | 5 ++++- .../hermione/events/odd_jobs/init.rpy | 4 +++- game/scripts/characters/hermione/favors.rpy | 20 ++++++++++++++----- game/scripts/characters/hermione/requests.rpy | 9 +++++++++ game/scripts/characters/luna/favors.rpy | 5 ++++- game/scripts/characters/snape/hangouts.rpy | 5 +++-- game/scripts/characters/tonks/hangouts.rpy | 3 ++- game/scripts/characters/tonks/requests.rpy | 6 ++++-- game/scripts/events/queue.rpy | 3 --- 11 files changed, 50 insertions(+), 18 deletions(-) diff --git a/game/scripts/characters/astoria/spells.rpy b/game/scripts/characters/astoria/spells.rpy index 053fc4cb..4260f894 100644 --- a/game/scripts/characters/astoria/spells.rpy +++ b/game/scripts/characters/astoria/spells.rpy @@ -6,12 +6,14 @@ default ast_ev_imperio_training_t1_e3 = Event(id="ast_ev_imperio_training_t1_e3" default ast_ev_imperio_training_t1_e4 = Event(id="ast_ev_imperio_training_t1_e4", label="ag_st_imperio_E4", req="game.daytime==False") default ast_ev_imperio_training_t1_e5 = Event(id="ast_ev_imperio_training_t1_e5", label="ag_st_imperio_E5", req="game.daytime==False") +default ast_eventqueue_imperio_training_tonks = EventQueue() default ast_ev_imperio_training_t1_e1_hub = Event(id="ast_ev_imperio_training_t1_e1_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e1"]) default ast_ev_imperio_training_t1_e2_hub = Event(id="ast_ev_imperio_training_t1_e2_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e2"]) default ast_ev_imperio_training_t1_e3_hub = Event(id="ast_ev_imperio_training_t1_e3_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e3"]) default ast_ev_imperio_training_t1_e4_hub = Event(id="ast_ev_imperio_training_t1_e4_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e4"]) default ast_ev_imperio_training_t1_e5_hub = Event(id="ast_ev_imperio_training_t1_e5_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e5"]) +default ast_eventqueue_imperio_training_susan = EventQueue() default ast_ev_imperio_training_susan_t1_e1 = Event(id="ast_ev_imperio_training_susan_t1_e1", label="ag_se_imperio_sb_E1", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_susan", autoenqueue=True, autodequeue=False) default ast_ev_imperio_training_susan_t1_e2 = Event(id="ast_ev_imperio_training_susan_t1_e2", label="ag_se_imperio_sb_E2", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_susan", autoenqueue=True, autodequeue=False) default ast_ev_imperio_training_susan_t1_e3 = Event(id="ast_ev_imperio_training_susan_t1_e3", label="ag_se_imperio_sb_E3", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_susan", autoenqueue=True, autodequeue=False) @@ -19,4 +21,4 @@ default ast_ev_imperio_training_susan_t1_e3 = Event(id="ast_ev_imperio_training_ define astoria_spells = [ ("ast_eventqueue_imperio_training_tonks", "Im-perv-ious with Tonks!"), ("ast_eventqueue_imperio_training_susan", "Im-perv-ious with Susan!"), -] \ No newline at end of file +] diff --git a/game/scripts/characters/cho/favors.rpy b/game/scripts/characters/cho/favors.rpy index 619280f1..9ebb3b8c 100644 --- a/game/scripts/characters/cho/favors.rpy +++ b/game/scripts/characters/cho/favors.rpy @@ -1,4 +1,4 @@ - +default cho_eventqueue_talk_to_me = EventQueue() default cho_ev_talk_to_me_t1_e1 = Event(id="cho_ev_talk_to_me_t1_e1", label="cc_pf_talk_T1_intro_E1", req="states.cho.tier == 1", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_talk_to_me_t1_e2 = Event(id="cho_ev_talk_to_me_t1_e2", label="cc_pf_talk_T1_intro_E2", req="states.cho.tier == 1", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_talk_to_me_t1_e3 = Event(id="cho_ev_talk_to_me_t1_e3", label="cc_pf_talk_T1_E3", req="states.cho.tier == 1", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) @@ -9,6 +9,7 @@ default cho_ev_talk_to_me_t3_e1 = Event(id="cho_ev_talk_to_me_t3_e1", label="cc_ default cho_ev_talk_to_me_t3_e2 = Event(id="cho_ev_talk_to_me_t3_e2", label="cc_pf_talk_T3_intro_E2", req="states.cho.tier >= 3", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_talk_to_me_t3_e3 = Event(id="cho_ev_talk_to_me_t3_e3", label="cc_pf_talk_T3_E3", req="states.cho.tier >= 3", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) +default cho_eventqueue_inspect_her_body = EventQueue() default cho_ev_inspect_her_body_t2_e1 = Event(id="cho_ev_inspect_her_body_t2_e1", label="cc_pf_strip_T2_intro_E1", req="states.cho.tier == 2", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_inspect_her_body_t2_e2 = Event(id="cho_ev_inspect_her_body_t2_e2", label="cc_pf_strip_T2_intro_E2", req="states.cho.tier == 2", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_inspect_her_body_t2_e3 = Event(id="cho_ev_inspect_her_body_t2_e3", label="cc_pf_strip_T2_intro_E3", req="states.cho.tier == 2", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["cc_pf_strip_T2_E3_fail_repeat", "cc_pf_strip_T2_E3_fail"]) @@ -18,6 +19,7 @@ default cho_ev_inspect_her_body_t3_e2 = Event(id="cho_ev_inspect_her_body_t3_e2" default cho_ev_inspect_her_body_t3_e3 = Event(id="cho_ev_inspect_her_body_t3_e3", label="cc_pf_strip_T3_intro_E3", req="states.cho.tier >= 3", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_inspect_her_body_t3_e4 = Event(id="cho_ev_inspect_her_body_t3_e4", label="cc_pf_strip_T3_repeat", req="states.cho.tier >= 3", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) +default cho_eventqueue_suck_it = EventQueue() default cho_ev_suck_it_t3_e1 = Event(id="cho_ev_suck_it_t3_e1", label="cc_pf_blowjob_T3_intro_E1", req="states.cho.tier >= 3", queue="cho_eventqueue_suck_it", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["cc_pf_blowjob_1"]) default cho_ev_suck_it_t3_e2 = Event(id="cho_ev_suck_it_t3_e2", label="cc_pf_blowjob_T3_E2", req="states.cho.tier >= 3", queue="cho_eventqueue_suck_it", autoenqueue=True, autodequeue=False) default cho_ev_suck_it_t3_e3 = Event(id="cho_ev_suck_it_t3_e3", label="cc_pf_blowjob_T3_E3", req="states.cho.tier >= 3", queue="cho_eventqueue_suck_it", autoenqueue=True, autodequeue=False) diff --git a/game/scripts/characters/cho/requests.rpy b/game/scripts/characters/cho/requests.rpy index 122beb42..093e46e1 100644 --- a/game/scripts/characters/cho/requests.rpy +++ b/game/scripts/characters/cho/requests.rpy @@ -1,8 +1,8 @@ - default cho_ev_spy_on_boys_t3_e1 = Event(id="cho_ev_spy_on_boys_t3_e1", label="cc_pr_spy_boys_T3_twins", req="game.daytime==False") default cho_ev_spy_on_boys_t3_e2 = Event(id="cho_ev_spy_on_boys_t3_e2", label="cc_pr_spy_boys_T3_ron", req="game.daytime==False") default cho_ev_spy_on_boys_t3_e3 = Event(id="cho_ev_spy_on_boys_t3_e3", label="cc_pr_spy_boys_T3_harry", req="game.daytime==False") +default cho_eventqueue_spy_on_boys = EventQueue() default cho_ev_spy_on_boys_t3_e1_hub = Event(id="cho_ev_spy_on_boys_t3_e1_hub", label="cc_pr_spy_boys_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_boys_t3_e1"]) default cho_ev_spy_on_boys_t3_e2_hub = Event(id="cho_ev_spy_on_boys_t3_e2_hub", label="cc_pr_spy_boys_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_boys_t3_e2"]) default cho_ev_spy_on_boys_t3_e3_hub = Event(id="cho_ev_spy_on_boys_t3_e3_hub", label="cc_pr_spy_boys_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_boys_t3_e3"]) @@ -12,6 +12,7 @@ default cho_ev_spy_on_girls_t3_e2 = Event(id="cho_ev_spy_on_girls_t3_e2", label= default cho_ev_spy_on_girls_t3_e3 = Event(id="cho_ev_spy_on_girls_t3_e3", label="cc_pr_spy_girls_T3_katie", req="game.daytime==False") default cho_ev_spy_on_girls_t3_e4 = Event(id="cho_ev_spy_on_girls_t3_e4", label="cc_pr_spy_girls_T3_angelina", req="game.daytime==False") +default cho_eventqueue_spy_on_girls = EventQueue() default cho_ev_spy_on_girls_t3_e1_hub = Event(id="cho_ev_spy_on_girls_t3_e1_hub", label="cc_pr_spy_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_girls_t3_e1"]) default cho_ev_spy_on_girls_t3_e2_hub = Event(id="cho_ev_spy_on_girls_t3_e2_hub", label="cc_pr_spy_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_girls_t3_e2"]) default cho_ev_spy_on_girls_t3_e3_hub = Event(id="cho_ev_spy_on_girls_t3_e3_hub", label="cc_pr_spy_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_girls_t3_e3"]) @@ -30,6 +31,7 @@ default cho_ev_manipulate_boys_t3_e1 = Event(id="cho_ev_manipulate_boys_t3_e1", default cho_ev_manipulate_boys_t3_e2 = Event(id="cho_ev_manipulate_boys_t3_e2", label="cc_pr_manipulate_boys_T3_ron", req="game.daytime==False") default cho_ev_manipulate_boys_t3_e3 = Event(id="cho_ev_manipulate_boys_t3_e3", label="cc_pr_manipulate_boys_T3_harry", req="game.daytime==False") +default cho_eventqueue_manipulate_boys = EventQueue() default cho_ev_manipulate_boys_t1_e1_hub = Event(id="cho_ev_manipulate_boys_t1_e1_hub", label="cc_pr_manipulate_boys_start", req="states.cho.tier == 1", queue="cho_eventqueue_manipulate_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_boys_t1_e1"]) default cho_ev_manipulate_boys_t1_e2_hub = Event(id="cho_ev_manipulate_boys_t1_e2_hub", label="cc_pr_manipulate_boys_start", req="states.cho.tier == 1", queue="cho_eventqueue_manipulate_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_boys_t1_e2"]) default cho_ev_manipulate_boys_t1_e3_hub = Event(id="cho_ev_manipulate_boys_t1_e3_hub", label="cc_pr_manipulate_boys_start", req="states.cho.tier == 1", queue="cho_eventqueue_manipulate_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_boys_t1_e3"]) @@ -48,6 +50,7 @@ default cho_ev_manipulate_girls_t3_e2 = Event(id="cho_ev_manipulate_girls_t3_e2" default cho_ev_manipulate_girls_t3_e3 = Event(id="cho_ev_manipulate_girls_t3_e3", label="cc_pr_manipulate_girls_T3_katie_part2", req="game.daytime==False") default cho_ev_manipulate_girls_t3_e4 = Event(id="cho_ev_manipulate_girls_t3_e4", label="cc_pr_manipulate_girls_T3_angelina", req="game.daytime==False") +default cho_eventqueue_manipulate_girls = EventQueue() default cho_ev_manipulate_girls_t3_e1_hub = Event(id="cho_ev_manipulate_girls_t3_e1_hub", label="cc_pr_manipulate_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_manipulate_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_girls_t3_e1"]) default cho_ev_manipulate_girls_t3_e2_hub = Event(id="cho_ev_manipulate_girls_t3_e2_hub", label="cc_pr_manipulate_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_manipulate_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_girls_t3_e2"]) default cho_ev_manipulate_girls_t3_e3_hub = Event(id="cho_ev_manipulate_girls_t3_e3_hub", label="cc_pr_manipulate_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_manipulate_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_girls_t3_e3"]) diff --git a/game/scripts/characters/hermione/events/odd_jobs/init.rpy b/game/scripts/characters/hermione/events/odd_jobs/init.rpy index 225ca1e7..4dd1384d 100644 --- a/game/scripts/characters/hermione/events/odd_jobs/init.rpy +++ b/game/scripts/characters/hermione/events/odd_jobs/init.rpy @@ -1,12 +1,14 @@ init offset = 5 default her_ev_maid_job_return = Event(id="her_ev_maid_job_return", label="her_maid_job_return", priority=5, req="not game.daytime") +default her_eventqueue_jobs_maid = EventQueue() default her_ev_maid_job_hub = Event(id="her_ev_maid_job_hub", label="her_maid_job", priority=5, req="her_outfit_maid.unlocked", repeat=True, autoenqueue=True, autodequeue=False, queue="her_eventqueue_jobs_maid", subevents=["her_ev_maid_job_return"]) default her_ev_promoter_job_return = Event(id="her_ev_promoter_job_return", label="her_promoter_job_return", priority=5, req="not game.daytime") +default her_eventqueue_jobs_promoter = EventQueue() default her_ev_promoter_job_hub = Event(id="her_ev_promoter_job_hub", label="her_promoter_job", priority=5, req="states.her.ev.promote_cardgame.offered and poker_outfit_ITEM.unlocked", repeat=True, autoenqueue=True, autodequeue=False, queue="her_eventqueue_jobs_promoter", subevents=["her_ev_promoter_job_return"]) - +default her_eventqueue_panty_thief = EventQueue() default her_ev_panty_thief_t1_e1 = Event(id="her_ev_panty_thief_t1_e1", label="hg_pr_panty_thief_T1_E1", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_panty_thief") default her_ev_panty_thief_t2_e1 = Event(id="her_ev_panty_thief_t2_e1", label="hg_pr_panty_thief_T2_E1", req="states.her.tier == 2", autoenqueue=True, autodequeue=False, queue="her_eventqueue_panty_thief") default her_ev_panty_thief_t3_e1 = Event(id="her_ev_panty_thief_t3_e1", label="hg_pr_panty_thief_e1_return", req="game.daytime==False") diff --git a/game/scripts/characters/hermione/favors.rpy b/game/scripts/characters/hermione/favors.rpy index 117ed54f..1a38e5a2 100644 --- a/game/scripts/characters/hermione/favors.rpy +++ b/game/scripts/characters/hermione/favors.rpy @@ -1,4 +1,4 @@ - +default her_eventqueue_talk_to_me = EventQueue() default her_ev_talk_to_me_t1_e1 = Event(id="her_ev_talk_to_me_t1_e1", label="hg_pf_talk_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk"]) default her_ev_talk_to_me_t1_e2 = Event(id="her_ev_talk_to_me_t1_e2", label="hg_pf_talk_T1_E1", priority=6, req="states.her.tier == 1", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk"]) default her_ev_talk_to_me_t2_e1 = Event(id="her_ev_talk_to_me_t2_e1", label="hg_pf_talk_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk"]) @@ -7,9 +7,11 @@ default her_ev_talk_to_me_t3_e1 = Event(id="her_ev_talk_to_me_t3_e1", label="hg_ default her_ev_talk_to_me_t3_e2 = Event(id="her_ev_talk_to_me_t3_e2", label="hg_pf_talk_T3_intro_E2", priority=6, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1"]) default her_ev_talk_to_me_t3_e3 = Event(id="her_ev_talk_to_me_t3_e3", label="hg_pf_talk_T3_repeat", priority=7, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1"]) +default her_eventqueue_talk_to_me_tonks = EventQueue() default her_ev_talk_to_me_tonks_t3_e1 = Event(id="her_ev_talk_to_me_tonks_t3_e1", label="hg_pf_talk_tonks_T3_intro_E1", priority=5, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me_tonks", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_talk_to_me_tonks_t3_e2 = Event(id="her_ev_talk_to_me_tonks_t3_e2", label="hg_pf_talk_tonks_T3_E1", priority=6, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me_tonks", autoenqueue=True, autodequeue=False) +default her_eventqueue_admire_panties = EventQueue() default her_ev_admire_panties_t1_e1 = Event(id="her_ev_admire_panties_t1_e1", label="hg_pf_admire_panties_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties"]) default her_ev_admire_panties_t1_e2 = Event(id="her_ev_admire_panties_t1_e2", label="hg_pf_admire_panties_T1_E1", priority=6, req="states.her.tier == 1", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) default her_ev_admire_panties_t2_e1 = Event(id="her_ev_admire_panties_t2_e1", label="hg_pf_admire_panties_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties"]) @@ -20,6 +22,7 @@ default her_ev_admire_panties_t4_e1 = Event(id="her_ev_admire_panties_t4_e1", la default her_ev_admire_panties_t4_e2 = Event(id="her_ev_admire_panties_t4_e2", label="hg_pf_admire_panties_T4_E1", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) default her_ev_admire_panties_t4_e3 = Event(id="her_ev_admire_panties_t4_e3", label="hg_pf_admire_panties_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) +default her_eventqueue_admire_breasts = EventQueue() default her_ev_admire_breasts_t1_e1 = Event(id="her_ev_admire_breasts_t1_e1", label="hg_pf_admire_breasts_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts"]) default her_ev_admire_breasts_t1_e2 = Event(id="her_ev_admire_breasts_t1_e2", label="hg_pf_admire_breasts_T1_intro_E2", priority=6, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts"]) default her_ev_admire_breasts_t1_e3 = Event(id="her_ev_admire_breasts_t1_e3", label="hg_pf_admire_breasts_T1_E2", priority=7, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts"]) @@ -32,6 +35,7 @@ default her_ev_admire_breasts_t4_e1 = Event(id="her_ev_admire_breasts_t4_e1", la default her_ev_admire_breasts_t4_e2 = Event(id="her_ev_admire_breasts_t4_e2", label="hg_pf_admire_breasts_T4_E1", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T4"]) default her_ev_admire_breasts_t4_e3 = Event(id="her_ev_admire_breasts_t4_e3", label="hg_pf_admire_breasts_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T4"]) +default her_eventqueue_grope = EventQueue() default her_ev_grope_t1_e1 = Event(id="her_ev_grope_t1_e1", label="hg_pf_grope_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False) default her_ev_grope_t2_e1 = Event(id="her_ev_grope_t2_e1", label="hg_pf_grope_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_grope_breasts_T2", "hg_pf_grope_ass_T2", "hg_pf_grope_ass_T2_back", "hg_pf_grope_ass_T2_front", "hg_pf_grope_ass_T2_continue", "hg_pf_grope_breasts_T2_continue"]) default her_ev_grope_t2_e2 = Event(id="her_ev_grope_t2_e2", label="hg_pf_grope_T2_E1", priority=6, req="states.her.tier == 2", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_grope_breasts_T2", "hg_pf_grope_ass_T2", "hg_pf_grope_ass_T2_back", "hg_pf_grope_ass_T2_front", "hg_pf_grope_ass_T2_continue", "hg_pf_grope_breasts_T2_continue"]) @@ -41,6 +45,7 @@ default her_ev_grope_t4_e1 = Event(id="her_ev_grope_t4_e1", label="hg_pf_grope_T default her_ev_grope_t4_e2 = Event(id="her_ev_grope_t4_e2", label="hg_pf_grope_T4_intro_E2", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) default her_ev_grope_t4_e3 = Event(id="her_ev_grope_t4_e3", label="hg_pf_grope_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) +default her_eventqueue_strip_for_me = EventQueue() default her_ev_strip_for_me_t1_e1 = Event(id="her_ev_strip_for_me_t1_e1", label="hg_pf_strip_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False) default her_ev_strip_for_me_t2_e1 = Event(id="her_ev_strip_for_me_t2_e1", label="hg_pf_strip_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False) default her_ev_strip_for_me_t3_e1 = Event(id="her_ev_strip_for_me_t3_e1", label="hg_pf_strip_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False) @@ -50,6 +55,7 @@ default her_ev_strip_for_me_t4_e1 = Event(id="her_ev_strip_for_me_t4_e1", label= default her_ev_strip_for_me_t4_e2 = Event(id="her_ev_strip_for_me_t4_e2", label="hg_pf_strip_T4_intro_E2", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) default her_ev_strip_for_me_t4_e3 = Event(id="her_ev_strip_for_me_t4_e3", label="hg_pf_strip_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) +default her_eventqueue_handjob = EventQueue() default her_ev_handjob_t1_e1 = Event(id="her_ev_handjob_t1_e1", label="hg_pf_handjob_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False) default her_ev_handjob_t2_e1 = Event(id="her_ev_handjob_t2_e1", label="hg_pf_handjob_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False) default her_ev_handjob_t3_e1 = Event(id="her_ev_handjob_t3_e1", label="hg_pf_handjob_T3_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False) @@ -60,6 +66,7 @@ default her_ev_handjob_t5_e1 = Event(id="her_ev_handjob_t5_e1", label="hg_pf_han default her_ev_handjob_t5_e2 = Event(id="her_ev_handjob_t5_e2", label="hg_pf_handjob_T5_intro_E2", priority=6, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) default her_ev_handjob_t5_e3 = Event(id="her_ev_handjob_t5_e3", label="hg_pf_handjob_T5_repeat", priority=7, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) +default her_eventqueue_titjob = EventQueue() default her_ev_titjob_t1_e1 = Event(id="her_ev_titjob_t1_e1", label="hg_pf_titjob_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False) default her_ev_titjob_t2_e1 = Event(id="her_ev_titjob_t2_e1", label="hg_pf_titjob_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False) default her_ev_titjob_t3_e1 = Event(id="her_ev_titjob_t3_e1", label="hg_pf_titjob_T3_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False) @@ -70,6 +77,7 @@ default her_ev_titjob_t6_e1 = Event(id="her_ev_titjob_t6_e1", label="hg_pf_titjo default her_ev_titjob_t6_e2 = Event(id="her_ev_titjob_t6_e2", label="hg_pf_titjob_T6_intro_E2", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) default her_ev_titjob_t6_e3 = Event(id="her_ev_titjob_t6_e3", label="hg_pf_titjob_T6_repeat", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) +default her_eventqueue_blowjob = EventQueue() default her_ev_blowjob_t1_e1 = Event(id="her_ev_blowjob_t1_e1", label="hg_pf_blowjob_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False) default her_ev_blowjob_t2_e1 = Event(id="her_ev_blowjob_t2_e1", label="hg_pf_blowjob_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False) default her_ev_blowjob_t3_e1 = Event(id="her_ev_blowjob_t3_e1", label="hg_pf_blowjob_T3_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False) @@ -81,6 +89,7 @@ default her_ev_blowjob_t6_e1 = Event(id="her_ev_blowjob_t6_e1", label="hg_pf_blo default her_ev_blowjob_t6_e2 = Event(id="her_ev_blowjob_t6_e2", label="hg_pf_blowjob_T6_hidden_repeat", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) default her_ev_blowjob_t6_e3 = Event(id="her_ev_blowjob_t6_e3", label="hg_pf_blowjob_T6_repeat", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) +default her_eventqueue_sex = EventQueue() default her_ev_sex_t1_e1 = Event(id="her_ev_sex_t1_e1", label="hg_pf_sex_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) default her_ev_sex_t2_e1 = Event(id="her_ev_sex_t2_e1", label="hg_pf_sex_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) default her_ev_sex_t3_e1 = Event(id="her_ev_sex_t3_e1", label="hg_pf_sex_T3_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) @@ -91,15 +100,16 @@ default her_ev_sex_t6_e2 = Event(id="her_ev_sex_t6_e2", label="hg_pf_sex_T6_intr default her_ev_sex_t6_e3 = Event(id="her_ev_sex_t6_e3", label="hg_pf_sex_T6_intro_E3", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_sex_t6_e4 = Event(id="her_ev_sex_t6_e4", label="hg_pf_sex_T6_E3", priority=8, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) +default her_eventqueue_anal = EventQueue() default her_ev_anal_t6_e1 = Event(id="her_ev_anal_t6_e1", label="hg_anal_sex_1_intro", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_anal_t6_e2 = Event(id="her_ev_anal_t6_e2", label="hg_anal_sex_2_intro", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_anal_t6_e3 = Event(id="her_ev_anal_t6_e3", label="hg_anal_sex_3", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False) define hermione_favors = [ - ("her_eventqueue_talk_to_me", "Talk to me!"), - ("her_eventqueue_admire_breasts", "Show me your tits!"), - ("her_eventqueue_admire_panties", "Show me your panties!"), - ("her_eventqueue_grope", "Grope her!"), + ("her_eventqueue_talk_to_me", "Talk to me!"), + ("her_eventqueue_admire_breasts", "Show me your tits!"), + ("her_eventqueue_admire_panties", "Show me your panties!"), + ("her_eventqueue_grope", "Grope her!"), ("her_eventqueue_strip_for_me", "Strip for me!"), ("her_eventqueue_handjob", "Give me a handy!"), ("her_eventqueue_titjob", "Give me a tittyjob!"), diff --git a/game/scripts/characters/hermione/requests.rpy b/game/scripts/characters/hermione/requests.rpy index a3a8c683..91ac842b 100644 --- a/game/scripts/characters/hermione/requests.rpy +++ b/game/scripts/characters/hermione/requests.rpy @@ -10,6 +10,7 @@ default her_ev_flirt_students_t3_e1 = Event(id="her_ev_flirt_students_t3_e1", la default her_ev_flirt_students_t3_e2 = Event(id="her_ev_flirt_students_t3_e2", label="hg_pr_flirt_T3_E2", req="game.daytime == False") default her_ev_flirt_students_t3_e3 = Event(id="her_ev_flirt_students_t3_e3", label="hg_pr_flirt_T3_E3", req="game.daytime == False") +default her_eventqueue_flirt_students = EventQueue() default her_ev_flirt_students_t1_e1_hub = Event(id="her_ev_flirt_students_t1_e1_hub", label="hg_pr_flirt", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_students", subevents=["her_ev_flirt_students_t1_e1"]) default her_ev_flirt_students_t1_e2_hub = Event(id="her_ev_flirt_students_t1_e2_hub", label="hg_pr_flirt", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_students", subevents=["her_ev_flirt_students_t1_e2"]) default her_ev_flirt_students_t1_e3_hub = Event(id="her_ev_flirt_students_t1_e3_hub", label="hg_pr_flirt", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_students", subevents=["her_ev_flirt_students_t1_e3"]) @@ -30,6 +31,7 @@ default her_ev_flirt_teachers_t3_e1 = Event(id="her_ev_flirt_teachers_t3_e1", la default her_ev_flirt_teachers_t3_e2 = Event(id="her_ev_flirt_teachers_t3_e2", label="hg_pr_flirt_teacher_T3_E2", req="game.daytime == False") default her_ev_flirt_teachers_t3_e3 = Event(id="her_ev_flirt_teachers_t3_e3", label="hg_pr_flirt_teacher_T3_E3", req="game.daytime == False") +default her_eventqueue_flirt_teachers = EventQueue() default her_ev_flirt_teachers_t1_e1_hub = Event(id="her_ev_flirt_teachers_t1_e1_hub", label="hg_pr_flirt_teacher", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_teachers", subevents=["her_ev_flirt_teachers_t1_e1"]) default her_ev_flirt_teachers_t1_e2_hub = Event(id="her_ev_flirt_teachers_t1_e2_hub", label="hg_pr_flirt_teacher", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_teachers", subevents=["her_ev_flirt_teachers_t1_e2"]) default her_ev_flirt_teachers_t1_e3_hub = Event(id="her_ev_flirt_teachers_t1_e3_hub", label="hg_pr_flirt_teacher", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_teachers", subevents=["her_ev_flirt_teachers_t1_e3"]) @@ -50,6 +52,7 @@ default her_ev_grope_public_t4_e1 = Event(id="her_ev_grope_public_t4_e1", label= default her_ev_grope_public_t4_e2 = Event(id="her_ev_grope_public_t4_e2", label="hg_pr_grope_T4_E2", req="game.daytime == False") default her_ev_grope_public_t4_e3 = Event(id="her_ev_grope_public_t4_e3", label="hg_pr_grope_T4_E3", req="game.daytime == False") +default her_eventqueue_grope_public = EventQueue() default her_ev_grope_public_t1_e1_hub = Event(id="her_ev_grope_public_t1_e1_hub", label="hg_pr_grope_fail", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_grope_public") default her_ev_grope_public_t2_e1_hub = Event(id="her_ev_grope_public_t2_e1_hub", label="hg_pr_grope", req="states.her.tier == 2", autoenqueue=True, autodequeue=False, queue="her_eventqueue_grope_public", subevents=["her_ev_grope_public_t2_e1"]) default her_ev_grope_public_t2_e2_hub = Event(id="her_ev_grope_public_t2_e2_hub", label="hg_pr_grope", req="states.her.tier == 2", autoenqueue=True, autodequeue=False, queue="her_eventqueue_grope_public", subevents=["her_ev_grope_public_t2_e2"]) @@ -71,6 +74,7 @@ default her_ev_flash_public_t5_e1 = Event(id="her_ev_flash_public_t5_e1", label= default her_ev_flash_public_t5_e2 = Event(id="her_ev_flash_public_t5_e2", label="hg_pr_flash_T5_E2", req="game.daytime == False") default her_ev_flash_public_t5_e3 = Event(id="her_ev_flash_public_t5_e3", label="hg_pr_flash_T5_E3", req="game.daytime == False") +default her_eventqueue_flash_public = EventQueue() default her_ev_flash_public_t1_to_t3 = Event(id="her_ev_flash_public_t1_to_t3", label="hg_pr_flash_fail", req="states.her.tier < 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flash_public") default her_ev_flash_public_t3_e1_hub = Event(id="her_ev_flash_public_t3_e1_hub", label="hg_pr_flash", req="states.her.tier == 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flash_public", subevents=["her_ev_flash_public_t3_e1"]) default her_ev_flash_public_t3_e2_hub = Event(id="her_ev_flash_public_t3_e2_hub", label="hg_pr_flash", req="states.her.tier == 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flash_public", subevents=["her_ev_flash_public_t3_e2"]) @@ -91,6 +95,7 @@ default her_ev_kiss_public_t4_e3 = Event(id="her_ev_kiss_public_t4_e3", label="h default her_ev_kiss_public_t5_e1 = Event(id="her_ev_kiss_public_t5_e1", label="hg_pr_kiss_T5_E1", req="game.daytime==False") default her_ev_kiss_public_t5_e2 = Event(id="her_ev_kiss_public_t5_e2", label="hg_pr_kiss_T5_E2", req="game.daytime==False") +default her_eventqueue_kiss_public = EventQueue() default her_ev_kiss_public_t1_to_t3 = Event(id="her_ev_kiss_public_t1_to_t3", label="hg_pr_kiss_fail", req="states.her.tier < 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_kiss_public") default her_ev_kiss_public_t3_e1_hub = Event(id="her_ev_kiss_public_t3_e1_hub", label="hg_pr_kiss", req="states.her.tier == 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_kiss_public", subevents=["her_ev_kiss_public_t3_e1"]) default her_ev_kiss_public_t3_e2_hub = Event(id="her_ev_kiss_public_t3_e2_hub", label="hg_pr_kiss", req="states.her.tier == 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_kiss_public", subevents=["her_ev_kiss_public_t3_e2"]) @@ -111,6 +116,7 @@ default her_ev_handjob_public_t6_e1 = Event(id="her_ev_handjob_public_t6_e1", la default her_ev_handjob_public_t6_e2 = Event(id="her_ev_handjob_public_t6_e2", label="hg_pr_handjob_T6_E2", req="game.daytime==False") default her_ev_handjob_public_t6_e3 = Event(id="her_ev_handjob_public_t6_e3", label="hg_pr_handjob_T6_E3", req="game.daytime==False") +default her_eventqueue_handjob_public = EventQueue() default her_ev_handjob_public_t1_to_t4 = Event(id="her_ev_handjob_public_t1_to_t4", label="hg_pr_handjob_fail", req="states.her.tier < 4", autoenqueue=True, autodequeue=False, queue="her_eventqueue_handjob_public") default her_ev_handjob_public_t4_e1_hub = Event(id="her_ev_handjob_public_t4_e1_hub", label="hg_pr_handjob", req="states.her.tier == 4", autoenqueue=True, autodequeue=False, queue="her_eventqueue_handjob_public", subevents=["her_ev_handjob_public_t4_e1"]) default her_ev_handjob_public_t4_e2_hub = Event(id="her_ev_handjob_public_t4_e2_hub", label="hg_pr_handjob", req="states.her.tier == 4", autoenqueue=True, autodequeue=False, queue="her_eventqueue_handjob_public", subevents=["her_ev_handjob_public_t4_e2"]) @@ -129,6 +135,7 @@ default her_ev_blowjob_public_t6_e1 = Event(id="her_ev_blowjob_public_t6_e1", la default her_ev_blowjob_public_t6_e2 = Event(id="her_ev_blowjob_public_t6_e2", label="hg_pr_blowjob_T6_E2", req="game.daytime==False") default her_ev_blowjob_public_t6_e3 = Event(id="her_ev_blowjob_public_t6_e3", label="hg_pr_blowjob_T6_E3", req="game.daytime==False") +default her_eventqueue_blowjob_public = EventQueue() default her_ev_blowjob_public_t1_to_t5 = Event(id="her_ev_blowjob_public_t1_to_t5", label="hg_pr_blowjob_fail", req="states.her.tier < 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_blowjob_public") default her_ev_blowjob_public_t5_e1_hub = Event(id="her_ev_blowjob_public_t5_e1_hub", label="hg_pr_blowjob", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_blowjob_public", subevents=["her_ev_blowjob_public_t5_e1"]) default her_ev_blowjob_public_t5_e2_hub = Event(id="her_ev_blowjob_public_t5_e2_hub", label="hg_pr_blowjob", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_blowjob_public", subevents=["her_ev_blowjob_public_t5_e2"]) @@ -142,6 +149,7 @@ default her_ev_sex_public_t6_e2 = Event(id="her_ev_sex_public_t6_e2", label="hg_ default her_ev_sex_public_t6_e3 = Event(id="her_ev_sex_public_t6_e3", label="hg_pr_sex_T6_E3", req="game.daytime==False") default her_ev_sex_public_t6_e4 = Event(id="her_ev_sex_public_t6_e4", label="hg_pr_sex_T6_E4", req="game.daytime==False") +default her_eventqueue_sex_public = EventQueue() default her_ev_sex_public_t1_to_t6 = Event(id="her_ev_sex_public_t1_to_t6", label="hg_pr_sex_fail", req="states.her.tier < 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_sex_public") default her_ev_sex_public_t6_e1_hub = Event(id="her_ev_sex_public_t6_e1_hub", label="hg_pr_sex", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, repeat=False, queue="her_eventqueue_sex_public", subevents=["her_ev_sex_public_t6_e1", "her_ev_sex_public_t6_e2"]) default her_ev_sex_public_t6_e2_hub = Event(id="her_ev_sex_public_t6_e2_hub", label="hg_pr_sex", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_sex_public", subevents=["her_ev_sex_public_t6_e3"]) @@ -155,6 +163,7 @@ default her_ev_cumslut_public_t6_e2 = Event(id="her_ev_cumslut_public_t6_e2", la default her_ev_cumslut_public_t6_e3 = Event(id="her_ev_cumslut_public_t6_e3", label="hg_pr_cumslut_T6_return", req="game.daytime==False") default her_ev_cumslut_public_t6_e4 = Event(id="her_ev_cumslut_public_t6_e4", label="hg_pr_cumslut_T6_return", req="game.daytime==False") +default her_eventqueue_cumslut_public = EventQueue() default her_ev_cumslut_public_t1_to_t5 = Event(id="her_ev_cumslut_public_t1_to_t5", label="hg_pr_cumslut_fail", req="states.her.tier < 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public") default her_ev_cumslut_public_t5_e1_hub = Event(id="her_ev_cumslut_public_t5_e1_hub", label="hg_pr_cumslut", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e1"]) default her_ev_cumslut_public_t5_e2_hub = Event(id="her_ev_cumslut_public_t5_e2_hub", label="hg_pr_cumslut", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e2"]) diff --git a/game/scripts/characters/luna/favors.rpy b/game/scripts/characters/luna/favors.rpy index a5c3436f..9d4ed72a 100644 --- a/game/scripts/characters/luna/favors.rpy +++ b/game/scripts/characters/luna/favors.rpy @@ -1,4 +1,4 @@ - +default lun_eventqueue_talk_to_me = EventQueue() default lun_ev_talk_to_me_t1_e1 = Event(id="lun_ev_talk_to_me_t1_e1", label="ll_pf_talk_T1_E1_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_talk_to_me_t1_e2 = Event(id="lun_ev_talk_to_me_t1_e2", label="ll_pf_talk_T1_E2_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_talk_to_me_t1_e3 = Event(id="lun_ev_talk_to_me_t1_e3", label="ll_pf_talk_T1_E3_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) @@ -7,6 +7,7 @@ default lun_ev_talk_to_me_t2_e1 = Event(id="lun_ev_talk_to_me_t2_e1", label="ll_ default lun_ev_talk_to_me_t3_e1 = Event(id="lun_ev_talk_to_me_t3_e1", label="ll_pf_talk_T3_E1_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) default lun_ev_talk_to_me_t4_e1 = Event(id="lun_ev_talk_to_me_t4_e1", label="ll_pf_talk_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) +default lun_eventqueue_inspect_her_body = EventQueue() default lun_ev_inspect_her_body_t2_e1 = Event(id="lun_ev_inspect_her_body_t2_e1", label="ll_pf_inspect_T2_E1_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_inspect_her_body_t2_e2 = Event(id="lun_ev_inspect_her_body_t2_e2", label="ll_pf_inspect_T2_E2_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_inspect_her_body_t2_e3 = Event(id="lun_ev_inspect_her_body_t2_e3", label="ll_pf_inspect_T2_E3_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) @@ -14,12 +15,14 @@ default lun_ev_inspect_her_body_t2_e4 = Event(id="lun_ev_inspect_her_body_t2_e4" default lun_ev_inspect_her_body_t3_e1 = Event(id="lun_ev_inspect_her_body_t3_e1", label="ll_pf_inspect_T3_E1_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) default lun_ev_inspect_her_body_t4_e1 = Event(id="lun_ev_inspect_her_body_t4_e1", label="ll_pf_inspect_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) +default lun_eventqueue_play_with_yourself = EventQueue() default lun_ev_play_with_yourself_t3_e1 = Event(id="lun_ev_play_with_yourself_t3_e1", label="ll_pf_masturbate_T3_E1_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_play_with_yourself_t3_e2 = Event(id="lun_ev_play_with_yourself_t3_e2", label="ll_pf_masturbate_T3_E2_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_play_with_yourself_t3_e3 = Event(id="lun_ev_play_with_yourself_t3_e3", label="ll_pf_masturbate_T3_E3_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_play_with_yourself_t3_e4 = Event(id="lun_ev_play_with_yourself_t3_e4", label="ll_pf_masturbate_T3_E4_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) default lun_ev_play_with_yourself_t4_e1 = Event(id="lun_ev_play_with_yourself_t4_e1", label="ll_pf_masturbate_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) +default lun_eventqueue_blowjob = EventQueue() default lun_ev_blowjob_t4_e1 = Event(id="lun_ev_blowjob_t4_e1", label="ll_pf_blowjob_T4_E1_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_blowjob_t4_e2 = Event(id="lun_ev_blowjob_t4_e2", label="ll_pf_blowjob_T4_E2_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_blowjob_t4_e3 = Event(id="lun_ev_blowjob_t4_e3", label="ll_pf_blowjob_T4_E3_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) diff --git a/game/scripts/characters/snape/hangouts.rpy b/game/scripts/characters/snape/hangouts.rpy index 32b3b5c1..0481f385 100644 --- a/game/scripts/characters/snape/hangouts.rpy +++ b/game/scripts/characters/snape/hangouts.rpy @@ -1,8 +1,9 @@ - +default sna_eventqueue_hangouts_drinking = EventQueue() default sna_ev_hangouts_wine_e1 = Event(id="sna_ev_hangouts_wine_e1", label="ss_he_wine_intro", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_drinking") default sna_ev_hangouts_wine_e2 = Event(id="sna_ev_hangouts_wine_e2", label="ss_he_wine_repeat", autoenqueue=True, autodequeue=False, queue="sna_eventqueue_hangouts_drinking") default sna_ev_hangouts_wine_e3 = Event(id="sna_ev_hangouts_wine_e3", label="ss_he_wine_intro_E2", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_drinking") +default sna_eventqueue_hangouts_stories = EventQueue() default sna_ev_hangouts_stories_e1 = Event(id="sna_ev_hangouts_stories_e1", label="ss_he_story_E1", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") default sna_ev_hangouts_stories_e2 = Event(id="sna_ev_hangouts_stories_e2", label="ss_he_story_intro_E2", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") default sna_ev_hangouts_stories_e3 = Event(id="sna_ev_hangouts_stories_e3", label="ss_he_story_intro_E3", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") @@ -17,4 +18,4 @@ default sna_ev_hangouts_stories_e11 = Event(id="sna_ev_hangouts_stories_e11", la default sna_ev_hangouts_stories_e12 = Event(id="sna_ev_hangouts_stories_e12", label="ss_he_story_intro_E12", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") default sna_ev_hangouts_stories_e13 = Event(id="sna_ev_hangouts_stories_e13", label="ss_he_story_intro_E13", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") default sna_ev_hangouts_stories_e14 = Event(id="sna_ev_hangouts_stories_e14", label="ss_he_story_E14", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") -default sna_ev_hangouts_stories_e15 = Event(id="sna_ev_hangouts_stories_e15", label="ss_he_story_intro_E15", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") \ No newline at end of file +default sna_ev_hangouts_stories_e15 = Event(id="sna_ev_hangouts_stories_e15", label="ss_he_story_intro_E15", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") diff --git a/game/scripts/characters/tonks/hangouts.rpy b/game/scripts/characters/tonks/hangouts.rpy index 2c732a93..cd767b3d 100644 --- a/game/scripts/characters/tonks/hangouts.rpy +++ b/game/scripts/characters/tonks/hangouts.rpy @@ -1,4 +1,4 @@ - +default ton_eventqueue_hangouts_drinking = EventQueue() default ton_ev_hangouts_wine_intro = Event(id="ton_ev_hangouts_wine_intro", label="nt_he_wine_intro", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") default ton_ev_hangouts_firewhisky_intro = Event(id="ton_ev_hangouts_firewhisky_intro", label="nt_he_firewhisky_intro", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") default ton_ev_hangouts_firewhisky_e1 = Event(id="ton_ev_hangouts_firewhisky_e1", label="nt_he_firewhisky_E1", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") @@ -6,6 +6,7 @@ default ton_ev_hangouts_firewhisky_e2 = Event(id="ton_ev_hangouts_firewhisky_e2" default ton_ev_hangouts_firewhisky_e3 = Event(id="ton_ev_hangouts_firewhisky_e3", label="nt_he_firewhisky_E3", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") default ton_ev_hangouts_firewhisky_e4 = Event(id="ton_ev_hangouts_firewhisky_e4", label="nt_he_firewhisky_E4", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") +default ton_eventqueue_hangouts_story = EventQueue() default ton_ev_hangouts_story_e1 = Event(id="ton_ev_hangouts_story_e1", label="nt_he_story_intro_E1", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_story") default ton_ev_hangouts_story_e2 = Event(id="ton_ev_hangouts_story_e2", label="nt_he_story_intro_E2", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_story") default ton_ev_hangouts_story_e3 = Event(id="ton_ev_hangouts_story_e3", label="nt_he_story_intro_E3", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_story") diff --git a/game/scripts/characters/tonks/requests.rpy b/game/scripts/characters/tonks/requests.rpy index 21db5bec..0c927a44 100644 --- a/game/scripts/characters/tonks/requests.rpy +++ b/game/scripts/characters/tonks/requests.rpy @@ -1,9 +1,9 @@ - default ton_ev_detention_t1_e1 = Event(id="ton_ev_detention_t1_e1", label="nt_pr_teach_T1_E1", req="game.daytime==False") default ton_ev_detention_t1_e2 = Event(id="ton_ev_detention_t1_e2", label="nt_pr_teach_T1_E2", req="game.daytime==False") default ton_ev_detention_t1_e3 = Event(id="ton_ev_detention_t1_e3", label="nt_pr_teach_T1_E3", req="game.daytime==False") default ton_ev_detention_t1_e4 = Event(id="ton_ev_detention_t1_e4", label="nt_pr_teach_T1_E4", req="game.daytime==False") +default ton_eventqueue_detention = EventQueue() default ton_ev_detention_t1_e1_hub = Event(id="ton_ev_detention_t1_e1_hub", label="nt_pr_teach_start", req="states.ton.tier==1", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_detention", subevents=["ton_ev_detention_t1_e1"]) default ton_ev_detention_t1_e2_hub = Event(id="ton_ev_detention_t1_e2_hub", label="nt_pr_teach_start", req="states.ton.tier==1", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_detention", subevents=["ton_ev_detention_t1_e2"]) default ton_ev_detention_t1_e3_hub = Event(id="ton_ev_detention_t1_e3_hub", label="nt_pr_teach_start", req="states.ton.tier==1", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_detention", subevents=["ton_ev_detention_t1_e3"]) @@ -24,6 +24,7 @@ default ton_ev_grope_t2_e2 = Event(id="ton_ev_grope_t2_e2", label="nt_pr_grope_T default ton_ev_grope_t2_e3 = Event(id="ton_ev_grope_t2_e3", label="nt_pr_grope_T2_E3", req="game.daytime==False") default ton_ev_grope_t2_e4 = Event(id="ton_ev_grope_t2_e4", label="nt_pr_grope_T2_E4", req="game.daytime==False") +default ton_eventqueue_grope = EventQueue() default ton_ev_grope_t2_e1_hub = Event(id="ton_ev_grope_t2_e1_hub", label="nt_pr_grope_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_grope", subevents=["ton_ev_grope_t2_e1"]) default ton_ev_grope_t2_e2_hub = Event(id="ton_ev_grope_t2_e2_hub", label="nt_pr_grope_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_grope", subevents=["ton_ev_grope_t2_e2"]) default ton_ev_grope_t2_e3_hub = Event(id="ton_ev_grope_t2_e3_hub", label="nt_pr_grope_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_grope", subevents=["ton_ev_grope_t2_e3"]) @@ -34,6 +35,7 @@ default ton_ev_oral_t2_e2 = Event(id="ton_ev_oral_t2_e2", label="nt_pr_kiss_T2_E default ton_ev_oral_t2_e3 = Event(id="ton_ev_oral_t2_e3", label="nt_pr_kiss_T2_E3", req="game.daytime==False") default ton_ev_oral_t2_e4 = Event(id="ton_ev_oral_t2_e4", label="nt_pr_kiss_T2_E4", req="game.daytime==False") +default ton_eventqueue_oral = EventQueue() default ton_ev_oral_t2_e1_hub = Event(id="ton_ev_oral_t2_e1_hub", label="nt_pr_kiss_start", req="states.ton.tier>=2", repeat=False, autoenqueue=True, autodequeue=False, queue="ton_eventqueue_oral", subevents=["ton_ev_oral_t2_e1"]) default ton_ev_oral_t2_e2_hub = Event(id="ton_ev_oral_t2_e2_hub", label="nt_pr_kiss_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_oral", subevents=["ton_ev_oral_t2_e2"]) default ton_ev_oral_t2_e3_hub = Event(id="ton_ev_oral_t2_e3_hub", label="nt_pr_kiss_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_oral", subevents=["ton_ev_oral_t2_e3"]) @@ -45,4 +47,4 @@ define tonks_requests = [ ("ton_eventqueue_oral", "Oral practice!"), ] -# Idea for "blowjob pr" name: "Stress Mitigation." \ No newline at end of file +# Idea for "blowjob pr" name: "Stress Mitigation." diff --git a/game/scripts/events/queue.rpy b/game/scripts/events/queue.rpy index 070aa351..87bbb617 100644 --- a/game/scripts/events/queue.rpy +++ b/game/scripts/events/queue.rpy @@ -180,9 +180,6 @@ init -1 python: def queue(self, name): self._queue = name - if name is not None and not hasattr(store, name): - setattr(store, name, EventQueue(name)) - def enqueue(self, queue=None): if queue: queue = getattr(store, queue).queue From 1bd428a0d8810f12b5e9c1b9ca1e076207a11950 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 30 Mar 2024 17:18:54 +0100 Subject: [PATCH 228/249] Avoid mutable objects in signature (cherry picked from commit 31ebf9356acc8d4db7a66a8640196bc54ac0e456) --- game/scripts/events/queue.rpy | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/game/scripts/events/queue.rpy b/game/scripts/events/queue.rpy index 87bbb617..cffe1ce3 100644 --- a/game/scripts/events/queue.rpy +++ b/game/scripts/events/queue.rpy @@ -74,7 +74,7 @@ init -1 python: if ev.completed: if ev.repeat: repeatable.append(ev) - + continue return ev @@ -120,8 +120,9 @@ init -1 python: _queue = None _parent = None - def __init__(self, id, wait=0, priority=5, daytime=None, req=None, label=None, func=None, queue="eventqueue", autoenqueue=False, autodequeue=True, - repeat=True, fail_suffixes=("_fail", "too_much", "too_much_public"), ignore_labels=[], subevents=[], disabled=False): + def __init__(self, id, + wait=0, priority=5, daytime=None, req=None, label=None, func=None, queue="eventqueue", autoenqueue=False, autodequeue=True, + repeat=True, fail_suffixes=("_fail", "too_much", "too_much_public"), ignore_labels=(), subevents=(), disabled=False): self.id = id self.wait = wait self.priority = priority @@ -134,8 +135,8 @@ init -1 python: self.autodequeue = autodequeue self.repeat = repeat self.fail_suffixes = tuple(fail_suffixes) - self.ignore_labels = ignore_labels - self.subevents = subevents + self.ignore_labels = list(ignore_labels) + self.subevents = list(subevents) self.disabled = disabled for ev in subevents: From cd6de9aa8cf7edc9fe9c61164e1daeb0061fef57 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 30 Mar 2024 17:33:28 +0100 Subject: [PATCH 229/249] Remove the last setattr on the store benign in this case since the variable is builtin, but consistency and good practices (cherry picked from commit 1d1d18ad1c44846a5736007bc80404c50ad42ed6) --- game/scripts/utility/common_functions.rpy | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index 964e7543..eac3453e 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -119,10 +119,12 @@ init python early: renpy.execute_default_statement(False) def disable_game_menu(): - setattr(renpy.store, "_game_menu_screen", None) + global _game_menu_screen + _game_menu_screen = None def enable_game_menu(): - setattr(renpy.store, "_game_menu_screen", "save_screen") + global _game_menu_screen + _game_menu_screen = "save_screen" def make_revertable(obj): if isinstance(obj, _list): From 7e4d4a67991cd4a02cd72213eddfb4ff7220be34 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 30 Mar 2024 17:53:00 +0100 Subject: [PATCH 230/249] Fix (cherry picked from commit 218d8c63d22997695a1a7e0b9f43c06ddc5fcc34) --- game/scripts/characters/astoria/spells.rpy | 4 ++-- game/scripts/characters/cho/favors.rpy | 6 ++--- game/scripts/characters/cho/requests.rpy | 8 +++---- .../hermione/events/odd_jobs/init.rpy | 6 ++--- game/scripts/characters/hermione/favors.rpy | 22 +++++++++---------- game/scripts/characters/hermione/requests.rpy | 18 +++++++-------- game/scripts/characters/luna/favors.rpy | 8 +++---- game/scripts/characters/snape/hangouts.rpy | 4 ++-- game/scripts/characters/tonks/hangouts.rpy | 4 ++-- game/scripts/characters/tonks/requests.rpy | 6 ++--- 10 files changed, 43 insertions(+), 43 deletions(-) diff --git a/game/scripts/characters/astoria/spells.rpy b/game/scripts/characters/astoria/spells.rpy index 4260f894..8b1498f8 100644 --- a/game/scripts/characters/astoria/spells.rpy +++ b/game/scripts/characters/astoria/spells.rpy @@ -6,14 +6,14 @@ default ast_ev_imperio_training_t1_e3 = Event(id="ast_ev_imperio_training_t1_e3" default ast_ev_imperio_training_t1_e4 = Event(id="ast_ev_imperio_training_t1_e4", label="ag_st_imperio_E4", req="game.daytime==False") default ast_ev_imperio_training_t1_e5 = Event(id="ast_ev_imperio_training_t1_e5", label="ag_st_imperio_E5", req="game.daytime==False") -default ast_eventqueue_imperio_training_tonks = EventQueue() +default ast_eventqueue_imperio_training_tonks = EventQueue("ast_eventqueue_imperio_training_tonks") default ast_ev_imperio_training_t1_e1_hub = Event(id="ast_ev_imperio_training_t1_e1_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e1"]) default ast_ev_imperio_training_t1_e2_hub = Event(id="ast_ev_imperio_training_t1_e2_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e2"]) default ast_ev_imperio_training_t1_e3_hub = Event(id="ast_ev_imperio_training_t1_e3_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e3"]) default ast_ev_imperio_training_t1_e4_hub = Event(id="ast_ev_imperio_training_t1_e4_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e4"]) default ast_ev_imperio_training_t1_e5_hub = Event(id="ast_ev_imperio_training_t1_e5_hub", label="ag_st_imperio", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_tonks", autoenqueue=True, autodequeue=False, subevents=["ast_ev_imperio_training_t1_e5"]) -default ast_eventqueue_imperio_training_susan = EventQueue() +default ast_eventqueue_imperio_training_susan = EventQueue("ast_eventqueue_imperio_training_susan") default ast_ev_imperio_training_susan_t1_e1 = Event(id="ast_ev_imperio_training_susan_t1_e1", label="ag_se_imperio_sb_E1", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_susan", autoenqueue=True, autodequeue=False) default ast_ev_imperio_training_susan_t1_e2 = Event(id="ast_ev_imperio_training_susan_t1_e2", label="ag_se_imperio_sb_E2", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_susan", autoenqueue=True, autodequeue=False) default ast_ev_imperio_training_susan_t1_e3 = Event(id="ast_ev_imperio_training_susan_t1_e3", label="ag_se_imperio_sb_E3", req="states.ast.tier >= 1", queue="ast_eventqueue_imperio_training_susan", autoenqueue=True, autodequeue=False) diff --git a/game/scripts/characters/cho/favors.rpy b/game/scripts/characters/cho/favors.rpy index 9ebb3b8c..a0e28a62 100644 --- a/game/scripts/characters/cho/favors.rpy +++ b/game/scripts/characters/cho/favors.rpy @@ -1,4 +1,4 @@ -default cho_eventqueue_talk_to_me = EventQueue() +default cho_eventqueue_talk_to_me = EventQueue("cho_eventqueue_talk_to_me") default cho_ev_talk_to_me_t1_e1 = Event(id="cho_ev_talk_to_me_t1_e1", label="cc_pf_talk_T1_intro_E1", req="states.cho.tier == 1", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_talk_to_me_t1_e2 = Event(id="cho_ev_talk_to_me_t1_e2", label="cc_pf_talk_T1_intro_E2", req="states.cho.tier == 1", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_talk_to_me_t1_e3 = Event(id="cho_ev_talk_to_me_t1_e3", label="cc_pf_talk_T1_E3", req="states.cho.tier == 1", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) @@ -9,7 +9,7 @@ default cho_ev_talk_to_me_t3_e1 = Event(id="cho_ev_talk_to_me_t3_e1", label="cc_ default cho_ev_talk_to_me_t3_e2 = Event(id="cho_ev_talk_to_me_t3_e2", label="cc_pf_talk_T3_intro_E2", req="states.cho.tier >= 3", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_talk_to_me_t3_e3 = Event(id="cho_ev_talk_to_me_t3_e3", label="cc_pf_talk_T3_E3", req="states.cho.tier >= 3", queue="cho_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) -default cho_eventqueue_inspect_her_body = EventQueue() +default cho_eventqueue_inspect_her_body = EventQueue("cho_eventqueue_inspect_her_body") default cho_ev_inspect_her_body_t2_e1 = Event(id="cho_ev_inspect_her_body_t2_e1", label="cc_pf_strip_T2_intro_E1", req="states.cho.tier == 2", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_inspect_her_body_t2_e2 = Event(id="cho_ev_inspect_her_body_t2_e2", label="cc_pf_strip_T2_intro_E2", req="states.cho.tier == 2", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_inspect_her_body_t2_e3 = Event(id="cho_ev_inspect_her_body_t2_e3", label="cc_pf_strip_T2_intro_E3", req="states.cho.tier == 2", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["cc_pf_strip_T2_E3_fail_repeat", "cc_pf_strip_T2_E3_fail"]) @@ -19,7 +19,7 @@ default cho_ev_inspect_her_body_t3_e2 = Event(id="cho_ev_inspect_her_body_t3_e2" default cho_ev_inspect_her_body_t3_e3 = Event(id="cho_ev_inspect_her_body_t3_e3", label="cc_pf_strip_T3_intro_E3", req="states.cho.tier >= 3", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default cho_ev_inspect_her_body_t3_e4 = Event(id="cho_ev_inspect_her_body_t3_e4", label="cc_pf_strip_T3_repeat", req="states.cho.tier >= 3", queue="cho_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) -default cho_eventqueue_suck_it = EventQueue() +default cho_eventqueue_suck_it = EventQueue("cho_eventqueue_suck_it") default cho_ev_suck_it_t3_e1 = Event(id="cho_ev_suck_it_t3_e1", label="cc_pf_blowjob_T3_intro_E1", req="states.cho.tier >= 3", queue="cho_eventqueue_suck_it", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["cc_pf_blowjob_1"]) default cho_ev_suck_it_t3_e2 = Event(id="cho_ev_suck_it_t3_e2", label="cc_pf_blowjob_T3_E2", req="states.cho.tier >= 3", queue="cho_eventqueue_suck_it", autoenqueue=True, autodequeue=False) default cho_ev_suck_it_t3_e3 = Event(id="cho_ev_suck_it_t3_e3", label="cc_pf_blowjob_T3_E3", req="states.cho.tier >= 3", queue="cho_eventqueue_suck_it", autoenqueue=True, autodequeue=False) diff --git a/game/scripts/characters/cho/requests.rpy b/game/scripts/characters/cho/requests.rpy index 093e46e1..7b6f4cce 100644 --- a/game/scripts/characters/cho/requests.rpy +++ b/game/scripts/characters/cho/requests.rpy @@ -2,7 +2,7 @@ default cho_ev_spy_on_boys_t3_e1 = Event(id="cho_ev_spy_on_boys_t3_e1", label="c default cho_ev_spy_on_boys_t3_e2 = Event(id="cho_ev_spy_on_boys_t3_e2", label="cc_pr_spy_boys_T3_ron", req="game.daytime==False") default cho_ev_spy_on_boys_t3_e3 = Event(id="cho_ev_spy_on_boys_t3_e3", label="cc_pr_spy_boys_T3_harry", req="game.daytime==False") -default cho_eventqueue_spy_on_boys = EventQueue() +default cho_eventqueue_spy_on_boys = EventQueue("cho_eventqueue_spy_on_boys") default cho_ev_spy_on_boys_t3_e1_hub = Event(id="cho_ev_spy_on_boys_t3_e1_hub", label="cc_pr_spy_boys_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_boys_t3_e1"]) default cho_ev_spy_on_boys_t3_e2_hub = Event(id="cho_ev_spy_on_boys_t3_e2_hub", label="cc_pr_spy_boys_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_boys_t3_e2"]) default cho_ev_spy_on_boys_t3_e3_hub = Event(id="cho_ev_spy_on_boys_t3_e3_hub", label="cc_pr_spy_boys_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_boys_t3_e3"]) @@ -12,7 +12,7 @@ default cho_ev_spy_on_girls_t3_e2 = Event(id="cho_ev_spy_on_girls_t3_e2", label= default cho_ev_spy_on_girls_t3_e3 = Event(id="cho_ev_spy_on_girls_t3_e3", label="cc_pr_spy_girls_T3_katie", req="game.daytime==False") default cho_ev_spy_on_girls_t3_e4 = Event(id="cho_ev_spy_on_girls_t3_e4", label="cc_pr_spy_girls_T3_angelina", req="game.daytime==False") -default cho_eventqueue_spy_on_girls = EventQueue() +default cho_eventqueue_spy_on_girls = EventQueue("cho_eventqueue_spy_on_girls") default cho_ev_spy_on_girls_t3_e1_hub = Event(id="cho_ev_spy_on_girls_t3_e1_hub", label="cc_pr_spy_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_girls_t3_e1"]) default cho_ev_spy_on_girls_t3_e2_hub = Event(id="cho_ev_spy_on_girls_t3_e2_hub", label="cc_pr_spy_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_girls_t3_e2"]) default cho_ev_spy_on_girls_t3_e3_hub = Event(id="cho_ev_spy_on_girls_t3_e3_hub", label="cc_pr_spy_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_spy_on_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_spy_on_girls_t3_e3"]) @@ -31,7 +31,7 @@ default cho_ev_manipulate_boys_t3_e1 = Event(id="cho_ev_manipulate_boys_t3_e1", default cho_ev_manipulate_boys_t3_e2 = Event(id="cho_ev_manipulate_boys_t3_e2", label="cc_pr_manipulate_boys_T3_ron", req="game.daytime==False") default cho_ev_manipulate_boys_t3_e3 = Event(id="cho_ev_manipulate_boys_t3_e3", label="cc_pr_manipulate_boys_T3_harry", req="game.daytime==False") -default cho_eventqueue_manipulate_boys = EventQueue() +default cho_eventqueue_manipulate_boys = EventQueue("cho_eventqueue_manipulate_boys") default cho_ev_manipulate_boys_t1_e1_hub = Event(id="cho_ev_manipulate_boys_t1_e1_hub", label="cc_pr_manipulate_boys_start", req="states.cho.tier == 1", queue="cho_eventqueue_manipulate_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_boys_t1_e1"]) default cho_ev_manipulate_boys_t1_e2_hub = Event(id="cho_ev_manipulate_boys_t1_e2_hub", label="cc_pr_manipulate_boys_start", req="states.cho.tier == 1", queue="cho_eventqueue_manipulate_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_boys_t1_e2"]) default cho_ev_manipulate_boys_t1_e3_hub = Event(id="cho_ev_manipulate_boys_t1_e3_hub", label="cc_pr_manipulate_boys_start", req="states.cho.tier == 1", queue="cho_eventqueue_manipulate_boys", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_boys_t1_e3"]) @@ -50,7 +50,7 @@ default cho_ev_manipulate_girls_t3_e2 = Event(id="cho_ev_manipulate_girls_t3_e2" default cho_ev_manipulate_girls_t3_e3 = Event(id="cho_ev_manipulate_girls_t3_e3", label="cc_pr_manipulate_girls_T3_katie_part2", req="game.daytime==False") default cho_ev_manipulate_girls_t3_e4 = Event(id="cho_ev_manipulate_girls_t3_e4", label="cc_pr_manipulate_girls_T3_angelina", req="game.daytime==False") -default cho_eventqueue_manipulate_girls = EventQueue() +default cho_eventqueue_manipulate_girls = EventQueue("cho_eventqueue_manipulate_girls") default cho_ev_manipulate_girls_t3_e1_hub = Event(id="cho_ev_manipulate_girls_t3_e1_hub", label="cc_pr_manipulate_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_manipulate_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_girls_t3_e1"]) default cho_ev_manipulate_girls_t3_e2_hub = Event(id="cho_ev_manipulate_girls_t3_e2_hub", label="cc_pr_manipulate_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_manipulate_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_girls_t3_e2"]) default cho_ev_manipulate_girls_t3_e3_hub = Event(id="cho_ev_manipulate_girls_t3_e3_hub", label="cc_pr_manipulate_girls_start", req="states.cho.tier == 3", queue="cho_eventqueue_manipulate_girls", autoenqueue=True, autodequeue=False, subevents=["cho_ev_manipulate_girls_t3_e3"]) diff --git a/game/scripts/characters/hermione/events/odd_jobs/init.rpy b/game/scripts/characters/hermione/events/odd_jobs/init.rpy index 4dd1384d..2202c7b1 100644 --- a/game/scripts/characters/hermione/events/odd_jobs/init.rpy +++ b/game/scripts/characters/hermione/events/odd_jobs/init.rpy @@ -1,14 +1,14 @@ init offset = 5 default her_ev_maid_job_return = Event(id="her_ev_maid_job_return", label="her_maid_job_return", priority=5, req="not game.daytime") -default her_eventqueue_jobs_maid = EventQueue() +default her_eventqueue_jobs_maid = EventQueue("her_eventqueue_jobs_maid") default her_ev_maid_job_hub = Event(id="her_ev_maid_job_hub", label="her_maid_job", priority=5, req="her_outfit_maid.unlocked", repeat=True, autoenqueue=True, autodequeue=False, queue="her_eventqueue_jobs_maid", subevents=["her_ev_maid_job_return"]) default her_ev_promoter_job_return = Event(id="her_ev_promoter_job_return", label="her_promoter_job_return", priority=5, req="not game.daytime") -default her_eventqueue_jobs_promoter = EventQueue() +default her_eventqueue_jobs_promoter = EventQueue("her_eventqueue_jobs_promoter") default her_ev_promoter_job_hub = Event(id="her_ev_promoter_job_hub", label="her_promoter_job", priority=5, req="states.her.ev.promote_cardgame.offered and poker_outfit_ITEM.unlocked", repeat=True, autoenqueue=True, autodequeue=False, queue="her_eventqueue_jobs_promoter", subevents=["her_ev_promoter_job_return"]) -default her_eventqueue_panty_thief = EventQueue() +default her_eventqueue_panty_thief = EventQueue("her_eventqueue_panty_thief") default her_ev_panty_thief_t1_e1 = Event(id="her_ev_panty_thief_t1_e1", label="hg_pr_panty_thief_T1_E1", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_panty_thief") default her_ev_panty_thief_t2_e1 = Event(id="her_ev_panty_thief_t2_e1", label="hg_pr_panty_thief_T2_E1", req="states.her.tier == 2", autoenqueue=True, autodequeue=False, queue="her_eventqueue_panty_thief") default her_ev_panty_thief_t3_e1 = Event(id="her_ev_panty_thief_t3_e1", label="hg_pr_panty_thief_e1_return", req="game.daytime==False") diff --git a/game/scripts/characters/hermione/favors.rpy b/game/scripts/characters/hermione/favors.rpy index 1a38e5a2..3f68cf37 100644 --- a/game/scripts/characters/hermione/favors.rpy +++ b/game/scripts/characters/hermione/favors.rpy @@ -1,4 +1,4 @@ -default her_eventqueue_talk_to_me = EventQueue() +default her_eventqueue_talk_to_me = EventQueue("her_eventqueue_talk_to_me") default her_ev_talk_to_me_t1_e1 = Event(id="her_ev_talk_to_me_t1_e1", label="hg_pf_talk_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk"]) default her_ev_talk_to_me_t1_e2 = Event(id="her_ev_talk_to_me_t1_e2", label="hg_pf_talk_T1_E1", priority=6, req="states.her.tier == 1", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk"]) default her_ev_talk_to_me_t2_e1 = Event(id="her_ev_talk_to_me_t2_e1", label="hg_pf_talk_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk"]) @@ -7,11 +7,11 @@ default her_ev_talk_to_me_t3_e1 = Event(id="her_ev_talk_to_me_t3_e1", label="hg_ default her_ev_talk_to_me_t3_e2 = Event(id="her_ev_talk_to_me_t3_e2", label="hg_pf_talk_T3_intro_E2", priority=6, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1"]) default her_ev_talk_to_me_t3_e3 = Event(id="her_ev_talk_to_me_t3_e3", label="hg_pf_talk_T3_repeat", priority=7, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_talk", "hg_pf_talk_tonks_T3_intro_E1", "hg_pf_talk_tonks_T3_E1"]) -default her_eventqueue_talk_to_me_tonks = EventQueue() +default her_eventqueue_talk_to_me_tonks = EventQueue("her_eventqueue_talk_to_me_tonks") default her_ev_talk_to_me_tonks_t3_e1 = Event(id="her_ev_talk_to_me_tonks_t3_e1", label="hg_pf_talk_tonks_T3_intro_E1", priority=5, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me_tonks", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_talk_to_me_tonks_t3_e2 = Event(id="her_ev_talk_to_me_tonks_t3_e2", label="hg_pf_talk_tonks_T3_E1", priority=6, req="states.her.tier >= 3", queue="her_eventqueue_talk_to_me_tonks", autoenqueue=True, autodequeue=False) -default her_eventqueue_admire_panties = EventQueue() +default her_eventqueue_admire_panties = EventQueue("her_eventqueue_admire_panties") default her_ev_admire_panties_t1_e1 = Event(id="her_ev_admire_panties_t1_e1", label="hg_pf_admire_panties_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties"]) default her_ev_admire_panties_t1_e2 = Event(id="her_ev_admire_panties_t1_e2", label="hg_pf_admire_panties_T1_E1", priority=6, req="states.her.tier == 1", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) default her_ev_admire_panties_t2_e1 = Event(id="her_ev_admire_panties_t2_e1", label="hg_pf_admire_panties_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_panties"]) @@ -22,7 +22,7 @@ default her_ev_admire_panties_t4_e1 = Event(id="her_ev_admire_panties_t4_e1", la default her_ev_admire_panties_t4_e2 = Event(id="her_ev_admire_panties_t4_e2", label="hg_pf_admire_panties_T4_E1", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) default her_ev_admire_panties_t4_e3 = Event(id="her_ev_admire_panties_t4_e3", label="hg_pf_admire_panties_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_admire_panties", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_panties"]) -default her_eventqueue_admire_breasts = EventQueue() +default her_eventqueue_admire_breasts = EventQueue("her_eventqueue_admire_breasts") default her_ev_admire_breasts_t1_e1 = Event(id="her_ev_admire_breasts_t1_e1", label="hg_pf_admire_breasts_T1_intro_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts"]) default her_ev_admire_breasts_t1_e2 = Event(id="her_ev_admire_breasts_t1_e2", label="hg_pf_admire_breasts_T1_intro_E2", priority=6, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["end_hg_pf_admire_breasts"]) default her_ev_admire_breasts_t1_e3 = Event(id="her_ev_admire_breasts_t1_e3", label="hg_pf_admire_breasts_T1_E2", priority=7, req="states.her.tier == 1", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts"]) @@ -35,7 +35,7 @@ default her_ev_admire_breasts_t4_e1 = Event(id="her_ev_admire_breasts_t4_e1", la default her_ev_admire_breasts_t4_e2 = Event(id="her_ev_admire_breasts_t4_e2", label="hg_pf_admire_breasts_T4_E1", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T4"]) default her_ev_admire_breasts_t4_e3 = Event(id="her_ev_admire_breasts_t4_e3", label="hg_pf_admire_breasts_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_admire_breasts", autoenqueue=True, autodequeue=False, ignore_labels=["end_hg_pf_admire_breasts", "hg_pf_admire_breasts_T4"]) -default her_eventqueue_grope = EventQueue() +default her_eventqueue_grope = EventQueue("her_eventqueue_grope") default her_ev_grope_t1_e1 = Event(id="her_ev_grope_t1_e1", label="hg_pf_grope_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False) default her_ev_grope_t2_e1 = Event(id="her_ev_grope_t2_e1", label="hg_pf_grope_T2_intro_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_grope_breasts_T2", "hg_pf_grope_ass_T2", "hg_pf_grope_ass_T2_back", "hg_pf_grope_ass_T2_front", "hg_pf_grope_ass_T2_continue", "hg_pf_grope_breasts_T2_continue"]) default her_ev_grope_t2_e2 = Event(id="her_ev_grope_t2_e2", label="hg_pf_grope_T2_E1", priority=6, req="states.her.tier == 2", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_grope_breasts_T2", "hg_pf_grope_ass_T2", "hg_pf_grope_ass_T2_back", "hg_pf_grope_ass_T2_front", "hg_pf_grope_ass_T2_continue", "hg_pf_grope_breasts_T2_continue"]) @@ -45,7 +45,7 @@ default her_ev_grope_t4_e1 = Event(id="her_ev_grope_t4_e1", label="hg_pf_grope_T default her_ev_grope_t4_e2 = Event(id="her_ev_grope_t4_e2", label="hg_pf_grope_T4_intro_E2", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) default her_ev_grope_t4_e3 = Event(id="her_ev_grope_t4_e3", label="hg_pf_grope_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_grope", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_grope_breasts_T4", "hg_pf_grope_ass_T4", "hg_pf_grope_ass_T4_back", "hg_pf_grope_ass_T4_front", "hg_pf_grope_ass_T4_continue", "hg_pf_grope_breasts_T4_continue"]) -default her_eventqueue_strip_for_me = EventQueue() +default her_eventqueue_strip_for_me = EventQueue("her_eventqueue_strip_for_me") default her_ev_strip_for_me_t1_e1 = Event(id="her_ev_strip_for_me_t1_e1", label="hg_pf_strip_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False) default her_ev_strip_for_me_t2_e1 = Event(id="her_ev_strip_for_me_t2_e1", label="hg_pf_strip_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False) default her_ev_strip_for_me_t3_e1 = Event(id="her_ev_strip_for_me_t3_e1", label="hg_pf_strip_T3_intro_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False) @@ -55,7 +55,7 @@ default her_ev_strip_for_me_t4_e1 = Event(id="her_ev_strip_for_me_t4_e1", label= default her_ev_strip_for_me_t4_e2 = Event(id="her_ev_strip_for_me_t4_e2", label="hg_pf_strip_T4_intro_E2", priority=6, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) default her_ev_strip_for_me_t4_e3 = Event(id="her_ev_strip_for_me_t4_e3", label="hg_pf_strip_T4_E2", priority=7, req="states.her.tier >= 4", queue="her_eventqueue_strip_for_me", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_strip_T4", "hg_pf_strip_T4_snape", "hg_pf_strip_T4_masturbate", "hg_pf_strip_T4_watch", "hg_pf_strip_T4_fingering", "hg_pf_strip_T5_fingering", "hg_pf_strip_T6_fingering"]) -default her_eventqueue_handjob = EventQueue() +default her_eventqueue_handjob = EventQueue("her_eventqueue_handjob") default her_ev_handjob_t1_e1 = Event(id="her_ev_handjob_t1_e1", label="hg_pf_handjob_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False) default her_ev_handjob_t2_e1 = Event(id="her_ev_handjob_t2_e1", label="hg_pf_handjob_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False) default her_ev_handjob_t3_e1 = Event(id="her_ev_handjob_t3_e1", label="hg_pf_handjob_T3_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False) @@ -66,7 +66,7 @@ default her_ev_handjob_t5_e1 = Event(id="her_ev_handjob_t5_e1", label="hg_pf_han default her_ev_handjob_t5_e2 = Event(id="her_ev_handjob_t5_e2", label="hg_pf_handjob_T5_intro_E2", priority=6, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) default her_ev_handjob_t5_e3 = Event(id="her_ev_handjob_t5_e3", label="hg_pf_handjob_T5_repeat", priority=7, req="states.her.tier >= 5", queue="her_eventqueue_handjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_handjob_2", "hg_pf_handjob_2_cumming", "hg_pf_handjob_2_continue"]) -default her_eventqueue_titjob = EventQueue() +default her_eventqueue_titjob = EventQueue("her_eventqueue_titjob") default her_ev_titjob_t1_e1 = Event(id="her_ev_titjob_t1_e1", label="hg_pf_titjob_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False) default her_ev_titjob_t2_e1 = Event(id="her_ev_titjob_t2_e1", label="hg_pf_titjob_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False) default her_ev_titjob_t3_e1 = Event(id="her_ev_titjob_t3_e1", label="hg_pf_titjob_T3_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False) @@ -77,7 +77,7 @@ default her_ev_titjob_t6_e1 = Event(id="her_ev_titjob_t6_e1", label="hg_pf_titjo default her_ev_titjob_t6_e2 = Event(id="her_ev_titjob_t6_e2", label="hg_pf_titjob_T6_intro_E2", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, repeat=False, ignore_labels=["hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) default her_ev_titjob_t6_e3 = Event(id="her_ev_titjob_t6_e3", label="hg_pf_titjob_T6_repeat", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_titjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_titjob_2", "hg_pf_titjob_2_cumming", "hg_pf_titjob_2_continue"]) -default her_eventqueue_blowjob = EventQueue() +default her_eventqueue_blowjob = EventQueue("her_eventqueue_blowjob") default her_ev_blowjob_t1_e1 = Event(id="her_ev_blowjob_t1_e1", label="hg_pf_blowjob_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False) default her_ev_blowjob_t2_e1 = Event(id="her_ev_blowjob_t2_e1", label="hg_pf_blowjob_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False) default her_ev_blowjob_t3_e1 = Event(id="her_ev_blowjob_t3_e1", label="hg_pf_blowjob_T3_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False) @@ -89,7 +89,7 @@ default her_ev_blowjob_t6_e1 = Event(id="her_ev_blowjob_t6_e1", label="hg_pf_blo default her_ev_blowjob_t6_e2 = Event(id="her_ev_blowjob_t6_e2", label="hg_pf_blowjob_T6_hidden_repeat", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) default her_ev_blowjob_t6_e3 = Event(id="her_ev_blowjob_t6_e3", label="hg_pf_blowjob_T6_repeat", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_blowjob", autoenqueue=True, autodequeue=False, ignore_labels=["hg_pf_blowjob_1", "hg_pf_blowjob_2", "hg_pf_hidden_blowjob", "hg_hidden_blowjob_snape", "hg_hidden_blowjob_tonks", "hg_hidden_blowjob_luna", "hg_hidden_blowjob_cumming"]) -default her_eventqueue_sex = EventQueue() +default her_eventqueue_sex = EventQueue("her_eventqueue_sex") default her_ev_sex_t1_e1 = Event(id="her_ev_sex_t1_e1", label="hg_pf_sex_T1_E1", priority=5, req="states.her.tier == 1", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) default her_ev_sex_t2_e1 = Event(id="her_ev_sex_t2_e1", label="hg_pf_sex_T2_E1", priority=5, req="states.her.tier == 2", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) default her_ev_sex_t3_e1 = Event(id="her_ev_sex_t3_e1", label="hg_pf_sex_T3_E1", priority=5, req="states.her.tier == 3", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) @@ -100,7 +100,7 @@ default her_ev_sex_t6_e2 = Event(id="her_ev_sex_t6_e2", label="hg_pf_sex_T6_intr default her_ev_sex_t6_e3 = Event(id="her_ev_sex_t6_e3", label="hg_pf_sex_T6_intro_E3", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_sex_t6_e4 = Event(id="her_ev_sex_t6_e4", label="hg_pf_sex_T6_E3", priority=8, req="states.her.tier >= 6", queue="her_eventqueue_sex", autoenqueue=True, autodequeue=False) -default her_eventqueue_anal = EventQueue() +default her_eventqueue_anal = EventQueue("her_eventqueue_anal") default her_ev_anal_t6_e1 = Event(id="her_ev_anal_t6_e1", label="hg_anal_sex_1_intro", priority=5, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_anal_t6_e2 = Event(id="her_ev_anal_t6_e2", label="hg_anal_sex_2_intro", priority=6, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False, repeat=False) default her_ev_anal_t6_e3 = Event(id="her_ev_anal_t6_e3", label="hg_anal_sex_3", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False) diff --git a/game/scripts/characters/hermione/requests.rpy b/game/scripts/characters/hermione/requests.rpy index 91ac842b..a2fcd600 100644 --- a/game/scripts/characters/hermione/requests.rpy +++ b/game/scripts/characters/hermione/requests.rpy @@ -10,7 +10,7 @@ default her_ev_flirt_students_t3_e1 = Event(id="her_ev_flirt_students_t3_e1", la default her_ev_flirt_students_t3_e2 = Event(id="her_ev_flirt_students_t3_e2", label="hg_pr_flirt_T3_E2", req="game.daytime == False") default her_ev_flirt_students_t3_e3 = Event(id="her_ev_flirt_students_t3_e3", label="hg_pr_flirt_T3_E3", req="game.daytime == False") -default her_eventqueue_flirt_students = EventQueue() +default her_eventqueue_flirt_students = EventQueue("her_eventqueue_flirt_students") default her_ev_flirt_students_t1_e1_hub = Event(id="her_ev_flirt_students_t1_e1_hub", label="hg_pr_flirt", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_students", subevents=["her_ev_flirt_students_t1_e1"]) default her_ev_flirt_students_t1_e2_hub = Event(id="her_ev_flirt_students_t1_e2_hub", label="hg_pr_flirt", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_students", subevents=["her_ev_flirt_students_t1_e2"]) default her_ev_flirt_students_t1_e3_hub = Event(id="her_ev_flirt_students_t1_e3_hub", label="hg_pr_flirt", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_students", subevents=["her_ev_flirt_students_t1_e3"]) @@ -31,7 +31,7 @@ default her_ev_flirt_teachers_t3_e1 = Event(id="her_ev_flirt_teachers_t3_e1", la default her_ev_flirt_teachers_t3_e2 = Event(id="her_ev_flirt_teachers_t3_e2", label="hg_pr_flirt_teacher_T3_E2", req="game.daytime == False") default her_ev_flirt_teachers_t3_e3 = Event(id="her_ev_flirt_teachers_t3_e3", label="hg_pr_flirt_teacher_T3_E3", req="game.daytime == False") -default her_eventqueue_flirt_teachers = EventQueue() +default her_eventqueue_flirt_teachers = EventQueue("her_eventqueue_flirt_teachers") default her_ev_flirt_teachers_t1_e1_hub = Event(id="her_ev_flirt_teachers_t1_e1_hub", label="hg_pr_flirt_teacher", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_teachers", subevents=["her_ev_flirt_teachers_t1_e1"]) default her_ev_flirt_teachers_t1_e2_hub = Event(id="her_ev_flirt_teachers_t1_e2_hub", label="hg_pr_flirt_teacher", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_teachers", subevents=["her_ev_flirt_teachers_t1_e2"]) default her_ev_flirt_teachers_t1_e3_hub = Event(id="her_ev_flirt_teachers_t1_e3_hub", label="hg_pr_flirt_teacher", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flirt_teachers", subevents=["her_ev_flirt_teachers_t1_e3"]) @@ -52,7 +52,7 @@ default her_ev_grope_public_t4_e1 = Event(id="her_ev_grope_public_t4_e1", label= default her_ev_grope_public_t4_e2 = Event(id="her_ev_grope_public_t4_e2", label="hg_pr_grope_T4_E2", req="game.daytime == False") default her_ev_grope_public_t4_e3 = Event(id="her_ev_grope_public_t4_e3", label="hg_pr_grope_T4_E3", req="game.daytime == False") -default her_eventqueue_grope_public = EventQueue() +default her_eventqueue_grope_public = EventQueue("her_eventqueue_grope_public") default her_ev_grope_public_t1_e1_hub = Event(id="her_ev_grope_public_t1_e1_hub", label="hg_pr_grope_fail", req="states.her.tier == 1", autoenqueue=True, autodequeue=False, queue="her_eventqueue_grope_public") default her_ev_grope_public_t2_e1_hub = Event(id="her_ev_grope_public_t2_e1_hub", label="hg_pr_grope", req="states.her.tier == 2", autoenqueue=True, autodequeue=False, queue="her_eventqueue_grope_public", subevents=["her_ev_grope_public_t2_e1"]) default her_ev_grope_public_t2_e2_hub = Event(id="her_ev_grope_public_t2_e2_hub", label="hg_pr_grope", req="states.her.tier == 2", autoenqueue=True, autodequeue=False, queue="her_eventqueue_grope_public", subevents=["her_ev_grope_public_t2_e2"]) @@ -74,7 +74,7 @@ default her_ev_flash_public_t5_e1 = Event(id="her_ev_flash_public_t5_e1", label= default her_ev_flash_public_t5_e2 = Event(id="her_ev_flash_public_t5_e2", label="hg_pr_flash_T5_E2", req="game.daytime == False") default her_ev_flash_public_t5_e3 = Event(id="her_ev_flash_public_t5_e3", label="hg_pr_flash_T5_E3", req="game.daytime == False") -default her_eventqueue_flash_public = EventQueue() +default her_eventqueue_flash_public = EventQueue("her_eventqueue_flash_public") default her_ev_flash_public_t1_to_t3 = Event(id="her_ev_flash_public_t1_to_t3", label="hg_pr_flash_fail", req="states.her.tier < 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flash_public") default her_ev_flash_public_t3_e1_hub = Event(id="her_ev_flash_public_t3_e1_hub", label="hg_pr_flash", req="states.her.tier == 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flash_public", subevents=["her_ev_flash_public_t3_e1"]) default her_ev_flash_public_t3_e2_hub = Event(id="her_ev_flash_public_t3_e2_hub", label="hg_pr_flash", req="states.her.tier == 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_flash_public", subevents=["her_ev_flash_public_t3_e2"]) @@ -95,7 +95,7 @@ default her_ev_kiss_public_t4_e3 = Event(id="her_ev_kiss_public_t4_e3", label="h default her_ev_kiss_public_t5_e1 = Event(id="her_ev_kiss_public_t5_e1", label="hg_pr_kiss_T5_E1", req="game.daytime==False") default her_ev_kiss_public_t5_e2 = Event(id="her_ev_kiss_public_t5_e2", label="hg_pr_kiss_T5_E2", req="game.daytime==False") -default her_eventqueue_kiss_public = EventQueue() +default her_eventqueue_kiss_public = EventQueue("her_eventqueue_kiss_public") default her_ev_kiss_public_t1_to_t3 = Event(id="her_ev_kiss_public_t1_to_t3", label="hg_pr_kiss_fail", req="states.her.tier < 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_kiss_public") default her_ev_kiss_public_t3_e1_hub = Event(id="her_ev_kiss_public_t3_e1_hub", label="hg_pr_kiss", req="states.her.tier == 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_kiss_public", subevents=["her_ev_kiss_public_t3_e1"]) default her_ev_kiss_public_t3_e2_hub = Event(id="her_ev_kiss_public_t3_e2_hub", label="hg_pr_kiss", req="states.her.tier == 3", autoenqueue=True, autodequeue=False, queue="her_eventqueue_kiss_public", subevents=["her_ev_kiss_public_t3_e2"]) @@ -116,7 +116,7 @@ default her_ev_handjob_public_t6_e1 = Event(id="her_ev_handjob_public_t6_e1", la default her_ev_handjob_public_t6_e2 = Event(id="her_ev_handjob_public_t6_e2", label="hg_pr_handjob_T6_E2", req="game.daytime==False") default her_ev_handjob_public_t6_e3 = Event(id="her_ev_handjob_public_t6_e3", label="hg_pr_handjob_T6_E3", req="game.daytime==False") -default her_eventqueue_handjob_public = EventQueue() +default her_eventqueue_handjob_public = EventQueue("her_eventqueue_handjob_public") default her_ev_handjob_public_t1_to_t4 = Event(id="her_ev_handjob_public_t1_to_t4", label="hg_pr_handjob_fail", req="states.her.tier < 4", autoenqueue=True, autodequeue=False, queue="her_eventqueue_handjob_public") default her_ev_handjob_public_t4_e1_hub = Event(id="her_ev_handjob_public_t4_e1_hub", label="hg_pr_handjob", req="states.her.tier == 4", autoenqueue=True, autodequeue=False, queue="her_eventqueue_handjob_public", subevents=["her_ev_handjob_public_t4_e1"]) default her_ev_handjob_public_t4_e2_hub = Event(id="her_ev_handjob_public_t4_e2_hub", label="hg_pr_handjob", req="states.her.tier == 4", autoenqueue=True, autodequeue=False, queue="her_eventqueue_handjob_public", subevents=["her_ev_handjob_public_t4_e2"]) @@ -135,7 +135,7 @@ default her_ev_blowjob_public_t6_e1 = Event(id="her_ev_blowjob_public_t6_e1", la default her_ev_blowjob_public_t6_e2 = Event(id="her_ev_blowjob_public_t6_e2", label="hg_pr_blowjob_T6_E2", req="game.daytime==False") default her_ev_blowjob_public_t6_e3 = Event(id="her_ev_blowjob_public_t6_e3", label="hg_pr_blowjob_T6_E3", req="game.daytime==False") -default her_eventqueue_blowjob_public = EventQueue() +default her_eventqueue_blowjob_public = EventQueue("her_eventqueue_blowjob_public") default her_ev_blowjob_public_t1_to_t5 = Event(id="her_ev_blowjob_public_t1_to_t5", label="hg_pr_blowjob_fail", req="states.her.tier < 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_blowjob_public") default her_ev_blowjob_public_t5_e1_hub = Event(id="her_ev_blowjob_public_t5_e1_hub", label="hg_pr_blowjob", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_blowjob_public", subevents=["her_ev_blowjob_public_t5_e1"]) default her_ev_blowjob_public_t5_e2_hub = Event(id="her_ev_blowjob_public_t5_e2_hub", label="hg_pr_blowjob", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_blowjob_public", subevents=["her_ev_blowjob_public_t5_e2"]) @@ -149,7 +149,7 @@ default her_ev_sex_public_t6_e2 = Event(id="her_ev_sex_public_t6_e2", label="hg_ default her_ev_sex_public_t6_e3 = Event(id="her_ev_sex_public_t6_e3", label="hg_pr_sex_T6_E3", req="game.daytime==False") default her_ev_sex_public_t6_e4 = Event(id="her_ev_sex_public_t6_e4", label="hg_pr_sex_T6_E4", req="game.daytime==False") -default her_eventqueue_sex_public = EventQueue() +default her_eventqueue_sex_public = EventQueue("her_eventqueue_sex_public") default her_ev_sex_public_t1_to_t6 = Event(id="her_ev_sex_public_t1_to_t6", label="hg_pr_sex_fail", req="states.her.tier < 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_sex_public") default her_ev_sex_public_t6_e1_hub = Event(id="her_ev_sex_public_t6_e1_hub", label="hg_pr_sex", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, repeat=False, queue="her_eventqueue_sex_public", subevents=["her_ev_sex_public_t6_e1", "her_ev_sex_public_t6_e2"]) default her_ev_sex_public_t6_e2_hub = Event(id="her_ev_sex_public_t6_e2_hub", label="hg_pr_sex", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_sex_public", subevents=["her_ev_sex_public_t6_e3"]) @@ -163,7 +163,7 @@ default her_ev_cumslut_public_t6_e2 = Event(id="her_ev_cumslut_public_t6_e2", la default her_ev_cumslut_public_t6_e3 = Event(id="her_ev_cumslut_public_t6_e3", label="hg_pr_cumslut_T6_return", req="game.daytime==False") default her_ev_cumslut_public_t6_e4 = Event(id="her_ev_cumslut_public_t6_e4", label="hg_pr_cumslut_T6_return", req="game.daytime==False") -default her_eventqueue_cumslut_public = EventQueue() +default her_eventqueue_cumslut_public = EventQueue("her_eventqueue_cumslut_public") default her_ev_cumslut_public_t1_to_t5 = Event(id="her_ev_cumslut_public_t1_to_t5", label="hg_pr_cumslut_fail", req="states.her.tier < 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public") default her_ev_cumslut_public_t5_e1_hub = Event(id="her_ev_cumslut_public_t5_e1_hub", label="hg_pr_cumslut", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e1"]) default her_ev_cumslut_public_t5_e2_hub = Event(id="her_ev_cumslut_public_t5_e2_hub", label="hg_pr_cumslut", req="states.her.tier == 5", autoenqueue=True, autodequeue=False, queue="her_eventqueue_cumslut_public", subevents=["her_ev_cumslut_public_t5_e2"]) diff --git a/game/scripts/characters/luna/favors.rpy b/game/scripts/characters/luna/favors.rpy index 9d4ed72a..eae43ef5 100644 --- a/game/scripts/characters/luna/favors.rpy +++ b/game/scripts/characters/luna/favors.rpy @@ -1,4 +1,4 @@ -default lun_eventqueue_talk_to_me = EventQueue() +default lun_eventqueue_talk_to_me = EventQueue("lun_eventqueue_talk_to_me") default lun_ev_talk_to_me_t1_e1 = Event(id="lun_ev_talk_to_me_t1_e1", label="ll_pf_talk_T1_E1_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_talk_to_me_t1_e2 = Event(id="lun_ev_talk_to_me_t1_e2", label="ll_pf_talk_T1_E2_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_talk_to_me_t1_e3 = Event(id="lun_ev_talk_to_me_t1_e3", label="ll_pf_talk_T1_E3_intro", req="states.lun.tier == 1", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False, repeat=False) @@ -7,7 +7,7 @@ default lun_ev_talk_to_me_t2_e1 = Event(id="lun_ev_talk_to_me_t2_e1", label="ll_ default lun_ev_talk_to_me_t3_e1 = Event(id="lun_ev_talk_to_me_t3_e1", label="ll_pf_talk_T3_E1_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) default lun_ev_talk_to_me_t4_e1 = Event(id="lun_ev_talk_to_me_t4_e1", label="ll_pf_talk_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_talk_to_me", autoenqueue=True, autodequeue=False) -default lun_eventqueue_inspect_her_body = EventQueue() +default lun_eventqueue_inspect_her_body = EventQueue("lun_eventqueue_inspect_her_body") default lun_ev_inspect_her_body_t2_e1 = Event(id="lun_ev_inspect_her_body_t2_e1", label="ll_pf_inspect_T2_E1_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_inspect_her_body_t2_e2 = Event(id="lun_ev_inspect_her_body_t2_e2", label="ll_pf_inspect_T2_E2_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_inspect_her_body_t2_e3 = Event(id="lun_ev_inspect_her_body_t2_e3", label="ll_pf_inspect_T2_E3_intro", req="states.lun.tier == 2", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False, repeat=False) @@ -15,14 +15,14 @@ default lun_ev_inspect_her_body_t2_e4 = Event(id="lun_ev_inspect_her_body_t2_e4" default lun_ev_inspect_her_body_t3_e1 = Event(id="lun_ev_inspect_her_body_t3_e1", label="ll_pf_inspect_T3_E1_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) default lun_ev_inspect_her_body_t4_e1 = Event(id="lun_ev_inspect_her_body_t4_e1", label="ll_pf_inspect_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_inspect_her_body", autoenqueue=True, autodequeue=False) -default lun_eventqueue_play_with_yourself = EventQueue() +default lun_eventqueue_play_with_yourself = EventQueue("lun_eventqueue_play_with_yourself") default lun_ev_play_with_yourself_t3_e1 = Event(id="lun_ev_play_with_yourself_t3_e1", label="ll_pf_masturbate_T3_E1_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_play_with_yourself_t3_e2 = Event(id="lun_ev_play_with_yourself_t3_e2", label="ll_pf_masturbate_T3_E2_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_play_with_yourself_t3_e3 = Event(id="lun_ev_play_with_yourself_t3_e3", label="ll_pf_masturbate_T3_E3_intro", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_play_with_yourself_t3_e4 = Event(id="lun_ev_play_with_yourself_t3_e4", label="ll_pf_masturbate_T3_E4_repeat", req="states.lun.tier == 3", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) default lun_ev_play_with_yourself_t4_e1 = Event(id="lun_ev_play_with_yourself_t4_e1", label="ll_pf_masturbate_T4_E1_repeat", req="states.lun.tier >= 4", queue="lun_eventqueue_play_with_yourself", autoenqueue=True, autodequeue=False) -default lun_eventqueue_blowjob = EventQueue() +default lun_eventqueue_blowjob = EventQueue("lun_eventqueue_blowjob") default lun_ev_blowjob_t4_e1 = Event(id="lun_ev_blowjob_t4_e1", label="ll_pf_blowjob_T4_E1_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_blowjob_t4_e2 = Event(id="lun_ev_blowjob_t4_e2", label="ll_pf_blowjob_T4_E2_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) default lun_ev_blowjob_t4_e3 = Event(id="lun_ev_blowjob_t4_e3", label="ll_pf_blowjob_T4_E3_intro", req="states.lun.tier >= 4", queue="lun_eventqueue_blowjob", autoenqueue=True, autodequeue=False, repeat=False) diff --git a/game/scripts/characters/snape/hangouts.rpy b/game/scripts/characters/snape/hangouts.rpy index 0481f385..04db5364 100644 --- a/game/scripts/characters/snape/hangouts.rpy +++ b/game/scripts/characters/snape/hangouts.rpy @@ -1,9 +1,9 @@ -default sna_eventqueue_hangouts_drinking = EventQueue() +default sna_eventqueue_hangouts_drinking = EventQueue("sna_eventqueue_hangouts_drinking") default sna_ev_hangouts_wine_e1 = Event(id="sna_ev_hangouts_wine_e1", label="ss_he_wine_intro", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_drinking") default sna_ev_hangouts_wine_e2 = Event(id="sna_ev_hangouts_wine_e2", label="ss_he_wine_repeat", autoenqueue=True, autodequeue=False, queue="sna_eventqueue_hangouts_drinking") default sna_ev_hangouts_wine_e3 = Event(id="sna_ev_hangouts_wine_e3", label="ss_he_wine_intro_E2", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_drinking") -default sna_eventqueue_hangouts_stories = EventQueue() +default sna_eventqueue_hangouts_stories = EventQueue("sna_eventqueue_hangouts_stories") default sna_ev_hangouts_stories_e1 = Event(id="sna_ev_hangouts_stories_e1", label="ss_he_story_E1", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") default sna_ev_hangouts_stories_e2 = Event(id="sna_ev_hangouts_stories_e2", label="ss_he_story_intro_E2", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") default sna_ev_hangouts_stories_e3 = Event(id="sna_ev_hangouts_stories_e3", label="ss_he_story_intro_E3", autoenqueue=True, autodequeue=False, repeat=False, queue="sna_eventqueue_hangouts_stories") diff --git a/game/scripts/characters/tonks/hangouts.rpy b/game/scripts/characters/tonks/hangouts.rpy index cd767b3d..213a6ff9 100644 --- a/game/scripts/characters/tonks/hangouts.rpy +++ b/game/scripts/characters/tonks/hangouts.rpy @@ -1,4 +1,4 @@ -default ton_eventqueue_hangouts_drinking = EventQueue() +default ton_eventqueue_hangouts_drinking = EventQueue("ton_eventqueue_hangouts_drinking") default ton_ev_hangouts_wine_intro = Event(id="ton_ev_hangouts_wine_intro", label="nt_he_wine_intro", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") default ton_ev_hangouts_firewhisky_intro = Event(id="ton_ev_hangouts_firewhisky_intro", label="nt_he_firewhisky_intro", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") default ton_ev_hangouts_firewhisky_e1 = Event(id="ton_ev_hangouts_firewhisky_e1", label="nt_he_firewhisky_E1", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") @@ -6,7 +6,7 @@ default ton_ev_hangouts_firewhisky_e2 = Event(id="ton_ev_hangouts_firewhisky_e2" default ton_ev_hangouts_firewhisky_e3 = Event(id="ton_ev_hangouts_firewhisky_e3", label="nt_he_firewhisky_E3", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") default ton_ev_hangouts_firewhisky_e4 = Event(id="ton_ev_hangouts_firewhisky_e4", label="nt_he_firewhisky_E4", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_drinking") -default ton_eventqueue_hangouts_story = EventQueue() +default ton_eventqueue_hangouts_story = EventQueue("ton_eventqueue_hangouts_story") default ton_ev_hangouts_story_e1 = Event(id="ton_ev_hangouts_story_e1", label="nt_he_story_intro_E1", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_story") default ton_ev_hangouts_story_e2 = Event(id="ton_ev_hangouts_story_e2", label="nt_he_story_intro_E2", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_story") default ton_ev_hangouts_story_e3 = Event(id="ton_ev_hangouts_story_e3", label="nt_he_story_intro_E3", autoenqueue=True, autodequeue=False, repeat=False, queue="ton_eventqueue_hangouts_story") diff --git a/game/scripts/characters/tonks/requests.rpy b/game/scripts/characters/tonks/requests.rpy index 0c927a44..c248814d 100644 --- a/game/scripts/characters/tonks/requests.rpy +++ b/game/scripts/characters/tonks/requests.rpy @@ -3,7 +3,7 @@ default ton_ev_detention_t1_e2 = Event(id="ton_ev_detention_t1_e2", label="nt_pr default ton_ev_detention_t1_e3 = Event(id="ton_ev_detention_t1_e3", label="nt_pr_teach_T1_E3", req="game.daytime==False") default ton_ev_detention_t1_e4 = Event(id="ton_ev_detention_t1_e4", label="nt_pr_teach_T1_E4", req="game.daytime==False") -default ton_eventqueue_detention = EventQueue() +default ton_eventqueue_detention = EventQueue("ton_eventqueue_detention") default ton_ev_detention_t1_e1_hub = Event(id="ton_ev_detention_t1_e1_hub", label="nt_pr_teach_start", req="states.ton.tier==1", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_detention", subevents=["ton_ev_detention_t1_e1"]) default ton_ev_detention_t1_e2_hub = Event(id="ton_ev_detention_t1_e2_hub", label="nt_pr_teach_start", req="states.ton.tier==1", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_detention", subevents=["ton_ev_detention_t1_e2"]) default ton_ev_detention_t1_e3_hub = Event(id="ton_ev_detention_t1_e3_hub", label="nt_pr_teach_start", req="states.ton.tier==1", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_detention", subevents=["ton_ev_detention_t1_e3"]) @@ -24,7 +24,7 @@ default ton_ev_grope_t2_e2 = Event(id="ton_ev_grope_t2_e2", label="nt_pr_grope_T default ton_ev_grope_t2_e3 = Event(id="ton_ev_grope_t2_e3", label="nt_pr_grope_T2_E3", req="game.daytime==False") default ton_ev_grope_t2_e4 = Event(id="ton_ev_grope_t2_e4", label="nt_pr_grope_T2_E4", req="game.daytime==False") -default ton_eventqueue_grope = EventQueue() +default ton_eventqueue_grope = EventQueue("ton_eventqueue_grope") default ton_ev_grope_t2_e1_hub = Event(id="ton_ev_grope_t2_e1_hub", label="nt_pr_grope_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_grope", subevents=["ton_ev_grope_t2_e1"]) default ton_ev_grope_t2_e2_hub = Event(id="ton_ev_grope_t2_e2_hub", label="nt_pr_grope_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_grope", subevents=["ton_ev_grope_t2_e2"]) default ton_ev_grope_t2_e3_hub = Event(id="ton_ev_grope_t2_e3_hub", label="nt_pr_grope_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_grope", subevents=["ton_ev_grope_t2_e3"]) @@ -35,7 +35,7 @@ default ton_ev_oral_t2_e2 = Event(id="ton_ev_oral_t2_e2", label="nt_pr_kiss_T2_E default ton_ev_oral_t2_e3 = Event(id="ton_ev_oral_t2_e3", label="nt_pr_kiss_T2_E3", req="game.daytime==False") default ton_ev_oral_t2_e4 = Event(id="ton_ev_oral_t2_e4", label="nt_pr_kiss_T2_E4", req="game.daytime==False") -default ton_eventqueue_oral = EventQueue() +default ton_eventqueue_oral = EventQueue("ton_eventqueue_oral") default ton_ev_oral_t2_e1_hub = Event(id="ton_ev_oral_t2_e1_hub", label="nt_pr_kiss_start", req="states.ton.tier>=2", repeat=False, autoenqueue=True, autodequeue=False, queue="ton_eventqueue_oral", subevents=["ton_ev_oral_t2_e1"]) default ton_ev_oral_t2_e2_hub = Event(id="ton_ev_oral_t2_e2_hub", label="nt_pr_kiss_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_oral", subevents=["ton_ev_oral_t2_e2"]) default ton_ev_oral_t2_e3_hub = Event(id="ton_ev_oral_t2_e3_hub", label="nt_pr_kiss_start", req="states.ton.tier>=2", autoenqueue=True, autodequeue=False, queue="ton_eventqueue_oral", subevents=["ton_ev_oral_t2_e3"]) From 7164a782e7a6916000848fefa9116b9b07683335 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 30 Mar 2024 18:53:49 +0100 Subject: [PATCH 231/249] Remove unused imports (cherry picked from commit ec3483ae269ac31874bbebf80c44472df7a7e3d4) --- game/scripts/utility/common_functions.rpy | 3 --- 1 file changed, 3 deletions(-) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index eac3453e..ff5a0b5e 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -8,12 +8,9 @@ init python early: import fnmatch import posixpath import re - import string import functools import timeit as timeit_module - from bisect import bisect from operator import itemgetter - from operator import add as _add from collections import OrderedDict get_volume_preference = renpy.game.preferences.get_volume From e93aa182851668382490a04372e905e50601d1c4 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sat, 30 Mar 2024 19:20:46 +0000 Subject: [PATCH 232/249] Bug fixes * Fixed mixed paths in outfit import feature * Fixed paths in outfit import feature * Fixed missing imports --- game/scripts/utility/punk.rpy | 9 +++++---- game/scripts/wardrobe/functions.rpy | 4 +++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/game/scripts/utility/punk.rpy b/game/scripts/utility/punk.rpy index 75ce236c..1a7eefce 100644 --- a/game/scripts/utility/punk.rpy +++ b/game/scripts/utility/punk.rpy @@ -8,6 +8,7 @@ init python in image_payload: import binascii import struct import zlib + import os CHUNK_TYPE_END = "IEND" CHUNK_TYPE_PUNK = "wtSi" @@ -74,7 +75,7 @@ init python in image_payload: print("Chunk injected!") def list(input): - path = os.path.join(config.gamedir, "outfits", input) + path = os.path.join(renpy.config.gamedir, "outfits", input) with open(path, "rb") as input_file: @@ -90,8 +91,8 @@ init python in image_payload: return def inject(input, output, content): - input_path = os.path.join(config.gamedir, "outfits", input) - output_path = os.path.join(config.gamedir, "outfits", output) + input_path = os.path.join(renpy.config.gamedir, "outfits", input) + output_path = os.path.join(renpy.config.gamedir, "outfits", output) content = zlib.compress(str(content).encode()) with open(input_path, "rb") as input_file, open(output_path, "wb") as output_file: @@ -117,7 +118,7 @@ init python in image_payload: def extract(input): print("Attempting to extract punked data from", input) - path = os.path.join(config.gamedir, "outfits", input) + path = os.path.join(renpy.config.gamedir, input) with open(path, "rb") as input_file: diff --git a/game/scripts/wardrobe/functions.rpy b/game/scripts/wardrobe/functions.rpy index 6c0dc6a0..ea972f46 100644 --- a/game/scripts/wardrobe/functions.rpy +++ b/game/scripts/wardrobe/functions.rpy @@ -1,4 +1,6 @@ init -1 python: + import os + def __check_exists(key): if not key in states.dolls: raise KeyError(f"{key!r} character is undefined.") @@ -179,7 +181,7 @@ init -1 python: files = [] for f in os.listdir(path): fp = os.path.join(path, f) - rp = os.path.relpath(fp, config.gamedir) + rp = os.path.relpath(fp, config.gamedir).replace("\\", "/") if os.path.isfile(os.path.join(path, f)) and f.endswith(".png"): files.append(build_button(rp)) From b54a65a7eeb2b3acb91713ededfe11021ca9034e Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sat, 30 Mar 2024 19:47:54 +0000 Subject: [PATCH 233/249] Bug fix * Fixed imported outfits not appearing in the list, until the category of the wardrobe is changed. --- game/scripts/wardrobe/wardrobe.rpy | 1 + 1 file changed, 1 insertion(+) diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index 3cc0a1b8..5754d2d9 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -473,6 +473,7 @@ label wardrobe_menu(): elif __choice[0] == "import": $ _outfit = char_active.import_outfit(__choice[1]) + $ category_items = set_wardrobe_categories(current_category) elif __choice[0] == "schedule": $ renpy.call_screen("wardrobe_schedule_menuitem", __choice[1]) From f06d33cd8d1e65b3fb635dcecdb6fbf14bb6fc58 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sat, 30 Mar 2024 20:11:56 +0000 Subject: [PATCH 234/249] Bug fix, save compatibility * Fixed zorder issue with Tonks' office outfit accessory --- game/scripts/characters/tonks/wardrobe.rpy | 2 +- game/scripts/options.rpy | 2 +- game/scripts/utility/updater.rpy | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/game/scripts/characters/tonks/wardrobe.rpy b/game/scripts/characters/tonks/wardrobe.rpy index 89ca03a2..d437489a 100644 --- a/game/scripts/characters/tonks/wardrobe.rpy +++ b/game/scripts/characters/tonks/wardrobe.rpy @@ -206,7 +206,7 @@ default ton_outfit_mechanic = DollOutfit([ton_hair_mechanic, ton_top_vest_mechan default ton_robe_office = DollCloth("tonks", ("upper body", "robes"), "robe", "office",["#353843ff", "#fff24aff"]) default ton_top_office = DollCloth("tonks", ("upper body", "shirts"), "top", "office", ["#e7e7e7ff", "#d1cebbff"]) default ton_bottoms_office = DollCloth("tonks", ("lower body", "trousers"), "bottom", "office",["#353843ff"]) -default ton_accessory_office = DollCloth("tonks", ("misc", "accessory"), "accessory", "office_pin", ["#e7e7e7ff", "#fff24aff", "#d8422cff"], zorder=225) +default ton_accessory_office = DollCloth("tonks", ("misc", "accessory"), "accessory", "office_pin", ["#e7e7e7ff", "#fff24aff", "#d8422cff"], zorder=235) default ton_outfit_office = DollOutfit([ton_hair_base, ton_robe_office, ton_top_office, ton_bottoms_office, ton_accessory_office], price=450, name="SECS Outfit", desc="A smart suit for a clever girl.") diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index 28d4e35b..c654fbef 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -37,7 +37,7 @@ define config.debug = config.developer or prerelease define config.console = True # Game version and naming -define config.version = "1.46" +define config.version = "1.46.1" define compatible_version = 1.451 define config.name = "Witch Trainer Silver" diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 0f43ee80..37a8cb91 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -211,6 +211,9 @@ init python: doll.body.matrix = IdentityMatrix() + if current < 1.461: + getattr(store, "ton_accessory_office").zorder = 235 + if current > latest: raise Exception(f"Loaded save file is incompatible. (Save Version: {current}, Game Version: {latest})") From e50292c1e6902815dfe7de8983aa670c94dd94ae Mon Sep 17 00:00:00 2001 From: Johnny28 Date: Sat, 30 Mar 2024 21:39:37 +0100 Subject: [PATCH 235/249] Minor fixes --- game/scripts/characters/hermione/chitchats.rpy | 2 +- .../scripts/characters/luna/events/favors/masturbate_for_me.rpy | 2 +- game/scripts/characters/luna/events/favors/suck_it.rpy | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/game/scripts/characters/hermione/chitchats.rpy b/game/scripts/characters/hermione/chitchats.rpy index cfc3b758..f79fd4ed 100644 --- a/game/scripts/characters/hermione/chitchats.rpy +++ b/game/scripts/characters/hermione/chitchats.rpy @@ -534,6 +534,6 @@ label hermione_chitchat: block if states.her.ev.potions.breast_expand_drank: her "You don't happen to have any more of that breast expansion potion, [name_genie_hermione]?" ("open", "base", "base", "mid") - her "I've noticed some correlations between your grades and your chest size, so I thought I'd give it a shot during our next exam..." ("open", "base", "base", "mid") + her "I've noticed some correlations between grades and the student's chest size, so I thought I'd give it a shot during our next exam..." ("open", "base", "base", "mid") return diff --git a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy index c9d0b0a1..8e066ad8 100644 --- a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy +++ b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy @@ -1168,7 +1168,7 @@ label ll_pf_masturbate_T4_E1_repeat: lun "I never realised that the tests at Hogwarts just happened to have acronyms, that's fascinating!" ("grin", "base", "base", "mid") gen "Yep... I'm sure some writer didn't spend hours coming up with those." lun "*Huh*?" ("soft", "base", "raised", "mid") - gen "Anyway...{w=0.4} Now that that's established, you may begin the test." + gen "Anyway...{w=0.4} Now that that's established, you may begin the test.{#LINT_IGNORE}" lun "Oh, alright!" ("base", "base", "base", "mid") gen "Why don't you start off with the thought process behind the removal of your top." lun "Oh! Oh! I know that!" ("smile", "base", "base", "stare") diff --git a/game/scripts/characters/luna/events/favors/suck_it.rpy b/game/scripts/characters/luna/events/favors/suck_it.rpy index 32efc838..729253c4 100644 --- a/game/scripts/characters/luna/events/favors/suck_it.rpy +++ b/game/scripts/characters/luna/events/favors/suck_it.rpy @@ -1609,7 +1609,7 @@ label ll_pf_blowjob_T4_E4_repeat: show screen blkfade with d5 - nar "As Luna crawls out from under your desk, you slump back into your chair, exhausted by the cheer intensity of the session." + nar "As Luna crawls out from under your desk, you slump back into your chair, exhausted by the sheer intensity of the session." hide cg hide screen blkfade From ffdb2ef6dcb6db1927ba9963af714d280f489ee8 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 2 Aug 2023 22:00:18 +0100 Subject: [PATCH 236/249] Update README --- README.md | 120 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 95 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 5b57eb2f..a30fd7fb 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,108 @@ -![# Witch Trainer: Silver](https://1.bp.blogspot.com/--t9cxuok8JU/YUurd9fYbLI/AAAAAAAAABc/EbEFemd0TxUXoiQVeDArIY7hmCQPVw1jACNcBGAsYHQ/w400-h278/title.png) + +
+ + Logo + -This repository contains all of the game's source code. If you are searching for the most recent stable build, please [visit our website's download page](https://www.silverstudiogames.org/p/download.html) instead. +

+ A complete repository for more than just Hermione's backend. +
+ Explore the wiki » +
+
+ FAQ + · + Report Bug + · + Request Feature +

+
-The development takes place on the `dev` branch, and occasionally on feature branches, `main` branch is reserved for game releases. + +## Getting Started -# Developers: -Johnny28, LoafyLemon, Boppin +* **`dev`:** Active development occurs primarily on this branch, and occasionally on feature branches. +* **`current`:** This branch is dedicated to patches for the current public version. +* **`main`:** The main branch is exclusively for finalized game releases. -# Contributors: -MaiL, Mo, UE CatBug, Lineup, Soggy, Asease1, Linear, Lupin, Techy, Dr. Noodle, MadMerlin, DostojevskijSTG, STG Artguy, Crew, Ven, perniciousducks, Cleanzo, Darwin7, Pinguino, Sandmaster, Amadan, Heretic, Maverick, Anon, MedicBear, TropeCode, Booom313, CaptainNemo, and anonymous. +## Prerequisites -# Requirements: -* Renpy 7.5+ -* Python 2.7 +
+ Windows +
    +
  1. Download and install Ren'py SDK
  2. +
  3. Download and install git
  4. +
+
-# Documentation -TBD +
+ Debian -# Translating -TBD +### Install Ren'Py SDK +
curl -o renpy-sdk.tar.bz2 https://www.renpy.org/dl/8.1.1/renpy-8.1.1-sdk.tar.bz2
+tar -xjf renpy-sdk.tar.bz2
+mv renpy-8.1.1-sdk /opt/renpy
+chmod +x /opt/renpy/renpy.sh
+echo "alias renpy=/opt/renpy/renpy.sh" >> ~/.bashrc
+source ~/.bashrc
-# FAQ: +### Install GIT, GIT-LFS +
sudo apt install git git-lfs
+git lfs install
+ +
-#### Where can I support Witch Trainer: Silver? -You can support us on [patreon](https://www.patreon.com/SilverStudioGames). +## Installation -#### I have found a bug, how do I report it? -Please make a report on the [discord](https://discord.gg/UbQeTCJ5RW). +
+ Windows +
    +
  1. Clone the repository: +
    git clone https://dev.silverstudiogames.org/SilverStudioGames/WTS.git
    +
  2. +
  3. Run Ren'py Launcher.
  4. +
  5. Hit preferences and select the directory where the project is located.
  6. +
  7. Hit return and click on 'Launch Project'.
  8. +
+
-#### Can I receive access to the issue tracker? -Yes, upon review we may grant you access to the repository. Contact us on [discord](https://discord.gg/UbQeTCJ5RW) for details. +
+ Debian +
git clone https://dev.silverstudiogames.org/SilverStudioGames/WTS.git
+renpy WTS
+ +
-#### Can I make a pull request? -Bug fixes and enhancements are welcome, but content submissions must be thoroughly evaluated before they are accepted. +## Build -#### Why is the registration closed? -Our server resources are limited, we need to conserve them. We may re-open registration in the future. +
+ Windows +Navigate the GUI in Ren'Py launcher for packaging purposes. +
+
+ Debian +
renpy /opt/renpy/launcher distribute WTS --package pc
+
+ +## License +Source code distributed under the LGPL-3.0 license. See [LICENSE](LICENSE) for more information. + +## Active Developers: +- LoafyLemon - Lead Developer +- Johnny28 - Lead Writer +- Boppin - Lead Artist + +## Contributors: +- MaiL, Mo, UE CatBug, Lineup, Soggy, Asease1, Linear, Lupin, Techy, Dr. Noodle +- MadMerlin, DostojevskijSTG, STG Artguy, Crew, Ven, perniciousducks, Cleanzo, Darwin7 +- Pinguino, Sandmaster, Amadan, Heretic, Maverick, Anon, MedicBear, TropeCode, Booom313 +- CaptainNemo, NotTera, Armise, Cosmic and anonymous. + + + +

(back to top)

From 86f95fcfe404065513d7858dad033e071ad2c335 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 31 Mar 2024 21:19:28 +0100 Subject: [PATCH 237/249] Save compatibility bug fix * Fix broken save state --- game/scripts/utility/updater.rpy | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 37a8cb91..7b68e490 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -214,6 +214,12 @@ init python: if current < 1.461: getattr(store, "ton_accessory_office").zorder = 235 + if current < 1.462: + lun_ev_blowjob_t4_e1.enqueue() + lun_ev_blowjob_t4_e2.enqueue() + lun_ev_blowjob_t4_e3.enqueue() + lun_ev_blowjob_t4_e4.enqueue() + if current > latest: raise Exception(f"Loaded save file is incompatible. (Save Version: {current}, Game Version: {latest})") From 2566ef665f541c3351d25bcb3833ee94242db14d Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Sun, 31 Mar 2024 21:20:39 +0100 Subject: [PATCH 238/249] Version bump --- game/scripts/options.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index c654fbef..6b5cd19e 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -37,7 +37,7 @@ define config.debug = config.developer or prerelease define config.console = True # Game version and naming -define config.version = "1.46.1" +define config.version = "1.46.2" define compatible_version = 1.451 define config.name = "Witch Trainer Silver" From ef97c273dbd28b1cf6e8aa80c4204d24dd3887eb Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Mon, 1 Apr 2024 22:05:24 +0200 Subject: [PATCH 239/249] Linting dynamic (cherry picked from commit 60244e258abbc5cc364a7f7e3aea4ddd4bddc82f) --- game/scripts/cds.rpy | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/game/scripts/cds.rpy b/game/scripts/cds.rpy index 74e84582..76c09dc4 100644 --- a/game/scripts/cds.rpy +++ b/game/scripts/cds.rpy @@ -1,5 +1,14 @@ python early hide: import inspect + + try: + from renpy.lint import python_builtins, renpy_builtins + except ImportError: + import builtins + python_builtins = set(dir(builtins)) + del builtins + renpy_builtins = set() + __register_params = frozenset(inspect.signature(renpy.register_statement).parameters).difference({"name", "parse"}) def register_decorator(cls): """ @@ -54,6 +63,12 @@ python early hide: evaled = {n: eval(e) for n, e in self.items()} renpy.dynamic(**evaled) + def lint(self): + for domain, st in (("Python", python_builtins), ("Ren'Py", renpy_builtins)): + inter = st.intersection(self) + if inter: + renpy.error(f"Dynamic statement redefines one or several {domain} builtins: {', '.join(map(repr, inter))}") + @register_decorator class chibi: @staticmethod From e04fd221ddb1458f7077242ecfa94d50f3c5248e Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Mon, 1 Apr 2024 22:11:08 +0200 Subject: [PATCH 240/249] Flag unreachable code (cherry picked from commit 25820e002a1c09a46ebdf24e72946794989a801a) --- game/scripts/characters/luna/summon.rpy | 1 + game/scripts/events/DayNight.rpy | 2 ++ 2 files changed, 3 insertions(+) diff --git a/game/scripts/characters/luna/summon.rpy b/game/scripts/characters/luna/summon.rpy index 35b67ddc..65384442 100644 --- a/game/scripts/characters/luna/summon.rpy +++ b/game/scripts/characters/luna/summon.rpy @@ -95,6 +95,7 @@ label update_lun_tier: # T5 NOT AVAILABLE return + # unreachable # Requirement: Tier 4 - Blow me T4 E3 $ lun_level_up = 4 return diff --git a/game/scripts/events/DayNight.rpy b/game/scripts/events/DayNight.rpy index 38db7ad3..1126d453 100644 --- a/game/scripts/events/DayNight.rpy +++ b/game/scripts/events/DayNight.rpy @@ -145,6 +145,7 @@ label day_start: # Start Quests jump quests + # unreachable $ renpy.choice_for_skipping() call screen room_menu @@ -239,6 +240,7 @@ label night_start: # Start Quests jump quests + # unreachable $ renpy.choice_for_skipping() call screen room_menu From e3c5fb609df3b0566cc94fcb42bbbdbfa849abe5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Mon, 1 Apr 2024 22:36:21 +0200 Subject: [PATCH 241/249] Avoid python statement (cherry picked from commit 22348f09016eeda98e1a880b17b34abced57f176) --- game/scripts/events/labels.rpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/scripts/events/labels.rpy b/game/scripts/events/labels.rpy index 885bb60a..b8d7654d 100644 --- a/game/scripts/events/labels.rpy +++ b/game/scripts/events/labels.rpy @@ -149,7 +149,7 @@ label teleport(position=None,effect=True,poof_label=None): hide screen heal_animation if poof_label is not None: - $ renpy.call(poof_label) + call expression poof_label show screen teleport_animation with d5 From 224194754f6e927e47c5926500d53815ada423d1 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Mon, 1 Apr 2024 22:52:01 +0200 Subject: [PATCH 242/249] Avoid using unnecessary screens --- game/scripts/events/labels.rpy | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/game/scripts/events/labels.rpy b/game/scripts/events/labels.rpy index b8d7654d..9db557a6 100644 --- a/game/scripts/events/labels.rpy +++ b/game/scripts/events/labels.rpy @@ -142,18 +142,24 @@ label teleport(position=None,effect=True,poof_label=None): with d1 hide screen blkfade - show screen heal_animation + show heal_ani onlayer screens zorder teleport_zorder: + anchor (0.5, 1.0) + pos teleport_pos + zoom 0.5 with d3 #stop music fadeout 1 - hide screen heal_animation + hide heal_animation onlayer screens if poof_label is not None: call expression poof_label - show screen teleport_animation + show teleport_ani onlayer screens zorder teleport_zorder: + anchor (0.5, 0.7) + pos teleport_pos + zoom 0.5 with d5 - hide screen teleport_animation + hide teleport_animation onlayer screens with d5 if effect == True: @@ -161,17 +167,9 @@ label teleport(position=None,effect=True,poof_label=None): return -screen teleport_animation(): - add "teleport_ani" anchor (0.5, 0.7) xpos teleport_xpos ypos teleport_ypos zoom 0.5 - zorder teleport_zorder - -screen heal_animation(): - add "heal_ani" anchor (0.5, 1.0) xpos teleport_xpos ypos teleport_ypos zoom 0.5 - zorder teleport_zorder - # Dummy labels. To prevent crashes. # TODO: Remove later. default hermione_action = None label set_her_action(action=None, update=None): $ hermione_action = action - return + return \ No newline at end of file From d8751d73b95c46ab2085056048e58f812487d186 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Mon, 1 Apr 2024 23:10:15 +0200 Subject: [PATCH 243/249] Remove nonsense calls of getattr (cherry picked from commit 7ca17b7ba781b649da2a729d8f8d9b45f69fd37b) --- game/scripts/events/queue.rpy | 4 +- game/scripts/mods.rpy | 2 +- game/scripts/utility/updater.rpy | 66 ++++++++++++++++---------------- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/game/scripts/events/queue.rpy b/game/scripts/events/queue.rpy index cffe1ce3..04264612 100644 --- a/game/scripts/events/queue.rpy +++ b/game/scripts/events/queue.rpy @@ -156,8 +156,8 @@ init -1 python: if config.developer: def __setattr__(self, attr, value): - if hasattr(self, attr) and getattr(self, attr) != value: - id = getattr(self, "id") + if getattr(self, attr, not value) != value: + id = self.id rollback = f"{stdcol.UNDERLINE}(Rollback){stdcol.END} " if renpy.in_rollback() else "" caller_id = renpy.get_filename_line() diff --git a/game/scripts/mods.rpy b/game/scripts/mods.rpy index cb2e3964..ca832612 100644 --- a/game/scripts/mods.rpy +++ b/game/scripts/mods.rpy @@ -3,7 +3,7 @@ init -999: import json import os - if not getattr(persistent, "mods_enabled"): + if not persistent.mods_enabled: persistent.mods_enabled = _set() mods_list = _dict() diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 7b68e490..0d81258e 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -144,7 +144,7 @@ init python: # In case the player already started the event chain, send the letter early. letter_cards_store.send() - getattr(store, "letter_cards_store").wait = 7 + store.letter_cards_store.wait = 7 # Fix revertable types for modding mods_enabled = getattr(persistent, "mods_enabled", _set()) or _set() @@ -154,7 +154,7 @@ init python: setattr(persistent, "mods_list", _dict(mods_list)) # Fix event issue with Cho - ev = getattr(store, "cho_ev_inspect_her_body_t2_e3") + ev = store.cho_ev_inspect_her_body_t2_e3 if ev.completed and not states.cho.ev.inspect_her_body.T2_E3_complete: states.cho.ev.inspect_her_body.T2_E3_complete = True @@ -169,39 +169,39 @@ init python: k.modpath = "mods/" + k.modpath.split("/")[-1] if current < 1.46: - getattr(store, "her_ev_cumslut_public_t5_e1").label = "hg_pr_cumslut_T5_return" - getattr(store, "her_ev_cumslut_public_t5_e1").reset() - getattr(store, "her_ev_cumslut_public_t5_e1").dequeue() - getattr(store, "her_ev_cumslut_public_t5_e2").label = "hg_pr_cumslut_T5_return" - getattr(store, "her_ev_cumslut_public_t5_e2").reset() - getattr(store, "her_ev_cumslut_public_t5_e2").dequeue() - getattr(store, "her_ev_cumslut_public_t5_e3").label = "hg_pr_cumslut_T5_return" - getattr(store, "her_ev_cumslut_public_t5_e3").reset() - getattr(store, "her_ev_cumslut_public_t5_e3").dequeue() - getattr(store, "her_ev_cumslut_public_t5_e1_hub").label = "hg_pr_cumslut" - getattr(store, "her_ev_cumslut_public_t5_e1_hub").req = "states.her.tier == 5" - getattr(store, "her_ev_cumslut_public_t5_e1_hub").reset() - getattr(store, "her_ev_cumslut_public_t5_e2_hub").label = "hg_pr_cumslut" - getattr(store, "her_ev_cumslut_public_t5_e2_hub").req = "states.her.tier == 5" - getattr(store, "her_ev_cumslut_public_t5_e2_hub").reset() - getattr(store, "her_ev_cumslut_public_t5_e3_hub").label = "hg_pr_cumslut" - getattr(store, "her_ev_cumslut_public_t5_e3_hub").req = "states.her.tier == 5" - getattr(store, "her_ev_cumslut_public_t5_e3_hub").reset() + store.her_ev_cumslut_public_t5_e1.label = "hg_pr_cumslut_T5_return" + store.her_ev_cumslut_public_t5_e1.reset() + store.her_ev_cumslut_public_t5_e1.dequeue() + store.her_ev_cumslut_public_t5_e2.label = "hg_pr_cumslut_T5_return" + store.her_ev_cumslut_public_t5_e2.reset() + store.her_ev_cumslut_public_t5_e2.dequeue() + store.her_ev_cumslut_public_t5_e3.label = "hg_pr_cumslut_T5_return" + store.her_ev_cumslut_public_t5_e3.reset() + store.her_ev_cumslut_public_t5_e3.dequeue() + store.her_ev_cumslut_public_t5_e1_hub.label = "hg_pr_cumslut" + store.her_ev_cumslut_public_t5_e1_hub.req = "states.her.tier == 5" + store.her_ev_cumslut_public_t5_e1_hub.reset() + store.her_ev_cumslut_public_t5_e2_hub.label = "hg_pr_cumslut" + store.her_ev_cumslut_public_t5_e2_hub.req = "states.her.tier == 5" + store.her_ev_cumslut_public_t5_e2_hub.reset() + store.her_ev_cumslut_public_t5_e3_hub.label = "hg_pr_cumslut" + store.her_ev_cumslut_public_t5_e3_hub.req = "states.her.tier == 5" + store.her_ev_cumslut_public_t5_e3_hub.reset() - getattr(store, "lun_ev_talk_to_me_t3_e1").req = "states.lun.tier == 3" - getattr(store, "lun_ev_talk_to_me_t3_e1").reset() + store.lun_ev_talk_to_me_t3_e1.req = "states.lun.tier == 3" + store.lun_ev_talk_to_me_t3_e1.reset() - getattr(store, "lun_ev_inspect_her_body_t3_e1").req = "states.lun.tier == 3" - getattr(store, "lun_ev_inspect_her_body_t3_e1").reset() + store.lun_ev_inspect_her_body_t3_e1.req = "states.lun.tier == 3" + store.lun_ev_inspect_her_body_t3_e1.reset() - getattr(store, "lun_ev_play_with_yourself_t3_e1").req = "states.lun.tier == 3" - getattr(store, "lun_ev_play_with_yourself_t3_e1").reset() - getattr(store, "lun_ev_play_with_yourself_t3_e2").req = "states.lun.tier == 3" - getattr(store, "lun_ev_play_with_yourself_t3_e2").reset() - getattr(store, "lun_ev_play_with_yourself_t3_e3").req = "states.lun.tier == 3" - getattr(store, "lun_ev_play_with_yourself_t3_e3").reset() - getattr(store, "lun_ev_play_with_yourself_t3_e4").req = "states.lun.tier == 3" - getattr(store, "lun_ev_play_with_yourself_t3_e4").reset() + store.lun_ev_play_with_yourself_t3_e1.req = "states.lun.tier == 3" + store.lun_ev_play_with_yourself_t3_e1.reset() + store.lun_ev_play_with_yourself_t3_e2.req = "states.lun.tier == 3" + store.lun_ev_play_with_yourself_t3_e2.reset() + store.lun_ev_play_with_yourself_t3_e3.req = "states.lun.tier == 3" + store.lun_ev_play_with_yourself_t3_e3.reset() + store.lun_ev_play_with_yourself_t3_e4.req = "states.lun.tier == 3" + store.lun_ev_play_with_yourself_t3_e4.reset() if states.lun.tier == 3: states.lun.level = 9 @@ -212,7 +212,7 @@ init python: doll.body.matrix = IdentityMatrix() if current < 1.461: - getattr(store, "ton_accessory_office").zorder = 235 + store.ton_accessory_office.zorder = 235 if current < 1.462: lun_ev_blowjob_t4_e1.enqueue() From 908beae5d3d5f00ae51e7277364938966d0ba7d4 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 2 Apr 2024 14:19:59 +0100 Subject: [PATCH 244/249] Maintain access convention within save compat --- game/scripts/utility/updater.rpy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 0d81258e..6196d493 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -215,10 +215,10 @@ init python: store.ton_accessory_office.zorder = 235 if current < 1.462: - lun_ev_blowjob_t4_e1.enqueue() - lun_ev_blowjob_t4_e2.enqueue() - lun_ev_blowjob_t4_e3.enqueue() - lun_ev_blowjob_t4_e4.enqueue() + store.lun_ev_blowjob_t4_e1.enqueue() + store.lun_ev_blowjob_t4_e2.enqueue() + store.lun_ev_blowjob_t4_e3.enqueue() + store.lun_ev_blowjob_t4_e4.enqueue() if current > latest: raise Exception(f"Loaded save file is incompatible. (Save Version: {current}, Game Version: {latest})") From 9aff8075930f048689c2fe13a78f1f75f53f9d43 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 2 Apr 2024 16:18:18 +0100 Subject: [PATCH 245/249] Bug fixes * Fixed inconsistent spacing * Fixed inconsistent state var access --- game/scripts/animations/ani_genie.rpy | 4 +-- .../events/favors/inspect_her_body_tier2.rpy | 2 +- .../characters/hermione/events/tentacles.rpy | 26 +++++++++---------- .../scripts/characters/snape/events/intro.rpy | 8 +++--- game/scripts/chibis/classes.rpy | 10 +++---- game/scripts/events/ending.rpy | 2 +- game/scripts/interface/parcel.rpy | 2 +- game/scripts/script.rpy | 4 +-- game/scripts/utility/engine.rpy | 2 +- 9 files changed, 30 insertions(+), 30 deletions(-) diff --git a/game/scripts/animations/ani_genie.rpy b/game/scripts/animations/ani_genie.rpy index f1ce3a78..af055844 100644 --- a/game/scripts/animations/ani_genie.rpy +++ b/game/scripts/animations/ani_genie.rpy @@ -273,10 +273,10 @@ image ch_gen dick_out: "characters/genie/chibis/jerk_off/dick_out.webp" image ch_gen dick_out_normal: - "characters/genie/chibis/jerk_off/dick_out_normal.webp" + "characters/genie/chibis/jerk_off/dick_out_normal.webp" image ch_gen dick_out_shocked: - "characters/genie/chibis/jerk_off/dick_out_shocked.webp" + "characters/genie/chibis/jerk_off/dick_out_shocked.webp" # Masturbating while standing #TODO Genie's standing jerk off chibis don't stand level with the others. Fix this and check/correct relevant events diff --git a/game/scripts/characters/cho/events/favors/inspect_her_body_tier2.rpy b/game/scripts/characters/cho/events/favors/inspect_her_body_tier2.rpy index aa0b5ab1..2defd5de 100644 --- a/game/scripts/characters/cho/events/favors/inspect_her_body_tier2.rpy +++ b/game/scripts/characters/cho/events/favors/inspect_her_body_tier2.rpy @@ -813,7 +813,7 @@ label cc_pf_strip_T2_intro_E3: cho @ cheeks blush "Does Granger do these sorts of things for you too?" ("soft", "base", "worried", "mid") - # Remove skirt. + # Remove skirt. if cho.is_worn("bottom"): play sound "sounds/cloth_sound3.ogg" hide cho_main diff --git a/game/scripts/characters/hermione/events/tentacles.rpy b/game/scripts/characters/hermione/events/tentacles.rpy index c10ba8f1..5be634bf 100644 --- a/game/scripts/characters/hermione/events/tentacles.rpy +++ b/game/scripts/characters/hermione/events/tentacles.rpy @@ -13,20 +13,20 @@ label tentacle_scene_intro: $ d_flag_03 = False label .spell: if d_flag_01 and d_flag_02 and d_flag_03: - jump .after_spell + jump .after_spell menu: - "\"Open Sesame!\"" if not d_flag_01: - $ d_flag_01 = True - gen "...{w=0.8} Guess not..." ("base", xpos="far_left", ypos="head") - jump .spell - "\"Hocus Pocus!\"" if not d_flag_02: - $ d_flag_02 = True - gen "...{w=0.8} Damn..." ("base", xpos="far_left", ypos="head") - jump .spell - "\"Abracadabra!\"" if not d_flag_03: - $ d_flag_03 = True - gen "...{w=0.8} ..." ("base", xpos="far_left", ypos="head") - jump .spell + "\"Open Sesame!\"" if not d_flag_01: + $ d_flag_01 = True + gen "...{w=0.8} Guess not..." ("base", xpos="far_left", ypos="head") + jump .spell + "\"Hocus Pocus!\"" if not d_flag_02: + $ d_flag_02 = True + gen "...{w=0.8} Damn..." ("base", xpos="far_left", ypos="head") + jump .spell + "\"Abracadabra!\"" if not d_flag_03: + $ d_flag_03 = True + gen "...{w=0.8} ..." ("base", xpos="far_left", ypos="head") + jump .spell label .after_spell: gen "Work, you stupid scroll, or I'll throw you in the fire!" ("angry", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/snape/events/intro.rpy b/game/scripts/characters/snape/events/intro.rpy index 4329070a..d2d183e6 100644 --- a/game/scripts/characters/snape/events/intro.rpy +++ b/game/scripts/characters/snape/events/intro.rpy @@ -611,8 +611,8 @@ label snape_intro_E4: sna "......................." ("snape_01") sna "Yeah, right..." ("snape_01") "\"I don't have a brother, Severus.\"": - sna "........................" ("snape_01") - sna "You may not have one, but the real Albus Dumbledore does." ("snape_01") + sna "........................" ("snape_01") + sna "You may not have one, but the real Albus Dumbledore does." ("snape_01") "-Use magic to get the right answer-": nar "You use your phenomenal cosmic powers to peek into the very fabric of the universe and get the correct answer." gen "My little brother Aberforth? Why would I miss him?" ("base", xpos="far_left", ypos="head") @@ -640,8 +640,8 @@ label snape_intro_E4: "\"A week or so...\"": sna "*Hmm*.... A week, huh..." ("snape_01") "\"Could be months...\"": - sna "That long?" ("snape_01") - sna "Now isn't that just \"perfect\"?" ("snape_01") + sna "That long?" ("snape_01") + sna "Now isn't that just \"perfect\"?" ("snape_01") "\"I have no clue...\"": sna "....................." ("snape_01") sna "Splendid..." ("snape_31") diff --git a/game/scripts/chibis/classes.rpy b/game/scripts/chibis/classes.rpy index 2e8abea5..de3ea8d4 100644 --- a/game/scripts/chibis/classes.rpy +++ b/game/scripts/chibis/classes.rpy @@ -81,13 +81,13 @@ init -1 python: Actions are defined in the `actions` dict as a tuple: (special, transform, move_action|loop_time). * `special` (bool) specifies whether layer images should come from a folder with the same name as the action. - This can be useful to prevent repetitive code in update callbacks. + This can be useful to prevent repetitive code in update callbacks. * `transform` (string) is the name of the transform that is used for this action. - It will be combined with a base transform. + It will be combined with a base transform. * `move_action` (string) if set, it's the action that will be used when the chibi starts moving after the current action. - It should not be set for move actions. + It should not be set for move actions. * `loop_time` (float) if set, it's the time in seconds for one animation loop of this action. Used to calculate movement time. - It should only be set for move actions. Set to zero to disable time adjustments. + It should only be set for move actions. Set to zero to disable time adjustments. Layers: A chibi is made up of one or more named layers. These are cleared on update and should be set by a callback function. @@ -95,7 +95,7 @@ init -1 python: * A layer can be set to either a filename or any kind of displayable. * When setting an image filename, this class will look for it in `image_path` (or `image_path/action` if the action is special). * Adding `~` as a prefix to a filename will ignore the special action folder. - This can be useful for images that are compatible with multiple actions. + This can be useful for images that are compatible with multiple actions. * Layers are updated whenever the action changes by calling `update_callback`, which is expected to set the layers again. """ diff --git a/game/scripts/events/ending.rpy b/game/scripts/events/ending.rpy index 3783d2bb..7b6a4f1d 100644 --- a/game/scripts/events/ending.rpy +++ b/game/scripts/events/ending.rpy @@ -348,7 +348,7 @@ label ball_ending_E1: play music "music/Plaint.ogg" fadein 1 fadeout 1 #SAD CREDITS MUSIC. if_changed centered """{size=+7}{color=#cbcbcb}Congratulations on completing the game!{/color}{/size}\n\n - {size=+5}{color=#cbcbcb}This is ending \"00\" out of \"02\".{/color}{/size}{#LINT_IGNORE}""" + {size=+5}{color=#cbcbcb}This is ending \"00\" out of \"02\".{/color}{/size}{#LINT_IGNORE}""" centered "{size=+7}{color=#cbcbcb}Thank you for playing!{/color}{/size}\n\n{#LINT_IGNORE}" diff --git a/game/scripts/interface/parcel.rpy b/game/scripts/interface/parcel.rpy index f82778df..ce45f199 100644 --- a/game/scripts/interface/parcel.rpy +++ b/game/scripts/interface/parcel.rpy @@ -2,7 +2,7 @@ init python: class Parcel(object): """ contents - Contents of the parcel, has to be a list of tuples - containing an item object and integer quantity [ (lollipop_ITEM, 5) ]. + containing an item object and integer quantity [ (lollipop_ITEM, 5) ]. wait - Wait time required for the item to be delivered. label - Call label called after the parcel was opened. func - A setup function called before the parcel contents is being shown to the player. diff --git a/game/scripts/script.rpy b/game/scripts/script.rpy index 20093d43..041ac48d 100644 --- a/game/scripts/script.rpy +++ b/game/scripts/script.rpy @@ -79,8 +79,8 @@ label start_dev: states.paperwork_unlocked = True - store.states.lun.ev.intro.e1_complete = True - store.states.lun.ev.intro.e2_complete = True + states.lun.ev.intro.e1_complete = True + states.lun.ev.intro.e2_complete = True for i in mirror.items: i.unlocked = True diff --git a/game/scripts/utility/engine.rpy b/game/scripts/utility/engine.rpy index 7e0803df..85d24745 100644 --- a/game/scripts/utility/engine.rpy +++ b/game/scripts/utility/engine.rpy @@ -297,7 +297,7 @@ init -100 python: for slot in cls.__dict__.get("__slots__", ()): if slot.startswith("__") and not slot.endswith("__"): raise ValueError("slotted_object __slots__ can not be mangled. " - "If you need it, mangle it by yourself.") + "If you need it, mangle it by yourself.") def _clean(self): rv = object.__reduce_ex__(self, 2)[2] From 61da56b6c8110dfee2aae57c70c3f6a94923ef93 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 2 Apr 2024 16:21:13 +0100 Subject: [PATCH 246/249] Partially revert #7ca17b7 (Breaks dev debug) --- game/scripts/events/queue.rpy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/scripts/events/queue.rpy b/game/scripts/events/queue.rpy index 04264612..cffe1ce3 100644 --- a/game/scripts/events/queue.rpy +++ b/game/scripts/events/queue.rpy @@ -156,8 +156,8 @@ init -1 python: if config.developer: def __setattr__(self, attr, value): - if getattr(self, attr, not value) != value: - id = self.id + if hasattr(self, attr) and getattr(self, attr) != value: + id = getattr(self, "id") rollback = f"{stdcol.UNDERLINE}(Rollback){stdcol.END} " if renpy.in_rollback() else "" caller_id = renpy.get_filename_line() From 0dc071261b71d09d6f4a64520231f6504ef49d86 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Tue, 2 Apr 2024 16:31:14 +0100 Subject: [PATCH 247/249] Unlock Luna's favours in developer skip --- game/scripts/script.rpy | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/game/scripts/script.rpy b/game/scripts/script.rpy index 041ac48d..d872c553 100644 --- a/game/scripts/script.rpy +++ b/game/scripts/script.rpy @@ -75,12 +75,20 @@ label start_dev: states.cho.ev.intro.e1_complete = True states.cho.ev.intro.e2_complete = True states.cho.ev.intro.e4_complete = True + states.sna.ev.hangouts.cho_e1 = True states.paperwork_unlocked = True states.lun.ev.intro.e1_complete = True states.lun.ev.intro.e2_complete = True + states.lun.ev.quibbler.stocked = True + thequibbler_ITEM.used = True + states.lun.ev.spectrespecs.e1_complete = True + states.lun.ev.spectrespecs.e2_complete = True + states.lun.ev.spectrespecs.e3_complete = True + states.lun.ev.spectrespecs.e4_complete = True + states.lun.favors_unlocked = True for i in mirror.items: i.unlocked = True From 5c4ce667a5773b223de52762f478c7bdf9870449 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 3 Apr 2024 12:38:48 +0100 Subject: [PATCH 248/249] Replace unneccesary eval --- game/scripts/doll/chibi.rpy | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/game/scripts/doll/chibi.rpy b/game/scripts/doll/chibi.rpy index d5e2bddf..ff387a03 100644 --- a/game/scripts/doll/chibi.rpy +++ b/game/scripts/doll/chibi.rpy @@ -211,11 +211,9 @@ init 5 python: self.set_pose(pose or self.walk) - # Note: Warper names and their count can change over time, - # so it's easier to just evaluate the input. # List of available warpers: # https://www.renpy.org/doc/html/atl.html?#warpers - warper = eval(f"_warper.{warper}") + warper = getattr(_warper, warper, _warper.linear) distances = [] times = [] From e295fbb791d4a7accb12bf57deb973cab5b585a4 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Mon, 8 Apr 2024 15:48:23 +0100 Subject: [PATCH 249/249] PixelateMask Shader --- game/scripts/shaders.rpy | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/game/scripts/shaders.rpy b/game/scripts/shaders.rpy index cff58c16..4b447e74 100644 --- a/game/scripts/shaders.rpy +++ b/game/scripts/shaders.rpy @@ -34,6 +34,63 @@ init python: gl_FragColor = vec4(mix(gl_FragColor.xyz, gl_FragColor.xyz * ctemp2rgb(ctemp), u_strength), 1.0); """) + renpy.register_shader("pixelatemaskshader", variables=""" + uniform sampler2D tex0; + uniform sampler2D tex1; + uniform vec2 res0; + uniform float u_step; + uniform float u_lod_bias; + attribute vec2 a_tex_coord; + varying vec2 v_tex_coord; + """, vertex_600=""" + v_tex_coord = a_tex_coord; + """, fragment_functions=""" + vec2 CalculateNewUV(vec2 uv, vec2 size, float step) { + float dx = (step / size.x); + float dy = (step / size.y); + return vec2(dx*(floor(uv.x/dx) + 0.5), dy*(floor(uv.y/dy) + 0.5)); + } + + vec4 PixelateMask(sampler2D source, float alpha, vec2 size, vec2 uv, float step, float lod) { + if (alpha > 0.0) { + vec2 new_uv = CalculateNewUV(uv, size, step); + vec4 old = vec4(texture2D(source, uv, lod).rgb, 1.0); + vec4 new = vec4(texture2D(source, new_uv, lod).rgb, 1.0); + return mix(old, new, alpha); + } + + return texture2D(source, uv, lod); + } + """, fragment_600=""" + float alpha = texture2D(tex1, v_tex_coord).a; + gl_FragColor = PixelateMask(tex0, alpha, res0, v_tex_coord, u_step, u_lod_bias); + """) + + class PixelateMask(renpy.Displayable, NoRollback): + def __init__(self, child, mask, step=1.0, **kwargs): + super().__init__(**kwargs) + self.child = renpy.displayable(child) + self.mask = renpy.displayable(mask) + self.step = step + + def render(self, width, height, st, at): + child = renpy.display.render.render(self.child, width, height, st, at) + mask = renpy.display.render.render(self.mask, width, height, st, at) + + rv = renpy.display.render.Render(width, height) + + if renpy.display.render.models: + + rv.mesh = True + rv.add_shader("pixelatemaskshader") + rv.add_uniform("u_step", self.step) + + rv.blit(child, (0, 0)) + rv.blit(mask, (0, 0)) + + renpy.redraw(self, 0) + return rv + transform color_temperature(factor=1.0, strength=1.0): mesh True shader "color_temperature_shader"