diff --git a/game/characters/astoria/body/armleft/on_hips.webp b/game/characters/astoria/body/armleft/on_hips.webp deleted file mode 100644 index 262c7f9d..00000000 --- a/game/characters/astoria/body/armleft/on_hips.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f526f0c288aaee88c077af126a86513300994798eb9e3ddc9971b717229174e1 -size 13080 diff --git a/game/characters/astoria/body/armleft/on_hips_fix.webp b/game/characters/astoria/body/armleft/on_hips_fix.webp deleted file mode 100644 index 56458ffd..00000000 --- a/game/characters/astoria/body/armleft/on_hips_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a32c1e69a75188f9cab0f3e31c7967f894a0126c3e1bc43fff431b0c015b7113 -size 4794 diff --git a/game/characters/astoria/body/armright/on_hips.webp b/game/characters/astoria/body/armright/on_hips.webp deleted file mode 100644 index 83895df3..00000000 --- a/game/characters/astoria/body/armright/on_hips.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d8ef470d7a0ad028df5dfaf19f443c5ee943fcbf05de4b2a46f7d763825172c -size 11832 diff --git a/game/characters/astoria/body/armright/on_hips_fix.webp b/game/characters/astoria/body/armright/on_hips_fix.webp deleted file mode 100644 index 8e2447be..00000000 --- a/game/characters/astoria/body/armright/on_hips_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:329e18bfcffaca912bb15bd6cfa5f22c36e5e5322f0b539a1cc2c29b49fe960a -size 6846 diff --git a/game/characters/astoria/body/base/front.webp b/game/characters/astoria/body/base/front.webp deleted file mode 100644 index d78b3d87..00000000 --- a/game/characters/astoria/body/base/front.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e47362e920b3f917cb6914855821faaedba4b7a278f62daa72b4ec577708a7a6 -size 49660 diff --git a/game/characters/astoria/body/breasts/normal.webp b/game/characters/astoria/body/breasts/normal.webp deleted file mode 100644 index ef6f20e8..00000000 --- a/game/characters/astoria/body/breasts/normal.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:afe997a209491b6f4c0535813ad99782ad7f413c4964aa1a573b78c131d54973 -size 10144 diff --git a/game/characters/astoria/bodyparts/frame/default/skin.webp b/game/characters/astoria/bodyparts/frame/default/skin.webp new file mode 100644 index 00000000..f37262ba --- /dev/null +++ b/game/characters/astoria/bodyparts/frame/default/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d7045fc6ca88fa356fded9249c2c2e89db4dec51ae0a1d259a63e440f988509 +size 72420 diff --git a/game/characters/astoria/clothes/bottom/pants_1/armfix.webp b/game/characters/astoria/clothes/bottom/pants_1/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/bottom/pants_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/bottom/pants_1_short/armfix.webp b/game/characters/astoria/clothes/bottom/pants_1_short/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/bottom/pants_1_short/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/bottom/school_skirt_1/armfix.webp b/game/characters/astoria/clothes/bottom/school_skirt_1/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/bottom/school_skirt_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/bottom/school_skirt_2/armfix.webp b/game/characters/astoria/clothes/bottom/school_skirt_2/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/bottom/school_skirt_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/bottom/school_skirt_3/armfix.webp b/game/characters/astoria/clothes/bottom/school_skirt_3/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/bottom/school_skirt_3/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/bottom/school_skirt_4/armfix.webp b/game/characters/astoria/clothes/bottom/school_skirt_4/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/bottom/school_skirt_4/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/headgear/ann_takamaki/0.webp b/game/characters/astoria/clothes/headgear/ann_takamaki/default/0.webp similarity index 100% rename from game/characters/astoria/clothes/headgear/ann_takamaki/0.webp rename to game/characters/astoria/clothes/headgear/ann_takamaki/default/0.webp diff --git a/game/characters/astoria/clothes/headgear/ann_takamaki/1.webp b/game/characters/astoria/clothes/headgear/ann_takamaki/default/1.webp similarity index 100% rename from game/characters/astoria/clothes/headgear/ann_takamaki/1.webp rename to game/characters/astoria/clothes/headgear/ann_takamaki/default/1.webp diff --git a/game/characters/astoria/clothes/headgear/ann_takamaki/outline.webp b/game/characters/astoria/clothes/headgear/ann_takamaki/default/outline.webp similarity index 100% rename from game/characters/astoria/clothes/headgear/ann_takamaki/outline.webp rename to game/characters/astoria/clothes/headgear/ann_takamaki/default/outline.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/angry.webp b/game/characters/astoria/clothes/makeup/lipstick/angry/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/angry.webp rename to game/characters/astoria/clothes/makeup/lipstick/angry/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/annoyed.webp b/game/characters/astoria/clothes/makeup/lipstick/annoyed/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/annoyed.webp rename to game/characters/astoria/clothes/makeup/lipstick/annoyed/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/base.webp b/game/characters/astoria/clothes/makeup/lipstick/base/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/base.webp rename to game/characters/astoria/clothes/makeup/lipstick/base/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/clench.webp b/game/characters/astoria/clothes/makeup/lipstick/clench/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/clench.webp rename to game/characters/astoria/clothes/makeup/lipstick/clench/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/grin.webp b/game/characters/astoria/clothes/makeup/lipstick/grin/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/grin.webp rename to game/characters/astoria/clothes/makeup/lipstick/grin/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/horny.webp b/game/characters/astoria/clothes/makeup/lipstick/horny/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/horny.webp rename to game/characters/astoria/clothes/makeup/lipstick/horny/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/open.webp b/game/characters/astoria/clothes/makeup/lipstick/open/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/open.webp rename to game/characters/astoria/clothes/makeup/lipstick/open/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/scream.webp b/game/characters/astoria/clothes/makeup/lipstick/scream/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/scream.webp rename to game/characters/astoria/clothes/makeup/lipstick/scream/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/smile.webp b/game/characters/astoria/clothes/makeup/lipstick/smile/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/smile.webp rename to game/characters/astoria/clothes/makeup/lipstick/smile/0.webp diff --git a/game/characters/astoria/clothes/makeup/lipstick/upset.webp b/game/characters/astoria/clothes/makeup/lipstick/upset/0.webp similarity index 100% rename from game/characters/astoria/clothes/makeup/lipstick/upset.webp rename to game/characters/astoria/clothes/makeup/lipstick/upset/0.webp diff --git a/game/characters/astoria/clothes/panties/basic_panties_1/armfix.webp b/game/characters/astoria/clothes/panties/basic_panties_1/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/panties/basic_panties_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/panties/basic_panties_2/armfix.webp b/game/characters/astoria/clothes/panties/basic_panties_2/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/panties/basic_panties_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/stockings/ann_takamaki/armfix.webp b/game/characters/astoria/clothes/stockings/ann_takamaki/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/stockings/ann_takamaki/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/stockings/pantyhose/armfix.webp b/game/characters/astoria/clothes/stockings/pantyhose/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/stockings/pantyhose/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/top/ann_takamaki/armfix.webp b/game/characters/astoria/clothes/top/ann_takamaki/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/top/ann_takamaki/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/body/breasts/normal_tight.webp b/game/characters/astoria/clothes/top/ann_takamaki/skin.webp similarity index 100% rename from game/characters/astoria/body/breasts/normal_tight.webp rename to game/characters/astoria/clothes/top/ann_takamaki/skin.webp diff --git a/game/characters/astoria/clothes/top/top_school_1/armfix.webp b/game/characters/astoria/clothes/top/top_school_1/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/top/top_school_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/top/top_school_2/armfix.webp b/game/characters/astoria/clothes/top/top_school_2/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/top/top_school_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/top/top_school_3/armfix.webp b/game/characters/astoria/clothes/top/top_school_3/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/top/top_school_3/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/top/top_school_4/armfix.webp b/game/characters/astoria/clothes/top/top_school_4/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/top/top_school_4/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/top/top_school_5/armfix.webp b/game/characters/astoria/clothes/top/top_school_5/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/top/top_school_5/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/clothes/top/top_school_6/armfix.webp b/game/characters/astoria/clothes/top/top_school_6/armfix.webp new file mode 100644 index 00000000..51349bad --- /dev/null +++ b/game/characters/astoria/clothes/top/top_school_6/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d076bcc114a31ac371c4945aaae53a33a6cd449280ab0399986fc1bcca483158 +size 10772 diff --git a/game/characters/astoria/face/cheeks/blush.webp b/game/characters/astoria/face/cheeks/blush/expression.webp similarity index 100% rename from game/characters/astoria/face/cheeks/blush.webp rename to game/characters/astoria/face/cheeks/blush/expression.webp diff --git a/game/characters/astoria/face/eyebrows/angry.webp b/game/characters/astoria/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/astoria/face/eyebrows/angry.webp rename to game/characters/astoria/face/eyebrows/angry/expression.webp diff --git a/game/characters/astoria/face/eyebrows/base.webp b/game/characters/astoria/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/astoria/face/eyebrows/base.webp rename to game/characters/astoria/face/eyebrows/base/expression.webp diff --git a/game/characters/astoria/face/eyebrows/worried.webp b/game/characters/astoria/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/astoria/face/eyebrows/worried.webp rename to game/characters/astoria/face/eyebrows/worried/expression.webp diff --git a/game/characters/astoria/face/eyes/base.webp b/game/characters/astoria/face/eyes/base/expression.webp similarity index 100% rename from game/characters/astoria/face/eyes/base.webp rename to game/characters/astoria/face/eyes/base/expression.webp diff --git a/game/characters/astoria/face/eyes/base_mask.webp b/game/characters/astoria/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/astoria/face/eyes/base_mask.webp rename to game/characters/astoria/face/eyes/base/eyemask.webp diff --git a/game/characters/astoria/face/eyes/closed.webp b/game/characters/astoria/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/astoria/face/eyes/closed.webp rename to game/characters/astoria/face/eyes/closed/expression.webp diff --git a/game/characters/astoria/face/eyes/narrow.webp b/game/characters/astoria/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/astoria/face/eyes/narrow.webp rename to game/characters/astoria/face/eyes/narrow/expression.webp diff --git a/game/characters/astoria/face/eyes/narrow_mask.webp b/game/characters/astoria/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/astoria/face/eyes/narrow_mask.webp rename to game/characters/astoria/face/eyes/narrow/eyemask.webp diff --git a/game/characters/astoria/face/eyes/wink.webp b/game/characters/astoria/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/astoria/face/eyes/wink.webp rename to game/characters/astoria/face/eyes/wink/expression.webp diff --git a/game/characters/astoria/face/eyes/wink_mask.webp b/game/characters/astoria/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/astoria/face/eyes/wink_mask.webp rename to game/characters/astoria/face/eyes/wink/eyemask.webp diff --git a/game/characters/astoria/face/mouth/angry.webp b/game/characters/astoria/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/angry.webp rename to game/characters/astoria/face/mouth/angry/expression.webp diff --git a/game/characters/astoria/face/mouth/annoyed.webp b/game/characters/astoria/face/mouth/annoyed/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/annoyed.webp rename to game/characters/astoria/face/mouth/annoyed/expression.webp diff --git a/game/characters/astoria/face/mouth/base.webp b/game/characters/astoria/face/mouth/base/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/base.webp rename to game/characters/astoria/face/mouth/base/expression.webp diff --git a/game/characters/astoria/face/mouth/clench.webp b/game/characters/astoria/face/mouth/clench/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/clench.webp rename to game/characters/astoria/face/mouth/clench/expression.webp diff --git a/game/characters/astoria/face/mouth/grin.webp b/game/characters/astoria/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/grin.webp rename to game/characters/astoria/face/mouth/grin/expression.webp diff --git a/game/characters/astoria/face/mouth/horny.webp b/game/characters/astoria/face/mouth/horny/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/horny.webp rename to game/characters/astoria/face/mouth/horny/expression.webp diff --git a/game/characters/astoria/face/mouth/open.webp b/game/characters/astoria/face/mouth/open/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/open.webp rename to game/characters/astoria/face/mouth/open/expression.webp diff --git a/game/characters/astoria/face/mouth/scream.webp b/game/characters/astoria/face/mouth/scream/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/scream.webp rename to game/characters/astoria/face/mouth/scream/expression.webp diff --git a/game/characters/astoria/face/mouth/smile.webp b/game/characters/astoria/face/mouth/smile/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/smile.webp rename to game/characters/astoria/face/mouth/smile/expression.webp diff --git a/game/characters/astoria/face/mouth/upset.webp b/game/characters/astoria/face/mouth/upset/expression.webp similarity index 100% rename from game/characters/astoria/face/mouth/upset.webp rename to game/characters/astoria/face/mouth/upset/expression.webp diff --git a/game/characters/astoria/face/pupils/L.webp b/game/characters/astoria/face/pupils/L/expression.webp similarity index 100% rename from game/characters/astoria/face/pupils/L.webp rename to game/characters/astoria/face/pupils/L/expression.webp diff --git a/game/characters/astoria/face/pupils/R.webp b/game/characters/astoria/face/pupils/R/expression.webp similarity index 100% rename from game/characters/astoria/face/pupils/R.webp rename to game/characters/astoria/face/pupils/R/expression.webp diff --git a/game/characters/astoria/face/pupils/ahegao.webp b/game/characters/astoria/face/pupils/ahegao/expression.webp similarity index 100% rename from game/characters/astoria/face/pupils/ahegao.webp rename to game/characters/astoria/face/pupils/ahegao/expression.webp diff --git a/game/characters/astoria/face/pupils/down.webp b/game/characters/astoria/face/pupils/down/expression.webp similarity index 100% rename from game/characters/astoria/face/pupils/down.webp rename to game/characters/astoria/face/pupils/down/expression.webp diff --git a/game/characters/astoria/face/pupils/mid.webp b/game/characters/astoria/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/astoria/face/pupils/mid.webp rename to game/characters/astoria/face/pupils/mid/expression.webp diff --git a/game/characters/astoria/face/pupils/up.webp b/game/characters/astoria/face/pupils/up/expression.webp similarity index 100% rename from game/characters/astoria/face/pupils/up.webp rename to game/characters/astoria/face/pupils/up/expression.webp diff --git a/game/characters/astoria/face/tears/crying.webp b/game/characters/astoria/face/tears/crying/expression.webp similarity index 100% rename from game/characters/astoria/face/tears/crying.webp rename to game/characters/astoria/face/tears/crying/expression.webp diff --git a/game/characters/cho/body/armleft/down.webp b/game/characters/cho/body/armleft/down.webp deleted file mode 100644 index a21015ec..00000000 --- a/game/characters/cho/body/armleft/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6da9a3762a6298532ef7a1291a5eaa323439c7439e0d1db2c41ae73707ebec91 -size 13508 diff --git a/game/characters/cho/body/armright/down.webp b/game/characters/cho/body/armright/down.webp deleted file mode 100644 index d66831cc..00000000 --- a/game/characters/cho/body/armright/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:69b853d882e6124842e077bd8a8d3aa8916baa9728c7b23b5601510dd85a98ed -size 6668 diff --git a/game/characters/cho/body/armright/down_fix.webp b/game/characters/cho/body/armright/down_fix.webp deleted file mode 100644 index 39a8046c..00000000 --- a/game/characters/cho/body/armright/down_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cd6b6d997a29e8d00977006c9307a31fc7ba89e3652022c1bc96925fac3ee0c3 -size 54 diff --git a/game/characters/cho/body/armright/up.webp b/game/characters/cho/body/armright/up.webp deleted file mode 100644 index 70ed609a..00000000 --- a/game/characters/cho/body/armright/up.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79198aaa022725f2f28ce18051197ca457947af018bd6c870c91e46436c49290 -size 25250 diff --git a/game/characters/cho/body/base/front.webp b/game/characters/cho/body/base/front.webp deleted file mode 100644 index 83f11c30..00000000 --- a/game/characters/cho/body/base/front.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1de7b69a54d723579bbd4f66734c1939754c9a7940876b65894e4b7f0b524b27 -size 48148 diff --git a/game/characters/cho/body/breasts/normal.webp b/game/characters/cho/body/breasts/normal.webp deleted file mode 100644 index 00dd9ee0..00000000 --- a/game/characters/cho/body/breasts/normal.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:19275d4fce23e6327e43cb1bcb9e91b99dc58b9c3b6fd2f159cc0bedf0a2c0b7 -size 11414 diff --git a/game/characters/cho/bodyparts/frame/default/skin.webp b/game/characters/cho/bodyparts/frame/default/skin.webp new file mode 100644 index 00000000..29f5ee67 --- /dev/null +++ b/game/characters/cho/bodyparts/frame/default/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f6cdc3cedbf0ee2450c140f652f6336608cdf99f81723dcb793bc97bf36b801 +size 62200 diff --git a/game/characters/cho/clothes/accessory/mistletoe/0.webp b/game/characters/cho/clothes/accessory/mistletoe/0.webp new file mode 100644 index 00000000..be042cb3 --- /dev/null +++ b/game/characters/cho/clothes/accessory/mistletoe/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35eb057ec687645a1d35616dc8464a56f0b1080f69f87e74b693b3a836816fef +size 1986 diff --git a/game/characters/cho/clothes/accessory/mistletoe/extra.webp b/game/characters/cho/clothes/accessory/mistletoe/extra.webp new file mode 100644 index 00000000..61f62cf0 --- /dev/null +++ b/game/characters/cho/clothes/accessory/mistletoe/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2042a2fd3d15c9d4e9ccc8cd6e5ee889a5fa7064d3ba45a5049326ae4c46a3dc +size 2584 diff --git a/game/characters/cho/clothes/accessory/mistletoe/outline.webp b/game/characters/cho/clothes/accessory/mistletoe/outline.webp new file mode 100644 index 00000000..77502413 --- /dev/null +++ b/game/characters/cho/clothes/accessory/mistletoe/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8abd5cab66e51b9a7aa598c032e609a30aa333a8ea1869e84dd255464370dd17 +size 2366 diff --git a/game/characters/cho/body/armleft/down_fix.webp b/game/characters/cho/clothes/bottom/j_school_skirt_1/armfix.webp similarity index 100% rename from game/characters/cho/body/armleft/down_fix.webp rename to game/characters/cho/clothes/bottom/j_school_skirt_1/armfix.webp diff --git a/game/characters/cho/clothes/bottom/pants_long_1/armfix.webp b/game/characters/cho/clothes/bottom/pants_long_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/pants_long_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/pants_long_2/armfix.webp b/game/characters/cho/clothes/bottom/pants_long_2/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/pants_long_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/pants_short_1/armfix.webp b/game/characters/cho/clothes/bottom/pants_short_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/pants_short_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/pants_short_2/armfix.webp b/game/characters/cho/clothes/bottom/pants_short_2/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/pants_short_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/pants_short_3/armfix.webp b/game/characters/cho/clothes/bottom/pants_short_3/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/pants_short_3/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/pants_short_4/armfix.webp b/game/characters/cho/clothes/bottom/pants_short_4/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/pants_short_4/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/quid_skirt_1/armfix.webp b/game/characters/cho/clothes/bottom/quid_skirt_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/quid_skirt_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/school_skirt_1/armfix.webp b/game/characters/cho/clothes/bottom/school_skirt_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/school_skirt_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/school_skirt_2/armfix.webp b/game/characters/cho/clothes/bottom/school_skirt_2/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/school_skirt_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/school_skirt_3/armfix.webp b/game/characters/cho/clothes/bottom/school_skirt_3/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/school_skirt_3/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/school_skirt_4/armfix.webp b/game/characters/cho/clothes/bottom/school_skirt_4/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/school_skirt_4/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/skirt_short_1/armfix.webp b/game/characters/cho/clothes/bottom/skirt_short_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/skirt_short_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/skirt_short_2/armfix.webp b/game/characters/cho/clothes/bottom/skirt_short_2/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/skirt_short_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/bottom/toon_shorts/armfix.webp b/game/characters/cho/clothes/bottom/toon_shorts/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/bottom/toon_shorts/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/headgear/antlers/default/0.webp b/game/characters/cho/clothes/headgear/antlers/default/0.webp new file mode 100644 index 00000000..709673a7 --- /dev/null +++ b/game/characters/cho/clothes/headgear/antlers/default/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92172f2dc078feca04691498153d137805f9e6e1c0d7898401d4319b5c785e7f +size 3360 diff --git a/game/characters/cho/clothes/headgear/antlers/default/1.webp b/game/characters/cho/clothes/headgear/antlers/default/1.webp new file mode 100644 index 00000000..de6767ca --- /dev/null +++ b/game/characters/cho/clothes/headgear/antlers/default/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3bb0533697416322fd938c8092e0f05e9432b2f787831db035b9b3f24aa2eae +size 2028 diff --git a/game/characters/cho/clothes/headgear/antlers/default/2.webp b/game/characters/cho/clothes/headgear/antlers/default/2.webp new file mode 100644 index 00000000..07b7d141 --- /dev/null +++ b/game/characters/cho/clothes/headgear/antlers/default/2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2e451a1b18b0449aa6f81c26cf3b1845bf2abdc19a65f5210333d44ddbcab61 +size 5390 diff --git a/game/characters/cho/clothes/headgear/antlers/default/outline.webp b/game/characters/cho/clothes/headgear/antlers/default/outline.webp new file mode 100644 index 00000000..dbd6a2be --- /dev/null +++ b/game/characters/cho/clothes/headgear/antlers/default/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a33716b16893f5db5080a2f8980d3ee96d32c822ed63dad4affe54348a1850d1 +size 8310 diff --git a/game/characters/cho/clothes/headgear/bunny_hat_1/default/0.webp b/game/characters/cho/clothes/headgear/bunny_hat_1/default/0.webp new file mode 100644 index 00000000..d80a8b17 --- /dev/null +++ b/game/characters/cho/clothes/headgear/bunny_hat_1/default/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5a4cef038d07acb93f181d5f7f6f17370c54719cab8a0a483935b7c422b2f9d +size 5604 diff --git a/game/characters/cho/clothes/headgear/bunny_hat_1/default/1.webp b/game/characters/cho/clothes/headgear/bunny_hat_1/default/1.webp new file mode 100644 index 00000000..1df191f8 --- /dev/null +++ b/game/characters/cho/clothes/headgear/bunny_hat_1/default/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e676705c15439cecd757b09db919e706064e2b37c51aff91217fc4f76af96890 +size 1524 diff --git a/game/characters/cho/clothes/headgear/bunny_hat_1/default/outline.webp b/game/characters/cho/clothes/headgear/bunny_hat_1/default/outline.webp new file mode 100644 index 00000000..6a91b873 --- /dev/null +++ b/game/characters/cho/clothes/headgear/bunny_hat_1/default/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25a8f5d2572d44525c3446bf77fd8964c81a942fe874477df0f31c1facd68aee +size 5330 diff --git a/game/characters/cho/clothes/headgear/catears/0.webp b/game/characters/cho/clothes/headgear/catears/default/0.webp similarity index 100% rename from game/characters/cho/clothes/headgear/catears/0.webp rename to game/characters/cho/clothes/headgear/catears/default/0.webp diff --git a/game/characters/cho/clothes/headgear/catears/extra.webp b/game/characters/cho/clothes/headgear/catears/default/extra.webp similarity index 100% rename from game/characters/cho/clothes/headgear/catears/extra.webp rename to game/characters/cho/clothes/headgear/catears/default/extra.webp diff --git a/game/characters/cho/clothes/headgear/catears/outline.webp b/game/characters/cho/clothes/headgear/catears/default/outline.webp similarity index 100% rename from game/characters/cho/clothes/headgear/catears/outline.webp rename to game/characters/cho/clothes/headgear/catears/default/outline.webp diff --git a/game/characters/cho/clothes/headgear/chun_li_puffies/0.webp b/game/characters/cho/clothes/headgear/chun_li_puffies/default/0.webp similarity index 100% rename from game/characters/cho/clothes/headgear/chun_li_puffies/0.webp rename to game/characters/cho/clothes/headgear/chun_li_puffies/default/0.webp diff --git a/game/characters/cho/clothes/headgear/chun_li_puffies/outline.webp b/game/characters/cho/clothes/headgear/chun_li_puffies/default/outline.webp similarity index 100% rename from game/characters/cho/clothes/headgear/chun_li_puffies/outline.webp rename to game/characters/cho/clothes/headgear/chun_li_puffies/default/outline.webp diff --git a/game/characters/cho/clothes/headgear/goggles/0.webp b/game/characters/cho/clothes/headgear/goggles/default/0.webp similarity index 100% rename from game/characters/cho/clothes/headgear/goggles/0.webp rename to game/characters/cho/clothes/headgear/goggles/default/0.webp diff --git a/game/characters/cho/clothes/headgear/goggles/1.webp b/game/characters/cho/clothes/headgear/goggles/default/1.webp similarity index 100% rename from game/characters/cho/clothes/headgear/goggles/1.webp rename to game/characters/cho/clothes/headgear/goggles/default/1.webp diff --git a/game/characters/cho/clothes/headgear/goggles/extra.webp b/game/characters/cho/clothes/headgear/goggles/default/extra.webp similarity index 100% rename from game/characters/cho/clothes/headgear/goggles/extra.webp rename to game/characters/cho/clothes/headgear/goggles/default/extra.webp diff --git a/game/characters/cho/clothes/headgear/goggles/outline.webp b/game/characters/cho/clothes/headgear/goggles/default/outline.webp similarity index 100% rename from game/characters/cho/clothes/headgear/goggles/outline.webp rename to game/characters/cho/clothes/headgear/goggles/default/outline.webp diff --git a/game/characters/cho/clothes/headgear/goggles/skin.webp b/game/characters/cho/clothes/headgear/goggles/default/skin.webp similarity index 100% rename from game/characters/cho/clothes/headgear/goggles/skin.webp rename to game/characters/cho/clothes/headgear/goggles/default/skin.webp diff --git a/game/characters/cho/clothes/headgear/police_cap/0.webp b/game/characters/cho/clothes/headgear/police_cap/default/0.webp similarity index 100% rename from game/characters/cho/clothes/headgear/police_cap/0.webp rename to game/characters/cho/clothes/headgear/police_cap/default/0.webp diff --git a/game/characters/cho/clothes/headgear/police_cap/1.webp b/game/characters/cho/clothes/headgear/police_cap/default/1.webp similarity index 100% rename from game/characters/cho/clothes/headgear/police_cap/1.webp rename to game/characters/cho/clothes/headgear/police_cap/default/1.webp diff --git a/game/characters/cho/clothes/headgear/police_cap/2.webp b/game/characters/cho/clothes/headgear/police_cap/default/2.webp similarity index 100% rename from game/characters/cho/clothes/headgear/police_cap/2.webp rename to game/characters/cho/clothes/headgear/police_cap/default/2.webp diff --git a/game/characters/cho/clothes/headgear/police_cap/3.webp b/game/characters/cho/clothes/headgear/police_cap/default/3.webp similarity index 100% rename from game/characters/cho/clothes/headgear/police_cap/3.webp rename to game/characters/cho/clothes/headgear/police_cap/default/3.webp diff --git a/game/characters/cho/clothes/headgear/police_cap/outline.webp b/game/characters/cho/clothes/headgear/police_cap/default/outline.webp similarity index 100% rename from game/characters/cho/clothes/headgear/police_cap/outline.webp rename to game/characters/cho/clothes/headgear/police_cap/default/outline.webp diff --git a/game/characters/cho/clothes/headgear/smurfette/0.webp b/game/characters/cho/clothes/headgear/smurfette/default/0.webp similarity index 100% rename from game/characters/cho/clothes/headgear/smurfette/0.webp rename to game/characters/cho/clothes/headgear/smurfette/default/0.webp diff --git a/game/characters/cho/clothes/headgear/smurfette/outline.webp b/game/characters/cho/clothes/headgear/smurfette/default/outline.webp similarity index 100% rename from game/characters/cho/clothes/headgear/smurfette/outline.webp rename to game/characters/cho/clothes/headgear/smurfette/default/outline.webp diff --git a/game/characters/cho/clothes/headgear/toon_band/0.webp b/game/characters/cho/clothes/headgear/toon_band/default/0.webp similarity index 100% rename from game/characters/cho/clothes/headgear/toon_band/0.webp rename to game/characters/cho/clothes/headgear/toon_band/default/0.webp diff --git a/game/characters/cho/clothes/headgear/toon_band/outline.webp b/game/characters/cho/clothes/headgear/toon_band/default/outline.webp similarity index 100% rename from game/characters/cho/clothes/headgear/toon_band/outline.webp rename to game/characters/cho/clothes/headgear/toon_band/default/outline.webp diff --git a/game/characters/cho/clothes/headgear/witch/0.webp b/game/characters/cho/clothes/headgear/witch/default/0.webp similarity index 100% rename from game/characters/cho/clothes/headgear/witch/0.webp rename to game/characters/cho/clothes/headgear/witch/default/0.webp diff --git a/game/characters/cho/clothes/headgear/witch/1.webp b/game/characters/cho/clothes/headgear/witch/default/1.webp similarity index 100% rename from game/characters/cho/clothes/headgear/witch/1.webp rename to game/characters/cho/clothes/headgear/witch/default/1.webp diff --git a/game/characters/cho/clothes/headgear/witch/outline.webp b/game/characters/cho/clothes/headgear/witch/default/outline.webp similarity index 100% rename from game/characters/cho/clothes/headgear/witch/outline.webp rename to game/characters/cho/clothes/headgear/witch/default/outline.webp diff --git a/game/characters/cho/clothes/headgear/witch/skin.webp b/game/characters/cho/clothes/headgear/witch/default/skin.webp similarity index 100% rename from game/characters/cho/clothes/headgear/witch/skin.webp rename to game/characters/cho/clothes/headgear/witch/default/skin.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/angry.webp b/game/characters/cho/clothes/makeup/lipstick/angry/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/angry.webp rename to game/characters/cho/clothes/makeup/lipstick/angry/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/annoyed.webp b/game/characters/cho/clothes/makeup/lipstick/annoyed/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/annoyed.webp rename to game/characters/cho/clothes/makeup/lipstick/annoyed/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/base.webp b/game/characters/cho/clothes/makeup/lipstick/base/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/base.webp rename to game/characters/cho/clothes/makeup/lipstick/base/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/clench.webp b/game/characters/cho/clothes/makeup/lipstick/clench/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/clench.webp rename to game/characters/cho/clothes/makeup/lipstick/clench/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/crooked_smile.webp b/game/characters/cho/clothes/makeup/lipstick/crooked_smile/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/crooked_smile.webp rename to game/characters/cho/clothes/makeup/lipstick/crooked_smile/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/disgust.webp b/game/characters/cho/clothes/makeup/lipstick/disgust/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/disgust.webp rename to game/characters/cho/clothes/makeup/lipstick/disgust/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/grin.webp b/game/characters/cho/clothes/makeup/lipstick/grin/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/grin.webp rename to game/characters/cho/clothes/makeup/lipstick/grin/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/horny.webp b/game/characters/cho/clothes/makeup/lipstick/horny/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/horny.webp rename to game/characters/cho/clothes/makeup/lipstick/horny/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/mad.webp b/game/characters/cho/clothes/makeup/lipstick/mad/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/mad.webp rename to game/characters/cho/clothes/makeup/lipstick/mad/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/normal.webp b/game/characters/cho/clothes/makeup/lipstick/normal/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/normal.webp rename to game/characters/cho/clothes/makeup/lipstick/normal/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/open.webp b/game/characters/cho/clothes/makeup/lipstick/open/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/open.webp rename to game/characters/cho/clothes/makeup/lipstick/open/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/open_tongue.webp b/game/characters/cho/clothes/makeup/lipstick/open_tongue/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/open_tongue.webp rename to game/characters/cho/clothes/makeup/lipstick/open_tongue/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/open_wide_tongue.webp b/game/characters/cho/clothes/makeup/lipstick/open_wide_tongue/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/open_wide_tongue.webp rename to game/characters/cho/clothes/makeup/lipstick/open_wide_tongue/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/quiver.webp b/game/characters/cho/clothes/makeup/lipstick/quiver/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/quiver.webp rename to game/characters/cho/clothes/makeup/lipstick/quiver/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/scream.webp b/game/characters/cho/clothes/makeup/lipstick/scream/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/scream.webp rename to game/characters/cho/clothes/makeup/lipstick/scream/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/silly.webp b/game/characters/cho/clothes/makeup/lipstick/silly/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/silly.webp rename to game/characters/cho/clothes/makeup/lipstick/silly/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/smile.webp b/game/characters/cho/clothes/makeup/lipstick/smile/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/smile.webp rename to game/characters/cho/clothes/makeup/lipstick/smile/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/soft.webp b/game/characters/cho/clothes/makeup/lipstick/soft/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/soft.webp rename to game/characters/cho/clothes/makeup/lipstick/soft/0.webp diff --git a/game/characters/cho/clothes/makeup/lipstick/upset.webp b/game/characters/cho/clothes/makeup/lipstick/upset/0.webp similarity index 100% rename from game/characters/cho/clothes/makeup/lipstick/upset.webp rename to game/characters/cho/clothes/makeup/lipstick/upset/0.webp diff --git a/game/characters/cho/clothes/neckwear/reindeer_collar/0.webp b/game/characters/cho/clothes/neckwear/reindeer_collar/0.webp new file mode 100644 index 00000000..8f69f773 --- /dev/null +++ b/game/characters/cho/clothes/neckwear/reindeer_collar/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75f95acaa27ef005acce0f2e20c26fa3a5ab3513d47262f9e66c4dceefc37c13 +size 2452 diff --git a/game/characters/cho/clothes/neckwear/reindeer_collar/1.webp b/game/characters/cho/clothes/neckwear/reindeer_collar/1.webp new file mode 100644 index 00000000..7253f000 --- /dev/null +++ b/game/characters/cho/clothes/neckwear/reindeer_collar/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cd9bf29118b2166ad1c5f12843ad490e328002804f57a787aa278edf0150416 +size 2004 diff --git a/game/characters/cho/clothes/neckwear/reindeer_collar/extra.webp b/game/characters/cho/clothes/neckwear/reindeer_collar/extra.webp new file mode 100644 index 00000000..cfbfa621 --- /dev/null +++ b/game/characters/cho/clothes/neckwear/reindeer_collar/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:291241b8e8a6a3834d4b9c19559c3686507207cfe349ca3902ca22b597ad2cf7 +size 1750 diff --git a/game/characters/cho/clothes/neckwear/reindeer_collar/outline.webp b/game/characters/cho/clothes/neckwear/reindeer_collar/outline.webp new file mode 100644 index 00000000..3b037aef --- /dev/null +++ b/game/characters/cho/clothes/neckwear/reindeer_collar/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd50eb13e065bc019602c78e53bdc1f8658c57e5f84a0aa153fb19e18c36ade9 +size 2400 diff --git a/game/characters/cho/clothes/panties/bikini_bottom_1/armfix.webp b/game/characters/cho/clothes/panties/bikini_bottom_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/panties/bikini_bottom_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/panties/bikini_bottom_2/armfix.webp b/game/characters/cho/clothes/panties/bikini_bottom_2/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/panties/bikini_bottom_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/panties/sport_panties_1/armfix.webp b/game/characters/cho/clothes/panties/sport_panties_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/panties/sport_panties_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/robe/robe_quidditch_1/armfix.webp b/game/characters/cho/clothes/robe/robe_quidditch_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/robe/robe_quidditch_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/stockings/bunny_stockings_1/0.webp b/game/characters/cho/clothes/stockings/bunny_stockings_1/0.webp new file mode 100644 index 00000000..c626d10e --- /dev/null +++ b/game/characters/cho/clothes/stockings/bunny_stockings_1/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81e757df86fcf7b1f345ff373657f35a3b049af780778d1fa685b2e9224da65d +size 4368 diff --git a/game/characters/cho/clothes/stockings/bunny_stockings_1/armfix.webp b/game/characters/cho/clothes/stockings/bunny_stockings_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/stockings/bunny_stockings_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/stockings/bunny_stockings_1/outline.webp b/game/characters/cho/clothes/stockings/bunny_stockings_1/outline.webp new file mode 100644 index 00000000..4178b93e --- /dev/null +++ b/game/characters/cho/clothes/stockings/bunny_stockings_1/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a349908b966c38f4860e4c0a3c8acdfbb8297a8a722dac4438be47c14b8275d +size 42184 diff --git a/game/characters/cho/clothes/stockings/fishnet/armfix.webp b/game/characters/cho/clothes/stockings/fishnet/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/stockings/fishnet/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/stockings/lace_stockings_1/armfix.webp b/game/characters/cho/clothes/stockings/lace_stockings_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/stockings/lace_stockings_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/stockings/pantyhose/armfix.webp b/game/characters/cho/clothes/stockings/pantyhose/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/stockings/pantyhose/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/stockings/sailor/armfix.webp b/game/characters/cho/clothes/stockings/sailor/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/stockings/sailor/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/top/bunny_top_1/0.webp b/game/characters/cho/clothes/top/bunny_top_1/0.webp new file mode 100644 index 00000000..b15c714a --- /dev/null +++ b/game/characters/cho/clothes/top/bunny_top_1/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:879be041d95f32277456b616f01a22c6e8dbd568f2a1b5099829346f23bedcfc +size 12608 diff --git a/game/characters/cho/clothes/top/bunny_top_1/extra.webp b/game/characters/cho/clothes/top/bunny_top_1/extra.webp new file mode 100644 index 00000000..323c9ae0 --- /dev/null +++ b/game/characters/cho/clothes/top/bunny_top_1/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:764090f79fe453403d16f75a2460040b06ce61a6dd067f3f611e2828f69caae6 +size 16012 diff --git a/game/characters/cho/clothes/top/bunny_top_1/outline.webp b/game/characters/cho/clothes/top/bunny_top_1/outline.webp new file mode 100644 index 00000000..fb6734f8 --- /dev/null +++ b/game/characters/cho/clothes/top/bunny_top_1/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27f8147870d6ed115ff19f05af06f4ef74ed2e482e3afbb52d88215c07330692 +size 9546 diff --git a/game/characters/cho/clothes/top/bunny_top_1/skin.webp b/game/characters/cho/clothes/top/bunny_top_1/skin.webp new file mode 100644 index 00000000..dc969c52 --- /dev/null +++ b/game/characters/cho/clothes/top/bunny_top_1/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96aa660d59137b0ca5a42654124c1fc4503f26ed9c5e866cf1a336ca872e5234 +size 4104 diff --git a/game/characters/cho/clothes/top/bunny_top_2/0.webp b/game/characters/cho/clothes/top/bunny_top_2/0.webp new file mode 100644 index 00000000..4e4de3c0 --- /dev/null +++ b/game/characters/cho/clothes/top/bunny_top_2/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bac9fc6be2fe5ba67f48ce8977a0ba7ae79d59389dcd4cc5a0f80e0fa659a42b +size 11940 diff --git a/game/characters/cho/clothes/top/bunny_top_2/extra.webp b/game/characters/cho/clothes/top/bunny_top_2/extra.webp new file mode 100644 index 00000000..a14f3a83 --- /dev/null +++ b/game/characters/cho/clothes/top/bunny_top_2/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb8fd05863501b8723a682b6e9642d156814ac738fdfd6dbd89f24465672626c +size 15690 diff --git a/game/characters/cho/clothes/top/bunny_top_2/outline.webp b/game/characters/cho/clothes/top/bunny_top_2/outline.webp new file mode 100644 index 00000000..01f988ed --- /dev/null +++ b/game/characters/cho/clothes/top/bunny_top_2/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c97c8000a9907c88b1770ebe8dc75fc1b3c9b75ba561db95e94dbac6e668334c +size 9378 diff --git a/game/characters/cho/clothes/top/bunny_top_2/skin.webp b/game/characters/cho/clothes/top/bunny_top_2/skin.webp new file mode 100644 index 00000000..ce5d073b --- /dev/null +++ b/game/characters/cho/clothes/top/bunny_top_2/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2f1a557957a9fd83d2cb81b26276615bead6331eb57e38e28752493916841f7 +size 4292 diff --git a/game/characters/cho/clothes/top/chun_li_dress/armfix.webp b/game/characters/cho/clothes/top/chun_li_dress/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/top/chun_li_dress/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/top/dress_1/armfix.webp b/game/characters/cho/clothes/top/dress_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/top/dress_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/top/police/armfix.webp b/game/characters/cho/clothes/top/police/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/top/police/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/top/smurfette/armfix.webp b/game/characters/cho/clothes/top/smurfette/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/top/smurfette/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/top/top_j_school_1/armfix.webp b/game/characters/cho/clothes/top/top_j_school_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/top/top_j_school_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/top/top_sweater_1/armfix.webp b/game/characters/cho/clothes/top/top_sweater_1/armfix.webp new file mode 100644 index 00000000..ea2266ad --- /dev/null +++ b/game/characters/cho/clothes/top/top_sweater_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:183ea04b987eaab585275c67a398a49dd972a736c0acc22042b334f74449d96b +size 6334 diff --git a/game/characters/cho/clothes/top/top_sweater_2/1.webp b/game/characters/cho/clothes/top/top_sweater_2/1.webp deleted file mode 100644 index b6b1d3ab..00000000 --- a/game/characters/cho/clothes/top/top_sweater_2/1.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb7d166b27b8355520d9632775867676c0107eaa3007a07a78f596a1f725bda5 -size 4906 diff --git a/game/characters/cho/clothes/top/virgin_killer_top/0.webp b/game/characters/cho/clothes/top/virgin_killer_top/0.webp new file mode 100644 index 00000000..3830ea8b --- /dev/null +++ b/game/characters/cho/clothes/top/virgin_killer_top/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ca95008f05054bb696b8beb0d4ce15030147f24d3a8c0f7277bed40b1b02e1a +size 44372 diff --git a/game/characters/cho/clothes/top/virgin_killer_top/1.webp b/game/characters/cho/clothes/top/virgin_killer_top/1.webp new file mode 100644 index 00000000..63f36002 --- /dev/null +++ b/game/characters/cho/clothes/top/virgin_killer_top/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58565edd687ce8ca9488ac5fe35c9df4daeda1c7df0befc4b134f4afd09d2d62 +size 2864 diff --git a/game/characters/cho/clothes/top/virgin_killer_top/outline.webp b/game/characters/cho/clothes/top/virgin_killer_top/outline.webp new file mode 100644 index 00000000..310d33c2 --- /dev/null +++ b/game/characters/cho/clothes/top/virgin_killer_top/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cf889c43eb301c18e50bf921b2890a9df4d87cae41a364e34a577a31fcd8e3c +size 20488 diff --git a/game/characters/cho/clothes/top/virgin_killer_top/skin.webp b/game/characters/cho/clothes/top/virgin_killer_top/skin.webp new file mode 100644 index 00000000..55928d87 --- /dev/null +++ b/game/characters/cho/clothes/top/virgin_killer_top/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7954e27ad9ef8ae73236acb86dc52a47beee27d14e23fd1c642a138d0c882c0e +size 8684 diff --git a/game/characters/cho/cum/body/heavy.webp b/game/characters/cho/cum/body/heavy/cum.webp similarity index 100% rename from game/characters/cho/cum/body/heavy.webp rename to game/characters/cho/cum/body/heavy/cum.webp diff --git a/game/characters/cho/cum/body/heavy_skin.webp b/game/characters/cho/cum/body/heavy/skin.webp similarity index 100% rename from game/characters/cho/cum/body/heavy_skin.webp rename to game/characters/cho/cum/body/heavy/skin.webp diff --git a/game/characters/cho/cum/body/light.webp b/game/characters/cho/cum/body/light/cum.webp similarity index 100% rename from game/characters/cho/cum/body/light.webp rename to game/characters/cho/cum/body/light/cum.webp diff --git a/game/characters/cho/cum/body/light_skin.webp b/game/characters/cho/cum/body/light/skin.webp similarity index 100% rename from game/characters/cho/cum/body/light_skin.webp rename to game/characters/cho/cum/body/light/skin.webp diff --git a/game/characters/cho/cum/breasts/heavy.webp b/game/characters/cho/cum/breasts/heavy/cum.webp similarity index 100% rename from game/characters/cho/cum/breasts/heavy.webp rename to game/characters/cho/cum/breasts/heavy/cum.webp diff --git a/game/characters/cho/cum/breasts/heavy_skin.webp b/game/characters/cho/cum/breasts/heavy/skin.webp similarity index 100% rename from game/characters/cho/cum/breasts/heavy_skin.webp rename to game/characters/cho/cum/breasts/heavy/skin.webp diff --git a/game/characters/cho/cum/breasts/light.webp b/game/characters/cho/cum/breasts/light/cum.webp similarity index 100% rename from game/characters/cho/cum/breasts/light.webp rename to game/characters/cho/cum/breasts/light/cum.webp diff --git a/game/characters/cho/cum/breasts/light_skin.webp b/game/characters/cho/cum/breasts/light/skin.webp similarity index 100% rename from game/characters/cho/cum/breasts/light_skin.webp rename to game/characters/cho/cum/breasts/light/skin.webp diff --git a/game/characters/cho/cum/crotch/heavy.webp b/game/characters/cho/cum/crotch/heavy/cum.webp similarity index 100% rename from game/characters/cho/cum/crotch/heavy.webp rename to game/characters/cho/cum/crotch/heavy/cum.webp diff --git a/game/characters/cho/cum/crotch/heavy_skin.webp b/game/characters/cho/cum/crotch/heavy/skin.webp similarity index 100% rename from game/characters/cho/cum/crotch/heavy_skin.webp rename to game/characters/cho/cum/crotch/heavy/skin.webp diff --git a/game/characters/cho/cum/crotch/light.webp b/game/characters/cho/cum/crotch/light/cum.webp similarity index 100% rename from game/characters/cho/cum/crotch/light.webp rename to game/characters/cho/cum/crotch/light/cum.webp diff --git a/game/characters/cho/cum/crotch/light_skin.webp b/game/characters/cho/cum/crotch/light/skin.webp similarity index 100% rename from game/characters/cho/cum/crotch/light_skin.webp rename to game/characters/cho/cum/crotch/light/skin.webp diff --git a/game/characters/cho/cum/face/heavy.webp b/game/characters/cho/cum/face/heavy/cum.webp similarity index 100% rename from game/characters/cho/cum/face/heavy.webp rename to game/characters/cho/cum/face/heavy/cum.webp diff --git a/game/characters/cho/cum/face/heavy_skin.webp b/game/characters/cho/cum/face/heavy/skin.webp similarity index 100% rename from game/characters/cho/cum/face/heavy_skin.webp rename to game/characters/cho/cum/face/heavy/skin.webp diff --git a/game/characters/cho/cum/face/light.webp b/game/characters/cho/cum/face/light/cum.webp similarity index 100% rename from game/characters/cho/cum/face/light.webp rename to game/characters/cho/cum/face/light/cum.webp diff --git a/game/characters/cho/cum/face/light_skin.webp b/game/characters/cho/cum/face/light/skin.webp similarity index 100% rename from game/characters/cho/cum/face/light_skin.webp rename to game/characters/cho/cum/face/light/skin.webp diff --git a/game/characters/cho/cum/hair/heavy.webp b/game/characters/cho/cum/hair/heavy/cum.webp similarity index 100% rename from game/characters/cho/cum/hair/heavy.webp rename to game/characters/cho/cum/hair/heavy/cum.webp diff --git a/game/characters/cho/cum/hair/light.webp b/game/characters/cho/cum/hair/light/cum.webp similarity index 100% rename from game/characters/cho/cum/hair/light.webp rename to game/characters/cho/cum/hair/light/cum.webp diff --git a/game/characters/cho/cum/legs/heavy.webp b/game/characters/cho/cum/legs/heavy/cum.webp similarity index 100% rename from game/characters/cho/cum/legs/heavy.webp rename to game/characters/cho/cum/legs/heavy/cum.webp diff --git a/game/characters/cho/cum/legs/heavy_skin.webp b/game/characters/cho/cum/legs/heavy/skin.webp similarity index 100% rename from game/characters/cho/cum/legs/heavy_skin.webp rename to game/characters/cho/cum/legs/heavy/skin.webp diff --git a/game/characters/cho/cum/legs/light.webp b/game/characters/cho/cum/legs/light/cum.webp similarity index 100% rename from game/characters/cho/cum/legs/light.webp rename to game/characters/cho/cum/legs/light/cum.webp diff --git a/game/characters/cho/cum/legs/light_skin.webp b/game/characters/cho/cum/legs/light/skin.webp similarity index 100% rename from game/characters/cho/cum/legs/light_skin.webp rename to game/characters/cho/cum/legs/light/skin.webp diff --git a/game/characters/cho/cum/pussy/heavy.webp b/game/characters/cho/cum/pussy/heavy/cum.webp similarity index 100% rename from game/characters/cho/cum/pussy/heavy.webp rename to game/characters/cho/cum/pussy/heavy/cum.webp diff --git a/game/characters/cho/cum/pussy/light.webp b/game/characters/cho/cum/pussy/light/cum.webp similarity index 100% rename from game/characters/cho/cum/pussy/light.webp rename to game/characters/cho/cum/pussy/light/cum.webp diff --git a/game/characters/cho/face/cheeks/blush.webp b/game/characters/cho/face/cheeks/blush/expression.webp similarity index 100% rename from game/characters/cho/face/cheeks/blush.webp rename to game/characters/cho/face/cheeks/blush/expression.webp diff --git a/game/characters/cho/face/cheeks/heavy_blush.webp b/game/characters/cho/face/cheeks/blush_heavy/expression.webp similarity index 100% rename from game/characters/cho/face/cheeks/heavy_blush.webp rename to game/characters/cho/face/cheeks/blush_heavy/expression.webp diff --git a/game/characters/cho/face/cheeks/dummy.webp b/game/characters/cho/face/cheeks/dummy.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/face/cheeks/dummy.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/cho/face/eyebrows/angry.webp b/game/characters/cho/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/cho/face/eyebrows/angry.webp rename to game/characters/cho/face/eyebrows/angry/expression.webp diff --git a/game/characters/cho/face/eyebrows/angry_skin.webp b/game/characters/cho/face/eyebrows/angry/skin.webp similarity index 100% rename from game/characters/cho/face/eyebrows/angry_skin.webp rename to game/characters/cho/face/eyebrows/angry/skin.webp diff --git a/game/characters/cho/face/eyebrows/base.webp b/game/characters/cho/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/cho/face/eyebrows/base.webp rename to game/characters/cho/face/eyebrows/base/expression.webp diff --git a/game/characters/cho/face/eyebrows/base_skin.webp b/game/characters/cho/face/eyebrows/base/skin.webp similarity index 100% rename from game/characters/cho/face/eyebrows/base_skin.webp rename to game/characters/cho/face/eyebrows/base/skin.webp diff --git a/game/characters/cho/face/eyebrows/raised.webp b/game/characters/cho/face/eyebrows/raised/expression.webp similarity index 100% rename from game/characters/cho/face/eyebrows/raised.webp rename to game/characters/cho/face/eyebrows/raised/expression.webp diff --git a/game/characters/cho/face/eyebrows/raised_skin.webp b/game/characters/cho/face/eyebrows/raised/skin.webp similarity index 100% rename from game/characters/cho/face/eyebrows/raised_skin.webp rename to game/characters/cho/face/eyebrows/raised/skin.webp diff --git a/game/characters/cho/face/eyebrows/worried.webp b/game/characters/cho/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/cho/face/eyebrows/worried.webp rename to game/characters/cho/face/eyebrows/worried/expression.webp diff --git a/game/characters/cho/face/eyebrows/worried_skin.webp b/game/characters/cho/face/eyebrows/worried/skin.webp similarity index 100% rename from game/characters/cho/face/eyebrows/worried_skin.webp rename to game/characters/cho/face/eyebrows/worried/skin.webp diff --git a/game/characters/cho/face/eyes/base.webp b/game/characters/cho/face/eyes/base/expression.webp similarity index 100% rename from game/characters/cho/face/eyes/base.webp rename to game/characters/cho/face/eyes/base/expression.webp diff --git a/game/characters/cho/face/eyes/base_mask.webp b/game/characters/cho/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/cho/face/eyes/base_mask.webp rename to game/characters/cho/face/eyes/base/eyemask.webp diff --git a/game/characters/cho/face/eyes/base_skin.webp b/game/characters/cho/face/eyes/base/skin.webp similarity index 100% rename from game/characters/cho/face/eyes/base_skin.webp rename to game/characters/cho/face/eyes/base/skin.webp diff --git a/game/characters/cho/face/eyes/closed.webp b/game/characters/cho/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/cho/face/eyes/closed.webp rename to game/characters/cho/face/eyes/closed/expression.webp diff --git a/game/characters/cho/face/eyes/closed_skin.webp b/game/characters/cho/face/eyes/closed/skin.webp similarity index 100% rename from game/characters/cho/face/eyes/closed_skin.webp rename to game/characters/cho/face/eyes/closed/skin.webp diff --git a/game/characters/cho/face/eyes/happyCl.webp b/game/characters/cho/face/eyes/happyCl/expression.webp similarity index 100% rename from game/characters/cho/face/eyes/happyCl.webp rename to game/characters/cho/face/eyes/happyCl/expression.webp diff --git a/game/characters/cho/face/eyes/happyCl_skin.webp b/game/characters/cho/face/eyes/happyCl/skin.webp similarity index 100% rename from game/characters/cho/face/eyes/happyCl_skin.webp rename to game/characters/cho/face/eyes/happyCl/skin.webp diff --git a/game/characters/cho/face/eyes/narrow.webp b/game/characters/cho/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/cho/face/eyes/narrow.webp rename to game/characters/cho/face/eyes/narrow/expression.webp diff --git a/game/characters/cho/face/eyes/narrow_mask.webp b/game/characters/cho/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/cho/face/eyes/narrow_mask.webp rename to game/characters/cho/face/eyes/narrow/eyemask.webp diff --git a/game/characters/cho/face/eyes/narrow_skin.webp b/game/characters/cho/face/eyes/narrow/skin.webp similarity index 100% rename from game/characters/cho/face/eyes/narrow_skin.webp rename to game/characters/cho/face/eyes/narrow/skin.webp diff --git a/game/characters/cho/face/eyes/wide.webp b/game/characters/cho/face/eyes/wide/expression.webp similarity index 100% rename from game/characters/cho/face/eyes/wide.webp rename to game/characters/cho/face/eyes/wide/expression.webp diff --git a/game/characters/cho/face/eyes/wide_mask.webp b/game/characters/cho/face/eyes/wide/eyemask.webp similarity index 100% rename from game/characters/cho/face/eyes/wide_mask.webp rename to game/characters/cho/face/eyes/wide/eyemask.webp diff --git a/game/characters/cho/face/eyes/wide_skin.webp b/game/characters/cho/face/eyes/wide/skin.webp similarity index 100% rename from game/characters/cho/face/eyes/wide_skin.webp rename to game/characters/cho/face/eyes/wide/skin.webp diff --git a/game/characters/cho/face/eyes/wink.webp b/game/characters/cho/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/cho/face/eyes/wink.webp rename to game/characters/cho/face/eyes/wink/expression.webp diff --git a/game/characters/cho/face/eyes/wink_mask.webp b/game/characters/cho/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/cho/face/eyes/wink_mask.webp rename to game/characters/cho/face/eyes/wink/eyemask.webp diff --git a/game/characters/cho/face/eyes/wink_skin.webp b/game/characters/cho/face/eyes/wink/skin.webp similarity index 100% rename from game/characters/cho/face/eyes/wink_skin.webp rename to game/characters/cho/face/eyes/wink/skin.webp diff --git a/game/characters/cho/face/mouth/angry.webp b/game/characters/cho/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/angry.webp rename to game/characters/cho/face/mouth/angry/expression.webp diff --git a/game/characters/cho/face/mouth/annoyed.webp b/game/characters/cho/face/mouth/annoyed/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/annoyed.webp rename to game/characters/cho/face/mouth/annoyed/expression.webp diff --git a/game/characters/cho/face/mouth/base.webp b/game/characters/cho/face/mouth/base/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/base.webp rename to game/characters/cho/face/mouth/base/expression.webp diff --git a/game/characters/cho/face/mouth/clench.webp b/game/characters/cho/face/mouth/clench/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/clench.webp rename to game/characters/cho/face/mouth/clench/expression.webp diff --git a/game/characters/cho/face/mouth/crooked_smile.webp b/game/characters/cho/face/mouth/crooked/smile.webp similarity index 100% rename from game/characters/cho/face/mouth/crooked_smile.webp rename to game/characters/cho/face/mouth/crooked/smile.webp diff --git a/game/characters/cho/face/mouth/disgust.webp b/game/characters/cho/face/mouth/disgust/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/disgust.webp rename to game/characters/cho/face/mouth/disgust/expression.webp diff --git a/game/characters/cho/face/mouth/grin.webp b/game/characters/cho/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/grin.webp rename to game/characters/cho/face/mouth/grin/expression.webp diff --git a/game/characters/cho/face/mouth/horny.webp b/game/characters/cho/face/mouth/horny/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/horny.webp rename to game/characters/cho/face/mouth/horny/expression.webp diff --git a/game/characters/cho/face/mouth/mad.webp b/game/characters/cho/face/mouth/mad/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/mad.webp rename to game/characters/cho/face/mouth/mad/expression.webp diff --git a/game/characters/cho/face/mouth/normal.webp b/game/characters/cho/face/mouth/normal/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/normal.webp rename to game/characters/cho/face/mouth/normal/expression.webp diff --git a/game/characters/cho/face/mouth/open.webp b/game/characters/cho/face/mouth/open/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/open.webp rename to game/characters/cho/face/mouth/open/expression.webp diff --git a/game/characters/cho/face/mouth/open_tongue.webp b/game/characters/cho/face/mouth/open_tongue/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/open_tongue.webp rename to game/characters/cho/face/mouth/open_tongue/expression.webp diff --git a/game/characters/cho/face/mouth/open_wide_tongue.webp b/game/characters/cho/face/mouth/open_wide/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/open_wide_tongue.webp rename to game/characters/cho/face/mouth/open_wide/expression.webp diff --git a/game/characters/cho/face/mouth/quiver.webp b/game/characters/cho/face/mouth/quiver/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/quiver.webp rename to game/characters/cho/face/mouth/quiver/expression.webp diff --git a/game/characters/cho/face/mouth/scream.webp b/game/characters/cho/face/mouth/scream/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/scream.webp rename to game/characters/cho/face/mouth/scream/expression.webp diff --git a/game/characters/cho/face/mouth/silly.webp b/game/characters/cho/face/mouth/silly/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/silly.webp rename to game/characters/cho/face/mouth/silly/expression.webp diff --git a/game/characters/cho/face/mouth/smile.webp b/game/characters/cho/face/mouth/smile/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/smile.webp rename to game/characters/cho/face/mouth/smile/expression.webp diff --git a/game/characters/cho/face/mouth/soft.webp b/game/characters/cho/face/mouth/soft/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/soft.webp rename to game/characters/cho/face/mouth/soft/expression.webp diff --git a/game/characters/cho/face/mouth/upset.webp b/game/characters/cho/face/mouth/upset/expression.webp similarity index 100% rename from game/characters/cho/face/mouth/upset.webp rename to game/characters/cho/face/mouth/upset/expression.webp diff --git a/game/characters/cho/face/pupils/L.webp b/game/characters/cho/face/pupils/L/expression.webp similarity index 100% rename from game/characters/cho/face/pupils/L.webp rename to game/characters/cho/face/pupils/L/expression.webp diff --git a/game/characters/cho/face/pupils/R.webp b/game/characters/cho/face/pupils/R/expression.webp similarity index 100% rename from game/characters/cho/face/pupils/R.webp rename to game/characters/cho/face/pupils/R/expression.webp diff --git a/game/characters/cho/face/pupils/ahegao.webp b/game/characters/cho/face/pupils/ahegao/expression.webp similarity index 100% rename from game/characters/cho/face/pupils/ahegao.webp rename to game/characters/cho/face/pupils/ahegao/expression.webp diff --git a/game/characters/cho/face/pupils/down.webp b/game/characters/cho/face/pupils/down/expression.webp similarity index 100% rename from game/characters/cho/face/pupils/down.webp rename to game/characters/cho/face/pupils/down/expression.webp diff --git a/game/characters/cho/face/pupils/downR.webp b/game/characters/cho/face/pupils/downR/expression.webp similarity index 100% rename from game/characters/cho/face/pupils/downR.webp rename to game/characters/cho/face/pupils/downR/expression.webp diff --git a/game/characters/cho/face/pupils/mid.webp b/game/characters/cho/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/cho/face/pupils/mid.webp rename to game/characters/cho/face/pupils/mid/expression.webp diff --git a/game/characters/cho/face/pupils/stare.webp b/game/characters/cho/face/pupils/stare/expression.webp similarity index 100% rename from game/characters/cho/face/pupils/stare.webp rename to game/characters/cho/face/pupils/stare/expression.webp diff --git a/game/characters/cho/face/pupils/up.webp b/game/characters/cho/face/pupils/up/expression.webp similarity index 100% rename from game/characters/cho/face/pupils/up.webp rename to game/characters/cho/face/pupils/up/expression.webp diff --git a/game/characters/cho/poses/broom/body/armleft/down.webp b/game/characters/cho/poses/broom/body/armleft/down.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/poses/broom/body/armleft/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/cho/poses/broom/body/armleft/down_fix.webp b/game/characters/cho/poses/broom/body/armleft/down_fix.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/poses/broom/body/armleft/down_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/cho/poses/broom/body/armright/down.webp b/game/characters/cho/poses/broom/body/armright/down.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/poses/broom/body/armright/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/cho/poses/broom/body/armright/down_fix.webp b/game/characters/cho/poses/broom/body/armright/down_fix.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/poses/broom/body/armright/down_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/cho/poses/broom/body/armright/snitch_fix.webp b/game/characters/cho/poses/broom/body/armright/snitch_fix.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/poses/broom/body/armright/snitch_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/cho/poses/broom/body/armright/up.webp b/game/characters/cho/poses/broom/body/armright/up.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/poses/broom/body/armright/up.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/cho/poses/broom/body/breasts/normal.webp b/game/characters/cho/poses/broom/body/breasts/normal.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/poses/broom/body/breasts/normal.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/cho/poses/broom/body/base/front.webp b/game/characters/cho/poses/broom/body/front.webp similarity index 100% rename from game/characters/cho/poses/broom/body/base/front.webp rename to game/characters/cho/poses/broom/body/front.webp diff --git a/game/characters/cho/poses/broom/clothes/accessory/protectors2/0.webp b/game/characters/cho/poses/broom/clothes/accessory/protectors2/0.webp deleted file mode 100644 index 6fbb7bcc..00000000 --- a/game/characters/cho/poses/broom/clothes/accessory/protectors2/0.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e4f16469f76fa22ea43a2346407a802434ae02dff4da1c40bec6af146a42feae -size 94 diff --git a/game/characters/cho/poses/broom/body/armright/snitch.webp b/game/characters/cho/poses/broom/clothes/accessory/snitch_in_hand/extra.webp similarity index 100% rename from game/characters/cho/poses/broom/body/armright/snitch.webp rename to game/characters/cho/poses/broom/clothes/accessory/snitch_in_hand/extra.webp diff --git a/game/characters/cho/poses/broom/face/cheeks/blush.webp b/game/characters/cho/poses/broom/face/cheeks/blush/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/cheeks/blush.webp rename to game/characters/cho/poses/broom/face/cheeks/blush/expression.webp diff --git a/game/characters/cho/poses/broom/face/cheeks/heavy_blush.webp b/game/characters/cho/poses/broom/face/cheeks/blush_heavy/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/cheeks/heavy_blush.webp rename to game/characters/cho/poses/broom/face/cheeks/blush_heavy/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyebrows/angry.webp b/game/characters/cho/poses/broom/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyebrows/angry.webp rename to game/characters/cho/poses/broom/face/eyebrows/angry/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyebrows/angry_skin.webp b/game/characters/cho/poses/broom/face/eyebrows/angry/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyebrows/angry_skin.webp rename to game/characters/cho/poses/broom/face/eyebrows/angry/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyebrows/base.webp b/game/characters/cho/poses/broom/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyebrows/base.webp rename to game/characters/cho/poses/broom/face/eyebrows/base/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyebrows/base_skin.webp b/game/characters/cho/poses/broom/face/eyebrows/base/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyebrows/base_skin.webp rename to game/characters/cho/poses/broom/face/eyebrows/base/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyebrows/raised.webp b/game/characters/cho/poses/broom/face/eyebrows/raised/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyebrows/raised.webp rename to game/characters/cho/poses/broom/face/eyebrows/raised/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyebrows/raised_skin.webp b/game/characters/cho/poses/broom/face/eyebrows/raised/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyebrows/raised_skin.webp rename to game/characters/cho/poses/broom/face/eyebrows/raised/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyebrows/worried.webp b/game/characters/cho/poses/broom/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyebrows/worried.webp rename to game/characters/cho/poses/broom/face/eyebrows/worried/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyebrows/worried_skin.webp b/game/characters/cho/poses/broom/face/eyebrows/worried/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyebrows/worried_skin.webp rename to game/characters/cho/poses/broom/face/eyebrows/worried/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyes/base.webp b/game/characters/cho/poses/broom/face/eyes/base/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/base.webp rename to game/characters/cho/poses/broom/face/eyes/base/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyes/base_mask.webp b/game/characters/cho/poses/broom/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/base_mask.webp rename to game/characters/cho/poses/broom/face/eyes/base/eyemask.webp diff --git a/game/characters/cho/poses/broom/face/eyes/base_skin.webp b/game/characters/cho/poses/broom/face/eyes/base/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/base_skin.webp rename to game/characters/cho/poses/broom/face/eyes/base/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyes/closed.webp b/game/characters/cho/poses/broom/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/closed.webp rename to game/characters/cho/poses/broom/face/eyes/closed/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyes/closed_skin.webp b/game/characters/cho/poses/broom/face/eyes/closed/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/closed_skin.webp rename to game/characters/cho/poses/broom/face/eyes/closed/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyes/happyCl.webp b/game/characters/cho/poses/broom/face/eyes/happyCl/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/happyCl.webp rename to game/characters/cho/poses/broom/face/eyes/happyCl/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyes/happyCl_skin.webp b/game/characters/cho/poses/broom/face/eyes/happyCl/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/happyCl_skin.webp rename to game/characters/cho/poses/broom/face/eyes/happyCl/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyes/narrow.webp b/game/characters/cho/poses/broom/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/narrow.webp rename to game/characters/cho/poses/broom/face/eyes/narrow/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyes/narrow_mask.webp b/game/characters/cho/poses/broom/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/narrow_mask.webp rename to game/characters/cho/poses/broom/face/eyes/narrow/eyemask.webp diff --git a/game/characters/cho/poses/broom/face/eyes/narrow_skin.webp b/game/characters/cho/poses/broom/face/eyes/narrow/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/narrow_skin.webp rename to game/characters/cho/poses/broom/face/eyes/narrow/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyes/wide.webp b/game/characters/cho/poses/broom/face/eyes/wide/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/wide.webp rename to game/characters/cho/poses/broom/face/eyes/wide/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyes/wide_mask.webp b/game/characters/cho/poses/broom/face/eyes/wide/eyemask.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/wide_mask.webp rename to game/characters/cho/poses/broom/face/eyes/wide/eyemask.webp diff --git a/game/characters/cho/poses/broom/face/eyes/wide_skin.webp b/game/characters/cho/poses/broom/face/eyes/wide/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/wide_skin.webp rename to game/characters/cho/poses/broom/face/eyes/wide/skin.webp diff --git a/game/characters/cho/poses/broom/face/eyes/wink.webp b/game/characters/cho/poses/broom/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/wink.webp rename to game/characters/cho/poses/broom/face/eyes/wink/expression.webp diff --git a/game/characters/cho/poses/broom/face/eyes/wink_mask.webp b/game/characters/cho/poses/broom/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/wink_mask.webp rename to game/characters/cho/poses/broom/face/eyes/wink/eyemask.webp diff --git a/game/characters/cho/poses/broom/face/eyes/wink_skin.webp b/game/characters/cho/poses/broom/face/eyes/wink/skin.webp similarity index 100% rename from game/characters/cho/poses/broom/face/eyes/wink_skin.webp rename to game/characters/cho/poses/broom/face/eyes/wink/skin.webp diff --git a/game/characters/cho/poses/broom/face/mouth/angry.webp b/game/characters/cho/poses/broom/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/angry.webp rename to game/characters/cho/poses/broom/face/mouth/angry/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/annoyed.webp b/game/characters/cho/poses/broom/face/mouth/annoyed/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/annoyed.webp rename to game/characters/cho/poses/broom/face/mouth/annoyed/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/base.webp b/game/characters/cho/poses/broom/face/mouth/base/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/base.webp rename to game/characters/cho/poses/broom/face/mouth/base/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/clench.webp b/game/characters/cho/poses/broom/face/mouth/clench/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/clench.webp rename to game/characters/cho/poses/broom/face/mouth/clench/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/crooked_smile.webp b/game/characters/cho/poses/broom/face/mouth/crooked_smile/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/crooked_smile.webp rename to game/characters/cho/poses/broom/face/mouth/crooked_smile/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/disgust.webp b/game/characters/cho/poses/broom/face/mouth/disgust/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/disgust.webp rename to game/characters/cho/poses/broom/face/mouth/disgust/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/grin.webp b/game/characters/cho/poses/broom/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/grin.webp rename to game/characters/cho/poses/broom/face/mouth/grin/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/horny.webp b/game/characters/cho/poses/broom/face/mouth/horny/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/horny.webp rename to game/characters/cho/poses/broom/face/mouth/horny/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/mad.webp b/game/characters/cho/poses/broom/face/mouth/mad/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/mad.webp rename to game/characters/cho/poses/broom/face/mouth/mad/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/normal.webp b/game/characters/cho/poses/broom/face/mouth/normal/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/normal.webp rename to game/characters/cho/poses/broom/face/mouth/normal/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/open.webp b/game/characters/cho/poses/broom/face/mouth/open/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/open.webp rename to game/characters/cho/poses/broom/face/mouth/open/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/open_tongue.webp b/game/characters/cho/poses/broom/face/mouth/open_tongue/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/open_tongue.webp rename to game/characters/cho/poses/broom/face/mouth/open_tongue/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/open_wide_tongue.webp b/game/characters/cho/poses/broom/face/mouth/open_wide/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/open_wide_tongue.webp rename to game/characters/cho/poses/broom/face/mouth/open_wide/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/pout.webp b/game/characters/cho/poses/broom/face/mouth/pout/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/pout.webp rename to game/characters/cho/poses/broom/face/mouth/pout/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/quiver.webp b/game/characters/cho/poses/broom/face/mouth/quiver/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/quiver.webp rename to game/characters/cho/poses/broom/face/mouth/quiver/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/scream.webp b/game/characters/cho/poses/broom/face/mouth/scream/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/scream.webp rename to game/characters/cho/poses/broom/face/mouth/scream/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/silly.webp b/game/characters/cho/poses/broom/face/mouth/silly/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/silly.webp rename to game/characters/cho/poses/broom/face/mouth/silly/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/smile.webp b/game/characters/cho/poses/broom/face/mouth/smile/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/smile.webp rename to game/characters/cho/poses/broom/face/mouth/smile/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/soft.webp b/game/characters/cho/poses/broom/face/mouth/soft/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/soft.webp rename to game/characters/cho/poses/broom/face/mouth/soft/expression.webp diff --git a/game/characters/cho/poses/broom/face/mouth/upset.webp b/game/characters/cho/poses/broom/face/mouth/upset/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/mouth/upset.webp rename to game/characters/cho/poses/broom/face/mouth/upset/expression.webp diff --git a/game/characters/cho/poses/broom/face/pupils/L.webp b/game/characters/cho/poses/broom/face/pupils/L/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/pupils/L.webp rename to game/characters/cho/poses/broom/face/pupils/L/expression.webp diff --git a/game/characters/cho/poses/broom/face/pupils/R.webp b/game/characters/cho/poses/broom/face/pupils/R/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/pupils/R.webp rename to game/characters/cho/poses/broom/face/pupils/R/expression.webp diff --git a/game/characters/cho/poses/broom/face/pupils/ahegao.webp b/game/characters/cho/poses/broom/face/pupils/ahegao/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/pupils/ahegao.webp rename to game/characters/cho/poses/broom/face/pupils/ahegao/expression.webp diff --git a/game/characters/cho/poses/broom/face/pupils/down.webp b/game/characters/cho/poses/broom/face/pupils/down/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/pupils/down.webp rename to game/characters/cho/poses/broom/face/pupils/down/expression.webp diff --git a/game/characters/cho/poses/broom/face/pupils/downR.webp b/game/characters/cho/poses/broom/face/pupils/downR/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/pupils/downR.webp rename to game/characters/cho/poses/broom/face/pupils/downR/expression.webp diff --git a/game/characters/cho/poses/broom/face/pupils/mid.webp b/game/characters/cho/poses/broom/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/pupils/mid.webp rename to game/characters/cho/poses/broom/face/pupils/mid/expression.webp diff --git a/game/characters/cho/poses/broom/face/pupils/up.webp b/game/characters/cho/poses/broom/face/pupils/up/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/pupils/up.webp rename to game/characters/cho/poses/broom/face/pupils/up/expression.webp diff --git a/game/characters/cho/poses/broom/loadable.webp b/game/characters/cho/poses/broom/loadable.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/cho/poses/broom/loadable.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/genie/base.webp b/game/characters/genie/base.webp index 9253162b..b30dac7a 100644 --- a/game/characters/genie/base.webp +++ b/game/characters/genie/base.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0484d04fcbf27cf86e56800bf03e62edfa0417f060a257b1d30f87902a425ef -size 218008 +oid sha256:250449ae16d33b43148b9d4d18506d3faf1738f7c06df4a0bfa8967073210800 +size 216480 diff --git a/game/characters/genie/beard.webp b/game/characters/genie/beard.webp new file mode 100644 index 00000000..f32a1c67 --- /dev/null +++ b/game/characters/genie/beard.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a53dffc1c42a1fe081df634cbcdcd0991979dcade9f3d992fefba90ad0ee3057 +size 6166 diff --git a/game/characters/genie/outfits/robes.webp b/game/characters/genie/outfits/robes.webp new file mode 100644 index 00000000..11b988d6 --- /dev/null +++ b/game/characters/genie/outfits/robes.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c1c4ed5e3842b361c1ca1af5eeb3e5e9c9315d6a8c90c318f7898ecf554ded5 +size 395224 diff --git a/game/characters/genie/outfits/robes_beard.webp b/game/characters/genie/outfits/robes_beard.webp new file mode 100644 index 00000000..f32a1c67 --- /dev/null +++ b/game/characters/genie/outfits/robes_beard.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a53dffc1c42a1fe081df634cbcdcd0991979dcade9f3d992fefba90ad0ee3057 +size 6166 diff --git a/game/characters/genie/outfits/santa.webp b/game/characters/genie/outfits/santa.webp new file mode 100644 index 00000000..53f26f2f --- /dev/null +++ b/game/characters/genie/outfits/santa.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7b3317f21f0140149fe6ff5265eceeb83d4972a70d6b6c53f8810a9cf32d603 +size 433864 diff --git a/game/characters/genie/outfits/santa_beard_angry.webp b/game/characters/genie/outfits/santa_beard_angry.webp new file mode 100644 index 00000000..83730a2d --- /dev/null +++ b/game/characters/genie/outfits/santa_beard_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab75c9dbcb03f0a78baa25c13b96eb780cc9a672a0d6b12aff79a4e45e8d2db5 +size 51918 diff --git a/game/characters/genie/outfits/santa_beard_base.webp b/game/characters/genie/outfits/santa_beard_base.webp new file mode 100644 index 00000000..937d8a1d --- /dev/null +++ b/game/characters/genie/outfits/santa_beard_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5672a51afac6a00e21096c069e8815d07fbc09baf2d841dc4a4054f33409c654 +size 51880 diff --git a/game/characters/genie/outfits/santa_beard_grin.webp b/game/characters/genie/outfits/santa_beard_grin.webp new file mode 100644 index 00000000..aad06406 --- /dev/null +++ b/game/characters/genie/outfits/santa_beard_grin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09fb7071cd1f8684b6438efa97c40b3667e32ee0bb4d555c4fa81e9f0ed9afca +size 52344 diff --git a/game/characters/genie/outfits/santa_beard_open.webp b/game/characters/genie/outfits/santa_beard_open.webp new file mode 100644 index 00000000..b09dff5c --- /dev/null +++ b/game/characters/genie/outfits/santa_beard_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee1732655493fceb707ca24dd1c78522834f94a06d07132dd5fca350079c6cda +size 52894 diff --git a/game/characters/genie/outfits/santa_beard_smile.webp b/game/characters/genie/outfits/santa_beard_smile.webp new file mode 100644 index 00000000..427b0929 --- /dev/null +++ b/game/characters/genie/outfits/santa_beard_smile.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beed64f6c5cff84a6d0982de5b5ce702cd1d134555060a7162ac61ac155c65ea +size 53502 diff --git a/game/characters/genie/robes.webp b/game/characters/genie/robes.webp deleted file mode 100644 index 3d1633eb..00000000 --- a/game/characters/genie/robes.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f7145c4b0b13f2bea60f37e8108b80b1cceb4d42d1a19a512da2d88c9df2cd9b -size 391566 diff --git a/game/characters/genie/robes_fix.webp b/game/characters/genie/robes_fix.webp deleted file mode 100644 index 39949277..00000000 --- a/game/characters/genie/robes_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6c717d6968ad8c8c2c8b4cd7140523a6972100c2c23009b1bad6b6750f42603e -size 14424 diff --git a/game/characters/hermione/body/armleft/down.webp b/game/characters/hermione/body/armleft/down.webp deleted file mode 100644 index de690ef2..00000000 --- a/game/characters/hermione/body/armleft/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad43dbf9ecbf97fc96157d7149e76b7e49631909c1fdbf8ba24659fa0b43eb04 -size 19184 diff --git a/game/characters/hermione/body/armright/down.webp b/game/characters/hermione/body/armright/down.webp deleted file mode 100644 index f250b08d..00000000 --- a/game/characters/hermione/body/armright/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:235144e94d03e1c2e113bc77bc9e80d9082a3a17016cbf9a5abb32e177c00b14 -size 14008 diff --git a/game/characters/hermione/body/base/back.webp b/game/characters/hermione/body/base/back.webp deleted file mode 100644 index ce3f88cd..00000000 --- a/game/characters/hermione/body/base/back.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a2bd78c6022c7c761cb3ad044cbba61e66514493311cd3508e90e2f98cc12fa -size 303964 diff --git a/game/characters/hermione/body/base/front.webp b/game/characters/hermione/body/base/front.webp deleted file mode 100644 index 26dde8a7..00000000 --- a/game/characters/hermione/body/base/front.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0b1f8e290c683c8295d40f8f0d49227355fc666972dcd77a40802dcff536c6a5 -size 57642 diff --git a/game/characters/hermione/body/breasts/big3_backside.webp b/game/characters/hermione/body/breasts/big3_backside.webp deleted file mode 100644 index f6f11a9e..00000000 --- a/game/characters/hermione/body/breasts/big3_backside.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e4b0535b4575d9536a5a680fbcc63a83c67ccae4a8fcba4bb2ac59e44ba5950 -size 21056 diff --git a/game/characters/hermione/body/breasts/normal.webp b/game/characters/hermione/body/breasts/normal.webp deleted file mode 100644 index 89de88c4..00000000 --- a/game/characters/hermione/body/breasts/normal.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a74656fa03d149d2bf90c5d9c28a9d331902539a05b875014527dcf16ed82e8f -size 15466 diff --git a/game/characters/hermione/body/breasts/normal_tight.webp b/game/characters/hermione/body/breasts/normal_tight.webp deleted file mode 100644 index 7b1e4d33..00000000 --- a/game/characters/hermione/body/breasts/normal_tight.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e7a2a46f6e1b864bb2979ffee334b64631b1c40f591bccf7d3478aa5c92ee6f -size 15648 diff --git a/game/characters/hermione/body/kneel/kneel_arm.webp b/game/characters/hermione/body/kneel/kneel_arm.webp deleted file mode 100644 index d007f04f..00000000 --- a/game/characters/hermione/body/kneel/kneel_arm.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:766df59c36c68602c4c892bc2086128d2cea2b6058ede9b1d4d1abb3afa8c460 -size 39236 diff --git a/game/characters/hermione/body/kneel/kneel_base.webp b/game/characters/hermione/body/kneel/kneel_base.webp deleted file mode 100644 index 39a6783f..00000000 --- a/game/characters/hermione/body/kneel/kneel_base.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b84aebcfb5121e29d0af020362e9da299041d8aea4c48423013682f43db9901 -size 284532 diff --git a/game/characters/hermione/body/kneel/kneel_base_2.webp b/game/characters/hermione/body/kneel/kneel_base_2.webp deleted file mode 100644 index 54c22cc7..00000000 --- a/game/characters/hermione/body/kneel/kneel_base_2.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:423971bcf2fdb2a3770c0227a68fd5c726924940cde21741f22563639ebcb379 -size 265798 diff --git a/game/characters/hermione/body/kneel/kneel_cock.webp b/game/characters/hermione/body/kneel/kneel_cock.webp deleted file mode 100644 index fb05ae88..00000000 --- a/game/characters/hermione/body/kneel/kneel_cock.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:057b2bfe3e13e7916f0ecda7438b8252101129a53ae0e318104a476cb417d16c -size 34458 diff --git a/game/characters/hermione/body/kneel/kneel_cum_1.webp b/game/characters/hermione/body/kneel/kneel_cum_1.webp deleted file mode 100644 index 616ec11f..00000000 --- a/game/characters/hermione/body/kneel/kneel_cum_1.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fde75bf945e51a9ffd7639e54a68696084c7831bd5725b3857211d306eaa76ef -size 56012 diff --git a/game/characters/hermione/body/kneel/kneel_hair.webp b/game/characters/hermione/body/kneel/kneel_hair.webp deleted file mode 100644 index 1c882485..00000000 --- a/game/characters/hermione/body/kneel/kneel_hair.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:efb2fafc1004f7f37f4e271feab9d12fa0dc0a8ceb5dbc0a99ac38beed649030 -size 59752 diff --git a/game/characters/hermione/body/kneel/kneel_leg.webp b/game/characters/hermione/body/kneel/kneel_leg.webp deleted file mode 100644 index 5f08e752..00000000 --- a/game/characters/hermione/body/kneel/kneel_leg.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:327954fec7e5df2ffd75f258463477d0f5cee0508283d7e88e14d8aa5c7bd4ae -size 36194 diff --git a/game/characters/hermione/body/breasts/big1.webp b/game/characters/hermione/bodyparts/chest/big1/skin.webp similarity index 100% rename from game/characters/hermione/body/breasts/big1.webp rename to game/characters/hermione/bodyparts/chest/big1/skin.webp diff --git a/game/characters/hermione/body/breasts/big2.webp b/game/characters/hermione/bodyparts/chest/big2/skin.webp similarity index 100% rename from game/characters/hermione/body/breasts/big2.webp rename to game/characters/hermione/bodyparts/chest/big2/skin.webp diff --git a/game/characters/hermione/body/breasts/big3.webp b/game/characters/hermione/bodyparts/chest/big3/skin.webp similarity index 100% rename from game/characters/hermione/body/breasts/big3.webp rename to game/characters/hermione/bodyparts/chest/big3/skin.webp diff --git a/game/characters/hermione/bodyparts/frame/default/skin.webp b/game/characters/hermione/bodyparts/frame/default/skin.webp new file mode 100644 index 00000000..1fa06664 --- /dev/null +++ b/game/characters/hermione/bodyparts/frame/default/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e90dcd9f529fda39e0a94485fd5efcc1b09e707fa61e7c990713e719b220a9fe +size 90170 diff --git a/game/characters/hermione/body/backside/big1.webp b/game/characters/hermione/bodyparts/hips/big1/skin.webp similarity index 100% rename from game/characters/hermione/body/backside/big1.webp rename to game/characters/hermione/bodyparts/hips/big1/skin.webp diff --git a/game/characters/hermione/body/backside/big2.webp b/game/characters/hermione/bodyparts/hips/big2/skin.webp similarity index 100% rename from game/characters/hermione/body/backside/big2.webp rename to game/characters/hermione/bodyparts/hips/big2/skin.webp diff --git a/game/characters/hermione/body/backside/big3.webp b/game/characters/hermione/bodyparts/hips/big3/skin.webp similarity index 100% rename from game/characters/hermione/body/backside/big3.webp rename to game/characters/hermione/bodyparts/hips/big3/skin.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_large_1/0.webp b/game/characters/hermione/clothes/accessory/buttplug_large_1/0.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_large_1/0.webp rename to game/characters/hermione/clothes/accessory/buttplug_large_1/0.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_large_1/1.webp b/game/characters/hermione/clothes/accessory/buttplug_large_1/1.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_large_1/1.webp rename to game/characters/hermione/clothes/accessory/buttplug_large_1/1.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_large_1/2.webp b/game/characters/hermione/clothes/accessory/buttplug_large_1/2.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_large_1/2.webp rename to game/characters/hermione/clothes/accessory/buttplug_large_1/2.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_large_1/outline.webp b/game/characters/hermione/clothes/accessory/buttplug_large_1/outline.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_large_1/outline.webp rename to game/characters/hermione/clothes/accessory/buttplug_large_1/outline.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_medium_1/0.webp b/game/characters/hermione/clothes/accessory/buttplug_medium_1/0.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_medium_1/0.webp rename to game/characters/hermione/clothes/accessory/buttplug_medium_1/0.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_medium_1/1.webp b/game/characters/hermione/clothes/accessory/buttplug_medium_1/1.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_medium_1/1.webp rename to game/characters/hermione/clothes/accessory/buttplug_medium_1/1.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_medium_1/2.webp b/game/characters/hermione/clothes/accessory/buttplug_medium_1/2.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_medium_1/2.webp rename to game/characters/hermione/clothes/accessory/buttplug_medium_1/2.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_medium_1/3.webp b/game/characters/hermione/clothes/accessory/buttplug_medium_1/3.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_medium_1/3.webp rename to game/characters/hermione/clothes/accessory/buttplug_medium_1/3.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_medium_1/outline.webp b/game/characters/hermione/clothes/accessory/buttplug_medium_1/outline.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_medium_1/outline.webp rename to game/characters/hermione/clothes/accessory/buttplug_medium_1/outline.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_small_1/0.webp b/game/characters/hermione/clothes/accessory/buttplug_small_1/0.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_small_1/0.webp rename to game/characters/hermione/clothes/accessory/buttplug_small_1/0.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_small_1/1.webp b/game/characters/hermione/clothes/accessory/buttplug_small_1/1.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_small_1/1.webp rename to game/characters/hermione/clothes/accessory/buttplug_small_1/1.webp diff --git a/game/characters/hermione/clothes/buttplug/buttplug_small_1/outline.webp b/game/characters/hermione/clothes/accessory/buttplug_small_1/outline.webp similarity index 100% rename from game/characters/hermione/clothes/buttplug/buttplug_small_1/outline.webp rename to game/characters/hermione/clothes/accessory/buttplug_small_1/outline.webp diff --git a/game/characters/hermione/clothes/accessory/mistletoe/0.webp b/game/characters/hermione/clothes/accessory/mistletoe/0.webp new file mode 100644 index 00000000..fea8c2e1 --- /dev/null +++ b/game/characters/hermione/clothes/accessory/mistletoe/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6d7ea4dddb522ff55f2c0c65c3c440ac6d883edc4209721b852107d585dd1d0 +size 1868 diff --git a/game/characters/hermione/clothes/accessory/mistletoe/extra.webp b/game/characters/hermione/clothes/accessory/mistletoe/extra.webp new file mode 100644 index 00000000..5d956c4a --- /dev/null +++ b/game/characters/hermione/clothes/accessory/mistletoe/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c7d78c4aeb8723cbc5b340e7dbd7418df39e830d73ebdb6e0b3deed3e1f0b02 +size 2688 diff --git a/game/characters/hermione/clothes/accessory/mistletoe/outline.webp b/game/characters/hermione/clothes/accessory/mistletoe/outline.webp new file mode 100644 index 00000000..fe3ce4b9 --- /dev/null +++ b/game/characters/hermione/clothes/accessory/mistletoe/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d87ff667af846e9a74c090495c7343fd283a6033bf37ea184c4cfe3bcbaa6f55 +size 2470 diff --git a/game/characters/hermione/clothes/headgear/antlers/0.webp b/game/characters/hermione/clothes/headgear/antlers/default/0.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/antlers/0.webp rename to game/characters/hermione/clothes/headgear/antlers/default/0.webp diff --git a/game/characters/hermione/clothes/headgear/antlers/outline.webp b/game/characters/hermione/clothes/headgear/antlers/default/outline.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/antlers/outline.webp rename to game/characters/hermione/clothes/headgear/antlers/default/outline.webp diff --git a/game/characters/hermione/clothes/headgear/antlers_2/default/0.webp b/game/characters/hermione/clothes/headgear/antlers_2/default/0.webp new file mode 100644 index 00000000..9ed1ea97 --- /dev/null +++ b/game/characters/hermione/clothes/headgear/antlers_2/default/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3f85ac2a1052388d21d9bcd430ba69ab32e73df9ca87e3307aefc5bffd556cd +size 2596 diff --git a/game/characters/hermione/clothes/headgear/antlers_2/default/1.webp b/game/characters/hermione/clothes/headgear/antlers_2/default/1.webp new file mode 100644 index 00000000..7ca59c86 --- /dev/null +++ b/game/characters/hermione/clothes/headgear/antlers_2/default/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37d9e6cf19e0e7b2b755e687b7d089b37508b5c8b3308b74b958cc9cc6751162 +size 1038 diff --git a/game/characters/hermione/clothes/headgear/antlers_2/default/2.webp b/game/characters/hermione/clothes/headgear/antlers_2/default/2.webp new file mode 100644 index 00000000..030b67ab --- /dev/null +++ b/game/characters/hermione/clothes/headgear/antlers_2/default/2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16bec3abb0be9ad3ca97b5b22392edf53d880834ef366d8d3ee1a3775483fd4f +size 8666 diff --git a/game/characters/hermione/clothes/headgear/antlers_2/default/outline.webp b/game/characters/hermione/clothes/headgear/antlers_2/default/outline.webp new file mode 100644 index 00000000..df16ec84 --- /dev/null +++ b/game/characters/hermione/clothes/headgear/antlers_2/default/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e25fe6046899b05910eb49858c4ac98463be8ac80589983c663230e7f7fe49b8 +size 12466 diff --git a/game/characters/hermione/clothes/headgear/bunny_hat_1/0.webp b/game/characters/hermione/clothes/headgear/bunny_hat_1/default/0.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/bunny_hat_1/0.webp rename to game/characters/hermione/clothes/headgear/bunny_hat_1/default/0.webp diff --git a/game/characters/hermione/clothes/headgear/bunny_hat_1/1.webp b/game/characters/hermione/clothes/headgear/bunny_hat_1/default/1.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/bunny_hat_1/1.webp rename to game/characters/hermione/clothes/headgear/bunny_hat_1/default/1.webp diff --git a/game/characters/hermione/clothes/headgear/bunny_hat_1/outline.webp b/game/characters/hermione/clothes/headgear/bunny_hat_1/default/outline.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/bunny_hat_1/outline.webp rename to game/characters/hermione/clothes/headgear/bunny_hat_1/default/outline.webp diff --git a/game/characters/hermione/clothes/headgear/bunny_hat_2/default/0.webp b/game/characters/hermione/clothes/headgear/bunny_hat_2/default/0.webp new file mode 100644 index 00000000..29ce0969 --- /dev/null +++ b/game/characters/hermione/clothes/headgear/bunny_hat_2/default/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91d23b10ca100e49558cf6e5b097f781c26975ec0152aa6c2785f9ec87150891 +size 1622 diff --git a/game/characters/hermione/clothes/headgear/bunny_hat_2/default/1.webp b/game/characters/hermione/clothes/headgear/bunny_hat_2/default/1.webp new file mode 100644 index 00000000..a0ee6fdc --- /dev/null +++ b/game/characters/hermione/clothes/headgear/bunny_hat_2/default/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d594af6da14f206b086a20894189b58f21902df373024d74205e816403353b21 +size 4954 diff --git a/game/characters/hermione/clothes/headgear/bunny_hat_2/default/2.webp b/game/characters/hermione/clothes/headgear/bunny_hat_2/default/2.webp new file mode 100644 index 00000000..24c6db9f --- /dev/null +++ b/game/characters/hermione/clothes/headgear/bunny_hat_2/default/2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17910f835d7fe36db79e2a39f03a5783125adb4f1ce0a3e8ab0ed55e4ce6d9a4 +size 7318 diff --git a/game/characters/hermione/clothes/headgear/bunny_hat_2/default/outline.webp b/game/characters/hermione/clothes/headgear/bunny_hat_2/default/outline.webp new file mode 100644 index 00000000..0e524fb8 --- /dev/null +++ b/game/characters/hermione/clothes/headgear/bunny_hat_2/default/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c22879dcb6a94018faedc4e9dc830ccdd505a0eeac4c8e6e02a181a47bf1f6f5 +size 11078 diff --git a/game/characters/hermione/clothes/headgear/cat_ears/0.webp b/game/characters/hermione/clothes/headgear/cat_ears/default/0.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/cat_ears/0.webp rename to game/characters/hermione/clothes/headgear/cat_ears/default/0.webp diff --git a/game/characters/hermione/clothes/headgear/cat_ears/1.webp b/game/characters/hermione/clothes/headgear/cat_ears/default/1.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/cat_ears/1.webp rename to game/characters/hermione/clothes/headgear/cat_ears/default/1.webp diff --git a/game/characters/hermione/clothes/headgear/cat_ears/outline.webp b/game/characters/hermione/clothes/headgear/cat_ears/default/outline.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/cat_ears/outline.webp rename to game/characters/hermione/clothes/headgear/cat_ears/default/outline.webp diff --git a/game/characters/hermione/clothes/headgear/elf/0.webp b/game/characters/hermione/clothes/headgear/elf/default/0.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/elf/0.webp rename to game/characters/hermione/clothes/headgear/elf/default/0.webp diff --git a/game/characters/hermione/clothes/headgear/elf/1.webp b/game/characters/hermione/clothes/headgear/elf/default/1.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/elf/1.webp rename to game/characters/hermione/clothes/headgear/elf/default/1.webp diff --git a/game/characters/hermione/clothes/headgear/elf/extra.webp b/game/characters/hermione/clothes/headgear/elf/default/extra.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/elf/extra.webp rename to game/characters/hermione/clothes/headgear/elf/default/extra.webp diff --git a/game/characters/hermione/clothes/headgear/elf/outline.webp b/game/characters/hermione/clothes/headgear/elf/default/outline.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/elf/outline.webp rename to game/characters/hermione/clothes/headgear/elf/default/outline.webp diff --git a/game/characters/hermione/clothes/headgear/maid_hat_1/0.webp b/game/characters/hermione/clothes/headgear/maid_hat_1/default/0.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/maid_hat_1/0.webp rename to game/characters/hermione/clothes/headgear/maid_hat_1/default/0.webp diff --git a/game/characters/hermione/clothes/headgear/maid_hat_1/outline.webp b/game/characters/hermione/clothes/headgear/maid_hat_1/default/outline.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/maid_hat_1/outline.webp rename to game/characters/hermione/clothes/headgear/maid_hat_1/default/outline.webp diff --git a/game/characters/hermione/clothes/headgear/panties_on_head/0.webp b/game/characters/hermione/clothes/headgear/panties_on_head/default/0.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/panties_on_head/0.webp rename to game/characters/hermione/clothes/headgear/panties_on_head/default/0.webp diff --git a/game/characters/hermione/clothes/headgear/panties_on_head/outline.webp b/game/characters/hermione/clothes/headgear/panties_on_head/default/outline.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/panties_on_head/outline.webp rename to game/characters/hermione/clothes/headgear/panties_on_head/default/outline.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_1/0.webp b/game/characters/hermione/clothes/headgear/poker_hat_1/default/0.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_1/0.webp rename to game/characters/hermione/clothes/headgear/poker_hat_1/default/0.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_1/1.webp b/game/characters/hermione/clothes/headgear/poker_hat_1/default/1.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_1/1.webp rename to game/characters/hermione/clothes/headgear/poker_hat_1/default/1.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_1/2.webp b/game/characters/hermione/clothes/headgear/poker_hat_1/default/2.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_1/2.webp rename to game/characters/hermione/clothes/headgear/poker_hat_1/default/2.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_1/extra.webp b/game/characters/hermione/clothes/headgear/poker_hat_1/default/extra.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_1/extra.webp rename to game/characters/hermione/clothes/headgear/poker_hat_1/default/extra.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_1/outline.webp b/game/characters/hermione/clothes/headgear/poker_hat_1/default/outline.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_1/outline.webp rename to game/characters/hermione/clothes/headgear/poker_hat_1/default/outline.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_1/overlay.webp b/game/characters/hermione/clothes/headgear/poker_hat_1/default/overlay.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_1/overlay.webp rename to game/characters/hermione/clothes/headgear/poker_hat_1/default/overlay.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_2/0.webp b/game/characters/hermione/clothes/headgear/poker_hat_2/default/0.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_2/0.webp rename to game/characters/hermione/clothes/headgear/poker_hat_2/default/0.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_2/1.webp b/game/characters/hermione/clothes/headgear/poker_hat_2/default/1.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_2/1.webp rename to game/characters/hermione/clothes/headgear/poker_hat_2/default/1.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_2/2.webp b/game/characters/hermione/clothes/headgear/poker_hat_2/default/2.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_2/2.webp rename to game/characters/hermione/clothes/headgear/poker_hat_2/default/2.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_2/extra.webp b/game/characters/hermione/clothes/headgear/poker_hat_2/default/extra.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_2/extra.webp rename to game/characters/hermione/clothes/headgear/poker_hat_2/default/extra.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_2/outline.webp b/game/characters/hermione/clothes/headgear/poker_hat_2/default/outline.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_2/outline.webp rename to game/characters/hermione/clothes/headgear/poker_hat_2/default/outline.webp diff --git a/game/characters/hermione/clothes/headgear/poker_hat_2/overlay.webp b/game/characters/hermione/clothes/headgear/poker_hat_2/default/overlay.webp similarity index 100% rename from game/characters/hermione/clothes/headgear/poker_hat_2/overlay.webp rename to game/characters/hermione/clothes/headgear/poker_hat_2/default/overlay.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/angry.webp b/game/characters/hermione/clothes/makeup/lipstick/angry/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/angry.webp rename to game/characters/hermione/clothes/makeup/lipstick/angry/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/annoyed.webp b/game/characters/hermione/clothes/makeup/lipstick/annoyed/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/annoyed.webp rename to game/characters/hermione/clothes/makeup/lipstick/annoyed/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/base.webp b/game/characters/hermione/clothes/makeup/lipstick/base/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/base.webp rename to game/characters/hermione/clothes/makeup/lipstick/base/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/clench.webp b/game/characters/hermione/clothes/makeup/lipstick/clench/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/clench.webp rename to game/characters/hermione/clothes/makeup/lipstick/clench/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/crooked_smile.webp b/game/characters/hermione/clothes/makeup/lipstick/crooked_smile/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/crooked_smile.webp rename to game/characters/hermione/clothes/makeup/lipstick/crooked_smile/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/cum.webp b/game/characters/hermione/clothes/makeup/lipstick/cum/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/cum.webp rename to game/characters/hermione/clothes/makeup/lipstick/cum/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/disgust.webp b/game/characters/hermione/clothes/makeup/lipstick/disgust/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/disgust.webp rename to game/characters/hermione/clothes/makeup/lipstick/disgust/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/full.webp b/game/characters/hermione/clothes/makeup/lipstick/full/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/full.webp rename to game/characters/hermione/clothes/makeup/lipstick/full/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/full_cum.webp b/game/characters/hermione/clothes/makeup/lipstick/full_cum/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/full_cum.webp rename to game/characters/hermione/clothes/makeup/lipstick/full_cum/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/full_panties.webp b/game/characters/hermione/clothes/makeup/lipstick/full_panties/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/full_panties.webp rename to game/characters/hermione/clothes/makeup/lipstick/full_panties/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/grin.webp b/game/characters/hermione/clothes/makeup/lipstick/grin/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/grin.webp rename to game/characters/hermione/clothes/makeup/lipstick/grin/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/mad.webp b/game/characters/hermione/clothes/makeup/lipstick/mad/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/mad.webp rename to game/characters/hermione/clothes/makeup/lipstick/mad/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/normal.webp b/game/characters/hermione/clothes/makeup/lipstick/normal/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/normal.webp rename to game/characters/hermione/clothes/makeup/lipstick/normal/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/open.webp b/game/characters/hermione/clothes/makeup/lipstick/open/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/open.webp rename to game/characters/hermione/clothes/makeup/lipstick/open/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/open_tongue.webp b/game/characters/hermione/clothes/makeup/lipstick/open_tongue/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/open_tongue.webp rename to game/characters/hermione/clothes/makeup/lipstick/open_tongue/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue.webp b/game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue.webp rename to game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue_cum.webp b/game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue_cum/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue_cum.webp rename to game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue_cum/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue_panties.webp b/game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue_panties/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue_panties.webp rename to game/characters/hermione/clothes/makeup/lipstick/open_wide_tongue_panties/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/scream.webp b/game/characters/hermione/clothes/makeup/lipstick/scream/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/scream.webp rename to game/characters/hermione/clothes/makeup/lipstick/scream/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/shock.webp b/game/characters/hermione/clothes/makeup/lipstick/shock/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/shock.webp rename to game/characters/hermione/clothes/makeup/lipstick/shock/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/silly.webp b/game/characters/hermione/clothes/makeup/lipstick/silly/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/silly.webp rename to game/characters/hermione/clothes/makeup/lipstick/silly/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/smile.webp b/game/characters/hermione/clothes/makeup/lipstick/smile/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/smile.webp rename to game/characters/hermione/clothes/makeup/lipstick/smile/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/soft.webp b/game/characters/hermione/clothes/makeup/lipstick/soft/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/soft.webp rename to game/characters/hermione/clothes/makeup/lipstick/soft/0.webp diff --git a/game/characters/hermione/clothes/makeup/lipstick/upset.webp b/game/characters/hermione/clothes/makeup/lipstick/upset/0.webp similarity index 100% rename from game/characters/hermione/clothes/makeup/lipstick/upset.webp rename to game/characters/hermione/clothes/makeup/lipstick/upset/0.webp diff --git a/game/characters/hermione/clothes/neckwear/studded_choker/0.webp b/game/characters/hermione/clothes/neckwear/studded_choker/0.webp new file mode 100644 index 00000000..b0f1feee --- /dev/null +++ b/game/characters/hermione/clothes/neckwear/studded_choker/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d8abed21378225d1b9ed762c184bd0d3eda1e4bd1967b2dac3cc777889ebaa8 +size 1822 diff --git a/game/characters/hermione/clothes/neckwear/studded_choker/1.webp b/game/characters/hermione/clothes/neckwear/studded_choker/1.webp new file mode 100644 index 00000000..9ed12809 --- /dev/null +++ b/game/characters/hermione/clothes/neckwear/studded_choker/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5e0e32ce7e1200fbd2c648a5737834d568039ce3aebbe1ffa81828dc2177f98 +size 1354 diff --git a/game/characters/hermione/clothes/neckwear/studded_choker/extra.webp b/game/characters/hermione/clothes/neckwear/studded_choker/extra.webp new file mode 100644 index 00000000..3e8ac557 --- /dev/null +++ b/game/characters/hermione/clothes/neckwear/studded_choker/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:996e0a0c0e6a3ab94ae1a4b31538ff62e79b439d197e4fed3df7ab707f878e6d +size 1136 diff --git a/game/characters/hermione/clothes/neckwear/studded_choker/outline.webp b/game/characters/hermione/clothes/neckwear/studded_choker/outline.webp new file mode 100644 index 00000000..2659f904 --- /dev/null +++ b/game/characters/hermione/clothes/neckwear/studded_choker/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a883945686fc926756f9cae38ad92bd47f2f40d9b231859d9f630c5b52756786 +size 2634 diff --git a/game/characters/hermione/clothes/panties/hslut_panties/1.webp b/game/characters/hermione/clothes/panties/hslut_panties/1.webp deleted file mode 100644 index d21129e0..00000000 --- a/game/characters/hermione/clothes/panties/hslut_panties/1.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:21a0c1b8af09402e09c803fa8538c62abdcab47778048d62a13a77f1fb205081 -size 1738 diff --git a/game/characters/hermione/clothes/tattoo/bunny_tattoo1/0.webp b/game/characters/hermione/clothes/tattoo/bunny_tattoo/0.webp similarity index 100% rename from game/characters/hermione/clothes/tattoo/bunny_tattoo1/0.webp rename to game/characters/hermione/clothes/tattoo/bunny_tattoo/0.webp diff --git a/game/characters/hermione/clothes/top/bunny_top_2/0.webp b/game/characters/hermione/clothes/top/bunny_top_2/0.webp new file mode 100644 index 00000000..9172e867 --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_2/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:554e2441eff7edb5a3caace414d5ca87483c924cda041f869165bc7962c77954 +size 12398 diff --git a/game/characters/hermione/clothes/top/bunny_top_2/extra.webp b/game/characters/hermione/clothes/top/bunny_top_2/extra.webp new file mode 100644 index 00000000..c588dc1c --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_2/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2faa53fbd0dd59c06078d0fbb724ee66c70f991894468efc28da13134a740ef3 +size 15062 diff --git a/game/characters/hermione/clothes/top/bunny_top_2/mask.webp b/game/characters/hermione/clothes/top/bunny_top_2/mask.webp new file mode 100644 index 00000000..7bdb8c66 --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_2/mask.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c38dd616480bb9584af125a38e9374a6c179a37377e4ef23a10cdc106af71804 +size 662 diff --git a/game/characters/hermione/clothes/top/bunny_top_2/outline.webp b/game/characters/hermione/clothes/top/bunny_top_2/outline.webp new file mode 100644 index 00000000..96f9c205 --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_2/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f3583d049ca604b8d8fdabde9f868d101a0db2adaaa1e1976a6b72ab8d18528 +size 9244 diff --git a/game/characters/hermione/clothes/top/bunny_top_2/skin.webp b/game/characters/hermione/clothes/top/bunny_top_2/skin.webp new file mode 100644 index 00000000..7465e6dd --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_2/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8bd85b312991142674e8298b53ff9d983ec72280fb621b7c09cb83b25006759 +size 4612 diff --git a/game/characters/hermione/clothes/top/bunny_top_3/0.webp b/game/characters/hermione/clothes/top/bunny_top_3/0.webp new file mode 100644 index 00000000..2cd1d987 --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_3/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70174f8f8eb8b3bed6a01a8f2f239df824396c55e20e6320d35629020503c500 +size 12038 diff --git a/game/characters/hermione/clothes/top/bunny_top_3/extra.webp b/game/characters/hermione/clothes/top/bunny_top_3/extra.webp new file mode 100644 index 00000000..a876d502 --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_3/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e58aba1b92640e79ff9b7cbe7a757fb04e31bf47ac57445a211f1651b5aa8fc1 +size 14638 diff --git a/game/characters/hermione/clothes/top/bunny_top_3/mask.webp b/game/characters/hermione/clothes/top/bunny_top_3/mask.webp new file mode 100644 index 00000000..fa92060f --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_3/mask.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc48e9b32e230629f5928948d6c0c0ad86d1806ee308a21f12a98d04d44827cd +size 674 diff --git a/game/characters/hermione/clothes/top/bunny_top_3/outline.webp b/game/characters/hermione/clothes/top/bunny_top_3/outline.webp new file mode 100644 index 00000000..85c12745 --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_3/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a29e80c80c6255aa7da7e005883854a2d3bf51b3a7493db235b4e725472bad9 +size 9144 diff --git a/game/characters/hermione/clothes/top/bunny_top_3/skin.webp b/game/characters/hermione/clothes/top/bunny_top_3/skin.webp new file mode 100644 index 00000000..00b7ab91 --- /dev/null +++ b/game/characters/hermione/clothes/top/bunny_top_3/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35721def3b619a83b24d7855aa4869d317d0ce1f7d14216054bd9fe68760d7b6 +size 4892 diff --git a/game/characters/hermione/cum/body/heavy.webp b/game/characters/hermione/cum/body/heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/body/heavy.webp rename to game/characters/hermione/cum/body/heavy/cum.webp diff --git a/game/characters/hermione/cum/body/light.webp b/game/characters/hermione/cum/body/light/cum.webp similarity index 100% rename from game/characters/hermione/cum/body/light.webp rename to game/characters/hermione/cum/body/light/cum.webp diff --git a/game/characters/hermione/cum/breasts/heavy.webp b/game/characters/hermione/cum/breasts/heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/breasts/heavy.webp rename to game/characters/hermione/cum/breasts/heavy/cum.webp diff --git a/game/characters/hermione/cum/breasts/light.webp b/game/characters/hermione/cum/breasts/light/cum.webp similarity index 100% rename from game/characters/hermione/cum/breasts/light.webp rename to game/characters/hermione/cum/breasts/light/cum.webp diff --git a/game/characters/hermione/cum/crotch/heavy.webp b/game/characters/hermione/cum/crotch/heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/crotch/heavy.webp rename to game/characters/hermione/cum/crotch/heavy/cum.webp diff --git a/game/characters/hermione/cum/crotch/light.webp b/game/characters/hermione/cum/crotch/light/cum.webp similarity index 100% rename from game/characters/hermione/cum/crotch/light.webp rename to game/characters/hermione/cum/crotch/light/cum.webp diff --git a/game/characters/hermione/cum/face/heavy.webp b/game/characters/hermione/cum/face/heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/face/heavy.webp rename to game/characters/hermione/cum/face/heavy/cum.webp diff --git a/game/characters/hermione/cum/face/light.webp b/game/characters/hermione/cum/face/light/cum.webp similarity index 100% rename from game/characters/hermione/cum/face/light.webp rename to game/characters/hermione/cum/face/light/cum.webp diff --git a/game/characters/hermione/cum/hair/heavy.webp b/game/characters/hermione/cum/hair/heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/hair/heavy.webp rename to game/characters/hermione/cum/hair/heavy/cum.webp diff --git a/game/characters/hermione/cum/hair/light.webp b/game/characters/hermione/cum/hair/light/cum.webp similarity index 100% rename from game/characters/hermione/cum/hair/light.webp rename to game/characters/hermione/cum/hair/light/cum.webp diff --git a/game/characters/hermione/cum/legs/heavy.webp b/game/characters/hermione/cum/legs/heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/legs/heavy.webp rename to game/characters/hermione/cum/legs/heavy/cum.webp diff --git a/game/characters/hermione/cum/legs/light.webp b/game/characters/hermione/cum/legs/light/cum.webp similarity index 100% rename from game/characters/hermione/cum/legs/light.webp rename to game/characters/hermione/cum/legs/light/cum.webp diff --git a/game/characters/hermione/cum/pussy/heavy.webp b/game/characters/hermione/cum/pussy/heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/heavy.webp rename to game/characters/hermione/cum/pussy/heavy/cum.webp diff --git a/game/characters/hermione/cum/pussy/light.webp b/game/characters/hermione/cum/pussy/light/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/light.webp rename to game/characters/hermione/cum/pussy/light/cum.webp diff --git a/game/characters/hermione/cum/pussy/squirt.webp b/game/characters/hermione/cum/pussy/squirt/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/squirt.webp rename to game/characters/hermione/cum/pussy/squirt/cum.webp diff --git a/game/characters/hermione/cum/pussy/squirt_post.webp b/game/characters/hermione/cum/pussy/squirt_post/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/squirt_post.webp rename to game/characters/hermione/cum/pussy/squirt_post/cum.webp diff --git a/game/characters/hermione/cum/pussy/squirt_transition.webp b/game/characters/hermione/cum/pussy/squirt_transition/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/squirt_transition.webp rename to game/characters/hermione/cum/pussy/squirt_transition/cum.webp diff --git a/game/characters/hermione/cum/pussy/underwear_heavy.webp b/game/characters/hermione/cum/pussy/underwear_heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/underwear_heavy.webp rename to game/characters/hermione/cum/pussy/underwear_heavy/cum.webp diff --git a/game/characters/hermione/cum/pussy/underwear_light.webp b/game/characters/hermione/cum/pussy/underwear_light/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/underwear_light.webp rename to game/characters/hermione/cum/pussy/underwear_light/cum.webp diff --git a/game/characters/hermione/cum/pussy/vibrator_post.webp b/game/characters/hermione/cum/pussy/vibrator_post/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/vibrator_post.webp rename to game/characters/hermione/cum/pussy/vibrator_post/cum.webp diff --git a/game/characters/hermione/cum/pussy/vibrator_pre.webp b/game/characters/hermione/cum/pussy/vibrator_pre/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/vibrator_pre.webp rename to game/characters/hermione/cum/pussy/vibrator_pre/cum.webp diff --git a/game/characters/hermione/cum/pussy/vibrator_squirt.webp b/game/characters/hermione/cum/pussy/vibrator_squirt/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/vibrator_squirt.webp rename to game/characters/hermione/cum/pussy/vibrator_squirt/cum.webp diff --git a/game/characters/hermione/cum/pussy/vibratorp_heavy.webp b/game/characters/hermione/cum/pussy/vibratorp_heavy/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/vibratorp_heavy.webp rename to game/characters/hermione/cum/pussy/vibratorp_heavy/cum.webp diff --git a/game/characters/hermione/cum/pussy/vibratorp_light.webp b/game/characters/hermione/cum/pussy/vibratorp_light/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/vibratorp_light.webp rename to game/characters/hermione/cum/pussy/vibratorp_light/cum.webp diff --git a/game/characters/hermione/cum/pussy/wet.webp b/game/characters/hermione/cum/pussy/wet/cum.webp similarity index 100% rename from game/characters/hermione/cum/pussy/wet.webp rename to game/characters/hermione/cum/pussy/wet/cum.webp diff --git a/game/characters/hermione/face/cheeks/blush.webp b/game/characters/hermione/face/cheeks/blush/expression.webp similarity index 100% rename from game/characters/hermione/face/cheeks/blush.webp rename to game/characters/hermione/face/cheeks/blush/expression.webp diff --git a/game/characters/hermione/face/eyebrows/angry.webp b/game/characters/hermione/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/angry.webp rename to game/characters/hermione/face/eyebrows/angry/expression.webp diff --git a/game/characters/hermione/face/eyebrows/angry_skin.webp b/game/characters/hermione/face/eyebrows/angry/skin.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/angry_skin.webp rename to game/characters/hermione/face/eyebrows/angry/skin.webp diff --git a/game/characters/hermione/face/eyebrows/annoyed.webp b/game/characters/hermione/face/eyebrows/annoyed/expression.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/annoyed.webp rename to game/characters/hermione/face/eyebrows/annoyed/expression.webp diff --git a/game/characters/hermione/face/eyebrows/annoyed_skin.webp b/game/characters/hermione/face/eyebrows/annoyed/skin.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/annoyed_skin.webp rename to game/characters/hermione/face/eyebrows/annoyed/skin.webp diff --git a/game/characters/hermione/face/eyebrows/base.webp b/game/characters/hermione/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/base.webp rename to game/characters/hermione/face/eyebrows/base/expression.webp diff --git a/game/characters/hermione/face/eyebrows/base_skin.webp b/game/characters/hermione/face/eyebrows/base/skin.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/base_skin.webp rename to game/characters/hermione/face/eyebrows/base/skin.webp diff --git a/game/characters/hermione/face/eyebrows/low.webp b/game/characters/hermione/face/eyebrows/low/expression.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/low.webp rename to game/characters/hermione/face/eyebrows/low/expression.webp diff --git a/game/characters/hermione/face/eyebrows/low_skin.webp b/game/characters/hermione/face/eyebrows/low/skin.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/low_skin.webp rename to game/characters/hermione/face/eyebrows/low/skin.webp diff --git a/game/characters/hermione/face/eyebrows/worried.webp b/game/characters/hermione/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/worried.webp rename to game/characters/hermione/face/eyebrows/worried/expression.webp diff --git a/game/characters/hermione/face/eyebrows/worried_skin.webp b/game/characters/hermione/face/eyebrows/worried/skin.webp similarity index 100% rename from game/characters/hermione/face/eyebrows/worried_skin.webp rename to game/characters/hermione/face/eyebrows/worried/skin.webp diff --git a/game/characters/hermione/face/eyes/base.webp b/game/characters/hermione/face/eyes/base/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/base.webp rename to game/characters/hermione/face/eyes/base/expression.webp diff --git a/game/characters/hermione/face/eyes/base_mask.webp b/game/characters/hermione/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/hermione/face/eyes/base_mask.webp rename to game/characters/hermione/face/eyes/base/eyemask.webp diff --git a/game/characters/hermione/face/eyes/closed.webp b/game/characters/hermione/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/closed.webp rename to game/characters/hermione/face/eyes/closed/expression.webp diff --git a/game/characters/hermione/face/eyes/happy.webp b/game/characters/hermione/face/eyes/happy/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/happy.webp rename to game/characters/hermione/face/eyes/happy/expression.webp diff --git a/game/characters/hermione/face/eyes/happy_mask.webp b/game/characters/hermione/face/eyes/happy/eyemask.webp similarity index 100% rename from game/characters/hermione/face/eyes/happy_mask.webp rename to game/characters/hermione/face/eyes/happy/eyemask.webp diff --git a/game/characters/hermione/face/eyes/happyCl.webp b/game/characters/hermione/face/eyes/happyCl/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/happyCl.webp rename to game/characters/hermione/face/eyes/happyCl/expression.webp diff --git a/game/characters/hermione/face/eyes/narrow.webp b/game/characters/hermione/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/narrow.webp rename to game/characters/hermione/face/eyes/narrow/expression.webp diff --git a/game/characters/hermione/face/eyes/narrow_mask.webp b/game/characters/hermione/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/hermione/face/eyes/narrow_mask.webp rename to game/characters/hermione/face/eyes/narrow/eyemask.webp diff --git a/game/characters/hermione/face/eyes/slit.webp b/game/characters/hermione/face/eyes/slit/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/slit.webp rename to game/characters/hermione/face/eyes/slit/expression.webp diff --git a/game/characters/hermione/face/eyes/slit_mask.webp b/game/characters/hermione/face/eyes/slit/eyemask.webp similarity index 100% rename from game/characters/hermione/face/eyes/slit_mask.webp rename to game/characters/hermione/face/eyes/slit/eyemask.webp diff --git a/game/characters/hermione/face/eyes/squint.webp b/game/characters/hermione/face/eyes/squint/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/squint.webp rename to game/characters/hermione/face/eyes/squint/expression.webp diff --git a/game/characters/hermione/face/eyes/squint_mask.webp b/game/characters/hermione/face/eyes/squint/eyemask.webp similarity index 100% rename from game/characters/hermione/face/eyes/squint_mask.webp rename to game/characters/hermione/face/eyes/squint/eyemask.webp diff --git a/game/characters/hermione/face/eyes/wide.webp b/game/characters/hermione/face/eyes/wide/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/wide.webp rename to game/characters/hermione/face/eyes/wide/expression.webp diff --git a/game/characters/hermione/face/eyes/wide_mask.webp b/game/characters/hermione/face/eyes/wide/eyemask.webp similarity index 100% rename from game/characters/hermione/face/eyes/wide_mask.webp rename to game/characters/hermione/face/eyes/wide/eyemask.webp diff --git a/game/characters/hermione/face/eyes/wink.webp b/game/characters/hermione/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/hermione/face/eyes/wink.webp rename to game/characters/hermione/face/eyes/wink/expression.webp diff --git a/game/characters/hermione/face/eyes/wink_mask.webp b/game/characters/hermione/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/hermione/face/eyes/wink_mask.webp rename to game/characters/hermione/face/eyes/wink/eyemask.webp diff --git a/game/characters/hermione/face/mouth/angry.webp b/game/characters/hermione/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/angry.webp rename to game/characters/hermione/face/mouth/angry/expression.webp diff --git a/game/characters/hermione/face/mouth/annoyed.webp b/game/characters/hermione/face/mouth/annoyed/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/annoyed.webp rename to game/characters/hermione/face/mouth/annoyed/expression.webp diff --git a/game/characters/hermione/face/mouth/base.webp b/game/characters/hermione/face/mouth/base/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/base.webp rename to game/characters/hermione/face/mouth/base/expression.webp diff --git a/game/characters/hermione/face/mouth/clench.webp b/game/characters/hermione/face/mouth/clench/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/clench.webp rename to game/characters/hermione/face/mouth/clench/expression.webp diff --git a/game/characters/hermione/face/mouth/crooked_smile.webp b/game/characters/hermione/face/mouth/crooked_smile/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/crooked_smile.webp rename to game/characters/hermione/face/mouth/crooked_smile/expression.webp diff --git a/game/characters/hermione/face/mouth/cum.webp b/game/characters/hermione/face/mouth/cum/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/cum.webp rename to game/characters/hermione/face/mouth/cum/expression.webp diff --git a/game/characters/hermione/face/mouth/disgust.webp b/game/characters/hermione/face/mouth/disgust/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/disgust.webp rename to game/characters/hermione/face/mouth/disgust/expression.webp diff --git a/game/characters/hermione/face/mouth/full.webp b/game/characters/hermione/face/mouth/full/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/full.webp rename to game/characters/hermione/face/mouth/full/expression.webp diff --git a/game/characters/hermione/face/mouth/full_cum.webp b/game/characters/hermione/face/mouth/full_cum/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/full_cum.webp rename to game/characters/hermione/face/mouth/full_cum/expression.webp diff --git a/game/characters/hermione/face/mouth/full_panties.webp b/game/characters/hermione/face/mouth/full_panties/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/full_panties.webp rename to game/characters/hermione/face/mouth/full_panties/expression.webp diff --git a/game/characters/hermione/face/mouth/grin.webp b/game/characters/hermione/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/grin.webp rename to game/characters/hermione/face/mouth/grin/expression.webp diff --git a/game/characters/hermione/face/mouth/mad.webp b/game/characters/hermione/face/mouth/mad/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/mad.webp rename to game/characters/hermione/face/mouth/mad/expression.webp diff --git a/game/characters/hermione/face/mouth/normal.webp b/game/characters/hermione/face/mouth/normal/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/normal.webp rename to game/characters/hermione/face/mouth/normal/expression.webp diff --git a/game/characters/hermione/face/mouth/open.webp b/game/characters/hermione/face/mouth/open/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/open.webp rename to game/characters/hermione/face/mouth/open/expression.webp diff --git a/game/characters/hermione/face/mouth/open_tongue.webp b/game/characters/hermione/face/mouth/open_tongue/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/open_tongue.webp rename to game/characters/hermione/face/mouth/open_tongue/expression.webp diff --git a/game/characters/hermione/face/mouth/open_wide_tongue.webp b/game/characters/hermione/face/mouth/open_wide_tongue/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/open_wide_tongue.webp rename to game/characters/hermione/face/mouth/open_wide_tongue/expression.webp diff --git a/game/characters/hermione/face/mouth/open_wide_tongue_cum.webp b/game/characters/hermione/face/mouth/open_wide_tongue_cum.webp deleted file mode 100644 index 68b67d54..00000000 --- a/game/characters/hermione/face/mouth/open_wide_tongue_cum.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:842cdaed8c60a2bb3cc0bfead4fe36cd131100a4250d44be464cafa1cdd35ba6 -size 6938 diff --git a/game/characters/hermione/face/mouth/open_wide_tongue_panties.webp b/game/characters/hermione/face/mouth/open_wide_tongue_panties.webp deleted file mode 100644 index dcc6348b..00000000 --- a/game/characters/hermione/face/mouth/open_wide_tongue_panties.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aa1ee00eb2c69ef538a9e405a78de1917868a55ae999777cd5df8b26283ce984 -size 6480 diff --git a/game/characters/hermione/face/mouth/scream.webp b/game/characters/hermione/face/mouth/scream/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/scream.webp rename to game/characters/hermione/face/mouth/scream/expression.webp diff --git a/game/characters/hermione/face/mouth/shock.webp b/game/characters/hermione/face/mouth/shock/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/shock.webp rename to game/characters/hermione/face/mouth/shock/expression.webp diff --git a/game/characters/hermione/face/mouth/silly.webp b/game/characters/hermione/face/mouth/silly/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/silly.webp rename to game/characters/hermione/face/mouth/silly/expression.webp diff --git a/game/characters/hermione/face/mouth/smile.webp b/game/characters/hermione/face/mouth/smile/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/smile.webp rename to game/characters/hermione/face/mouth/smile/expression.webp diff --git a/game/characters/hermione/face/mouth/soft.webp b/game/characters/hermione/face/mouth/soft/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/soft.webp rename to game/characters/hermione/face/mouth/soft/expression.webp diff --git a/game/characters/hermione/face/mouth/upset.webp b/game/characters/hermione/face/mouth/upset/expression.webp similarity index 100% rename from game/characters/hermione/face/mouth/upset.webp rename to game/characters/hermione/face/mouth/upset/expression.webp diff --git a/game/characters/hermione/face/pupils/L.webp b/game/characters/hermione/face/pupils/L/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/L.webp rename to game/characters/hermione/face/pupils/L/expression.webp diff --git a/game/characters/hermione/face/pupils/L_soft.webp b/game/characters/hermione/face/pupils/L_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/L_soft.webp rename to game/characters/hermione/face/pupils/L_soft/expression.webp diff --git a/game/characters/hermione/face/pupils/R.webp b/game/characters/hermione/face/pupils/R/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/R.webp rename to game/characters/hermione/face/pupils/R/expression.webp diff --git a/game/characters/hermione/face/pupils/R_soft.webp b/game/characters/hermione/face/pupils/R_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/R_soft.webp rename to game/characters/hermione/face/pupils/R_soft/expression.webp diff --git a/game/characters/hermione/face/pupils/ahegao.webp b/game/characters/hermione/face/pupils/ahegao/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/ahegao.webp rename to game/characters/hermione/face/pupils/ahegao/expression.webp diff --git a/game/characters/hermione/face/pupils/dead.webp b/game/characters/hermione/face/pupils/dead/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/dead.webp rename to game/characters/hermione/face/pupils/dead/expression.webp diff --git a/game/characters/hermione/face/pupils/down.webp b/game/characters/hermione/face/pupils/down/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/down.webp rename to game/characters/hermione/face/pupils/down/expression.webp diff --git a/game/characters/hermione/face/pupils/down_soft.webp b/game/characters/hermione/face/pupils/down_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/down_soft.webp rename to game/characters/hermione/face/pupils/down_soft/expression.webp diff --git a/game/characters/hermione/face/pupils/mid.webp b/game/characters/hermione/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/mid.webp rename to game/characters/hermione/face/pupils/mid/expression.webp diff --git a/game/characters/hermione/face/pupils/mid_soft.webp b/game/characters/hermione/face/pupils/mid_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/mid_soft.webp rename to game/characters/hermione/face/pupils/mid_soft/expression.webp diff --git a/game/characters/hermione/face/pupils/shocked.webp b/game/characters/hermione/face/pupils/shocked/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/shocked.webp rename to game/characters/hermione/face/pupils/shocked/expression.webp diff --git a/game/characters/hermione/face/pupils/squint.webp b/game/characters/hermione/face/pupils/squint/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/squint.webp rename to game/characters/hermione/face/pupils/squint/expression.webp diff --git a/game/characters/hermione/face/pupils/squint_soft.webp b/game/characters/hermione/face/pupils/squint_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/squint_soft.webp rename to game/characters/hermione/face/pupils/squint_soft/expression.webp diff --git a/game/characters/hermione/face/pupils/stare.webp b/game/characters/hermione/face/pupils/stare/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/stare.webp rename to game/characters/hermione/face/pupils/stare/expression.webp diff --git a/game/characters/hermione/face/pupils/stare_soft.webp b/game/characters/hermione/face/pupils/stare_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/stare_soft.webp rename to game/characters/hermione/face/pupils/stare_soft/expression.webp diff --git a/game/characters/hermione/face/pupils/up.webp b/game/characters/hermione/face/pupils/up/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/up.webp rename to game/characters/hermione/face/pupils/up/expression.webp diff --git a/game/characters/hermione/face/pupils/up_soft.webp b/game/characters/hermione/face/pupils/up_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/pupils/up_soft.webp rename to game/characters/hermione/face/pupils/up_soft/expression.webp diff --git a/game/characters/hermione/face/tears/crying.webp b/game/characters/hermione/face/tears/crying/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/crying.webp rename to game/characters/hermione/face/tears/crying/expression.webp diff --git a/game/characters/hermione/face/tears/crying_blink.webp b/game/characters/hermione/face/tears/crying_blink/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/crying_blink.webp rename to game/characters/hermione/face/tears/crying_blink/expression.webp diff --git a/game/characters/hermione/face/tears/mascara.webp b/game/characters/hermione/face/tears/mascara/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/mascara.webp rename to game/characters/hermione/face/tears/mascara/expression.webp diff --git a/game/characters/hermione/face/tears/mascara_crying.webp b/game/characters/hermione/face/tears/mascara_cryng/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/mascara_crying.webp rename to game/characters/hermione/face/tears/mascara_cryng/expression.webp diff --git a/game/characters/hermione/face/tears/mascara_soft.webp b/game/characters/hermione/face/tears/mascara_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/mascara_soft.webp rename to game/characters/hermione/face/tears/mascara_soft/expression.webp diff --git a/game/characters/hermione/face/tears/mascara_soft_blink.webp b/game/characters/hermione/face/tears/mascara_soft_blink.webp deleted file mode 100644 index 69567c7d..00000000 --- a/game/characters/hermione/face/tears/mascara_soft_blink.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b6eb4cb10fd98947c34a12dc3be6bd7f98b3cf2b665ff719e52ec6bff62b9e75 -size 9752 diff --git a/game/characters/hermione/face/tears/messy.webp b/game/characters/hermione/face/tears/messy/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/messy.webp rename to game/characters/hermione/face/tears/messy/expression.webp diff --git a/game/characters/hermione/face/tears/soft.webp b/game/characters/hermione/face/tears/soft/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/soft.webp rename to game/characters/hermione/face/tears/soft/expression.webp diff --git a/game/characters/hermione/face/tears/soft_blink.webp b/game/characters/hermione/face/tears/soft_blink/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/soft_blink.webp rename to game/characters/hermione/face/tears/soft_blink/expression.webp diff --git a/game/characters/hermione/face/tears/sweat.webp b/game/characters/hermione/face/tears/sweat/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/sweat.webp rename to game/characters/hermione/face/tears/sweat/expression.webp diff --git a/game/characters/hermione/face/tears/tears_crying_side.webp b/game/characters/hermione/face/tears/tears_crying/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/tears_crying_side.webp rename to game/characters/hermione/face/tears/tears_crying/expression.webp diff --git a/game/characters/hermione/face/tears/tears_down.webp b/game/characters/hermione/face/tears/tears_down/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/tears_down.webp rename to game/characters/hermione/face/tears/tears_down/expression.webp diff --git a/game/characters/hermione/face/tears/tears_mascara_crying_blink.webp b/game/characters/hermione/face/tears/tears_mascara/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/tears_mascara_crying_blink.webp rename to game/characters/hermione/face/tears/tears_mascara/expression.webp diff --git a/game/characters/hermione/face/tears/tears_soft_sweat.webp b/game/characters/hermione/face/tears/tears_soft/expression.webp similarity index 100% rename from game/characters/hermione/face/tears/tears_soft_sweat.webp rename to game/characters/hermione/face/tears/tears_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/body/armleft/down.webp b/game/characters/hermione/poses/hold_book/body/armleft/down.webp deleted file mode 100644 index 4845b4e5..00000000 --- a/game/characters/hermione/poses/hold_book/body/armleft/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:949d2c3f40b4631abd22a170a9492ed699338013b1cc1f6249021bc298fe18bf -size 3238 diff --git a/game/characters/hermione/poses/hold_book/body/armright/down.webp b/game/characters/hermione/poses/hold_book/body/armright/down.webp deleted file mode 100644 index 40a670dc..00000000 --- a/game/characters/hermione/poses/hold_book/body/armright/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:57038791f9fce36c0b8b6d0594ef9562181e9ff64098f4dddb83031e198a638e -size 890 diff --git a/game/characters/hermione/poses/hold_book/body/breasts/normal.webp b/game/characters/hermione/poses/hold_book/body/breasts/normal.webp deleted file mode 100644 index 40a670dc..00000000 --- a/game/characters/hermione/poses/hold_book/body/breasts/normal.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:57038791f9fce36c0b8b6d0594ef9562181e9ff64098f4dddb83031e198a638e -size 890 diff --git a/game/characters/hermione/poses/hold_book/body/base/front.webp b/game/characters/hermione/poses/hold_book/bodyparts/frame/default/skin.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/body/base/front.webp rename to game/characters/hermione/poses/hold_book/bodyparts/frame/default/skin.webp diff --git a/game/characters/hermione/poses/hold_book/face/cheeks/blush.webp b/game/characters/hermione/poses/hold_book/face/cheeks/blush/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/cheeks/blush.webp rename to game/characters/hermione/poses/hold_book/face/cheeks/blush/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/angry.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/angry.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/angry/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/angry_skin.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/angry/skin.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/angry_skin.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/angry/skin.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/annoyed.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/annoyed/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/annoyed.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/annoyed/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/annoyed_skin.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/annoyed/skin.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/annoyed_skin.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/annoyed/skin.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/base.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/base.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/base/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/base_skin.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/base/skin.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/base_skin.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/base/skin.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/low.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/low/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/low.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/low/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/low_skin.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/low/skin.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/low_skin.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/low/skin.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/worried.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/worried.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/worried/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyebrows/worried_skin.webp b/game/characters/hermione/poses/hold_book/face/eyebrows/worried/skin.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyebrows/worried_skin.webp rename to game/characters/hermione/poses/hold_book/face/eyebrows/worried/skin.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/base.webp b/game/characters/hermione/poses/hold_book/face/eyes/base/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/base.webp rename to game/characters/hermione/poses/hold_book/face/eyes/base/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/base_mask.webp b/game/characters/hermione/poses/hold_book/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/base_mask.webp rename to game/characters/hermione/poses/hold_book/face/eyes/base/eyemask.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/closed.webp b/game/characters/hermione/poses/hold_book/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/closed.webp rename to game/characters/hermione/poses/hold_book/face/eyes/closed/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/happy.webp b/game/characters/hermione/poses/hold_book/face/eyes/happy/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/happy.webp rename to game/characters/hermione/poses/hold_book/face/eyes/happy/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/happy_mask.webp b/game/characters/hermione/poses/hold_book/face/eyes/happy/eyemask.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/happy_mask.webp rename to game/characters/hermione/poses/hold_book/face/eyes/happy/eyemask.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/happyCl.webp b/game/characters/hermione/poses/hold_book/face/eyes/happyCl/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/happyCl.webp rename to game/characters/hermione/poses/hold_book/face/eyes/happyCl/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/narrow.webp b/game/characters/hermione/poses/hold_book/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/narrow.webp rename to game/characters/hermione/poses/hold_book/face/eyes/narrow/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/narrow_mask.webp b/game/characters/hermione/poses/hold_book/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/narrow_mask.webp rename to game/characters/hermione/poses/hold_book/face/eyes/narrow/eyemask.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/slit.webp b/game/characters/hermione/poses/hold_book/face/eyes/slit/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/slit.webp rename to game/characters/hermione/poses/hold_book/face/eyes/slit/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/slit_mask.webp b/game/characters/hermione/poses/hold_book/face/eyes/slit/eyemask.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/slit_mask.webp rename to game/characters/hermione/poses/hold_book/face/eyes/slit/eyemask.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/squint.webp b/game/characters/hermione/poses/hold_book/face/eyes/squint/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/squint.webp rename to game/characters/hermione/poses/hold_book/face/eyes/squint/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/squint_mask.webp b/game/characters/hermione/poses/hold_book/face/eyes/squint/eyemask.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/squint_mask.webp rename to game/characters/hermione/poses/hold_book/face/eyes/squint/eyemask.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/wide.webp b/game/characters/hermione/poses/hold_book/face/eyes/wide/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/wide.webp rename to game/characters/hermione/poses/hold_book/face/eyes/wide/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/wide_mask.webp b/game/characters/hermione/poses/hold_book/face/eyes/wide/eyemask.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/wide_mask.webp rename to game/characters/hermione/poses/hold_book/face/eyes/wide/eyemask.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/wink.webp b/game/characters/hermione/poses/hold_book/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/wink.webp rename to game/characters/hermione/poses/hold_book/face/eyes/wink/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/eyes/wink_mask.webp b/game/characters/hermione/poses/hold_book/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/eyes/wink_mask.webp rename to game/characters/hermione/poses/hold_book/face/eyes/wink/eyemask.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/angry.webp b/game/characters/hermione/poses/hold_book/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/angry.webp rename to game/characters/hermione/poses/hold_book/face/mouth/angry/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/annoyed.webp b/game/characters/hermione/poses/hold_book/face/mouth/annoyed/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/annoyed.webp rename to game/characters/hermione/poses/hold_book/face/mouth/annoyed/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/base.webp b/game/characters/hermione/poses/hold_book/face/mouth/base/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/base.webp rename to game/characters/hermione/poses/hold_book/face/mouth/base/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/clench.webp b/game/characters/hermione/poses/hold_book/face/mouth/clench/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/clench.webp rename to game/characters/hermione/poses/hold_book/face/mouth/clench/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/crooked_smile.webp b/game/characters/hermione/poses/hold_book/face/mouth/crooked/smile.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/crooked_smile.webp rename to game/characters/hermione/poses/hold_book/face/mouth/crooked/smile.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/cum.webp b/game/characters/hermione/poses/hold_book/face/mouth/cum/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/cum.webp rename to game/characters/hermione/poses/hold_book/face/mouth/cum/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/disgust.webp b/game/characters/hermione/poses/hold_book/face/mouth/disgust/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/disgust.webp rename to game/characters/hermione/poses/hold_book/face/mouth/disgust/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/full.webp b/game/characters/hermione/poses/hold_book/face/mouth/full/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/full.webp rename to game/characters/hermione/poses/hold_book/face/mouth/full/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/full_cum.webp b/game/characters/hermione/poses/hold_book/face/mouth/full_cum/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/full_cum.webp rename to game/characters/hermione/poses/hold_book/face/mouth/full_cum/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/grin.webp b/game/characters/hermione/poses/hold_book/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/grin.webp rename to game/characters/hermione/poses/hold_book/face/mouth/grin/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/mad.webp b/game/characters/hermione/poses/hold_book/face/mouth/mad/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/mad.webp rename to game/characters/hermione/poses/hold_book/face/mouth/mad/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/normal.webp b/game/characters/hermione/poses/hold_book/face/mouth/normal/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/normal.webp rename to game/characters/hermione/poses/hold_book/face/mouth/normal/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/open.webp b/game/characters/hermione/poses/hold_book/face/mouth/open/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/open.webp rename to game/characters/hermione/poses/hold_book/face/mouth/open/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/open_tongue.webp b/game/characters/hermione/poses/hold_book/face/mouth/open_tongue/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/open_tongue.webp rename to game/characters/hermione/poses/hold_book/face/mouth/open_tongue/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/open_wide_tongue.webp b/game/characters/hermione/poses/hold_book/face/mouth/open_wide/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/open_wide_tongue.webp rename to game/characters/hermione/poses/hold_book/face/mouth/open_wide/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/open_wide_tongue_cum.webp b/game/characters/hermione/poses/hold_book/face/mouth/open_wide_tongue_cum.webp deleted file mode 100644 index 68b67d54..00000000 --- a/game/characters/hermione/poses/hold_book/face/mouth/open_wide_tongue_cum.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:842cdaed8c60a2bb3cc0bfead4fe36cd131100a4250d44be464cafa1cdd35ba6 -size 6938 diff --git a/game/characters/hermione/poses/hold_book/face/mouth/scream.webp b/game/characters/hermione/poses/hold_book/face/mouth/scream/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/scream.webp rename to game/characters/hermione/poses/hold_book/face/mouth/scream/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/shock.webp b/game/characters/hermione/poses/hold_book/face/mouth/shock/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/shock.webp rename to game/characters/hermione/poses/hold_book/face/mouth/shock/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/silly.webp b/game/characters/hermione/poses/hold_book/face/mouth/silly/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/silly.webp rename to game/characters/hermione/poses/hold_book/face/mouth/silly/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/smile.webp b/game/characters/hermione/poses/hold_book/face/mouth/smile/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/smile.webp rename to game/characters/hermione/poses/hold_book/face/mouth/smile/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/soft.webp b/game/characters/hermione/poses/hold_book/face/mouth/soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/soft.webp rename to game/characters/hermione/poses/hold_book/face/mouth/soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/mouth/upset.webp b/game/characters/hermione/poses/hold_book/face/mouth/upset/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/mouth/upset.webp rename to game/characters/hermione/poses/hold_book/face/mouth/upset/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/L.webp b/game/characters/hermione/poses/hold_book/face/pupils/L/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/L.webp rename to game/characters/hermione/poses/hold_book/face/pupils/L/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/L_soft.webp b/game/characters/hermione/poses/hold_book/face/pupils/L_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/L_soft.webp rename to game/characters/hermione/poses/hold_book/face/pupils/L_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/R.webp b/game/characters/hermione/poses/hold_book/face/pupils/R/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/R.webp rename to game/characters/hermione/poses/hold_book/face/pupils/R/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/R_soft.webp b/game/characters/hermione/poses/hold_book/face/pupils/R_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/R_soft.webp rename to game/characters/hermione/poses/hold_book/face/pupils/R_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/ahegao.webp b/game/characters/hermione/poses/hold_book/face/pupils/ahegao/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/ahegao.webp rename to game/characters/hermione/poses/hold_book/face/pupils/ahegao/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/dead.webp b/game/characters/hermione/poses/hold_book/face/pupils/dead/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/dead.webp rename to game/characters/hermione/poses/hold_book/face/pupils/dead/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/down.webp b/game/characters/hermione/poses/hold_book/face/pupils/down/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/down.webp rename to game/characters/hermione/poses/hold_book/face/pupils/down/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/down_soft.webp b/game/characters/hermione/poses/hold_book/face/pupils/down_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/down_soft.webp rename to game/characters/hermione/poses/hold_book/face/pupils/down_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/mid.webp b/game/characters/hermione/poses/hold_book/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/mid.webp rename to game/characters/hermione/poses/hold_book/face/pupils/mid/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/mid_soft.webp b/game/characters/hermione/poses/hold_book/face/pupils/mid_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/mid_soft.webp rename to game/characters/hermione/poses/hold_book/face/pupils/mid_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/shocked.webp b/game/characters/hermione/poses/hold_book/face/pupils/shocked/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/shocked.webp rename to game/characters/hermione/poses/hold_book/face/pupils/shocked/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/squint.webp b/game/characters/hermione/poses/hold_book/face/pupils/squint/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/squint.webp rename to game/characters/hermione/poses/hold_book/face/pupils/squint/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/squint_soft.webp b/game/characters/hermione/poses/hold_book/face/pupils/squint_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/squint_soft.webp rename to game/characters/hermione/poses/hold_book/face/pupils/squint_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/stare.webp b/game/characters/hermione/poses/hold_book/face/pupils/stare/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/stare.webp rename to game/characters/hermione/poses/hold_book/face/pupils/stare/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/stare_soft.webp b/game/characters/hermione/poses/hold_book/face/pupils/stare_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/stare_soft.webp rename to game/characters/hermione/poses/hold_book/face/pupils/stare_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/up.webp b/game/characters/hermione/poses/hold_book/face/pupils/up/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/up.webp rename to game/characters/hermione/poses/hold_book/face/pupils/up/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/pupils/up_soft.webp b/game/characters/hermione/poses/hold_book/face/pupils/up_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/pupils/up_soft.webp rename to game/characters/hermione/poses/hold_book/face/pupils/up_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/crying.webp b/game/characters/hermione/poses/hold_book/face/tears/crying/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/crying.webp rename to game/characters/hermione/poses/hold_book/face/tears/crying/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/crying_blink.webp b/game/characters/hermione/poses/hold_book/face/tears/crying_blink/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/crying_blink.webp rename to game/characters/hermione/poses/hold_book/face/tears/crying_blink/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/mascara.webp b/game/characters/hermione/poses/hold_book/face/tears/mascara/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/mascara.webp rename to game/characters/hermione/poses/hold_book/face/tears/mascara/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/mascara_crying.webp b/game/characters/hermione/poses/hold_book/face/tears/mascara_crying/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/mascara_crying.webp rename to game/characters/hermione/poses/hold_book/face/tears/mascara_crying/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/mascara_soft.webp b/game/characters/hermione/poses/hold_book/face/tears/mascara_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/mascara_soft.webp rename to game/characters/hermione/poses/hold_book/face/tears/mascara_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/mascara_soft_blink.webp b/game/characters/hermione/poses/hold_book/face/tears/mascara_soft_blink.webp deleted file mode 100644 index 69567c7d..00000000 --- a/game/characters/hermione/poses/hold_book/face/tears/mascara_soft_blink.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b6eb4cb10fd98947c34a12dc3be6bd7f98b3cf2b665ff719e52ec6bff62b9e75 -size 9752 diff --git a/game/characters/hermione/poses/hold_book/face/tears/messy.webp b/game/characters/hermione/poses/hold_book/face/tears/messy/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/messy.webp rename to game/characters/hermione/poses/hold_book/face/tears/messy/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/soft.webp b/game/characters/hermione/poses/hold_book/face/tears/soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/soft.webp rename to game/characters/hermione/poses/hold_book/face/tears/soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/soft_blink.webp b/game/characters/hermione/poses/hold_book/face/tears/soft_blink/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/soft_blink.webp rename to game/characters/hermione/poses/hold_book/face/tears/soft_blink/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/sweat.webp b/game/characters/hermione/poses/hold_book/face/tears/sweat/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/sweat.webp rename to game/characters/hermione/poses/hold_book/face/tears/sweat/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/tears_crying_side.webp b/game/characters/hermione/poses/hold_book/face/tears/tears/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/tears_crying_side.webp rename to game/characters/hermione/poses/hold_book/face/tears/tears/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/tears_down.webp b/game/characters/hermione/poses/hold_book/face/tears/tears_down/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/tears_down.webp rename to game/characters/hermione/poses/hold_book/face/tears/tears_down/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/tears_mascara_crying_blink.webp b/game/characters/hermione/poses/hold_book/face/tears/tears_mascara/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/tears_mascara_crying_blink.webp rename to game/characters/hermione/poses/hold_book/face/tears/tears_mascara/expression.webp diff --git a/game/characters/hermione/poses/hold_book/face/tears/tears_soft_sweat.webp b/game/characters/hermione/poses/hold_book/face/tears/tears_soft/expression.webp similarity index 100% rename from game/characters/hermione/poses/hold_book/face/tears/tears_soft_sweat.webp rename to game/characters/hermione/poses/hold_book/face/tears/tears_soft/expression.webp diff --git a/game/characters/hermione/poses/hold_book/loadable.webp b/game/characters/hermione/poses/hold_book/loadable.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/hermione/poses/hold_book/loadable.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/hermione/poses/masturbate/loadable.webp b/game/characters/hermione/poses/masturbate/loadable.webp deleted file mode 100644 index 9357818b..00000000 --- a/game/characters/hermione/poses/masturbate/loadable.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 diff --git a/game/characters/hooch/body/base/front.webp b/game/characters/hooch/bodyparts/frame/default/skin.webp similarity index 100% rename from game/characters/hooch/body/base/front.webp rename to game/characters/hooch/bodyparts/frame/default/skin.webp diff --git a/game/characters/hooch/face/cheeks/blush.webp b/game/characters/hooch/face/cheeks/blush/expression.webp similarity index 100% rename from game/characters/hooch/face/cheeks/blush.webp rename to game/characters/hooch/face/cheeks/blush/expression.webp diff --git a/game/characters/hooch/face/cheeks/blush_heavy.webp b/game/characters/hooch/face/cheeks/blush_heavy/expression.webp similarity index 100% rename from game/characters/hooch/face/cheeks/blush_heavy.webp rename to game/characters/hooch/face/cheeks/blush_heavy/expression.webp diff --git a/game/characters/hooch/face/eyebrows/angry.webp b/game/characters/hooch/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/hooch/face/eyebrows/angry.webp rename to game/characters/hooch/face/eyebrows/angry/expression.webp diff --git a/game/characters/hooch/face/eyebrows/base.webp b/game/characters/hooch/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/hooch/face/eyebrows/base.webp rename to game/characters/hooch/face/eyebrows/base/expression.webp diff --git a/game/characters/hooch/face/eyebrows/raised.webp b/game/characters/hooch/face/eyebrows/raised/expression.webp similarity index 100% rename from game/characters/hooch/face/eyebrows/raised.webp rename to game/characters/hooch/face/eyebrows/raised/expression.webp diff --git a/game/characters/hooch/face/eyebrows/shocked.webp b/game/characters/hooch/face/eyebrows/shocked/expression.webp similarity index 100% rename from game/characters/hooch/face/eyebrows/shocked.webp rename to game/characters/hooch/face/eyebrows/shocked/expression.webp diff --git a/game/characters/hooch/face/eyebrows/worried.webp b/game/characters/hooch/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/hooch/face/eyebrows/worried.webp rename to game/characters/hooch/face/eyebrows/worried/expression.webp diff --git a/game/characters/hooch/face/eyes/base.webp b/game/characters/hooch/face/eyes/base/expression.webp similarity index 100% rename from game/characters/hooch/face/eyes/base.webp rename to game/characters/hooch/face/eyes/base/expression.webp diff --git a/game/characters/hooch/face/eyes/base_mask.webp b/game/characters/hooch/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/hooch/face/eyes/base_mask.webp rename to game/characters/hooch/face/eyes/base/eyemask.webp diff --git a/game/characters/hooch/face/eyes/closed.webp b/game/characters/hooch/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/hooch/face/eyes/closed.webp rename to game/characters/hooch/face/eyes/closed/expression.webp diff --git a/game/characters/hooch/face/eyes/narrow.webp b/game/characters/hooch/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/hooch/face/eyes/narrow.webp rename to game/characters/hooch/face/eyes/narrow/expression.webp diff --git a/game/characters/hooch/face/eyes/narrow_mask.webp b/game/characters/hooch/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/hooch/face/eyes/narrow_mask.webp rename to game/characters/hooch/face/eyes/narrow/eyemask.webp diff --git a/game/characters/hooch/face/eyes/shocked.webp b/game/characters/hooch/face/eyes/shocked/expression.webp similarity index 100% rename from game/characters/hooch/face/eyes/shocked.webp rename to game/characters/hooch/face/eyes/shocked/expression.webp diff --git a/game/characters/hooch/face/eyes/shocked_mask.webp b/game/characters/hooch/face/eyes/shocked/eyemask.webp similarity index 100% rename from game/characters/hooch/face/eyes/shocked_mask.webp rename to game/characters/hooch/face/eyes/shocked/eyemask.webp diff --git a/game/characters/hooch/face/eyes/wink.webp b/game/characters/hooch/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/hooch/face/eyes/wink.webp rename to game/characters/hooch/face/eyes/wink/expression.webp diff --git a/game/characters/hooch/face/eyes/wink_mask.webp b/game/characters/hooch/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/hooch/face/eyes/wink_mask.webp rename to game/characters/hooch/face/eyes/wink/eyemask.webp diff --git a/game/characters/hooch/face/mouth/angry.webp b/game/characters/hooch/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/hooch/face/mouth/angry.webp rename to game/characters/hooch/face/mouth/angry/expression.webp diff --git a/game/characters/hooch/face/mouth/base.webp b/game/characters/hooch/face/mouth/base/expression.webp similarity index 100% rename from game/characters/hooch/face/mouth/base.webp rename to game/characters/hooch/face/mouth/base/expression.webp diff --git a/game/characters/hooch/face/mouth/grin.webp b/game/characters/hooch/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/hooch/face/mouth/grin.webp rename to game/characters/hooch/face/mouth/grin/expression.webp diff --git a/game/characters/hooch/face/mouth/normal.webp b/game/characters/hooch/face/mouth/normal/expression.webp similarity index 100% rename from game/characters/hooch/face/mouth/normal.webp rename to game/characters/hooch/face/mouth/normal/expression.webp diff --git a/game/characters/hooch/face/mouth/open.webp b/game/characters/hooch/face/mouth/open/expression.webp similarity index 100% rename from game/characters/hooch/face/mouth/open.webp rename to game/characters/hooch/face/mouth/open/expression.webp diff --git a/game/characters/hooch/face/pupils/L.webp b/game/characters/hooch/face/pupils/L/expression.webp similarity index 100% rename from game/characters/hooch/face/pupils/L.webp rename to game/characters/hooch/face/pupils/L/expression.webp diff --git a/game/characters/hooch/face/pupils/R.webp b/game/characters/hooch/face/pupils/R/expression.webp similarity index 100% rename from game/characters/hooch/face/pupils/R.webp rename to game/characters/hooch/face/pupils/R/expression.webp diff --git a/game/characters/hooch/face/pupils/down.webp b/game/characters/hooch/face/pupils/down/expression.webp similarity index 100% rename from game/characters/hooch/face/pupils/down.webp rename to game/characters/hooch/face/pupils/down/expression.webp diff --git a/game/characters/hooch/face/pupils/downL.webp b/game/characters/hooch/face/pupils/downL/expression.webp similarity index 100% rename from game/characters/hooch/face/pupils/downL.webp rename to game/characters/hooch/face/pupils/downL/expression.webp diff --git a/game/characters/hooch/face/pupils/downR.webp b/game/characters/hooch/face/pupils/downR/expression.webp similarity index 100% rename from game/characters/hooch/face/pupils/downR.webp rename to game/characters/hooch/face/pupils/downR/expression.webp diff --git a/game/characters/hooch/face/pupils/mid.webp b/game/characters/hooch/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/hooch/face/pupils/mid.webp rename to game/characters/hooch/face/pupils/mid/expression.webp diff --git a/game/characters/hooch/face/pupils/stare.webp b/game/characters/hooch/face/pupils/stare/expression.webp similarity index 100% rename from game/characters/hooch/face/pupils/stare.webp rename to game/characters/hooch/face/pupils/stare/expression.webp diff --git a/game/characters/hooch/face/pupils/up.webp b/game/characters/hooch/face/pupils/up/expression.webp similarity index 100% rename from game/characters/hooch/face/pupils/up.webp rename to game/characters/hooch/face/pupils/up/expression.webp diff --git a/game/characters/luna/body/armleft/down.webp b/game/characters/luna/body/armleft/down.webp deleted file mode 100644 index 1d9a8c10..00000000 --- a/game/characters/luna/body/armleft/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38cf7377244e0ccfbc5281f8802bb589e994c671df5293f968e915e6f730b599 -size 9390 diff --git a/game/characters/luna/body/armleft/up.webp b/game/characters/luna/body/armleft/up.webp deleted file mode 100644 index 4765e583..00000000 --- a/game/characters/luna/body/armleft/up.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:334ff656b1823cc5d58c74f5c506bf095fa6604c45fbe4d2b0cc1b51e4ed8cd2 -size 9236 diff --git a/game/characters/luna/body/armright/down.webp b/game/characters/luna/body/armright/down.webp deleted file mode 100644 index 0048ed4c..00000000 --- a/game/characters/luna/body/armright/down.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0b0146a1ce81288acd041a95d2d7ad2c33dafe5173f3259b933fe283f8363acc -size 8398 diff --git a/game/characters/luna/body/armright/up.webp b/game/characters/luna/body/armright/up.webp deleted file mode 100644 index 179d0793..00000000 --- a/game/characters/luna/body/armright/up.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fcf33fa9657244ee6fcfdb8c14d3de7aed5b3f8336df7797f720367afcff19e3 -size 7196 diff --git a/game/characters/luna/body/base/front.webp b/game/characters/luna/body/base/front.webp deleted file mode 100644 index 0dfa24fa..00000000 --- a/game/characters/luna/body/base/front.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6e63ed1dc79ba3aaa042b334972bbb08040311f5cec874aadc6dcb219d97c003 -size 20342 diff --git a/game/characters/luna/body/breasts/normal.webp b/game/characters/luna/body/breasts/normal.webp deleted file mode 100644 index 266369c8..00000000 --- a/game/characters/luna/body/breasts/normal.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2c94dfb7db323d0df5356f46f6f48a2e7e5962e4b2f3d21fe67a0fe3cd182e6c -size 6790 diff --git a/game/characters/luna/body/breasts/normal_tight.webp b/game/characters/luna/body/breasts/normal_tight.webp deleted file mode 100644 index 09e1fabb..00000000 --- a/game/characters/luna/body/breasts/normal_tight.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b6e6de86d903a4e8157190d6fda19b6daaa60c968a81ebaeb39fa8e762cf8170 -size 12508 diff --git a/game/characters/luna/bodyparts/frame/default/skin.webp b/game/characters/luna/bodyparts/frame/default/skin.webp new file mode 100644 index 00000000..2b949fb2 --- /dev/null +++ b/game/characters/luna/bodyparts/frame/default/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1f930f061a1f782b3a0b617ff68a91b08048d987d36d40cb2b1f018018d47e4 +size 158562 diff --git a/game/characters/luna/clothes/accessory/mistletoe/0.webp b/game/characters/luna/clothes/accessory/mistletoe/0.webp new file mode 100644 index 00000000..5aacf6ce --- /dev/null +++ b/game/characters/luna/clothes/accessory/mistletoe/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9184696b2e3053eceed6b00c13472830d94a24abfc2a198e002f6f7defb2b25a +size 1958 diff --git a/game/characters/luna/clothes/accessory/mistletoe/extra.webp b/game/characters/luna/clothes/accessory/mistletoe/extra.webp new file mode 100644 index 00000000..f2b94abf --- /dev/null +++ b/game/characters/luna/clothes/accessory/mistletoe/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f09da0a6bc9f74c09c49b54462a624d5592b96f89a18c096fed3a0f21f6e828 +size 2688 diff --git a/game/characters/luna/clothes/accessory/mistletoe/outline.webp b/game/characters/luna/clothes/accessory/mistletoe/outline.webp new file mode 100644 index 00000000..fe3ce4b9 --- /dev/null +++ b/game/characters/luna/clothes/accessory/mistletoe/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d87ff667af846e9a74c090495c7343fd283a6033bf37ea184c4cfe3bcbaa6f55 +size 2470 diff --git a/game/characters/luna/clothes/earrings/bauble_earring/0.webp b/game/characters/luna/clothes/earrings/bauble_earring/0.webp new file mode 100644 index 00000000..3349ab2f --- /dev/null +++ b/game/characters/luna/clothes/earrings/bauble_earring/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4c09b900c0ffdaa2fa282708e5f1c2756406b37f7951dbfaadc562b9318f450 +size 956 diff --git a/game/characters/luna/clothes/earrings/bauble_earring/extra.webp b/game/characters/luna/clothes/earrings/bauble_earring/extra.webp new file mode 100644 index 00000000..8bee3476 --- /dev/null +++ b/game/characters/luna/clothes/earrings/bauble_earring/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:027cec5b675d1a1ebf4eab7c399a8c9e4970bbbf3f7e7133379917dc5485cdcc +size 5634 diff --git a/game/characters/luna/clothes/earrings/bauble_earring/outline.webp b/game/characters/luna/clothes/earrings/bauble_earring/outline.webp new file mode 100644 index 00000000..b14b991b --- /dev/null +++ b/game/characters/luna/clothes/earrings/bauble_earring/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4fe8014afb5ee731b03b00276a169d43446f978b3ee3cd03df0d27735f0333f +size 1390 diff --git a/game/characters/luna/clothes/headgear/antlers/default/0.webp b/game/characters/luna/clothes/headgear/antlers/default/0.webp new file mode 100644 index 00000000..a1a4953e --- /dev/null +++ b/game/characters/luna/clothes/headgear/antlers/default/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ac4b614a36a330573092b51fa87da406a7eab15f6bc8b3f95a7e369458d6fc1 +size 3868 diff --git a/game/characters/luna/clothes/headgear/antlers/default/1.webp b/game/characters/luna/clothes/headgear/antlers/default/1.webp new file mode 100644 index 00000000..70c5533d --- /dev/null +++ b/game/characters/luna/clothes/headgear/antlers/default/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f93df8780dd8073eca1872a327865d490764abca52e3f7acca92648acb46d53 +size 1952 diff --git a/game/characters/luna/clothes/headgear/antlers/default/2.webp b/game/characters/luna/clothes/headgear/antlers/default/2.webp new file mode 100644 index 00000000..04fabeaf --- /dev/null +++ b/game/characters/luna/clothes/headgear/antlers/default/2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42cb0a456503e13f3bc560a479a653514f86e6fd9c2ff93bf66a6a9e11ba4b61 +size 6480 diff --git a/game/characters/luna/clothes/headgear/antlers/default/extra.webp b/game/characters/luna/clothes/headgear/antlers/default/extra.webp new file mode 100644 index 00000000..b96b4b0c --- /dev/null +++ b/game/characters/luna/clothes/headgear/antlers/default/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe2d8b489d60ef5b90cd67dc92f76590082bda435ee54f266cae3db0501f2386 +size 2774 diff --git a/game/characters/luna/clothes/headgear/antlers/default/outline.webp b/game/characters/luna/clothes/headgear/antlers/default/outline.webp new file mode 100644 index 00000000..44920965 --- /dev/null +++ b/game/characters/luna/clothes/headgear/antlers/default/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b323474b70aa5cefb8897fcae2a77856a37c8e704534a9f3498cca8046b9d38 +size 10056 diff --git a/game/characters/luna/clothes/headgear/bunny_hat_1/default/0.webp b/game/characters/luna/clothes/headgear/bunny_hat_1/default/0.webp new file mode 100644 index 00000000..d29ddc86 --- /dev/null +++ b/game/characters/luna/clothes/headgear/bunny_hat_1/default/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97ec5ddee717488aa27a329598d4eb023072576801e0a7273aa786c88ee552ef +size 5848 diff --git a/game/characters/luna/clothes/headgear/bunny_hat_1/default/1.webp b/game/characters/luna/clothes/headgear/bunny_hat_1/default/1.webp new file mode 100644 index 00000000..c0097682 --- /dev/null +++ b/game/characters/luna/clothes/headgear/bunny_hat_1/default/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66939f733b4ee4b2752f656c472d645efca3f3d0231a1c7029dce7257060cf26 +size 8532 diff --git a/game/characters/luna/clothes/headgear/bunny_hat_1/default/outline.webp b/game/characters/luna/clothes/headgear/bunny_hat_1/default/outline.webp new file mode 100644 index 00000000..b522867e --- /dev/null +++ b/game/characters/luna/clothes/headgear/bunny_hat_1/default/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb2dfc2f3543bd20265249d17a7069cc538a7687f68deb84dab1afee3bc709e8 +size 8134 diff --git a/game/characters/luna/clothes/headgear/flight_attendant/0.webp b/game/characters/luna/clothes/headgear/flight_attendant/default/0.webp similarity index 100% rename from game/characters/luna/clothes/headgear/flight_attendant/0.webp rename to game/characters/luna/clothes/headgear/flight_attendant/default/0.webp diff --git a/game/characters/luna/clothes/headgear/flight_attendant/outline.webp b/game/characters/luna/clothes/headgear/flight_attendant/default/outline.webp similarity index 100% rename from game/characters/luna/clothes/headgear/flight_attendant/outline.webp rename to game/characters/luna/clothes/headgear/flight_attendant/default/outline.webp diff --git a/game/characters/tonks/clothes/makeup/elf_ears/0.webp b/game/characters/luna/clothes/neckwear/chocolate_frog/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/elf_ears/0.webp rename to game/characters/luna/clothes/neckwear/chocolate_frog/0.webp diff --git a/game/characters/luna/clothes/neckwear/chocolate_frog/outline.webp b/game/characters/luna/clothes/neckwear/chocolate_frog/outline.webp new file mode 100644 index 00000000..3cc72002 --- /dev/null +++ b/game/characters/luna/clothes/neckwear/chocolate_frog/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8edcccc31e7b09836dfc123c7edb5f742b750fe9f04ba739693d746ba67facad +size 10164 diff --git a/game/characters/luna/clothes/neckwear/chocolate_frog/skin.webp b/game/characters/luna/clothes/neckwear/chocolate_frog/skin.webp new file mode 100644 index 00000000..46a59c56 --- /dev/null +++ b/game/characters/luna/clothes/neckwear/chocolate_frog/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76216dd403f973ed6e03ce7e2b86abb0020fc0dee66cf7d34691563c5b6f8d2b +size 1660 diff --git a/game/characters/luna/clothes/neckwear/cork/0.webp b/game/characters/luna/clothes/neckwear/cork/0.webp index 9357818b..f30d3f53 100644 --- a/game/characters/luna/clothes/neckwear/cork/0.webp +++ b/game/characters/luna/clothes/neckwear/cork/0.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86be52bdb7547413cafb3ed175a806a798c65de98b40849e0b974c47d187de65 -size 34 +oid sha256:f32d6d16c0fff86e6aecb0c14febc0fc8cdb7d87a683babd8cd69aa84fce96db +size 1336 diff --git a/game/characters/luna/clothes/neckwear/cork/1.webp b/game/characters/luna/clothes/neckwear/cork/1.webp new file mode 100644 index 00000000..9cd2b26c --- /dev/null +++ b/game/characters/luna/clothes/neckwear/cork/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a1b89768db5088c796afeaca42a273bed136baf7fb7ed62b4f066f86c8b4843 +size 1694 diff --git a/game/characters/luna/clothes/neckwear/cork/outline.webp b/game/characters/luna/clothes/neckwear/cork/outline.webp index 3c9cdbbb..f57668f4 100644 --- a/game/characters/luna/clothes/neckwear/cork/outline.webp +++ b/game/characters/luna/clothes/neckwear/cork/outline.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53a57e69e0c656d302581c6723fac5a43d069c99d637b6a940e089fb6871fa48 -size 5232 +oid sha256:5693d8bec6946052c0240dcc1b40081a1192f1571b5b1ebc0d79761b8dbfbd79 +size 3148 diff --git a/game/characters/luna/clothes/neckwear/cork/skin.webp b/game/characters/luna/clothes/neckwear/cork/skin.webp new file mode 100644 index 00000000..c8b31c5e --- /dev/null +++ b/game/characters/luna/clothes/neckwear/cork/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:091d783163a5cd180660a6469aaf626d0a70ff8056a633051d31524fcac932f6 +size 1138 diff --git a/game/characters/luna/clothes/top/bunny_top_1/0.webp b/game/characters/luna/clothes/top/bunny_top_1/0.webp new file mode 100644 index 00000000..5da6b9d4 --- /dev/null +++ b/game/characters/luna/clothes/top/bunny_top_1/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f0dfe2bee88fbf25eed3cefdf9e6b689faeeef366ce530a25f7861cf5abbab6 +size 12214 diff --git a/game/characters/luna/clothes/top/bunny_top_1/extra.webp b/game/characters/luna/clothes/top/bunny_top_1/extra.webp new file mode 100644 index 00000000..2e7e2758 --- /dev/null +++ b/game/characters/luna/clothes/top/bunny_top_1/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fef7aecdde450cace28b0d515fe3aef80e11ed1df28eef07a474959d1960592 +size 14782 diff --git a/game/characters/luna/clothes/top/bunny_top_1/outline.webp b/game/characters/luna/clothes/top/bunny_top_1/outline.webp new file mode 100644 index 00000000..457ff8c7 --- /dev/null +++ b/game/characters/luna/clothes/top/bunny_top_1/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca7c501f120ebfc70bba8dcb089ebdc02509dd1ab328c39519de6eb8fb547f34 +size 9338 diff --git a/game/characters/luna/clothes/top/bunny_top_1/skin.webp b/game/characters/luna/clothes/top/bunny_top_1/skin.webp new file mode 100644 index 00000000..dc4733a0 --- /dev/null +++ b/game/characters/luna/clothes/top/bunny_top_1/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeb4d674c7c316db5e07863196081c49170971eeb74e0dd7693e84323258f1fb +size 4650 diff --git a/game/characters/luna/clothes/top/bunny_top_2/0.webp b/game/characters/luna/clothes/top/bunny_top_2/0.webp new file mode 100644 index 00000000..ae20936c --- /dev/null +++ b/game/characters/luna/clothes/top/bunny_top_2/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db9954432e2ed082d28bf4a3415eeb1bf85c7efc4540bca6cd4f7946a821bc1a +size 11528 diff --git a/game/characters/luna/clothes/top/bunny_top_2/extra.webp b/game/characters/luna/clothes/top/bunny_top_2/extra.webp new file mode 100644 index 00000000..7195dda1 --- /dev/null +++ b/game/characters/luna/clothes/top/bunny_top_2/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09167ef7c1e4da99c4f785cea02bd2815ef3a2743556a366073758917ace8f20 +size 14318 diff --git a/game/characters/luna/clothes/top/bunny_top_2/outline.webp b/game/characters/luna/clothes/top/bunny_top_2/outline.webp new file mode 100644 index 00000000..a258ac7b --- /dev/null +++ b/game/characters/luna/clothes/top/bunny_top_2/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e5a7421eb25dfbce1913a92fce677441641ef47a16fea2dbdbbaaf7a6370b96 +size 9110 diff --git a/game/characters/luna/clothes/top/bunny_top_2/skin.webp b/game/characters/luna/clothes/top/bunny_top_2/skin.webp new file mode 100644 index 00000000..bcc01411 --- /dev/null +++ b/game/characters/luna/clothes/top/bunny_top_2/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6fff8ee0139fba166cc6a68574562398c3233858d57e4ad674f1fa48d6d8369 +size 5042 diff --git a/game/characters/luna/cum/body/heavy.webp b/game/characters/luna/cum/body/heavy/cum.webp similarity index 100% rename from game/characters/luna/cum/body/heavy.webp rename to game/characters/luna/cum/body/heavy/cum.webp diff --git a/game/characters/luna/cum/body/light.webp b/game/characters/luna/cum/body/light/cum.webp similarity index 100% rename from game/characters/luna/cum/body/light.webp rename to game/characters/luna/cum/body/light/cum.webp diff --git a/game/characters/luna/cum/breasts/heavy.webp b/game/characters/luna/cum/breasts/heavy/cum.webp similarity index 100% rename from game/characters/luna/cum/breasts/heavy.webp rename to game/characters/luna/cum/breasts/heavy/cum.webp diff --git a/game/characters/luna/cum/breasts/light.webp b/game/characters/luna/cum/breasts/light/cum.webp similarity index 100% rename from game/characters/luna/cum/breasts/light.webp rename to game/characters/luna/cum/breasts/light/cum.webp diff --git a/game/characters/luna/cum/crotch/heavy.webp b/game/characters/luna/cum/crotch/heavy/cum.webp similarity index 100% rename from game/characters/luna/cum/crotch/heavy.webp rename to game/characters/luna/cum/crotch/heavy/cum.webp diff --git a/game/characters/luna/cum/crotch/light.webp b/game/characters/luna/cum/crotch/light/cum.webp similarity index 100% rename from game/characters/luna/cum/crotch/light.webp rename to game/characters/luna/cum/crotch/light/cum.webp diff --git a/game/characters/luna/cum/face/heavy.webp b/game/characters/luna/cum/face/heavy/cum.webp similarity index 100% rename from game/characters/luna/cum/face/heavy.webp rename to game/characters/luna/cum/face/heavy/cum.webp diff --git a/game/characters/luna/cum/face/light.webp b/game/characters/luna/cum/face/light/cum.webp similarity index 100% rename from game/characters/luna/cum/face/light.webp rename to game/characters/luna/cum/face/light/cum.webp diff --git a/game/characters/luna/cum/hair/heavy.webp b/game/characters/luna/cum/hair/heavy/cum.webp similarity index 100% rename from game/characters/luna/cum/hair/heavy.webp rename to game/characters/luna/cum/hair/heavy/cum.webp diff --git a/game/characters/luna/cum/hair/light.webp b/game/characters/luna/cum/hair/light/cum.webp similarity index 100% rename from game/characters/luna/cum/hair/light.webp rename to game/characters/luna/cum/hair/light/cum.webp diff --git a/game/characters/luna/cum/legs/heavy.webp b/game/characters/luna/cum/legs/heavy/cum.webp similarity index 100% rename from game/characters/luna/cum/legs/heavy.webp rename to game/characters/luna/cum/legs/heavy/cum.webp diff --git a/game/characters/luna/cum/legs/light.webp b/game/characters/luna/cum/legs/light/cum.webp similarity index 100% rename from game/characters/luna/cum/legs/light.webp rename to game/characters/luna/cum/legs/light/cum.webp diff --git a/game/characters/luna/cum/pussy/heavy.webp b/game/characters/luna/cum/pussy/heavy/cum.webp similarity index 100% rename from game/characters/luna/cum/pussy/heavy.webp rename to game/characters/luna/cum/pussy/heavy/cum.webp diff --git a/game/characters/luna/cum/pussy/light.webp b/game/characters/luna/cum/pussy/light/cum.webp similarity index 100% rename from game/characters/luna/cum/pussy/light.webp rename to game/characters/luna/cum/pussy/light/cum.webp diff --git a/game/characters/luna/cum/pussy/squirt.webp b/game/characters/luna/cum/pussy/squirt/cum.webp similarity index 100% rename from game/characters/luna/cum/pussy/squirt.webp rename to game/characters/luna/cum/pussy/squirt/cum.webp diff --git a/game/characters/luna/cum/pussy/squirt_post.webp b/game/characters/luna/cum/pussy/squirt_post/cum.webp similarity index 100% rename from game/characters/luna/cum/pussy/squirt_post.webp rename to game/characters/luna/cum/pussy/squirt_post/cum.webp diff --git a/game/characters/luna/cum/pussy/wet.webp b/game/characters/luna/cum/pussy/wet/cum.webp similarity index 100% rename from game/characters/luna/cum/pussy/wet.webp rename to game/characters/luna/cum/pussy/wet/cum.webp diff --git a/game/characters/luna/face/cheeks/blush.webp b/game/characters/luna/face/cheeks/blush/expression.webp similarity index 100% rename from game/characters/luna/face/cheeks/blush.webp rename to game/characters/luna/face/cheeks/blush/expression.webp diff --git a/game/characters/luna/face/eyebrows/angry.webp b/game/characters/luna/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/luna/face/eyebrows/angry.webp rename to game/characters/luna/face/eyebrows/angry/expression.webp diff --git a/game/characters/luna/face/eyebrows/angry_skin.webp b/game/characters/luna/face/eyebrows/angry/skin.webp similarity index 100% rename from game/characters/luna/face/eyebrows/angry_skin.webp rename to game/characters/luna/face/eyebrows/angry/skin.webp diff --git a/game/characters/luna/face/eyebrows/annoyed.webp b/game/characters/luna/face/eyebrows/annoyed/expression.webp similarity index 100% rename from game/characters/luna/face/eyebrows/annoyed.webp rename to game/characters/luna/face/eyebrows/annoyed/expression.webp diff --git a/game/characters/luna/face/eyebrows/annoyed_skin.webp b/game/characters/luna/face/eyebrows/annoyed/skin.webp similarity index 100% rename from game/characters/luna/face/eyebrows/annoyed_skin.webp rename to game/characters/luna/face/eyebrows/annoyed/skin.webp diff --git a/game/characters/luna/face/eyebrows/base.webp b/game/characters/luna/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/luna/face/eyebrows/base.webp rename to game/characters/luna/face/eyebrows/base/expression.webp diff --git a/game/characters/luna/face/eyebrows/base_skin.webp b/game/characters/luna/face/eyebrows/base/skin.webp similarity index 100% rename from game/characters/luna/face/eyebrows/base_skin.webp rename to game/characters/luna/face/eyebrows/base/skin.webp diff --git a/game/characters/luna/face/eyebrows/low.webp b/game/characters/luna/face/eyebrows/low/expression.webp similarity index 100% rename from game/characters/luna/face/eyebrows/low.webp rename to game/characters/luna/face/eyebrows/low/expression.webp diff --git a/game/characters/luna/face/eyebrows/low_skin.webp b/game/characters/luna/face/eyebrows/low/skin.webp similarity index 100% rename from game/characters/luna/face/eyebrows/low_skin.webp rename to game/characters/luna/face/eyebrows/low/skin.webp diff --git a/game/characters/luna/face/eyebrows/raised.webp b/game/characters/luna/face/eyebrows/raised/expression.webp similarity index 100% rename from game/characters/luna/face/eyebrows/raised.webp rename to game/characters/luna/face/eyebrows/raised/expression.webp diff --git a/game/characters/luna/face/eyebrows/raised_skin.webp b/game/characters/luna/face/eyebrows/raised/skin.webp similarity index 100% rename from game/characters/luna/face/eyebrows/raised_skin.webp rename to game/characters/luna/face/eyebrows/raised/skin.webp diff --git a/game/characters/luna/face/eyebrows/worried.webp b/game/characters/luna/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/luna/face/eyebrows/worried.webp rename to game/characters/luna/face/eyebrows/worried/expression.webp diff --git a/game/characters/luna/face/eyebrows/worried_skin.webp b/game/characters/luna/face/eyebrows/worried/skin.webp similarity index 100% rename from game/characters/luna/face/eyebrows/worried_skin.webp rename to game/characters/luna/face/eyebrows/worried/skin.webp diff --git a/game/characters/luna/face/eyes/base.webp b/game/characters/luna/face/eyes/base/expression.webp similarity index 100% rename from game/characters/luna/face/eyes/base.webp rename to game/characters/luna/face/eyes/base/expression.webp diff --git a/game/characters/luna/face/eyes/base_mask.webp b/game/characters/luna/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/luna/face/eyes/base_mask.webp rename to game/characters/luna/face/eyes/base/eyemask.webp diff --git a/game/characters/luna/face/eyes/base_skin.webp b/game/characters/luna/face/eyes/base/skin.webp similarity index 100% rename from game/characters/luna/face/eyes/base_skin.webp rename to game/characters/luna/face/eyes/base/skin.webp diff --git a/game/characters/luna/face/eyes/closed.webp b/game/characters/luna/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/luna/face/eyes/closed.webp rename to game/characters/luna/face/eyes/closed/expression.webp diff --git a/game/characters/luna/face/eyes/closed_skin.webp b/game/characters/luna/face/eyes/closed/skin.webp similarity index 100% rename from game/characters/luna/face/eyes/closed_skin.webp rename to game/characters/luna/face/eyes/closed/skin.webp diff --git a/game/characters/luna/face/eyes/happyCl.webp b/game/characters/luna/face/eyes/happyCl/expression.webp similarity index 100% rename from game/characters/luna/face/eyes/happyCl.webp rename to game/characters/luna/face/eyes/happyCl/expression.webp diff --git a/game/characters/luna/face/eyes/happyCl_skin.webp b/game/characters/luna/face/eyes/happyCl/skin.webp similarity index 100% rename from game/characters/luna/face/eyes/happyCl_skin.webp rename to game/characters/luna/face/eyes/happyCl/skin.webp diff --git a/game/characters/luna/face/eyes/narrow.webp b/game/characters/luna/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/luna/face/eyes/narrow.webp rename to game/characters/luna/face/eyes/narrow/expression.webp diff --git a/game/characters/luna/face/eyes/narrow_mask.webp b/game/characters/luna/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/luna/face/eyes/narrow_mask.webp rename to game/characters/luna/face/eyes/narrow/eyemask.webp diff --git a/game/characters/luna/face/eyes/narrow_skin.webp b/game/characters/luna/face/eyes/narrow/skin.webp similarity index 100% rename from game/characters/luna/face/eyes/narrow_skin.webp rename to game/characters/luna/face/eyes/narrow/skin.webp diff --git a/game/characters/luna/face/eyes/wide.webp b/game/characters/luna/face/eyes/wide/expression.webp similarity index 100% rename from game/characters/luna/face/eyes/wide.webp rename to game/characters/luna/face/eyes/wide/expression.webp diff --git a/game/characters/luna/face/eyes/wide_mask.webp b/game/characters/luna/face/eyes/wide/eyemask.webp similarity index 100% rename from game/characters/luna/face/eyes/wide_mask.webp rename to game/characters/luna/face/eyes/wide/eyemask.webp diff --git a/game/characters/luna/face/eyes/wide_skin.webp b/game/characters/luna/face/eyes/wide/skin.webp similarity index 100% rename from game/characters/luna/face/eyes/wide_skin.webp rename to game/characters/luna/face/eyes/wide/skin.webp diff --git a/game/characters/luna/face/eyes/wink.webp b/game/characters/luna/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/luna/face/eyes/wink.webp rename to game/characters/luna/face/eyes/wink/expression.webp diff --git a/game/characters/luna/face/eyes/wink_mask.webp b/game/characters/luna/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/luna/face/eyes/wink_mask.webp rename to game/characters/luna/face/eyes/wink/eyemask.webp diff --git a/game/characters/luna/face/eyes/wink_skin.webp b/game/characters/luna/face/eyes/wink/skin.webp similarity index 100% rename from game/characters/luna/face/eyes/wink_skin.webp rename to game/characters/luna/face/eyes/wink/skin.webp diff --git a/game/characters/luna/face/mouth/angry.webp b/game/characters/luna/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/angry.webp rename to game/characters/luna/face/mouth/angry/expression.webp diff --git a/game/characters/luna/face/mouth/annoyed.webp b/game/characters/luna/face/mouth/annoyed/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/annoyed.webp rename to game/characters/luna/face/mouth/annoyed/expression.webp diff --git a/game/characters/luna/face/mouth/base.webp b/game/characters/luna/face/mouth/base/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/base.webp rename to game/characters/luna/face/mouth/base/expression.webp diff --git a/game/characters/luna/face/mouth/clench.webp b/game/characters/luna/face/mouth/clench/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/clench.webp rename to game/characters/luna/face/mouth/clench/expression.webp diff --git a/game/characters/luna/face/mouth/crooked_smile.webp b/game/characters/luna/face/mouth/crooked_smile/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/crooked_smile.webp rename to game/characters/luna/face/mouth/crooked_smile/expression.webp diff --git a/game/characters/luna/face/mouth/disgust.webp b/game/characters/luna/face/mouth/disgust/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/disgust.webp rename to game/characters/luna/face/mouth/disgust/expression.webp diff --git a/game/characters/luna/face/mouth/full.webp b/game/characters/luna/face/mouth/full/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/full.webp rename to game/characters/luna/face/mouth/full/expression.webp diff --git a/game/characters/luna/face/mouth/grin.webp b/game/characters/luna/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/grin.webp rename to game/characters/luna/face/mouth/grin/expression.webp diff --git a/game/characters/luna/face/mouth/mad.webp b/game/characters/luna/face/mouth/mad/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/mad.webp rename to game/characters/luna/face/mouth/mad/expression.webp diff --git a/game/characters/luna/face/mouth/normal.webp b/game/characters/luna/face/mouth/normal/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/normal.webp rename to game/characters/luna/face/mouth/normal/expression.webp diff --git a/game/characters/luna/face/mouth/open.webp b/game/characters/luna/face/mouth/open/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/open.webp rename to game/characters/luna/face/mouth/open/expression.webp diff --git a/game/characters/luna/face/mouth/open_tongue.webp b/game/characters/luna/face/mouth/open_tongue/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/open_tongue.webp rename to game/characters/luna/face/mouth/open_tongue/expression.webp diff --git a/game/characters/luna/face/mouth/open_wide_tongue.webp b/game/characters/luna/face/mouth/open_wide/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/open_wide_tongue.webp rename to game/characters/luna/face/mouth/open_wide/expression.webp diff --git a/game/characters/luna/face/mouth/scream.webp b/game/characters/luna/face/mouth/scream/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/scream.webp rename to game/characters/luna/face/mouth/scream/expression.webp diff --git a/game/characters/luna/face/mouth/shock.webp b/game/characters/luna/face/mouth/shock/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/shock.webp rename to game/characters/luna/face/mouth/shock/expression.webp diff --git a/game/characters/luna/face/mouth/silly.webp b/game/characters/luna/face/mouth/silly/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/silly.webp rename to game/characters/luna/face/mouth/silly/expression.webp diff --git a/game/characters/luna/face/mouth/smile.webp b/game/characters/luna/face/mouth/smile/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/smile.webp rename to game/characters/luna/face/mouth/smile/expression.webp diff --git a/game/characters/luna/face/mouth/soft.webp b/game/characters/luna/face/mouth/soft/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/soft.webp rename to game/characters/luna/face/mouth/soft/expression.webp diff --git a/game/characters/luna/face/mouth/upset.webp b/game/characters/luna/face/mouth/upset/expression.webp similarity index 100% rename from game/characters/luna/face/mouth/upset.webp rename to game/characters/luna/face/mouth/upset/expression.webp diff --git a/game/characters/luna/face/pupils/L.webp b/game/characters/luna/face/pupils/L/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/L.webp rename to game/characters/luna/face/pupils/L/expression.webp diff --git a/game/characters/luna/face/pupils/R.webp b/game/characters/luna/face/pupils/R/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/R.webp rename to game/characters/luna/face/pupils/R/expression.webp diff --git a/game/characters/luna/face/pupils/ahegao.webp b/game/characters/luna/face/pupils/ahegao/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/ahegao.webp rename to game/characters/luna/face/pupils/ahegao/expression.webp diff --git a/game/characters/luna/face/pupils/dead.webp b/game/characters/luna/face/pupils/dead/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/dead.webp rename to game/characters/luna/face/pupils/dead/expression.webp diff --git a/game/characters/luna/face/pupils/down.webp b/game/characters/luna/face/pupils/down/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/down.webp rename to game/characters/luna/face/pupils/down/expression.webp diff --git a/game/characters/luna/face/pupils/downL.webp b/game/characters/luna/face/pupils/downL/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/downL.webp rename to game/characters/luna/face/pupils/downL/expression.webp diff --git a/game/characters/luna/face/pupils/downR.webp b/game/characters/luna/face/pupils/downR/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/downR.webp rename to game/characters/luna/face/pupils/downR/expression.webp diff --git a/game/characters/luna/face/pupils/mid.webp b/game/characters/luna/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/mid.webp rename to game/characters/luna/face/pupils/mid/expression.webp diff --git a/game/characters/luna/face/pupils/squint.webp b/game/characters/luna/face/pupils/squint/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/squint.webp rename to game/characters/luna/face/pupils/squint/expression.webp diff --git a/game/characters/luna/face/pupils/stare.webp b/game/characters/luna/face/pupils/stare/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/stare.webp rename to game/characters/luna/face/pupils/stare/expression.webp diff --git a/game/characters/luna/face/pupils/up.webp b/game/characters/luna/face/pupils/up/expression.webp similarity index 100% rename from game/characters/luna/face/pupils/up.webp rename to game/characters/luna/face/pupils/up/expression.webp diff --git a/game/characters/luna/face/tears/crying.webp b/game/characters/luna/face/tears/crying/expression.webp similarity index 100% rename from game/characters/luna/face/tears/crying.webp rename to game/characters/luna/face/tears/crying/expression.webp diff --git a/game/characters/luna/face/tears/crying_blink.webp b/game/characters/luna/face/tears/crying_blink.webp deleted file mode 100644 index a859d022..00000000 --- a/game/characters/luna/face/tears/crying_blink.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63c183ac5237fd133b33d0c7e7112a929af4e5952878788616f4938bca8f498f -size 3972 diff --git a/game/characters/cho/poses/broom/face/extras/tears_2.webp b/game/characters/luna/face/tears/crying_blink/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/extras/tears_2.webp rename to game/characters/luna/face/tears/crying_blink/expression.webp diff --git a/game/characters/luna/face/tears/mascara.webp b/game/characters/luna/face/tears/mascara.webp deleted file mode 100644 index 80c5ae6f..00000000 --- a/game/characters/luna/face/tears/mascara.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:99cb1139e120582e7f530ae2ef12b6164a2819afec45be8e1312fb2ea6ce5a4c -size 4834 diff --git a/game/characters/cho/poses/broom/face/extras/tears_3.webp b/game/characters/luna/face/tears/mascara/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/extras/tears_3.webp rename to game/characters/luna/face/tears/mascara/expression.webp diff --git a/game/characters/luna/face/tears/messy.webp b/game/characters/luna/face/tears/messy.webp deleted file mode 100644 index bacdc01e..00000000 --- a/game/characters/luna/face/tears/messy.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:94c5c127f666a62ff4ea6953bf4ac278aadaa1733b1e5ae58cae7479a65a5cdc -size 9028 diff --git a/game/characters/cho/poses/broom/face/extras/tears_4.webp b/game/characters/luna/face/tears/messy/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/extras/tears_4.webp rename to game/characters/luna/face/tears/messy/expression.webp diff --git a/game/characters/luna/face/tears/soft.webp b/game/characters/luna/face/tears/soft.webp deleted file mode 100644 index 0211ad98..00000000 --- a/game/characters/luna/face/tears/soft.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:80e099eaf9a137827bed7ba2407ddbc76fff7ebc3dd5df6e4f1393a6605be0e9 -size 1254 diff --git a/game/characters/cho/poses/broom/face/extras/tears_1.webp b/game/characters/luna/face/tears/soft/expression.webp similarity index 100% rename from game/characters/cho/poses/broom/face/extras/tears_1.webp rename to game/characters/luna/face/tears/soft/expression.webp diff --git a/game/characters/susan/body/base/front.webp b/game/characters/susan/bodyparts/frame/default/skin.webp similarity index 100% rename from game/characters/susan/body/base/front.webp rename to game/characters/susan/bodyparts/frame/default/skin.webp diff --git a/game/characters/susan/clothes/headgear/priestess_headdress/default/0.webp b/game/characters/susan/clothes/headgear/priestess_headdress/default/0.webp new file mode 100644 index 00000000..505a646a --- /dev/null +++ b/game/characters/susan/clothes/headgear/priestess_headdress/default/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7c092f9b890f7ad920577d5ba5ba9ab445af1401f441848a18f6b54cdfb2e4c +size 3990 diff --git a/game/characters/susan/clothes/headgear/priestess_headdress/default/0_back.webp b/game/characters/susan/clothes/headgear/priestess_headdress/default/0_back.webp new file mode 100644 index 00000000..b3e407f1 --- /dev/null +++ b/game/characters/susan/clothes/headgear/priestess_headdress/default/0_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a25a84c606497a20419a1047c64c2cc7560080aa39eacaece97c33f565605552 +size 2292 diff --git a/game/characters/susan/clothes/headgear/priestess_headdress/default/1.webp b/game/characters/susan/clothes/headgear/priestess_headdress/default/1.webp new file mode 100644 index 00000000..c719b39d --- /dev/null +++ b/game/characters/susan/clothes/headgear/priestess_headdress/default/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:144497f325a5f474166d25297795436141b6e663ef1178538c87c17abc3c1d5f +size 3430 diff --git a/game/characters/susan/clothes/headgear/priestess_headdress/default/mask.webp b/game/characters/susan/clothes/headgear/priestess_headdress/default/mask.webp new file mode 100644 index 00000000..70e94ac6 --- /dev/null +++ b/game/characters/susan/clothes/headgear/priestess_headdress/default/mask.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:016737261502a01e18f1b495a69ab83a168ed37724386cba5cd73ea4fa9a78a8 +size 6200 diff --git a/game/characters/susan/clothes/headgear/priestess_headdress/default/outline.webp b/game/characters/susan/clothes/headgear/priestess_headdress/default/outline.webp new file mode 100644 index 00000000..acb98b28 --- /dev/null +++ b/game/characters/susan/clothes/headgear/priestess_headdress/default/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6ece0df6280ef755b2c5258f531133da6da59429806f5e54fe55392182eb231 +size 9186 diff --git a/game/characters/susan/clothes/headgear/priestess_headdress/default/outline_back.webp b/game/characters/susan/clothes/headgear/priestess_headdress/default/outline_back.webp new file mode 100644 index 00000000..12de8928 --- /dev/null +++ b/game/characters/susan/clothes/headgear/priestess_headdress/default/outline_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:159785246199bb86b6c672b7b87fe31b9a2076fb6852877ab4756afb09b88917 +size 2324 diff --git a/game/characters/susan/clothes/neckwear/hat_necklace/0.webp b/game/characters/susan/clothes/neckwear/hat_necklace/0.webp new file mode 100644 index 00000000..eba2a719 --- /dev/null +++ b/game/characters/susan/clothes/neckwear/hat_necklace/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dde6d2c713dac03cb38dd59c82e241e66c30d0db39ece4bbab5ecd2c29648f0 +size 1288 diff --git a/game/characters/susan/clothes/neckwear/hat_necklace/extra.webp b/game/characters/susan/clothes/neckwear/hat_necklace/extra.webp new file mode 100644 index 00000000..b9de259c --- /dev/null +++ b/game/characters/susan/clothes/neckwear/hat_necklace/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58bb3c2dd9b021f69d844c392c45b3d4fb2f3c4e85be79b4db5a4b54af28590a +size 884 diff --git a/game/characters/susan/clothes/neckwear/hat_necklace/outline.webp b/game/characters/susan/clothes/neckwear/hat_necklace/outline.webp new file mode 100644 index 00000000..d93c2c48 --- /dev/null +++ b/game/characters/susan/clothes/neckwear/hat_necklace/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac2b25e123e8439c72f25bb6e7134dba30d178d6a4cfed9ef84f46c46e91b6f0 +size 2028 diff --git a/game/characters/susan/clothes/stockings/lace_stockings_1/0.webp b/game/characters/susan/clothes/stockings/lace_stockings_1/0.webp new file mode 100644 index 00000000..9b30f792 --- /dev/null +++ b/game/characters/susan/clothes/stockings/lace_stockings_1/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb1c79809d76b9a633862b77d3fa535ea68e1b7d3f0af503287229486a79806 +size 12224 diff --git a/game/characters/susan/clothes/stockings/lace_stockings_1/outline.webp b/game/characters/susan/clothes/stockings/lace_stockings_1/outline.webp new file mode 100644 index 00000000..322a7933 --- /dev/null +++ b/game/characters/susan/clothes/stockings/lace_stockings_1/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:132774744878788464fa354400412c96badcb06a07e82f05b4c4b8ec1a832bc2 +size 15274 diff --git a/game/characters/susan/clothes/top/priestess_dress/0.webp b/game/characters/susan/clothes/top/priestess_dress/0.webp new file mode 100644 index 00000000..415f4fbf --- /dev/null +++ b/game/characters/susan/clothes/top/priestess_dress/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e9b41f05751550dbbcddea767f85e7ada55ae19c3a944cb9ad942653931af8a +size 19402 diff --git a/game/characters/susan/clothes/top/priestess_dress/0_back.webp b/game/characters/susan/clothes/top/priestess_dress/0_back.webp new file mode 100644 index 00000000..d8af674a --- /dev/null +++ b/game/characters/susan/clothes/top/priestess_dress/0_back.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eafedcef930e8346d713136552c7416bece5a69ca36bb43b0b03372ec25670ff +size 1052 diff --git a/game/characters/susan/clothes/top/priestess_dress/1.webp b/game/characters/susan/clothes/top/priestess_dress/1.webp new file mode 100644 index 00000000..829f4bfd --- /dev/null +++ b/game/characters/susan/clothes/top/priestess_dress/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d097226b1fde35a5305afe09c9c1189b0bc674808fe44f7308f1687343b817 +size 3546 diff --git a/game/characters/susan/clothes/top/priestess_dress/outline.webp b/game/characters/susan/clothes/top/priestess_dress/outline.webp new file mode 100644 index 00000000..ca37eec9 --- /dev/null +++ b/game/characters/susan/clothes/top/priestess_dress/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2aa2aeb4722412a6563b9b299ed40076649890bb4cad0ade135afef351fc817c +size 22562 diff --git a/game/characters/susan/face/cheeks/blush.webp b/game/characters/susan/face/cheeks/blush/expression.webp similarity index 100% rename from game/characters/susan/face/cheeks/blush.webp rename to game/characters/susan/face/cheeks/blush/expression.webp diff --git a/game/characters/susan/face/eyebrows/angry.webp b/game/characters/susan/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/susan/face/eyebrows/angry.webp rename to game/characters/susan/face/eyebrows/angry/expression.webp diff --git a/game/characters/susan/face/eyebrows/angry_skin.webp b/game/characters/susan/face/eyebrows/angry/skin.webp similarity index 100% rename from game/characters/susan/face/eyebrows/angry_skin.webp rename to game/characters/susan/face/eyebrows/angry/skin.webp diff --git a/game/characters/susan/face/eyebrows/annoyed.webp b/game/characters/susan/face/eyebrows/annoyed/expression.webp similarity index 100% rename from game/characters/susan/face/eyebrows/annoyed.webp rename to game/characters/susan/face/eyebrows/annoyed/expression.webp diff --git a/game/characters/susan/face/eyebrows/annoyed_skin.webp b/game/characters/susan/face/eyebrows/annoyed/skin.webp similarity index 100% rename from game/characters/susan/face/eyebrows/annoyed_skin.webp rename to game/characters/susan/face/eyebrows/annoyed/skin.webp diff --git a/game/characters/susan/face/eyebrows/base.webp b/game/characters/susan/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/susan/face/eyebrows/base.webp rename to game/characters/susan/face/eyebrows/base/expression.webp diff --git a/game/characters/susan/face/eyebrows/base_skin.webp b/game/characters/susan/face/eyebrows/base/skin.webp similarity index 100% rename from game/characters/susan/face/eyebrows/base_skin.webp rename to game/characters/susan/face/eyebrows/base/skin.webp diff --git a/game/characters/susan/face/eyebrows/low.webp b/game/characters/susan/face/eyebrows/low/expression.webp similarity index 100% rename from game/characters/susan/face/eyebrows/low.webp rename to game/characters/susan/face/eyebrows/low/expression.webp diff --git a/game/characters/susan/face/eyebrows/low_skin.webp b/game/characters/susan/face/eyebrows/low/skin.webp similarity index 100% rename from game/characters/susan/face/eyebrows/low_skin.webp rename to game/characters/susan/face/eyebrows/low/skin.webp diff --git a/game/characters/susan/face/eyebrows/raised.webp b/game/characters/susan/face/eyebrows/raised/expression.webp similarity index 100% rename from game/characters/susan/face/eyebrows/raised.webp rename to game/characters/susan/face/eyebrows/raised/expression.webp diff --git a/game/characters/susan/face/eyebrows/raised_skin.webp b/game/characters/susan/face/eyebrows/raised/skin.webp similarity index 100% rename from game/characters/susan/face/eyebrows/raised_skin.webp rename to game/characters/susan/face/eyebrows/raised/skin.webp diff --git a/game/characters/susan/face/eyebrows/sad.webp b/game/characters/susan/face/eyebrows/sad/expression.webp similarity index 100% rename from game/characters/susan/face/eyebrows/sad.webp rename to game/characters/susan/face/eyebrows/sad/expression.webp diff --git a/game/characters/susan/face/eyebrows/sad_skin.webp b/game/characters/susan/face/eyebrows/sad/skin.webp similarity index 100% rename from game/characters/susan/face/eyebrows/sad_skin.webp rename to game/characters/susan/face/eyebrows/sad/skin.webp diff --git a/game/characters/susan/face/eyebrows/shocked.webp b/game/characters/susan/face/eyebrows/shocked/expression.webp similarity index 100% rename from game/characters/susan/face/eyebrows/shocked.webp rename to game/characters/susan/face/eyebrows/shocked/expression.webp diff --git a/game/characters/susan/face/eyebrows/shocked_skin.webp b/game/characters/susan/face/eyebrows/shocked/skin.webp similarity index 100% rename from game/characters/susan/face/eyebrows/shocked_skin.webp rename to game/characters/susan/face/eyebrows/shocked/skin.webp diff --git a/game/characters/susan/face/eyebrows/worried.webp b/game/characters/susan/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/susan/face/eyebrows/worried.webp rename to game/characters/susan/face/eyebrows/worried/expression.webp diff --git a/game/characters/susan/face/eyebrows/worried_skin.webp b/game/characters/susan/face/eyebrows/worried/skin.webp similarity index 100% rename from game/characters/susan/face/eyebrows/worried_skin.webp rename to game/characters/susan/face/eyebrows/worried/skin.webp diff --git a/game/characters/susan/face/eyes/base.webp b/game/characters/susan/face/eyes/base/expression.webp similarity index 100% rename from game/characters/susan/face/eyes/base.webp rename to game/characters/susan/face/eyes/base/expression.webp diff --git a/game/characters/susan/face/eyes/base_mask.webp b/game/characters/susan/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/susan/face/eyes/base_mask.webp rename to game/characters/susan/face/eyes/base/eyemask.webp diff --git a/game/characters/susan/face/eyes/base_skin.webp b/game/characters/susan/face/eyes/base/skin.webp similarity index 100% rename from game/characters/susan/face/eyes/base_skin.webp rename to game/characters/susan/face/eyes/base/skin.webp diff --git a/game/characters/susan/face/eyes/closed.webp b/game/characters/susan/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/susan/face/eyes/closed.webp rename to game/characters/susan/face/eyes/closed/expression.webp diff --git a/game/characters/susan/face/eyes/closed_skin.webp b/game/characters/susan/face/eyes/closed/skin.webp similarity index 100% rename from game/characters/susan/face/eyes/closed_skin.webp rename to game/characters/susan/face/eyes/closed/skin.webp diff --git a/game/characters/susan/face/eyes/happy.webp b/game/characters/susan/face/eyes/happy/expression.webp similarity index 100% rename from game/characters/susan/face/eyes/happy.webp rename to game/characters/susan/face/eyes/happy/expression.webp diff --git a/game/characters/susan/face/eyes/happy_mask.webp b/game/characters/susan/face/eyes/happy/eyemask.webp similarity index 100% rename from game/characters/susan/face/eyes/happy_mask.webp rename to game/characters/susan/face/eyes/happy/eyemask.webp diff --git a/game/characters/susan/face/eyes/happy_skin.webp b/game/characters/susan/face/eyes/happy/skin.webp similarity index 100% rename from game/characters/susan/face/eyes/happy_skin.webp rename to game/characters/susan/face/eyes/happy/skin.webp diff --git a/game/characters/susan/face/eyes/happyCl.webp b/game/characters/susan/face/eyes/happyCl/expression.webp similarity index 100% rename from game/characters/susan/face/eyes/happyCl.webp rename to game/characters/susan/face/eyes/happyCl/expression.webp diff --git a/game/characters/susan/face/eyes/happyCl_skin.webp b/game/characters/susan/face/eyes/happyCl/skin.webp similarity index 100% rename from game/characters/susan/face/eyes/happyCl_skin.webp rename to game/characters/susan/face/eyes/happyCl/skin.webp diff --git a/game/characters/susan/face/eyes/narrow.webp b/game/characters/susan/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/susan/face/eyes/narrow.webp rename to game/characters/susan/face/eyes/narrow/expression.webp diff --git a/game/characters/susan/face/eyes/narrow_mask.webp b/game/characters/susan/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/susan/face/eyes/narrow_mask.webp rename to game/characters/susan/face/eyes/narrow/eyemask.webp diff --git a/game/characters/susan/face/eyes/narrow_skin.webp b/game/characters/susan/face/eyes/narrow/skin.webp similarity index 100% rename from game/characters/susan/face/eyes/narrow_skin.webp rename to game/characters/susan/face/eyes/narrow/skin.webp diff --git a/game/characters/susan/face/eyes/wide.webp b/game/characters/susan/face/eyes/wide/expression.webp similarity index 100% rename from game/characters/susan/face/eyes/wide.webp rename to game/characters/susan/face/eyes/wide/expression.webp diff --git a/game/characters/susan/face/eyes/wide_mask.webp b/game/characters/susan/face/eyes/wide/eyemask.webp similarity index 100% rename from game/characters/susan/face/eyes/wide_mask.webp rename to game/characters/susan/face/eyes/wide/eyemask.webp diff --git a/game/characters/susan/face/eyes/wide_skin.webp b/game/characters/susan/face/eyes/wide/skin.webp similarity index 100% rename from game/characters/susan/face/eyes/wide_skin.webp rename to game/characters/susan/face/eyes/wide/skin.webp diff --git a/game/characters/susan/face/eyes/wink.webp b/game/characters/susan/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/susan/face/eyes/wink.webp rename to game/characters/susan/face/eyes/wink/expression.webp diff --git a/game/characters/susan/face/eyes/wink_mask.webp b/game/characters/susan/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/susan/face/eyes/wink_mask.webp rename to game/characters/susan/face/eyes/wink/eyemask.webp diff --git a/game/characters/susan/face/eyes/wink_skin.webp b/game/characters/susan/face/eyes/wink/skin.webp similarity index 100% rename from game/characters/susan/face/eyes/wink_skin.webp rename to game/characters/susan/face/eyes/wink/skin.webp diff --git a/game/characters/susan/face/mouth/ahegao.webp b/game/characters/susan/face/mouth/ahegao/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/ahegao.webp rename to game/characters/susan/face/mouth/ahegao/expression.webp diff --git a/game/characters/susan/face/mouth/ahegao_drool.webp b/game/characters/susan/face/mouth/ahegao_drool/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/ahegao_drool.webp rename to game/characters/susan/face/mouth/ahegao_drool/expression.webp diff --git a/game/characters/susan/face/mouth/angry.webp b/game/characters/susan/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/angry.webp rename to game/characters/susan/face/mouth/angry/expression.webp diff --git a/game/characters/susan/face/mouth/annoyed.webp b/game/characters/susan/face/mouth/annoyed/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/annoyed.webp rename to game/characters/susan/face/mouth/annoyed/expression.webp diff --git a/game/characters/susan/face/mouth/base.webp b/game/characters/susan/face/mouth/base/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/base.webp rename to game/characters/susan/face/mouth/base/expression.webp diff --git a/game/characters/susan/face/mouth/clench.webp b/game/characters/susan/face/mouth/clench/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/clench.webp rename to game/characters/susan/face/mouth/clench/expression.webp diff --git a/game/characters/susan/face/mouth/disgust.webp b/game/characters/susan/face/mouth/disgust/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/disgust.webp rename to game/characters/susan/face/mouth/disgust/expression.webp diff --git a/game/characters/susan/face/mouth/grin.webp b/game/characters/susan/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/grin.webp rename to game/characters/susan/face/mouth/grin/expression.webp diff --git a/game/characters/susan/face/mouth/horny.webp b/game/characters/susan/face/mouth/horny/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/horny.webp rename to game/characters/susan/face/mouth/horny/expression.webp diff --git a/game/characters/susan/face/mouth/normal.webp b/game/characters/susan/face/mouth/normal/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/normal.webp rename to game/characters/susan/face/mouth/normal/expression.webp diff --git a/game/characters/susan/face/mouth/open.webp b/game/characters/susan/face/mouth/open/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/open.webp rename to game/characters/susan/face/mouth/open/expression.webp diff --git a/game/characters/susan/face/mouth/open_tongue.webp b/game/characters/susan/face/mouth/open_tongue/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/open_tongue.webp rename to game/characters/susan/face/mouth/open_tongue/expression.webp diff --git a/game/characters/susan/face/mouth/open_wide.webp b/game/characters/susan/face/mouth/open_wide/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/open_wide.webp rename to game/characters/susan/face/mouth/open_wide/expression.webp diff --git a/game/characters/susan/face/mouth/open_wide_tongue.webp b/game/characters/susan/face/mouth/open_wide_tongue.webp deleted file mode 100644 index 189cf1f6..00000000 --- a/game/characters/susan/face/mouth/open_wide_tongue.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3bca699c8ff5b0d9b858ea3cddb55d14ae457aafab18a9753d0e68ee2aed149a -size 2550 diff --git a/game/characters/susan/face/mouth/smile.webp b/game/characters/susan/face/mouth/smile/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/smile.webp rename to game/characters/susan/face/mouth/smile/expression.webp diff --git a/game/characters/susan/face/mouth/soft.webp b/game/characters/susan/face/mouth/soft/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/soft.webp rename to game/characters/susan/face/mouth/soft/expression.webp diff --git a/game/characters/susan/face/mouth/upset.webp b/game/characters/susan/face/mouth/upset/expression.webp similarity index 100% rename from game/characters/susan/face/mouth/upset.webp rename to game/characters/susan/face/mouth/upset/expression.webp diff --git a/game/characters/susan/face/pupils/ahegao.webp b/game/characters/susan/face/pupils/ahegao/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/ahegao.webp rename to game/characters/susan/face/pupils/ahegao/expression.webp diff --git a/game/characters/susan/face/pupils/down.webp b/game/characters/susan/face/pupils/down/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/down.webp rename to game/characters/susan/face/pupils/down/expression.webp diff --git a/game/characters/susan/face/pupils/downL.webp b/game/characters/susan/face/pupils/downL/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/downL.webp rename to game/characters/susan/face/pupils/downL/expression.webp diff --git a/game/characters/susan/face/pupils/downR.webp b/game/characters/susan/face/pupils/downR/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/downR.webp rename to game/characters/susan/face/pupils/downR/expression.webp diff --git a/game/characters/susan/face/pupils/left.webp b/game/characters/susan/face/pupils/left/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/left.webp rename to game/characters/susan/face/pupils/left/expression.webp diff --git a/game/characters/susan/face/pupils/mid.webp b/game/characters/susan/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/mid.webp rename to game/characters/susan/face/pupils/mid/expression.webp diff --git a/game/characters/susan/face/pupils/right.webp b/game/characters/susan/face/pupils/right/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/right.webp rename to game/characters/susan/face/pupils/right/expression.webp diff --git a/game/characters/susan/face/pupils/stare.webp b/game/characters/susan/face/pupils/stare/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/stare.webp rename to game/characters/susan/face/pupils/stare/expression.webp diff --git a/game/characters/susan/face/pupils/unfocused.webp b/game/characters/susan/face/pupils/unfocused/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/unfocused.webp rename to game/characters/susan/face/pupils/unfocused/expression.webp diff --git a/game/characters/susan/face/pupils/up.webp b/game/characters/susan/face/pupils/up/expression.webp similarity index 100% rename from game/characters/susan/face/pupils/up.webp rename to game/characters/susan/face/pupils/up/expression.webp diff --git a/game/characters/tonks/body/armleft/on_hips.webp b/game/characters/tonks/body/armleft/on_hips.webp deleted file mode 100644 index 292208a6..00000000 --- a/game/characters/tonks/body/armleft/on_hips.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da007931f76b7977e9993b557a95dfdf1476312bffe76f70334f991299c60be6 -size 20628 diff --git a/game/characters/tonks/body/armleft/on_hips_fix.webp b/game/characters/tonks/body/armleft/on_hips_fix.webp deleted file mode 100644 index b9dd57ac..00000000 --- a/game/characters/tonks/body/armleft/on_hips_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:005157d922a1c5f9c19d4f65ef7d8a6494720340bae7965b9800f3c9df96a460 -size 5880 diff --git a/game/characters/tonks/body/armright/on_hips.webp b/game/characters/tonks/body/armright/on_hips.webp deleted file mode 100644 index eee0a34b..00000000 --- a/game/characters/tonks/body/armright/on_hips.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:17c4d2cb79d349aca8a162c2f52f38f2f719eddedd9e6fa1129a8331081723dc -size 15482 diff --git a/game/characters/tonks/body/armright/on_hips_fix.webp b/game/characters/tonks/body/armright/on_hips_fix.webp deleted file mode 100644 index 095dd477..00000000 --- a/game/characters/tonks/body/armright/on_hips_fix.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e70ce7fb313d9d3485c8e43b2a1118fabdf3e17800c647349005fc939ef7ac4 -size 4412 diff --git a/game/characters/tonks/body/base/front.webp b/game/characters/tonks/body/base/front.webp deleted file mode 100644 index 77514b7d..00000000 --- a/game/characters/tonks/body/base/front.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:978609978d6bbb0bd37cea64e8063265ced02921286e7a6e5ce901e021274dca -size 63978 diff --git a/game/characters/tonks/body/breasts/normal.webp b/game/characters/tonks/body/breasts/normal.webp deleted file mode 100644 index df72fbd4..00000000 --- a/game/characters/tonks/body/breasts/normal.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:878652ef87c99aff155571e07aff279d28b89c1fddd2ad7ced23ed708538e531 -size 14606 diff --git a/game/characters/tonks/body/breasts/normal_tight.webp b/game/characters/tonks/body/breasts/normal_tight.webp deleted file mode 100644 index cd2083bb..00000000 --- a/game/characters/tonks/body/breasts/normal_tight.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:18c354881463cc5f40e963451445b9c5170812bce4dd208133b70d5f3e2ebdc9 -size 10150 diff --git a/game/characters/tonks/body/breasts/ribbon.webp b/game/characters/tonks/body/breasts/ribbon.webp deleted file mode 100644 index 4ef7e3ae..00000000 --- a/game/characters/tonks/body/breasts/ribbon.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:43ed03ab11dbb682aeb2d68e09e7db87999727b4c30a4771546a820fff4198e2 -size 12174 diff --git a/game/characters/tonks/bodyparts/frame/default/skin.webp b/game/characters/tonks/bodyparts/frame/default/skin.webp new file mode 100644 index 00000000..1598e457 --- /dev/null +++ b/game/characters/tonks/bodyparts/frame/default/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d8e2302337cb4d4be7abb40b298bf7230c7ad64feb0bcbbf069706f1fd09fae +size 96104 diff --git a/game/characters/tonks/clothes/bottom/jeans/armfix.webp b/game/characters/tonks/clothes/bottom/jeans/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/jeans/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/latex_leggings/armfix.webp b/game/characters/tonks/clothes/bottom/latex_leggings/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/latex_leggings/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/leggings/armfix.webp b/game/characters/tonks/clothes/bottom/leggings/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/leggings/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/leggings_hole/armfix.webp b/game/characters/tonks/clothes/bottom/leggings_hole/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/leggings_hole/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/mechanic_shorts/armfix.webp b/game/characters/tonks/clothes/bottom/mechanic_shorts/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/mechanic_shorts/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/office/armfix.webp b/game/characters/tonks/clothes/bottom/office/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/office/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/police/armfix.webp b/game/characters/tonks/clothes/bottom/police/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/police/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/school_skirt_1/not_implemented.txt b/game/characters/tonks/clothes/bottom/school_skirt_1/not_implemented.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/game/characters/tonks/clothes/bottom/school_skirt_2/armfix.webp b/game/characters/tonks/clothes/bottom/school_skirt_2/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/school_skirt_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/school_skirt_3/armfix.webp b/game/characters/tonks/clothes/bottom/school_skirt_3/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/school_skirt_3/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/school_skirt_4/armfix.webp b/game/characters/tonks/clothes/bottom/school_skirt_4/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/school_skirt_4/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/sweatpants/armfix.webp b/game/characters/tonks/clothes/bottom/sweatpants/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/sweatpants/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bottom/xmas/armfix.webp b/game/characters/tonks/clothes/bottom/xmas/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/bottom/xmas/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/bra/ribbon/backupskin.webp b/game/characters/tonks/clothes/bra/ribbon/backupskin.webp deleted file mode 100644 index 75390b7f..00000000 --- a/game/characters/tonks/clothes/bra/ribbon/backupskin.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4bb47b9c5cc1eccb2342fa223bac89a92d3650d9939720d937c8af404ab242d4 -size 2338 diff --git a/game/characters/tonks/clothes/bra/santa_bra/0.webp b/game/characters/tonks/clothes/bra/santa_bra/0.webp new file mode 100644 index 00000000..471e4ffb --- /dev/null +++ b/game/characters/tonks/clothes/bra/santa_bra/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34e4ee4f47eb88543614afca02e4887ee971fd90bb3a33625b119524dbff0a22 +size 6924 diff --git a/game/characters/tonks/clothes/bra/santa_bra/outline.webp b/game/characters/tonks/clothes/bra/santa_bra/outline.webp new file mode 100644 index 00000000..2cc91618 --- /dev/null +++ b/game/characters/tonks/clothes/bra/santa_bra/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a73ea37f713af8af3ff4d67fa0c9a38cfbabd7ac31d94c7b0f805177983d37 +size 8642 diff --git a/game/characters/tonks/clothes/bra/santa_bra/skin.webp b/game/characters/tonks/clothes/bra/santa_bra/skin.webp new file mode 100644 index 00000000..0f1160fa --- /dev/null +++ b/game/characters/tonks/clothes/bra/santa_bra/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30b9e03de50ee7fac1dcc61f1d88c739b7eefe3f562039f2b54ee2d9967a7b58 +size 3994 diff --git a/game/characters/tonks/clothes/gloves/auror_gloves/armfix.webp b/game/characters/tonks/clothes/gloves/auror_gloves/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/gloves/auror_gloves/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/gloves/leather_gloves/armfix.webp b/game/characters/tonks/clothes/gloves/leather_gloves/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/gloves/leather_gloves/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/headgear/antlers/0.webp b/game/characters/tonks/clothes/headgear/antlers/default/0.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/antlers/0.webp rename to game/characters/tonks/clothes/headgear/antlers/default/0.webp diff --git a/game/characters/tonks/clothes/headgear/antlers/outline.webp b/game/characters/tonks/clothes/headgear/antlers/default/outline.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/antlers/outline.webp rename to game/characters/tonks/clothes/headgear/antlers/default/outline.webp diff --git a/game/characters/tonks/clothes/headgear/bunny/base/0.webp b/game/characters/tonks/clothes/headgear/bunny/base/0.webp new file mode 100644 index 00000000..eb29da11 --- /dev/null +++ b/game/characters/tonks/clothes/headgear/bunny/base/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:768e286a948ceb6873c880dfbed702a5e979bf7c8ef3df4f2ea3754983e993a2 +size 3624 diff --git a/game/characters/tonks/clothes/headgear/bunny/base/1.webp b/game/characters/tonks/clothes/headgear/bunny/base/1.webp new file mode 100644 index 00000000..d127be63 --- /dev/null +++ b/game/characters/tonks/clothes/headgear/bunny/base/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16a3bc0e8f81e376657378f012b49f1a936fa1e8b36b2a64df30a3f29f790930 +size 2224 diff --git a/game/characters/tonks/clothes/headgear/bunny/base/outline.webp b/game/characters/tonks/clothes/headgear/bunny/base/outline.webp new file mode 100644 index 00000000..1cbe0176 --- /dev/null +++ b/game/characters/tonks/clothes/headgear/bunny/base/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beeebc2e436e65daebe58aba6b145a95a34329f76f3bb84620776a7119fa1dff +size 5558 diff --git a/game/characters/tonks/clothes/headgear/bunny/0.webp b/game/characters/tonks/clothes/headgear/bunny/default/0.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/bunny/0.webp rename to game/characters/tonks/clothes/headgear/bunny/default/0.webp diff --git a/game/characters/tonks/clothes/headgear/bunny/1.webp b/game/characters/tonks/clothes/headgear/bunny/default/1.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/bunny/1.webp rename to game/characters/tonks/clothes/headgear/bunny/default/1.webp diff --git a/game/characters/tonks/clothes/headgear/bunny/outline.webp b/game/characters/tonks/clothes/headgear/bunny/default/outline.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/bunny/outline.webp rename to game/characters/tonks/clothes/headgear/bunny/default/outline.webp diff --git a/game/characters/tonks/clothes/headgear/classy_hat/0.webp b/game/characters/tonks/clothes/headgear/classy_hat/0.webp deleted file mode 100644 index 6fbb7bcc..00000000 --- a/game/characters/tonks/clothes/headgear/classy_hat/0.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e4f16469f76fa22ea43a2346407a802434ae02dff4da1c40bec6af146a42feae -size 94 diff --git a/game/characters/cho/poses/broom/clothes/accessory/protectors1/0.webp b/game/characters/tonks/clothes/headgear/classy_hat/default/0.webp similarity index 100% rename from game/characters/cho/poses/broom/clothes/accessory/protectors1/0.webp rename to game/characters/tonks/clothes/headgear/classy_hat/default/0.webp diff --git a/game/characters/tonks/clothes/headgear/classy_hat/0_back.webp b/game/characters/tonks/clothes/headgear/classy_hat/default/0_back.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/classy_hat/0_back.webp rename to game/characters/tonks/clothes/headgear/classy_hat/default/0_back.webp diff --git a/game/characters/tonks/clothes/headgear/classy_hat/0_front.webp b/game/characters/tonks/clothes/headgear/classy_hat/default/0_front.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/classy_hat/0_front.webp rename to game/characters/tonks/clothes/headgear/classy_hat/default/0_front.webp diff --git a/game/characters/tonks/clothes/headgear/classy_hat/extra.webp b/game/characters/tonks/clothes/headgear/classy_hat/default/extra.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/classy_hat/extra.webp rename to game/characters/tonks/clothes/headgear/classy_hat/default/extra.webp diff --git a/game/characters/tonks/clothes/headgear/classy_hat/extra_front.webp b/game/characters/tonks/clothes/headgear/classy_hat/default/extra_front.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/classy_hat/extra_front.webp rename to game/characters/tonks/clothes/headgear/classy_hat/default/extra_front.webp diff --git a/game/characters/tonks/clothes/headgear/classy_hat/outline.webp b/game/characters/tonks/clothes/headgear/classy_hat/default/outline.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/classy_hat/outline.webp rename to game/characters/tonks/clothes/headgear/classy_hat/default/outline.webp diff --git a/game/characters/tonks/clothes/headgear/classy_hat/outline_back.webp b/game/characters/tonks/clothes/headgear/classy_hat/default/outline_back.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/classy_hat/outline_back.webp rename to game/characters/tonks/clothes/headgear/classy_hat/default/outline_back.webp diff --git a/game/characters/tonks/clothes/headgear/classy_hat/outline_front.webp b/game/characters/tonks/clothes/headgear/classy_hat/default/outline_front.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/classy_hat/outline_front.webp rename to game/characters/tonks/clothes/headgear/classy_hat/default/outline_front.webp diff --git a/game/characters/tonks/clothes/headgear/elf/0.webp b/game/characters/tonks/clothes/headgear/elf/default/0.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/elf/0.webp rename to game/characters/tonks/clothes/headgear/elf/default/0.webp diff --git a/game/characters/tonks/clothes/headgear/elf/1.webp b/game/characters/tonks/clothes/headgear/elf/default/1.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/elf/1.webp rename to game/characters/tonks/clothes/headgear/elf/default/1.webp diff --git a/game/characters/tonks/clothes/headgear/elf/extra.webp b/game/characters/tonks/clothes/headgear/elf/default/extra.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/elf/extra.webp rename to game/characters/tonks/clothes/headgear/elf/default/extra.webp diff --git a/game/characters/tonks/clothes/headgear/elf/outline.webp b/game/characters/tonks/clothes/headgear/elf/default/outline.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/elf/outline.webp rename to game/characters/tonks/clothes/headgear/elf/default/outline.webp diff --git a/game/characters/tonks/clothes/headgear/horns/0.webp b/game/characters/tonks/clothes/headgear/horns/default/0.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/horns/0.webp rename to game/characters/tonks/clothes/headgear/horns/default/0.webp diff --git a/game/characters/tonks/clothes/headgear/horns/1.webp b/game/characters/tonks/clothes/headgear/horns/default/1.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/horns/1.webp rename to game/characters/tonks/clothes/headgear/horns/default/1.webp diff --git a/game/characters/tonks/clothes/headgear/horns/outline.webp b/game/characters/tonks/clothes/headgear/horns/default/outline.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/horns/outline.webp rename to game/characters/tonks/clothes/headgear/horns/default/outline.webp diff --git a/game/characters/tonks/clothes/headgear/mechanic_cap/0.webp b/game/characters/tonks/clothes/headgear/mechanic_cap/default/0.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/mechanic_cap/0.webp rename to game/characters/tonks/clothes/headgear/mechanic_cap/default/0.webp diff --git a/game/characters/tonks/clothes/headgear/mechanic_cap/1.webp b/game/characters/tonks/clothes/headgear/mechanic_cap/default/1.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/mechanic_cap/1.webp rename to game/characters/tonks/clothes/headgear/mechanic_cap/default/1.webp diff --git a/game/characters/tonks/clothes/headgear/mechanic_cap/extra.webp b/game/characters/tonks/clothes/headgear/mechanic_cap/default/extra.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/mechanic_cap/extra.webp rename to game/characters/tonks/clothes/headgear/mechanic_cap/default/extra.webp diff --git a/game/characters/tonks/clothes/headgear/mechanic_cap/mask.webp b/game/characters/tonks/clothes/headgear/mechanic_cap/default/mask.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/mechanic_cap/mask.webp rename to game/characters/tonks/clothes/headgear/mechanic_cap/default/mask.webp diff --git a/game/characters/tonks/clothes/headgear/mechanic_cap/outline.webp b/game/characters/tonks/clothes/headgear/mechanic_cap/default/outline.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/mechanic_cap/outline.webp rename to game/characters/tonks/clothes/headgear/mechanic_cap/default/outline.webp diff --git a/game/characters/tonks/clothes/headgear/mechanic_cap/skin.webp b/game/characters/tonks/clothes/headgear/mechanic_cap/default/skin.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/mechanic_cap/skin.webp rename to game/characters/tonks/clothes/headgear/mechanic_cap/default/skin.webp diff --git a/game/characters/tonks/clothes/headgear/police/0.webp b/game/characters/tonks/clothes/headgear/police/default/0.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/police/0.webp rename to game/characters/tonks/clothes/headgear/police/default/0.webp diff --git a/game/characters/tonks/clothes/headgear/police/1.webp b/game/characters/tonks/clothes/headgear/police/default/1.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/police/1.webp rename to game/characters/tonks/clothes/headgear/police/default/1.webp diff --git a/game/characters/tonks/clothes/headgear/police/2.webp b/game/characters/tonks/clothes/headgear/police/default/2.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/police/2.webp rename to game/characters/tonks/clothes/headgear/police/default/2.webp diff --git a/game/characters/tonks/clothes/headgear/police/mask.webp b/game/characters/tonks/clothes/headgear/police/default/mask.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/police/mask.webp rename to game/characters/tonks/clothes/headgear/police/default/mask.webp diff --git a/game/characters/tonks/clothes/headgear/police/outline.webp b/game/characters/tonks/clothes/headgear/police/default/outline.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/police/outline.webp rename to game/characters/tonks/clothes/headgear/police/default/outline.webp diff --git a/game/characters/tonks/clothes/headgear/police/skin.webp b/game/characters/tonks/clothes/headgear/police/default/skin.webp similarity index 100% rename from game/characters/tonks/clothes/headgear/police/skin.webp rename to game/characters/tonks/clothes/headgear/police/default/skin.webp diff --git a/game/characters/tonks/clothes/makeup/elf_ears/extra.webp b/game/characters/tonks/clothes/makeup/elf_ears/extra.webp deleted file mode 100644 index ac822e9e..00000000 --- a/game/characters/tonks/clothes/makeup/elf_ears/extra.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6ac24d38601538c1399b1a2fab9c600af21f65aac08217b8a137225adb80d93 -size 3212 diff --git a/game/characters/tonks/clothes/makeup/elf_ears/outline.webp b/game/characters/tonks/clothes/makeup/elf_ears/outline.webp deleted file mode 100644 index c65211ac..00000000 --- a/game/characters/tonks/clothes/makeup/elf_ears/outline.webp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eed127f1e214087c25bfb4e3a604402af877ed450e84a6d10938021710aaf85d -size 2268 diff --git a/game/characters/tonks/clothes/makeup/elf_ears/skin_zorder_253.webp b/game/characters/tonks/clothes/makeup/elf_ears/skin_zorder_253.webp new file mode 100644 index 00000000..3db71675 --- /dev/null +++ b/game/characters/tonks/clothes/makeup/elf_ears/skin_zorder_253.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:464c485fba0caf4f0cc5d7077e58dd3b202b5d084dddee3887023ace6a58d494 +size 4728 diff --git a/game/characters/tonks/clothes/makeup/lipstick/annoyed.webp b/game/characters/tonks/clothes/makeup/lipstick/annoyed/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/annoyed.webp rename to game/characters/tonks/clothes/makeup/lipstick/annoyed/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/base.webp b/game/characters/tonks/clothes/makeup/lipstick/base/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/base.webp rename to game/characters/tonks/clothes/makeup/lipstick/base/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/clench.webp b/game/characters/tonks/clothes/makeup/lipstick/clench/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/clench.webp rename to game/characters/tonks/clothes/makeup/lipstick/clench/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/crooked_smile.webp b/game/characters/tonks/clothes/makeup/lipstick/crooked_smile/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/crooked_smile.webp rename to game/characters/tonks/clothes/makeup/lipstick/crooked_smile/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/disgust.webp b/game/characters/tonks/clothes/makeup/lipstick/disgust/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/disgust.webp rename to game/characters/tonks/clothes/makeup/lipstick/disgust/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/grin.webp b/game/characters/tonks/clothes/makeup/lipstick/grin/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/grin.webp rename to game/characters/tonks/clothes/makeup/lipstick/grin/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/horny.webp b/game/characters/tonks/clothes/makeup/lipstick/horny/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/horny.webp rename to game/characters/tonks/clothes/makeup/lipstick/horny/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/mad.webp b/game/characters/tonks/clothes/makeup/lipstick/mad/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/mad.webp rename to game/characters/tonks/clothes/makeup/lipstick/mad/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/normal.webp b/game/characters/tonks/clothes/makeup/lipstick/normal/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/normal.webp rename to game/characters/tonks/clothes/makeup/lipstick/normal/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/open.webp b/game/characters/tonks/clothes/makeup/lipstick/open/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/open.webp rename to game/characters/tonks/clothes/makeup/lipstick/open/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/open_wide.webp b/game/characters/tonks/clothes/makeup/lipstick/open_wide/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/open_wide.webp rename to game/characters/tonks/clothes/makeup/lipstick/open_wide/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue.webp b/game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue.webp rename to game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue2.webp b/game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue2/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue2.webp rename to game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue2/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue2_cum.webp b/game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue2_cum/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue2_cum.webp rename to game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue2_cum/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue_cum.webp b/game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue_cum/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue_cum.webp rename to game/characters/tonks/clothes/makeup/lipstick/open_wide_tongue_cum/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/scream.webp b/game/characters/tonks/clothes/makeup/lipstick/scream/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/scream.webp rename to game/characters/tonks/clothes/makeup/lipstick/scream/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/silly.webp b/game/characters/tonks/clothes/makeup/lipstick/silly/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/silly.webp rename to game/characters/tonks/clothes/makeup/lipstick/silly/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/soft.webp b/game/characters/tonks/clothes/makeup/lipstick/soft/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/soft.webp rename to game/characters/tonks/clothes/makeup/lipstick/soft/0.webp diff --git a/game/characters/tonks/clothes/makeup/lipstick/upset.webp b/game/characters/tonks/clothes/makeup/lipstick/upset/0.webp similarity index 100% rename from game/characters/tonks/clothes/makeup/lipstick/upset.webp rename to game/characters/tonks/clothes/makeup/lipstick/upset/0.webp diff --git a/game/characters/tonks/clothes/panties/base/armfix.webp b/game/characters/tonks/clothes/panties/base/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/panties/base/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/panties/ribbon/armfix.webp b/game/characters/tonks/clothes/panties/ribbon/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/panties/ribbon/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/panties/santa_panties/0.webp b/game/characters/tonks/clothes/panties/santa_panties/0.webp new file mode 100644 index 00000000..0d9a79d7 --- /dev/null +++ b/game/characters/tonks/clothes/panties/santa_panties/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83d5d2430cdf6fad3738d4c96f95f53bfa517e9ef05755dd64d0ea5f54dd1bd6 +size 4994 diff --git a/game/characters/tonks/clothes/panties/santa_panties/outline.webp b/game/characters/tonks/clothes/panties/santa_panties/outline.webp new file mode 100644 index 00000000..242a6256 --- /dev/null +++ b/game/characters/tonks/clothes/panties/santa_panties/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c1de551df31148a9cb0decec0709ff6c89735c8018d6db5d3387e8e1ef592bb +size 6838 diff --git a/game/characters/tonks/clothes/panties/santa_panties/skin.webp b/game/characters/tonks/clothes/panties/santa_panties/skin.webp new file mode 100644 index 00000000..a1eac47b --- /dev/null +++ b/game/characters/tonks/clothes/panties/santa_panties/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1beae634409b2cd80027673969239bed99d5e12d2b2701e3ffa842decc020960 +size 5434 diff --git a/game/characters/tonks/clothes/panties/succubus_panties/armfix.webp b/game/characters/tonks/clothes/panties/succubus_panties/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/panties/succubus_panties/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/robe/auror_coat/armfix.webp b/game/characters/tonks/clothes/robe/auror_coat/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/robe/auror_coat/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/robe/dressing_gown/armfix.webp b/game/characters/tonks/clothes/robe/dressing_gown/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/robe/dressing_gown/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/robe/office/armfix.webp b/game/characters/tonks/clothes/robe/office/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/robe/office/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/robe/silk_robe/armfix.webp b/game/characters/tonks/clothes/robe/silk_robe/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/robe/silk_robe/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/stockings/auror/armfix.webp b/game/characters/tonks/clothes/stockings/auror/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/stockings/auror/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/stockings/bunny_stockings_1/armfix.webp b/game/characters/tonks/clothes/stockings/bunny_stockings_1/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/stockings/bunny_stockings_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/stockings/long_basic_1/armfix.webp b/game/characters/tonks/clothes/stockings/long_basic_1/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/stockings/long_basic_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/stockings/long_ribbed/0.webp b/game/characters/tonks/clothes/stockings/long_ribbed/0.webp new file mode 100644 index 00000000..3fc6a95f --- /dev/null +++ b/game/characters/tonks/clothes/stockings/long_ribbed/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f225c53fda9f3c156204ba190e00ce882beb8bd6da0dd978a533d67ae731d6c +size 14102 diff --git a/game/characters/tonks/clothes/stockings/long_ribbed/1.webp b/game/characters/tonks/clothes/stockings/long_ribbed/1.webp new file mode 100644 index 00000000..05b06311 --- /dev/null +++ b/game/characters/tonks/clothes/stockings/long_ribbed/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a327eac064199e85c5b45867794b5b759caea26bdce4f10ca9ede696675313e4 +size 15336 diff --git a/game/characters/tonks/clothes/stockings/long_ribbed/extra.webp b/game/characters/tonks/clothes/stockings/long_ribbed/extra.webp new file mode 100644 index 00000000..e9aaf932 --- /dev/null +++ b/game/characters/tonks/clothes/stockings/long_ribbed/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0cc21308c5dfffd315192d98936dd33c70ca6059b8254b72ed1586e0aa21321 +size 23396 diff --git a/game/characters/tonks/clothes/stockings/long_ribbed/outline.webp b/game/characters/tonks/clothes/stockings/long_ribbed/outline.webp new file mode 100644 index 00000000..afdfc090 --- /dev/null +++ b/game/characters/tonks/clothes/stockings/long_ribbed/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c143666b2de1518c2348e03f9247cbc65bc30507ced4bae20f205db549cc03e2 +size 8888 diff --git a/game/characters/tonks/clothes/stockings/xmas/0.webp b/game/characters/tonks/clothes/stockings/xmas/0.webp index 6b11f74e..fe0db11a 100644 --- a/game/characters/tonks/clothes/stockings/xmas/0.webp +++ b/game/characters/tonks/clothes/stockings/xmas/0.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5580da7169304792039e8c914cd2344048d3d50e12e5097c683c531de4be96e0 -size 8636 +oid sha256:295ae803692ee65f72f40df94937731945efd14e423f5eb36c17fe3fa046ac71 +size 7576 diff --git a/game/characters/tonks/clothes/stockings/xmas/1.webp b/game/characters/tonks/clothes/stockings/xmas/1.webp index a8b3f190..b1fbd0af 100644 --- a/game/characters/tonks/clothes/stockings/xmas/1.webp +++ b/game/characters/tonks/clothes/stockings/xmas/1.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e535b4c37101b1b99d78f43daa66b1799f4d296b1f6b0c0f5aec77d12168e01 -size 3164 +oid sha256:c8e391696d232ecf58f7d39f2880dbae3fd3cb33d050aa64200b4249af0472c7 +size 2958 diff --git a/game/characters/tonks/clothes/stockings/xmas/armfix.webp b/game/characters/tonks/clothes/stockings/xmas/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/stockings/xmas/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/stockings/xmas/outline.webp b/game/characters/tonks/clothes/stockings/xmas/outline.webp index a58e6088..757a50aa 100644 --- a/game/characters/tonks/clothes/stockings/xmas/outline.webp +++ b/game/characters/tonks/clothes/stockings/xmas/outline.webp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0768b01ad37363c0ddbaee49fcd32d6e2d2700976ed13df8cb295a02023cf8f7 -size 15834 +oid sha256:63a925a460fdd12fe4db94037039f225a80f5ed1441b0e763228bc45b424490d +size 14944 diff --git a/game/characters/tonks/clothes/top/auror/armfix.webp b/game/characters/tonks/clothes/top/auror/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/auror/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/auror2/armfix.webp b/game/characters/tonks/clothes/top/auror2/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/auror2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/cavegirl_dress/armfix.webp b/game/characters/tonks/clothes/top/cavegirl_dress/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/cavegirl_dress/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/classy_dress/armfix.webp b/game/characters/tonks/clothes/top/classy_dress/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/classy_dress/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/corset/armfix.webp b/game/characters/tonks/clothes/top/corset/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/corset/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/elf_dress/armfix.webp b/game/characters/tonks/clothes/top/elf_dress/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/elf_dress/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/nightie_1/armfix.webp b/game/characters/tonks/clothes/top/nightie_1/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/nightie_1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/office/armfix.webp b/game/characters/tonks/clothes/top/office/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/office/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/police1/armfix.webp b/game/characters/tonks/clothes/top/police1/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/police1/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/police2/armfix.webp b/game/characters/tonks/clothes/top/police2/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/police2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/police3/armfix.webp b/game/characters/tonks/clothes/top/police3/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/police3/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/pullover/0.webp b/game/characters/tonks/clothes/top/pullover/0.webp new file mode 100644 index 00000000..42eab2e6 --- /dev/null +++ b/game/characters/tonks/clothes/top/pullover/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27ce995b3510f8d5473a66ba0c804f495d9825973d23d03f0d54ba29d7b94dbe +size 89582 diff --git a/game/characters/tonks/clothes/top/pullover/armfix.webp b/game/characters/tonks/clothes/top/pullover/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/pullover/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/pullover/extra.webp b/game/characters/tonks/clothes/top/pullover/extra.webp new file mode 100644 index 00000000..8a7d3847 --- /dev/null +++ b/game/characters/tonks/clothes/top/pullover/extra.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f4d2a3ae8dd6375f0417690b86370d9beed1641083f196bdcbe6e125d1cdf2c +size 52360 diff --git a/game/characters/tonks/clothes/top/pullover/outline.webp b/game/characters/tonks/clothes/top/pullover/outline.webp new file mode 100644 index 00000000..de0da515 --- /dev/null +++ b/game/characters/tonks/clothes/top/pullover/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40227dc800bbb5610783b92603104097e26d51ae11873c4362d64f11aba01a8d +size 21944 diff --git a/game/characters/tonks/clothes/top/pullover/skin.webp b/game/characters/tonks/clothes/top/pullover/skin.webp new file mode 100644 index 00000000..0ac353fd --- /dev/null +++ b/game/characters/tonks/clothes/top/pullover/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8ab75412a7b37a6d11f561b8ed5e729d1f95744258be9abd523c6f68642818f +size 1756 diff --git a/game/characters/tonks/clothes/top/santa_top/0.webp b/game/characters/tonks/clothes/top/santa_top/0.webp new file mode 100644 index 00000000..61b859ba --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/0.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:814c08685f69f22c0d976113a32ebb9e21c28e3d9831347c9e6d7b919541ac95 +size 13326 diff --git a/game/characters/tonks/clothes/top/santa_top/0_zorder_8.webp b/game/characters/tonks/clothes/top/santa_top/0_zorder_8.webp new file mode 100644 index 00000000..e67d172b --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/0_zorder_8.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f32cc39d2f01ed41045829ba0435a5f24626575404cd935e155a327b3885a06 +size 3228 diff --git a/game/characters/tonks/clothes/top/santa_top/1.webp b/game/characters/tonks/clothes/top/santa_top/1.webp new file mode 100644 index 00000000..5da9d9d2 --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/1.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5305e0897bd14d99c9b7d14a4eea3cf47525424647ae62fddf33a431afd1bea +size 13600 diff --git a/game/characters/tonks/clothes/top/santa_top/1_zorder_8.webp b/game/characters/tonks/clothes/top/santa_top/1_zorder_8.webp new file mode 100644 index 00000000..941c6b6d --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/1_zorder_8.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa399947db1b86ead6031e10373f33a8c0c91ed5395cffd89ec0a8daaba744ba +size 2934 diff --git a/game/characters/tonks/clothes/top/santa_top/outline.webp b/game/characters/tonks/clothes/top/santa_top/outline.webp new file mode 100644 index 00000000..dee10629 --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/outline.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:271c889b1b01aed183b5610492a85d3fdd431a3fa3e3893f53d7b1173dd141b4 +size 18060 diff --git a/game/characters/tonks/clothes/top/santa_top/outline_zorder_8.webp b/game/characters/tonks/clothes/top/santa_top/outline_zorder_8.webp new file mode 100644 index 00000000..ec2cda1c --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/outline_zorder_8.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d70d6ba8beed130913d68d5bd5df06c7e404555caed37d64898ba8c127e189ec +size 4454 diff --git a/game/characters/tonks/clothes/top/santa_top/skin.webp b/game/characters/tonks/clothes/top/santa_top/skin.webp new file mode 100644 index 00000000..bea3dc76 --- /dev/null +++ b/game/characters/tonks/clothes/top/santa_top/skin.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26fc29a0b5e2af37d2f46f7020dea5e05331cec5290681c636eb09333322d695 +size 3216 diff --git a/game/characters/tonks/clothes/top/silk_dress/armfix.webp b/game/characters/tonks/clothes/top/silk_dress/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/silk_dress/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/skimpy_dress/armfix.webp b/game/characters/tonks/clothes/top/skimpy_dress/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/skimpy_dress/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/clothes/top/skimpy_dress_2/armfix.webp b/game/characters/tonks/clothes/top/skimpy_dress_2/armfix.webp new file mode 100644 index 00000000..33e7caa2 --- /dev/null +++ b/game/characters/tonks/clothes/top/skimpy_dress_2/armfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2020ed2d3e26bc5851b6759bdff814a3545d71dff3c3fe8e3131a668d7056f +size 9642 diff --git a/game/characters/tonks/cum/body/heavy.webp b/game/characters/tonks/cum/body/heavy/cum.webp similarity index 100% rename from game/characters/tonks/cum/body/heavy.webp rename to game/characters/tonks/cum/body/heavy/cum.webp diff --git a/game/characters/tonks/cum/body/heavy_skin.webp b/game/characters/tonks/cum/body/heavy/skin.webp similarity index 100% rename from game/characters/tonks/cum/body/heavy_skin.webp rename to game/characters/tonks/cum/body/heavy/skin.webp diff --git a/game/characters/tonks/cum/body/light.webp b/game/characters/tonks/cum/body/light/cum.webp similarity index 100% rename from game/characters/tonks/cum/body/light.webp rename to game/characters/tonks/cum/body/light/cum.webp diff --git a/game/characters/tonks/cum/body/light_skin.webp b/game/characters/tonks/cum/body/light/skin.webp similarity index 100% rename from game/characters/tonks/cum/body/light_skin.webp rename to game/characters/tonks/cum/body/light/skin.webp diff --git a/game/characters/tonks/cum/breasts/heavy.webp b/game/characters/tonks/cum/breasts/heavy/cum.webp similarity index 100% rename from game/characters/tonks/cum/breasts/heavy.webp rename to game/characters/tonks/cum/breasts/heavy/cum.webp diff --git a/game/characters/tonks/cum/breasts/heavy_skin.webp b/game/characters/tonks/cum/breasts/heavy/skin.webp similarity index 100% rename from game/characters/tonks/cum/breasts/heavy_skin.webp rename to game/characters/tonks/cum/breasts/heavy/skin.webp diff --git a/game/characters/tonks/cum/breasts/light.webp b/game/characters/tonks/cum/breasts/light/cum.webp similarity index 100% rename from game/characters/tonks/cum/breasts/light.webp rename to game/characters/tonks/cum/breasts/light/cum.webp diff --git a/game/characters/tonks/cum/breasts/light_skin.webp b/game/characters/tonks/cum/breasts/light/skin.webp similarity index 100% rename from game/characters/tonks/cum/breasts/light_skin.webp rename to game/characters/tonks/cum/breasts/light/skin.webp diff --git a/game/characters/tonks/cum/crotch/heavy.webp b/game/characters/tonks/cum/crotch/heavy/cum.webp similarity index 100% rename from game/characters/tonks/cum/crotch/heavy.webp rename to game/characters/tonks/cum/crotch/heavy/cum.webp diff --git a/game/characters/tonks/cum/crotch/heavy_skin.webp b/game/characters/tonks/cum/crotch/heavy/skin.webp similarity index 100% rename from game/characters/tonks/cum/crotch/heavy_skin.webp rename to game/characters/tonks/cum/crotch/heavy/skin.webp diff --git a/game/characters/tonks/cum/crotch/light.webp b/game/characters/tonks/cum/crotch/light/cum.webp similarity index 100% rename from game/characters/tonks/cum/crotch/light.webp rename to game/characters/tonks/cum/crotch/light/cum.webp diff --git a/game/characters/tonks/cum/crotch/light_skin.webp b/game/characters/tonks/cum/crotch/light/skin.webp similarity index 100% rename from game/characters/tonks/cum/crotch/light_skin.webp rename to game/characters/tonks/cum/crotch/light/skin.webp diff --git a/game/characters/tonks/cum/face/heavy.webp b/game/characters/tonks/cum/face/heavy/cum.webp similarity index 100% rename from game/characters/tonks/cum/face/heavy.webp rename to game/characters/tonks/cum/face/heavy/cum.webp diff --git a/game/characters/tonks/cum/face/heavy_skin.webp b/game/characters/tonks/cum/face/heavy/skin.webp similarity index 100% rename from game/characters/tonks/cum/face/heavy_skin.webp rename to game/characters/tonks/cum/face/heavy/skin.webp diff --git a/game/characters/tonks/cum/face/light.webp b/game/characters/tonks/cum/face/light/cum.webp similarity index 100% rename from game/characters/tonks/cum/face/light.webp rename to game/characters/tonks/cum/face/light/cum.webp diff --git a/game/characters/tonks/cum/face/light_skin.webp b/game/characters/tonks/cum/face/light/skin.webp similarity index 100% rename from game/characters/tonks/cum/face/light_skin.webp rename to game/characters/tonks/cum/face/light/skin.webp diff --git a/game/characters/tonks/cum/hair/heavy.webp b/game/characters/tonks/cum/hair/heavy/default/cum.webp similarity index 100% rename from game/characters/tonks/cum/hair/heavy.webp rename to game/characters/tonks/cum/hair/heavy/default/cum.webp diff --git a/game/characters/tonks/cum/hair/light.webp b/game/characters/tonks/cum/hair/light/default/cum.webp similarity index 100% rename from game/characters/tonks/cum/hair/light.webp rename to game/characters/tonks/cum/hair/light/default/cum.webp diff --git a/game/characters/tonks/cum/legs/heavy.webp b/game/characters/tonks/cum/legs/heavy/cum.webp similarity index 100% rename from game/characters/tonks/cum/legs/heavy.webp rename to game/characters/tonks/cum/legs/heavy/cum.webp diff --git a/game/characters/tonks/cum/legs/heavy_skin.webp b/game/characters/tonks/cum/legs/heavy/skin.webp similarity index 100% rename from game/characters/tonks/cum/legs/heavy_skin.webp rename to game/characters/tonks/cum/legs/heavy/skin.webp diff --git a/game/characters/tonks/cum/legs/light.webp b/game/characters/tonks/cum/legs/light/cum.webp similarity index 100% rename from game/characters/tonks/cum/legs/light.webp rename to game/characters/tonks/cum/legs/light/cum.webp diff --git a/game/characters/tonks/cum/legs/light_skin.webp b/game/characters/tonks/cum/legs/light/skin.webp similarity index 100% rename from game/characters/tonks/cum/legs/light_skin.webp rename to game/characters/tonks/cum/legs/light/skin.webp diff --git a/game/characters/tonks/cum/pussy/heavy.webp b/game/characters/tonks/cum/pussy/heavy/cum.webp similarity index 100% rename from game/characters/tonks/cum/pussy/heavy.webp rename to game/characters/tonks/cum/pussy/heavy/cum.webp diff --git a/game/characters/tonks/cum/pussy/light.webp b/game/characters/tonks/cum/pussy/light/cum.webp similarity index 100% rename from game/characters/tonks/cum/pussy/light.webp rename to game/characters/tonks/cum/pussy/light/cum.webp diff --git a/game/characters/tonks/face/cheeks/blush.webp b/game/characters/tonks/face/cheeks/blush/skin.webp similarity index 100% rename from game/characters/tonks/face/cheeks/blush.webp rename to game/characters/tonks/face/cheeks/blush/skin.webp diff --git a/game/characters/tonks/face/cheeks/gloom.webp b/game/characters/tonks/face/cheeks/gloom/expression.webp similarity index 100% rename from game/characters/tonks/face/cheeks/gloom.webp rename to game/characters/tonks/face/cheeks/gloom/expression.webp diff --git a/game/characters/tonks/face/cheeks/heavy_blush.webp b/game/characters/tonks/face/cheeks/heavy_blush/skin.webp similarity index 100% rename from game/characters/tonks/face/cheeks/heavy_blush.webp rename to game/characters/tonks/face/cheeks/heavy_blush/skin.webp diff --git a/game/characters/tonks/face/eyebrows/angry.webp b/game/characters/tonks/face/eyebrows/angry/expression.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/angry.webp rename to game/characters/tonks/face/eyebrows/angry/expression.webp diff --git a/game/characters/tonks/face/eyebrows/angry_skin.webp b/game/characters/tonks/face/eyebrows/angry/skin.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/angry_skin.webp rename to game/characters/tonks/face/eyebrows/angry/skin.webp diff --git a/game/characters/tonks/face/eyebrows/annoyed.webp b/game/characters/tonks/face/eyebrows/annoyed/expression.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/annoyed.webp rename to game/characters/tonks/face/eyebrows/annoyed/expression.webp diff --git a/game/characters/tonks/face/eyebrows/annoyed_skin.webp b/game/characters/tonks/face/eyebrows/annoyed/skin.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/annoyed_skin.webp rename to game/characters/tonks/face/eyebrows/annoyed/skin.webp diff --git a/game/characters/tonks/face/eyebrows/base.webp b/game/characters/tonks/face/eyebrows/base/expression.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/base.webp rename to game/characters/tonks/face/eyebrows/base/expression.webp diff --git a/game/characters/tonks/face/eyebrows/base_skin.webp b/game/characters/tonks/face/eyebrows/base/skin.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/base_skin.webp rename to game/characters/tonks/face/eyebrows/base/skin.webp diff --git a/game/characters/tonks/face/eyebrows/raised.webp b/game/characters/tonks/face/eyebrows/raised/expression.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/raised.webp rename to game/characters/tonks/face/eyebrows/raised/expression.webp diff --git a/game/characters/tonks/face/eyebrows/raised_skin.webp b/game/characters/tonks/face/eyebrows/raised/skin.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/raised_skin.webp rename to game/characters/tonks/face/eyebrows/raised/skin.webp diff --git a/game/characters/tonks/face/eyebrows/shocked.webp b/game/characters/tonks/face/eyebrows/shocked/expression.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/shocked.webp rename to game/characters/tonks/face/eyebrows/shocked/expression.webp diff --git a/game/characters/tonks/face/eyebrows/shocked_skin.webp b/game/characters/tonks/face/eyebrows/shocked/skin.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/shocked_skin.webp rename to game/characters/tonks/face/eyebrows/shocked/skin.webp diff --git a/game/characters/tonks/face/eyebrows/worried.webp b/game/characters/tonks/face/eyebrows/worried/expression.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/worried.webp rename to game/characters/tonks/face/eyebrows/worried/expression.webp diff --git a/game/characters/tonks/face/eyebrows/worried_skin.webp b/game/characters/tonks/face/eyebrows/worried/skin.webp similarity index 100% rename from game/characters/tonks/face/eyebrows/worried_skin.webp rename to game/characters/tonks/face/eyebrows/worried/skin.webp diff --git a/game/characters/tonks/face/eyes/base.webp b/game/characters/tonks/face/eyes/base/expression.webp similarity index 100% rename from game/characters/tonks/face/eyes/base.webp rename to game/characters/tonks/face/eyes/base/expression.webp diff --git a/game/characters/tonks/face/eyes/base_mask.webp b/game/characters/tonks/face/eyes/base/eyemask.webp similarity index 100% rename from game/characters/tonks/face/eyes/base_mask.webp rename to game/characters/tonks/face/eyes/base/eyemask.webp diff --git a/game/characters/tonks/face/eyes/base_skin.webp b/game/characters/tonks/face/eyes/base/skin.webp similarity index 100% rename from game/characters/tonks/face/eyes/base_skin.webp rename to game/characters/tonks/face/eyes/base/skin.webp diff --git a/game/characters/tonks/face/eyes/closed.webp b/game/characters/tonks/face/eyes/closed/expression.webp similarity index 100% rename from game/characters/tonks/face/eyes/closed.webp rename to game/characters/tonks/face/eyes/closed/expression.webp diff --git a/game/characters/tonks/face/eyes/closed_skin.webp b/game/characters/tonks/face/eyes/closed/skin.webp similarity index 100% rename from game/characters/tonks/face/eyes/closed_skin.webp rename to game/characters/tonks/face/eyes/closed/skin.webp diff --git a/game/characters/tonks/face/eyes/happyCl.webp b/game/characters/tonks/face/eyes/happyCl/expression.webp similarity index 100% rename from game/characters/tonks/face/eyes/happyCl.webp rename to game/characters/tonks/face/eyes/happyCl/expression.webp diff --git a/game/characters/tonks/face/eyes/happyCl_skin.webp b/game/characters/tonks/face/eyes/happyCl/skin.webp similarity index 100% rename from game/characters/tonks/face/eyes/happyCl_skin.webp rename to game/characters/tonks/face/eyes/happyCl/skin.webp diff --git a/game/characters/tonks/face/eyes/narrow.webp b/game/characters/tonks/face/eyes/narrow/expression.webp similarity index 100% rename from game/characters/tonks/face/eyes/narrow.webp rename to game/characters/tonks/face/eyes/narrow/expression.webp diff --git a/game/characters/tonks/face/eyes/narrow_mask.webp b/game/characters/tonks/face/eyes/narrow/eyemask.webp similarity index 100% rename from game/characters/tonks/face/eyes/narrow_mask.webp rename to game/characters/tonks/face/eyes/narrow/eyemask.webp diff --git a/game/characters/tonks/face/eyes/narrow_skin.webp b/game/characters/tonks/face/eyes/narrow/skin.webp similarity index 100% rename from game/characters/tonks/face/eyes/narrow_skin.webp rename to game/characters/tonks/face/eyes/narrow/skin.webp diff --git a/game/characters/tonks/face/eyes/shocked.webp b/game/characters/tonks/face/eyes/shocked/expression.webp similarity index 100% rename from game/characters/tonks/face/eyes/shocked.webp rename to game/characters/tonks/face/eyes/shocked/expression.webp diff --git a/game/characters/tonks/face/eyes/shocked_mask.webp b/game/characters/tonks/face/eyes/shocked/eyemask.webp similarity index 100% rename from game/characters/tonks/face/eyes/shocked_mask.webp rename to game/characters/tonks/face/eyes/shocked/eyemask.webp diff --git a/game/characters/tonks/face/eyes/shocked_skin.webp b/game/characters/tonks/face/eyes/shocked/skin.webp similarity index 100% rename from game/characters/tonks/face/eyes/shocked_skin.webp rename to game/characters/tonks/face/eyes/shocked/skin.webp diff --git a/game/characters/tonks/face/eyes/wide.webp b/game/characters/tonks/face/eyes/wide/expression.webp similarity index 100% rename from game/characters/tonks/face/eyes/wide.webp rename to game/characters/tonks/face/eyes/wide/expression.webp diff --git a/game/characters/tonks/face/eyes/wide_mask.webp b/game/characters/tonks/face/eyes/wide/eyemask.webp similarity index 100% rename from game/characters/tonks/face/eyes/wide_mask.webp rename to game/characters/tonks/face/eyes/wide/eyemask.webp diff --git a/game/characters/tonks/face/eyes/wide_skin.webp b/game/characters/tonks/face/eyes/wide/skin.webp similarity index 100% rename from game/characters/tonks/face/eyes/wide_skin.webp rename to game/characters/tonks/face/eyes/wide/skin.webp diff --git a/game/characters/tonks/face/eyes/wink.webp b/game/characters/tonks/face/eyes/wink/expression.webp similarity index 100% rename from game/characters/tonks/face/eyes/wink.webp rename to game/characters/tonks/face/eyes/wink/expression.webp diff --git a/game/characters/tonks/face/eyes/wink_mask.webp b/game/characters/tonks/face/eyes/wink/eyemask.webp similarity index 100% rename from game/characters/tonks/face/eyes/wink_mask.webp rename to game/characters/tonks/face/eyes/wink/eyemask.webp diff --git a/game/characters/tonks/face/eyes/wink_skin.webp b/game/characters/tonks/face/eyes/wink/skin.webp similarity index 100% rename from game/characters/tonks/face/eyes/wink_skin.webp rename to game/characters/tonks/face/eyes/wink/skin.webp diff --git a/game/characters/tonks/face/mouth/angry.webp b/game/characters/tonks/face/mouth/angry/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/angry.webp rename to game/characters/tonks/face/mouth/angry/expression.webp diff --git a/game/characters/tonks/face/mouth/annoyed.webp b/game/characters/tonks/face/mouth/annoyed/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/annoyed.webp rename to game/characters/tonks/face/mouth/annoyed/expression.webp diff --git a/game/characters/tonks/face/mouth/annoyed_skin.webp b/game/characters/tonks/face/mouth/annoyed/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/annoyed_skin.webp rename to game/characters/tonks/face/mouth/annoyed/skin.webp diff --git a/game/characters/tonks/face/mouth/base.webp b/game/characters/tonks/face/mouth/base/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/base.webp rename to game/characters/tonks/face/mouth/base/expression.webp diff --git a/game/characters/tonks/face/mouth/base_skin.webp b/game/characters/tonks/face/mouth/base/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/base_skin.webp rename to game/characters/tonks/face/mouth/base/skin.webp diff --git a/game/characters/tonks/face/mouth/clench.webp b/game/characters/tonks/face/mouth/clench/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/clench.webp rename to game/characters/tonks/face/mouth/clench/expression.webp diff --git a/game/characters/tonks/face/mouth/clench_skin.webp b/game/characters/tonks/face/mouth/clench/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/clench_skin.webp rename to game/characters/tonks/face/mouth/clench/skin.webp diff --git a/game/characters/tonks/face/mouth/crooked_smile.webp b/game/characters/tonks/face/mouth/crooked_smile/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/crooked_smile.webp rename to game/characters/tonks/face/mouth/crooked_smile/expression.webp diff --git a/game/characters/tonks/face/mouth/crooked_smile_skin.webp b/game/characters/tonks/face/mouth/crooked_smile/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/crooked_smile_skin.webp rename to game/characters/tonks/face/mouth/crooked_smile/skin.webp diff --git a/game/characters/tonks/face/mouth/disgust.webp b/game/characters/tonks/face/mouth/disgust/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/disgust.webp rename to game/characters/tonks/face/mouth/disgust/expression.webp diff --git a/game/characters/tonks/face/mouth/disgust_skin.webp b/game/characters/tonks/face/mouth/disgust/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/disgust_skin.webp rename to game/characters/tonks/face/mouth/disgust/skin.webp diff --git a/game/characters/tonks/face/mouth/grin.webp b/game/characters/tonks/face/mouth/grin/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/grin.webp rename to game/characters/tonks/face/mouth/grin/expression.webp diff --git a/game/characters/tonks/face/mouth/grin_skin.webp b/game/characters/tonks/face/mouth/grin/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/grin_skin.webp rename to game/characters/tonks/face/mouth/grin/skin.webp diff --git a/game/characters/tonks/face/mouth/horny.webp b/game/characters/tonks/face/mouth/horny/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/horny.webp rename to game/characters/tonks/face/mouth/horny/expression.webp diff --git a/game/characters/tonks/face/mouth/horny_skin.webp b/game/characters/tonks/face/mouth/horny/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/horny_skin.webp rename to game/characters/tonks/face/mouth/horny/skin.webp diff --git a/game/characters/tonks/face/mouth/mad.webp b/game/characters/tonks/face/mouth/mad/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/mad.webp rename to game/characters/tonks/face/mouth/mad/expression.webp diff --git a/game/characters/tonks/face/mouth/mad_skin.webp b/game/characters/tonks/face/mouth/mad/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/mad_skin.webp rename to game/characters/tonks/face/mouth/mad/skin.webp diff --git a/game/characters/tonks/face/mouth/normal.webp b/game/characters/tonks/face/mouth/normal/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/normal.webp rename to game/characters/tonks/face/mouth/normal/expression.webp diff --git a/game/characters/tonks/face/mouth/normal_skin.webp b/game/characters/tonks/face/mouth/normal/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/normal_skin.webp rename to game/characters/tonks/face/mouth/normal/skin.webp diff --git a/game/characters/tonks/face/mouth/open.webp b/game/characters/tonks/face/mouth/open/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/open.webp rename to game/characters/tonks/face/mouth/open/expression.webp diff --git a/game/characters/tonks/face/mouth/open_skin.webp b/game/characters/tonks/face/mouth/open/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/open_skin.webp rename to game/characters/tonks/face/mouth/open/skin.webp diff --git a/game/characters/tonks/face/mouth/open_wide.webp b/game/characters/tonks/face/mouth/open_wide/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/open_wide.webp rename to game/characters/tonks/face/mouth/open_wide/expression.webp diff --git a/game/characters/tonks/face/mouth/open_wide_tongue.webp b/game/characters/tonks/face/mouth/open_wide_tongue/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/open_wide_tongue.webp rename to game/characters/tonks/face/mouth/open_wide_tongue/expression.webp diff --git a/game/characters/tonks/face/mouth/open_wide_tongue2.webp b/game/characters/tonks/face/mouth/open_wide_tongue2/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/open_wide_tongue2.webp rename to game/characters/tonks/face/mouth/open_wide_tongue2/expression.webp diff --git a/game/characters/tonks/face/mouth/open_wide_tongue2_cum.webp b/game/characters/tonks/face/mouth/open_wide_tongue2_cum/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/open_wide_tongue2_cum.webp rename to game/characters/tonks/face/mouth/open_wide_tongue2_cum/expression.webp diff --git a/game/characters/tonks/face/mouth/open_wide_tongue_cum.webp b/game/characters/tonks/face/mouth/open_wide_tongue_cum/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/open_wide_tongue_cum.webp rename to game/characters/tonks/face/mouth/open_wide_tongue_cum/expression.webp diff --git a/game/characters/tonks/face/mouth/scream.webp b/game/characters/tonks/face/mouth/scream/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/scream.webp rename to game/characters/tonks/face/mouth/scream/expression.webp diff --git a/game/characters/tonks/face/mouth/scream_skin.webp b/game/characters/tonks/face/mouth/scream/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/scream_skin.webp rename to game/characters/tonks/face/mouth/scream/skin.webp diff --git a/game/characters/tonks/face/mouth/silly.webp b/game/characters/tonks/face/mouth/silly/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/silly.webp rename to game/characters/tonks/face/mouth/silly/expression.webp diff --git a/game/characters/tonks/face/mouth/silly_skin.webp b/game/characters/tonks/face/mouth/silly/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/silly_skin.webp rename to game/characters/tonks/face/mouth/silly/skin.webp diff --git a/game/characters/tonks/face/mouth/soft.webp b/game/characters/tonks/face/mouth/soft/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/soft.webp rename to game/characters/tonks/face/mouth/soft/expression.webp diff --git a/game/characters/tonks/face/mouth/soft_skin.webp b/game/characters/tonks/face/mouth/soft/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/soft_skin.webp rename to game/characters/tonks/face/mouth/soft/skin.webp diff --git a/game/characters/tonks/face/mouth/upset.webp b/game/characters/tonks/face/mouth/upset/expression.webp similarity index 100% rename from game/characters/tonks/face/mouth/upset.webp rename to game/characters/tonks/face/mouth/upset/expression.webp diff --git a/game/characters/tonks/face/mouth/upset_skin.webp b/game/characters/tonks/face/mouth/upset/skin.webp similarity index 100% rename from game/characters/tonks/face/mouth/upset_skin.webp rename to game/characters/tonks/face/mouth/upset/skin.webp diff --git a/game/characters/tonks/face/pupils/L.webp b/game/characters/tonks/face/pupils/L/expression.webp similarity index 100% rename from game/characters/tonks/face/pupils/L.webp rename to game/characters/tonks/face/pupils/L/expression.webp diff --git a/game/characters/tonks/face/pupils/R.webp b/game/characters/tonks/face/pupils/R/expression.webp similarity index 100% rename from game/characters/tonks/face/pupils/R.webp rename to game/characters/tonks/face/pupils/R/expression.webp diff --git a/game/characters/tonks/face/pupils/ahegao.webp b/game/characters/tonks/face/pupils/ahegao/expression.webp similarity index 100% rename from game/characters/tonks/face/pupils/ahegao.webp rename to game/characters/tonks/face/pupils/ahegao/expression.webp diff --git a/game/characters/tonks/face/pupils/down.webp b/game/characters/tonks/face/pupils/down/expression.webp similarity index 100% rename from game/characters/tonks/face/pupils/down.webp rename to game/characters/tonks/face/pupils/down/expression.webp diff --git a/game/characters/tonks/face/pupils/downR.webp b/game/characters/tonks/face/pupils/downR/expression.webp similarity index 100% rename from game/characters/tonks/face/pupils/downR.webp rename to game/characters/tonks/face/pupils/downR/expression.webp diff --git a/game/characters/tonks/face/pupils/mid.webp b/game/characters/tonks/face/pupils/mid/expression.webp similarity index 100% rename from game/characters/tonks/face/pupils/mid.webp rename to game/characters/tonks/face/pupils/mid/expression.webp diff --git a/game/characters/tonks/face/pupils/stare.webp b/game/characters/tonks/face/pupils/stare/expression.webp similarity index 100% rename from game/characters/tonks/face/pupils/stare.webp rename to game/characters/tonks/face/pupils/stare/expression.webp diff --git a/game/characters/tonks/face/pupils/up.webp b/game/characters/tonks/face/pupils/up/expression.webp similarity index 100% rename from game/characters/tonks/face/pupils/up.webp rename to game/characters/tonks/face/pupils/up/expression.webp diff --git a/game/characters/tonks/face/tears/tears_mascara.webp b/game/characters/tonks/face/tears/mascara/expression.webp similarity index 100% rename from game/characters/tonks/face/tears/tears_mascara.webp rename to game/characters/tonks/face/tears/mascara/expression.webp diff --git a/game/characters/tonks/face/tears/tears_tears.webp b/game/characters/tonks/face/tears/tears/expression.webp similarity index 100% rename from game/characters/tonks/face/tears/tears_tears.webp rename to game/characters/tonks/face/tears/tears/expression.webp diff --git a/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_background.webp b/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_background.webp new file mode 100644 index 00000000..c94e08bf --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_background.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af472b3db87f1b248641cffda4e5b9e1a10c9723eb73e9db269a72410a6f3cd6 +size 374004 diff --git a/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_desk_cum_post.webp b/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_desk_cum_post.webp new file mode 100644 index 00000000..53cfc19d --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_desk_cum_post.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:371a4d2580315166527791781a4bf502e4710515a77d51a15dc3d5e4bc569a90 +size 28030 diff --git a/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_desk_cum_spurt.webp b/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_desk_cum_spurt.webp new file mode 100644 index 00000000..098f667d --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_desk_cum_spurt.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba578d24c10727379b065dd52fd81eeb310beda01b19b2fba825500742b9e72d +size 54568 diff --git a/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_foreground.webp b/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_foreground.webp new file mode 100644 index 00000000..3d66664f --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/cho_strip_personal_t3_e3_foreground.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12edc9a81289f51fa19b553db93703221c0109bbf2a144a3dd1328f03d27a71f +size 3678 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_body.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_body.webp new file mode 100644 index 00000000..4be95c4a --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_body.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:970b8f3ad320b17f7bef4562e7e9dda2415e158f04f092873c9f5c842248a232 +size 311834 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_closed.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_closed.webp new file mode 100644 index 00000000..4ab36624 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b2836c160a52fdc41ad18dd4d305b334289dfda3bc32f699dbf95a91f84047b +size 8852 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_closed_happy.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_closed_happy.webp new file mode 100644 index 00000000..b09e8dd7 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_closed_happy.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5554235397fa3e64f4e6d01edd33ab24f66f7431b92a4e15b5662959290c469 +size 12918 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_down.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_down.webp new file mode 100644 index 00000000..30197929 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d7f96aed6aece4ed578ca1291899b4e444cc501715bf5c865e16aa9bdae39cb +size 12978 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_look_at_tonks.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_look_at_tonks.webp new file mode 100644 index 00000000..2a460dd5 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_look_at_tonks.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cf758956f834daccdae2274468a643f8aaa34d5406b8aa80e3cee3a4dbf4ed3 +size 12436 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_mid.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_mid.webp new file mode 100644 index 00000000..e8261b47 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_eyes_open_mid.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5a0fb7d83f778be290a5137c8072470bc0b4c4457d88a254d0bedfc641138af +size 13128 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_angry.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_angry.webp new file mode 100644 index 00000000..2d3a6986 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76e6ac1901c87402c6af573b4aa2a10a835b511d80cf91264350ddda6a1b89f4 +size 13788 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_base.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_base.webp new file mode 100644 index 00000000..f271984f --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47a1156cf812f5e4795e863d94efd518eea66819c7fce633bcde505797bdcbb5 +size 5926 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_open.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_open.webp new file mode 100644 index 00000000..0fa4f0ae --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c2fed4d4fc3652353bab71abfa675ee9f645b0fedafa92ac4d0d9b3e6698633 +size 15610 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_smile.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_smile.webp new file mode 100644 index 00000000..1791d788 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cho_mouth_smile.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8baa23812addf6203df77ca710b45d12af0cc03856e729b1577800df512055ef +size 13146 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_face.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_face.webp new file mode 100644 index 00000000..039f2ed0 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_face.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4de44540eddb78fa966dfe4c79b034fa19e51bc4baee9f952aa7bdf93cc03a4 +size 17756 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_hands.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_hands.webp new file mode 100644 index 00000000..c4527b0b --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_hands.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1d7d73800ce30783eac516f3231a3a8a81d4cb8842790d440402ee9648a8582 +size 47390 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_tits.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_tits.webp new file mode 100644 index 00000000..29594052 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_tits.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88005f7ac730cc2d169cd98c84ec9b82b70ab0779292f6404e932ac9b9efe46f +size 23412 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_tongue.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_tongue.webp new file mode 100644 index 00000000..d872b852 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_cum_tongue.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42cd524f0ec770698a9a7555cb9b97e2c4840eadd773968ff01536f8600d5498 +size 9504 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_hands.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_hands.webp new file mode 100644 index 00000000..45b95656 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_hands.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c21540d1388f70394d52eb4ee8ea37db676943ce473052ee139d97c06fb42fe2 +size 161920 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_blush_heavy.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_blush_heavy.webp new file mode 100644 index 00000000..3f372fe5 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_blush_heavy.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb64e454fe5d44655cbd8eb6ab41f6b92aa1829b5fee8ddc8aa962a64964adce +size 85940 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_body.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_body.webp new file mode 100644 index 00000000..bc88a1e6 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_body.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bc0c2cdef25d74ed3c5f25cc05efed0421da2c857f1d2b6b70af852dea40a66 +size 387746 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_closed.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_closed.webp new file mode 100644 index 00000000..cea576c6 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7979552a74b794a800b2cf442cbbbf932b7674bb8510e9062627068dbc1a36e1 +size 10402 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_open_look_at_cho.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_open_look_at_cho.webp new file mode 100644 index 00000000..37173d97 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_open_look_at_cho.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86c4034ff6addca19da3cc97f1e2264c165ce03441bd60b81ef5a8839e768c27 +size 14230 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_open_mid.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_open_mid.webp new file mode 100644 index 00000000..6648dd8b --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_eyes_open_mid.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:138f83e40f7665f877c293d2a0b952f38b1fb0717a65f3a1aa063741fa6eed5c +size 13948 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_base.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_base.webp new file mode 100644 index 00000000..b186c30a --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43ed2b83194d89fef0b8818f3c2f83a70cbb94d500749014d5e9b2364eacc4b2 +size 11188 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_open.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_open.webp new file mode 100644 index 00000000..e08214dd --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f07e8bf4ef92f68cc53aef8e2e532f1298ae692f6820add97390c6980cc75f29 +size 16794 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_smile.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_smile.webp new file mode 100644 index 00000000..325b929f --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_smile.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa5f65a9604ccae242d82c47e228e5e16cdfbb2018cbedd894464d99cfd19524 +size 17954 diff --git a/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_tongue_out.webp b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_tongue_out.webp new file mode 100644 index 00000000..80487c7b --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/lying/cho_strip_personal_t3_e3_lying_tonks_mouth_tongue_out.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1a86742e0d708b831018c0121cdffa06f7f80055e548191819c4daba6ad97bd +size 31270 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_armfix_grab_spread.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_armfix_grab_spread.webp new file mode 100644 index 00000000..0b28468a --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_armfix_grab_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf1f3432762e473b192b6649366048da7a95bb9c96ee3e40bb9ca4291693801b +size 29188 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_armfix_idle.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_armfix_idle.webp new file mode 100644 index 00000000..2e06aa93 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_armfix_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd4d0e0c5352f353b6540d44b95c3ebee17bddd4aeb8b4441625f17782f14b57 +size 11298 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_ass_spread.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_ass_spread.webp new file mode 100644 index 00000000..f362ea46 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_ass_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3f3b5f1cafaa96595a45c97b7d6a91fc3a9d157bd9260bd66d33a328f4c8966 +size 51570 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_blush_heavy.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_blush_heavy.webp new file mode 100644 index 00000000..425b7dd8 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_blush_heavy.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:117ef8eb1a11fdd1d4314aedcf815e76ad9a4bbb85087838a2c76852abdc5562 +size 28852 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_grab.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_grab.webp new file mode 100644 index 00000000..2ca4df0d --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_grab.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f1b773db02547e7b3955d8ad6181d4ebf958a4ebb057aa18e0c8a91627e11fc +size 204378 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_grab_spread.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_grab_spread.webp new file mode 100644 index 00000000..2ca4df0d --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_grab_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f1b773db02547e7b3955d8ad6181d4ebf958a4ebb057aa18e0c8a91627e11fc +size 204378 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_idle.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_idle.webp new file mode 100644 index 00000000..fcbcb223 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_body_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24d4d87af17b1f7e9fc5435bf5f025750b6af085292790a81be7e56cffb9eaec +size 192186 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_closed.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_closed.webp new file mode 100644 index 00000000..d505c1e3 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f38de34dc2e175764e4a0687ad789ca8e698bd70bcce5186e5026e722634df7e +size 4172 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_closed_happy.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_closed_happy.webp new file mode 100644 index 00000000..d58f4d46 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_closed_happy.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b12f6aa84bea384a01ec100d77679ee6b48f7e6555da24d0126c85b20b3adb2e +size 4574 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_down.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_down.webp new file mode 100644 index 00000000..f4864b73 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fc2179d687cece95eeed203f0bad055de10fd49f43c8c196d21e96d01e92685 +size 8172 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_look_at_tits.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_look_at_tits.webp new file mode 100644 index 00000000..e98644fb --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_look_at_tits.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2cbe32cce8c7850eeaec9a4ea5864ebbd0f7d34f072b48183751bae6e815770 +size 7758 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_look_at_tonks.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_look_at_tonks.webp new file mode 100644 index 00000000..d48f1b19 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_open_look_at_tonks.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7aa6170efce3831db03c9a4fb3eaee627c8eec0052f33e41653f91b5e5bb586 +size 7558 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_down.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_down.webp new file mode 100644 index 00000000..74b51855 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146743529a3700aea69610d4b8f339af8592988cf72f01b1bb1c3f225e186ea4 +size 9228 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_look_at_tits.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_look_at_tits.webp new file mode 100644 index 00000000..9642aed2 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_look_at_tits.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b2a9bad2dacc9e196b896c8624cba4a2730eb4c8464196e49d89cd00b91ba4a +size 8884 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_look_at_tonks.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_look_at_tonks.webp new file mode 100644 index 00000000..9f3df98e --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_eyes_wide_look_at_tonks.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e23afd135f0e8a5c5232f17d4b72f3e3d5ca3868c6d885a73c29a3e2ebb5d949 +size 8672 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_handprint_normal.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_handprint_normal.webp new file mode 100644 index 00000000..5ebe46c3 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_handprint_normal.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83c8b298623a91e8ae5cb0d79738b576255030b3428de2b87c34cc8ba8e52983 +size 57934 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_handprint_spread.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_handprint_spread.webp new file mode 100644 index 00000000..c1310b72 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_handprint_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6a11bcbe2cb7ca79a584b6300d39c417af3af53bb3355be0f794b7e0bfd4175 +size 60514 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_angry.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_angry.webp new file mode 100644 index 00000000..12e44eb0 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_angry.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:313f034226b2a582d351a9de563905f983f162c43abed96ddb6cc477cb85cd33 +size 7966 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_annoyed.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_annoyed.webp new file mode 100644 index 00000000..eed5c985 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_annoyed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efc776e0135077201fee4c1d1cdae61b508e6280d1749d74e262b726e4c915da +size 4520 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_base.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_base.webp new file mode 100644 index 00000000..d642f968 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:305aa52576ec4f17f863981c85ecaaebb96ffcd11582e06fc85179efce417317 +size 4790 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_lip_bite.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_lip_bite.webp new file mode 100644 index 00000000..0f4e15ea --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_lip_bite.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24aad131b2b77553c78a12cbb3f86a802f0b95b2f914a892216215ad2f1767ef +size 6178 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_open.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_open.webp new file mode 100644 index 00000000..9db5a28d --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db42b99d120874b35fd5d359225d582786d60e0c2b9206cb6ffbf64885b7e023 +size 7786 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_smile.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_smile.webp new file mode 100644 index 00000000..14ef30aa --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_smile.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c35e81ca5b180feb6ea56bee6d9f64ff0f965eec1c747b28b4a0dc663a6f89c1 +size 6590 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_smirk.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_smirk.webp new file mode 100644 index 00000000..d44cac4b --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_mouth_smirk.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ff5e00bdea364a93fc23ae2b518a93d3367811baa7e97c72004ea1ccf6ba487 +size 5052 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_wetness_normal.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_wetness_normal.webp new file mode 100644 index 00000000..97154c8c --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_wetness_normal.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec7b37964c11c9754a8e0145e9e3662bba11cd4490f8a297466781379b6e9af0 +size 2920 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_wetness_spread.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_wetness_spread.webp new file mode 100644 index 00000000..99ca6662 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_cho_wetness_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b863d4afddc79f2b6e4101ec8134889ff4f24aa1a67402cc273c88491218571c +size 4302 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_ass_spread.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_ass_spread.webp new file mode 100644 index 00000000..017657ab --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_ass_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:094228a0fbf0e3d967c6033f3ac213a8ac57a5f5665beafa0b855705616eba99 +size 66484 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_assfix.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_assfix.webp new file mode 100644 index 00000000..fc0bdf9c --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_assfix.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:547c3a2fd65887b9f22db2db8c748c0dc4014d5c90c4d644e4402282562c2294 +size 5112 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_blush_heavy.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_blush_heavy.webp new file mode 100644 index 00000000..ddb5b2bc --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_blush_heavy.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21509e0801789b40d62a78bdf1ca95b2aa74e2c724b5d6d660b7cc0be31070b0 +size 29876 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_grab.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_grab.webp new file mode 100644 index 00000000..678a0030 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_grab.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b48cea2e62ee062202ed0ee6fa50a1b7e80ce150bbce553435f6e756791fdf13 +size 230666 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_grab_spread.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_grab_spread.webp new file mode 100644 index 00000000..678a0030 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_grab_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b48cea2e62ee062202ed0ee6fa50a1b7e80ce150bbce553435f6e756791fdf13 +size 230666 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_idle.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_idle.webp new file mode 100644 index 00000000..892b75eb --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_body_idle.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea14102daa09642f515b553eca17856211f7b9eaa84f51e953560f82a872a966 +size 228804 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_closed.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_closed.webp new file mode 100644 index 00000000..0324b5e6 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_closed.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea4a6373f34070986ca32642ba1a2c9bffaa69810a4cec962207df99edbc7124 +size 7066 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_down.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_down.webp new file mode 100644 index 00000000..113ffd7c --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_down.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7476522d8a007c3d764480b081fa89ce4495f3fdf91ffdbcc31455282a145311 +size 7114 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_look_at_cho.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_look_at_cho.webp new file mode 100644 index 00000000..7ed8075a --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_look_at_cho.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98fb318c59ed0b516870d93fb320abbdb4c10df6e224dbc2470d068a3c44d47b +size 6878 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_look_at_tits.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_look_at_tits.webp new file mode 100644 index 00000000..d23dac30 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_eyes_open_look_at_tits.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9093f54df7291731b76a54d7592b170b72196539eb8d7207c1e10e2cee06704f +size 7128 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_base.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_base.webp new file mode 100644 index 00000000..d42b16b3 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f22af4f5e870e9e9e623f32d5e20bc180f3178bc9e71d93d7893b946e8797c49 +size 6018 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_lip_bite.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_lip_bite.webp new file mode 100644 index 00000000..d863af57 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_lip_bite.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a854b8cedd47b837f27f344d49dfc0b4697cc60762055b759a017fb25d3bf4e3 +size 7036 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_open.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_open.webp new file mode 100644 index 00000000..d9745858 --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_open.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b062c9d5db1bf24f7ec61c939dadb78427ee43b42aa3f326b0284eda32cfe0f8 +size 7724 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_smile.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_smile.webp new file mode 100644 index 00000000..11d9c3bd --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_mouth_smile.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1049a92fae80eff46f2807ba979fe84f01885d2b3641ed4a76ef8e044679885f +size 7736 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_wetness_normal.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_wetness_normal.webp new file mode 100644 index 00000000..cdec83bf --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_wetness_normal.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72f53ffea28f4b07973a20bae903d3bd81f9c10a793b692d5317130da4c6d39b +size 2980 diff --git a/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_wetness_spread.webp b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_wetness_spread.webp new file mode 100644 index 00000000..6f32d54b --- /dev/null +++ b/game/images/CG/cho_strip/personal/t3_e3/on_knees/cho_strip_personal_t3_e3_on_knees_tonks_wetness_spread.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf1f61b4db8268c71339e9b26a8f4091f9c74c0a4eb4d5274682f3cd3a7e4650 +size 4068 diff --git a/game/images/rooms/objects/decorations/santas_naughty_list.webp b/game/images/rooms/objects/decorations/santas_naughty_list.webp new file mode 100644 index 00000000..7ac85aac --- /dev/null +++ b/game/images/rooms/objects/decorations/santas_naughty_list.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de4cf6a132b8785348d4222653898871a1cd332bcc3f1fddd7ccfb1cfd06e00e +size 16630 diff --git a/game/images/rooms/objects/decorations/xmas_garland.webp b/game/images/rooms/objects/decorations/xmas_garland.webp new file mode 100644 index 00000000..c34cda20 --- /dev/null +++ b/game/images/rooms/objects/decorations/xmas_garland.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a088606912fde5ad7728aa8c53eee8693d6787b1e3b454228fe0edd3c9813a4 +size 234868 diff --git a/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_base.webp b/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_base.webp new file mode 100644 index 00000000..440973c4 --- /dev/null +++ b/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_base.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cf3b7a2416ab09c2769c02d9a483a27f7b0aada4cbf3f3ee3d704457087948b +size 1316 diff --git a/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_light.webp b/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_light.webp new file mode 100644 index 00000000..11c0a4cd --- /dev/null +++ b/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_light.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71a73eb190313aad71b1ab452ebea5fb36cd1dea0baa89c2642e854b257a55a0 +size 1980 diff --git a/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_mask.webp b/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_mask.webp new file mode 100644 index 00000000..7c349368 --- /dev/null +++ b/game/images/rooms/objects/decorations/xmas_window_santa/xmas_window_santa_mask.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d669ec303b8919a09e90086871965f805df65559009ff8c62432a493a162e98 +size 3490 diff --git a/game/images/ui/naughty_list/naughty_list scroll.webp b/game/images/ui/naughty_list/naughty_list scroll.webp new file mode 100644 index 00000000..ba8a4c70 --- /dev/null +++ b/game/images/ui/naughty_list/naughty_list scroll.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40a3cae224584730ec302280962317386408539da126638b4426ff466e545a12 +size 186354 diff --git a/game/images/ui/naughty_list/naughty_list spacer.webp b/game/images/ui/naughty_list/naughty_list spacer.webp new file mode 100644 index 00000000..330c6d23 --- /dev/null +++ b/game/images/ui/naughty_list/naughty_list spacer.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:451d3f36568d0c23e5a75b9f9979661c3b35d6e93589a672d3a4fc01c2d55931 +size 1666 diff --git a/game/interface/icons/santas_naughty_list.webp b/game/interface/icons/santas_naughty_list.webp new file mode 100644 index 00000000..b5bd83a8 --- /dev/null +++ b/game/interface/icons/santas_naughty_list.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42f5240e8641f220b53ea7611c9d7c99c18ad7530dc4b951be0d7412ae115304 +size 41554 diff --git a/game/interface/icons/xmas_garland.webp b/game/interface/icons/xmas_garland.webp new file mode 100644 index 00000000..7ff585f9 --- /dev/null +++ b/game/interface/icons/xmas_garland.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0648f1dc6877a63b36d080ecd85df8d0335ed73c128c594f26053ec96c9dace7 +size 24436 diff --git a/game/interface/icons/xmas_window_santa.webp b/game/interface/icons/xmas_window_santa.webp new file mode 100644 index 00000000..c24f09f4 --- /dev/null +++ b/game/interface/icons/xmas_window_santa.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19d376aa067b50b83282067e054d0dbf3406fdf7c67b74f31455e346523a32bb +size 7670 diff --git a/game/mods/MyMod/script.rpym b/game/mods/MyMod/script.rpym index f675194b..662f2ce5 100644 --- a/game/mods/MyMod/script.rpym +++ b/game/mods/MyMod/script.rpym @@ -1,13 +1,19 @@ # Add new hairstyle for character as an instance of DollCloth, # make sure the variable name is unique, preferably starting with mod name. default MyMod_ponytail = DollCloth( - modpath="mods/mymod/", # shortened filepath to this file + modpath="MyMod", # File path; Usually a mod folder name. (case insensitive) name="hermione", # Character name (case sensitive) - categories=("head","hair"), # Main category and subcategory of the item - type="hair", # Item type - id="ponytail", # Item identificator + categories=("head","hair"), # Main category and subcategory of the item (case sensitive) + type="hair", # Item type (case sensitive) + id="ponytail", # Item identifier (case sensitive) unlocked=True, # True=Item is unlocked by default, False=Item is a part of the outfit and requries to be bought level=0, # Character whoring/friendship level required to wear this cloth. (Optional) - armfix=False, # If cloth images intersect with arm layers, set to True. (Optional) - color=[[152, 89, 48, 255], [195, 137, 89, 255]] # Python list with default colours in RGBA format applicable for each colourable file layer + color=["#985930", "#c38959"], # Python list with default colours in one of the formats listed down below. + zorder=None # Item zorder number, or None, if None default zorder for the slot will be used. ) + +# Example valid colour formats: +# RGB: [(255, 255, 255), (255, 255, 255)] +# RGBA: [(255, 255, 255, 255), (255, 255, 255, 255)] +# HEX: [("#985930", "#c38959")] +# HEXA: [("#985930FF", "#c38959FF")] diff --git a/game/scripts/animations/common.rpy b/game/scripts/animations/common.rpy index f1f0cb96..e02d1135 100644 --- a/game/scripts/animations/common.rpy +++ b/game/scripts/animations/common.rpy @@ -267,6 +267,7 @@ image sur: # Main title background animation image title_ani: contains: + animation zoom 0.5 "images/title/00.webp" pause 3 @@ -318,6 +319,7 @@ image title_ani: "candle_fire_01" contains: + animation xpos -255 ypos 100 zoom 0.8 @@ -341,6 +343,7 @@ image title_ani: #sparkle contains: + animation xpos 798 ypos 200 xanchor 0.5 @@ -354,6 +357,7 @@ image title_ani: #shine silver (synchronized) contains: + animation xpos 848 ypos 230 xanchor 0.5 diff --git a/game/scripts/animations/transforms.rpy b/game/scripts/animations/transforms.rpy index f5c1d2d3..880fa24d 100644 --- a/game/scripts/animations/transforms.rpy +++ b/game/scripts/animations/transforms.rpy @@ -105,6 +105,7 @@ transform random_rotation(a=-45, b=45): rotate random.randint(a, b) transform pulse_hover(t=1.0, strength=0.2, pause=0.0): + animation linear t matrixcolor BrightnessMatrix(value=strength) linear t matrixcolor BrightnessMatrix(value=0.0) pause pause diff --git a/game/scripts/cg/cho.rpy b/game/scripts/cg/cho.rpy index cc42c02c..254e0c43 100644 --- a/game/scripts/cg/cho.rpy +++ b/game/scripts/cg/cho.rpy @@ -339,15 +339,13 @@ image dustparticles_big = SnowBlossom(At("images/CG/cho_sex/blob.webp", softblin image dustparticles_medium = SnowBlossom(At(Transform("images/CG/cho_sex/blob.webp", zoom=0.5), softblink), start=0.0075, border=75, count=50, fast=True, yspeed=(-25, -20), xspeed=(-50,50), horizontal=True) image dustparticles_small = SnowBlossom(At(Transform("images/CG/cho_sex/blob.webp", zoom=0.25), softblink), start=0.005, border=100, count=75, fast=True, yspeed=(-12, -10), xspeed=(-25,25), horizontal=True) -image dustfloating: - contains: - "dustparticles_big" +layeredimage dustfloating: + fit "contain" + fit_first True - contains: - "dustparticles_medium" - - contains: - "dustparticles_small" + always "dustparticles_big" + always "dustparticles_medium" + always "dustparticles_small" image cho_sex idle: @@ -1825,3 +1823,92 @@ image cho_sex idle cum inside: linear 2.0 yzoom 1.05 xzoom 0.99 yoffset absolute(-6.8) linear 2.0 yzoom 1.0 xzoom 1.0 yoffset absolute(0) repeat + +layeredimage cho_strip_personal_t3_e3_lying: + fit "cover" + fit_first True + + always "cho_strip_personal_t3_e3_background" + always "dustfloating" + + attribute tonks_body default + group tonks_blush auto prefix "tonks_blush": + attribute neutral null default + group tonks_eyes auto prefix "tonks_eyes": + attribute open_look_at_cho default + group tonks_mouth auto prefix "tonks_mouth": + attribute base default + + attribute cho_body default + group cho_blush auto prefix "cho_blush": + attribute neutral null default + group cho_eyes auto prefix "cho_eyes": + attribute open_look_at_tonks default + group cho_mouth auto prefix "cho_mouth": + attribute base default + + always "cho_strip_personal_t3_e3_foreground" + always "cho_strip_personal_t3_e3_lying_hands" + + group cum multiple auto prefix "cum" + + group desk_cum multiple prefix "desk_cum": + attribute spurt "cho_strip_personal_t3_e3_desk_cum_spurt" + attribute post "cho_strip_personal_t3_e3_desk_cum_post" + +transform desk_cum_spurt_fly: + on start: + ypos 1200 + easeout 0.75 ypos 0 + +layeredimage cho_strip_personal_t3_e3_on_knees: + fit "cover" + fit_first True + + always "cho_strip_personal_t3_e3_background" + + group cho_body auto prefix "cho_body": + attribute idle default + attribute grab_spread + attribute cho_ass_spread default if_all ["tonks_body_grab_spread"] + + attribute cho_handprint null + attribute cho_handprint_normal default if_all ["cho_handprint"] if_any ["tonks_body_idle", "tonks_body_grab"] + attribute cho_handprint_spread default if_all ["cho_handprint", "tonks_body_grab_spread"] + + attribute cho_wetness null + attribute cho_wetness_normal default if_all ["cho_wetness"] if_any ["tonks_body_idle", "tonks_body_grab"] + attribute cho_wetness_spread default if_all ["cho_wetness", "tonks_body_grab_spread"] + + group cho_blush auto prefix "cho_blush": + attribute neutral null default + group cho_eyes auto prefix "cho_eyes": + attribute open_look_at_tonks default + group cho_mouth auto prefix "cho_mouth": + attribute base default + + group tonks_body auto prefix "tonks_body": + attribute idle default + attribute tonks_assfix default if_all ["cho_body_grab_spread"] + attribute tonks_ass_spread default if_all ["cho_body_grab_spread"] + + attribute tonks_wetness null + attribute tonks_wetness_normal default if_all ["tonks_wetness"] if_not ["cho_body_grab_spread"] + attribute tonks_wetness_spread default if_all ["tonks_wetness", "cho_body_grab_spread"] + + group tonks_blush auto prefix "tonks_blush": + attribute neutral null default + group tonks_eyes auto prefix "tonks_eyes": + attribute open_look_at_cho default + group tonks_mouth auto prefix "tonks_mouth": + attribute base default + + attribute cho_armfix_grab_spread default if_any ["cho_body_grab", "cho_body_grab_spread"] + attribute cho_armfix_idle default if_all ["cho_body_idle"] + + always "dustfloating" + always "cho_strip_personal_t3_e3_foreground" + + group desk_cum prefix "desk_cum": + attribute spurt "cho_strip_personal_t3_e3_desk_cum_spurt" at desk_cum_spurt_fly + attribute post "cho_strip_personal_t3_e3_desk_cum_post" diff --git a/game/scripts/cg/common.rpy b/game/scripts/cg/common.rpy index 275e1a90..d500b8fd 100644 --- a/game/scripts/cg/common.rpy +++ b/game/scripts/cg/common.rpy @@ -1,22 +1,22 @@ init 5 python: def her_cg_doll(st, at): - return hermione.get_image(), None + return hermione.image, None def lun_cg_doll(st, at): - return luna.get_image(), None + return luna.image, None def ton_cg_doll(st, at): - return tonks.get_image(), None + return tonks.image, None def cho_cg_doll(st, at): - return cho.get_image(), None + return cho.image, None def ast_cg_doll(st, at): - return astoria.get_image(), None + return astoria.image, None def sus_cg_doll(st, at): - return susan.get_image(), None + return susan.image, None image CG her_doll = DynamicDisplayable(her_cg_doll) image CG lun_doll = DynamicDisplayable(lun_cg_doll) diff --git a/game/scripts/characters.rpy b/game/scripts/characters.rpy index 8dbea8ab..ab0ae54c 100644 --- a/game/scripts/characters.rpy +++ b/game/scripts/characters.rpy @@ -79,12 +79,3 @@ define dum2 = Character("[dumbledore_name]", show_side_image=Image("characters/m define dum3 = Character("[dumbledore_name]", show_side_image=Image("characters/misc/dumbledore/dum_3.webp"), show_icon="dumbledore") define dum4 = Character("[dumbledore_name]", show_side_image=Image("characters/misc/dumbledore/dum_4.webp"), show_icon="dumbledore") define dum5 = Character("[dumbledore_name]", show_side_image=Image("characters/misc/dumbledore/dum_5.webp"), show_icon="dumbledore") - -# Santa -define san1 = Character("Santa", show_side_image=Image("characters/misc/santa/santa_1.webp"), show_icon="santa") -define san2 = Character("Santa", show_side_image=Image("characters/misc/santa/santa_2.webp"), show_icon="santa") -define san3 = Character("Santa", show_side_image=Image("characters/misc/santa/santa_3.webp"), show_icon="santa") -define san4 = Character("Santa", show_side_image=Image("characters/misc/santa/santa_4.webp"), show_icon="santa") -define san5 = Character("Santa", show_side_image=Image("characters/misc/santa/santa_5.webp"), show_icon="santa") -define san6 = Character("Santa", show_side_image=Image("characters/misc/santa/santa_6.webp"), show_icon="santa") -define san7 = Character("Santa", show_side_image=Image("characters/misc/santa/santa_7.webp"), show_icon="santa") diff --git a/game/scripts/characters/astoria/events/imperio_training.rpy b/game/scripts/characters/astoria/events/imperio_training.rpy index 288d3397..dd38d460 100644 --- a/game/scripts/characters/astoria/events/imperio_training.rpy +++ b/game/scripts/characters/astoria/events/imperio_training.rpy @@ -1312,7 +1312,7 @@ label ag_st_imperio_E5: # Strip naked. Removes clothes and stockings. $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ tonks.strip("all") + $ tonks.strip("clothes") ton "" ("grin", "base", "base", "ahegao", hair="horny", cheeks="blush") ast "(She did it...)" ("horny", "narrow", "angry", "L") call ctc diff --git a/game/scripts/characters/astoria/wardrobe.rpy b/game/scripts/characters/astoria/wardrobe.rpy index d3de3601..09edac30 100644 --- a/game/scripts/characters/astoria/wardrobe.rpy +++ b/game/scripts/characters/astoria/wardrobe.rpy @@ -2,78 +2,38 @@ ## Character ## ############### -default astoria = Doll(name="astoria", - clothes={"headgear": [None, 15, True], - "hair": [None, 4, True], - "glasses": [None, 12, True], - "earrings": [None, 14, True], - "neckwear": [None, 11, True], - "robe": [None, 28, True], - "gloves": [None, 21, True], - "top": [None, 15, True], - "bra": [None, 9, True], - "bottom": [None, 8, True], - "garterbelt": [None, 7, True], - "panties": [None, 6, True], - "stockings": [None, 5, True], - "buttplug": [None, -1, True], - "pubes": [None, 3, True], - "footwear": [None, 6, True], - "tattoo0": [None, 1, True], - "tattoo1": [None, 1, True], - "tattoo2": [None, 1, True], - "tattoo3": [None, 1, True], - "tattoo4": [None, 1, True], - "piercing0": [None, 2, True], - "piercing1": [None, 2, True], - "piercing2": [None, 2, True], - "piercing3": [None, 2, True], - "piercing4": [None, 2, True], - "accessory0": [None, 12, True], - "accessory1": [None, 12, True], - "accessory2": [None, 12, True], - "accessory3": [None, 12, True], - "accessory4": [None, 12, True], - "makeup0": [None, 3, True], - "makeup1": [None, 3, True], - "makeup2": [None, 3, True], - "makeup3": [None, 3, True], - "makeup4": [None, 3, True]}, - face={"tears": [None, 12, True], - "cheeks": [None, 7, True], - "eyebrows": ["base", 11, True], - "eyes": ["base", 8, True], - "pupils": ["mid", 9, True], - "mouth": ["base", 13, True]}, - body={"armleft": ["on_hips", 3], - "armright":["on_hips", 1], - "base": ["front", 0], - "breasts": ["normal", 2]}) +default astoria = Doll(name="astoria") + +default ast_frame_default = DollBodypart("astoria", ("hidden", "frame"), "frame", "default") +default ast_body_default = DollOutfit([ast_frame_default], hidden=True) + +########## +## Hair ## +########## + +default ast_hair_base = DollCloth("astoria", ("head", "hair"), "hair", "base", ["#e5c681ff", "#a37d50ff"], unlocked=True) +default ast_hair_short = DollCloth("astoria", ("head", "hair"), "hair", "short", ["#e5c681ff", "#a37d50ff"], unlocked=True) ####################### ## Schoolgirl Outfit ## ####################### -default ast_footwear_shoes = DollClothDummy("astoria", type="footwear") -default ast_hair_base = DollCloth("astoria", ("head", "hair"), "hair", "base", [[229, 198, 129, 255], [163, 125, 80, 255]], unlocked=True) -default ast_hair_short = DollCloth("astoria", ("head", "hair"), "hair", "short", [[229, 198, 129, 255], [163, 125, 80, 255]], unlocked=True) +default ast_top_school1 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_1", ["#b7b7b8ff", "#6d6979ff", "#3a734bff", "#cdcdceff"], unlocked=True) +default ast_top_school2 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_2", ["#b7b7b8ff", "#6d6979ff", "#3a734bff", "#cdcdceff"], level=4, unlocked=True) +default ast_top_school3 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_3", ["#b7b7b8ff", "#3a734bff", "#cdcdceff"], level=8, unlocked=True) +default ast_top_school4 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_4", ["#b7b7b8ff", "#3a734bff", "#cdcdceff"], level=8, unlocked=True) +default ast_top_school5 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_5", ["#b7b7b8ff", "#3a734bff", "#cdcdceff"], level=12, unlocked=True) +default ast_top_school6 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_6", ["#6d6979ff", "#3a734bff", "#cdcdceff"], level=12, unlocked=True) -default ast_top_school1 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_1", [[183, 183, 184, 255], [109, 105, 121, 255], [58, 115, 75, 255], [205, 205, 206, 255]], armfix=True, unlocked=True) -default ast_top_school2 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_2", [[183, 183, 184, 255], [109, 105, 121, 255], [58, 115, 75, 255], [205, 205, 206, 255]], level=4, armfix=True, unlocked=True) -default ast_top_school3 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_3", [[183, 183, 184, 255], [58, 115, 75, 255], [205, 205, 206, 255]], level=8, armfix=True, unlocked=True) -default ast_top_school4 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_4", [[183, 183, 184, 255], [58, 115, 75, 255], [205, 205, 206, 255]], level=8, armfix=True, unlocked=True) -default ast_top_school5 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_5", [[183, 183, 184, 255], [58, 115, 75, 255], [205, 205, 206, 255]], level=12, armfix=True, unlocked=True) -default ast_top_school6 = DollCloth("astoria", ("upper body", "shirts"), "top", "top_school_6", [[109, 105, 121, 255], [58, 115, 75, 255], [205, 205, 206, 255]], level=12, armfix=True, unlocked=True) +default ast_bottom_skirt1 = DollCloth("astoria", ("lower body", "skirts"), "bottom", "school_skirt_1", ["#675a6cff", "#e8b10dff"], unlocked=True) +default ast_bottom_skirt2 = DollCloth("astoria", ("lower body", "skirts"), "bottom", "school_skirt_2", ["#675a6cff", "#e8b10dff"], level=4, unlocked=True) +default ast_bottom_skirt3 = DollCloth("astoria", ("lower body", "skirts"), "bottom", "school_skirt_3", ["#675a6cff", "#e8b10dff"], level=8, unlocked=True) +default ast_bottom_skirt4 = DollCloth("astoria", ("lower body", "skirts"), "bottom", "school_skirt_4", ["#675a6cff", "#e8b10dff"], level=12, unlocked=True) -default ast_bottom_skirt1 = DollCloth("astoria", ("lower body", "skirts"), "bottom", "school_skirt_1", [[103, 90, 108, 255], [232, 177, 13, 255]], armfix=True, unlocked=True) -default ast_bottom_skirt2 = DollCloth("astoria", ("lower body", "skirts"), "bottom", "school_skirt_2", [[103, 90, 108, 255], [232, 177, 13, 255]], level=4, armfix=True, unlocked=True) -default ast_bottom_skirt3 = DollCloth("astoria", ("lower body", "skirts"), "bottom", "school_skirt_3", [[103, 90, 108, 255], [232, 177, 13, 255]], level=8, armfix=True, unlocked=True) -default ast_bottom_skirt4 = DollCloth("astoria", ("lower body", "skirts"), "bottom", "school_skirt_4", [[103, 90, 108, 255], [232, 177, 13, 255]], level=12, armfix=True, unlocked=True) - -default ast_bra_basic1 = DollCloth("astoria", ("upper undergarment", "bras"), "bra", "basic_bra_1", [[213, 62, 65, 255], [234, 236, 234, 255]], unlocked=True) -default ast_bra_basic2 = DollCloth("astoria", ("upper undergarment", "bras"), "bra", "basic_bra_2", [[213, 62, 65, 255]], unlocked=True) -default ast_panties_basic1 = DollCloth("astoria", ("lower undergarment", "panties"), "panties", "basic_panties_1", [[213, 62, 65, 255], [234, 236, 234, 255]], armfix=True, unlocked=True) -default ast_panties_basic2 = DollCloth("astoria", ("lower undergarment", "panties"), "panties", "basic_panties_2", [[213, 62, 65, 255]], armfix=True, unlocked=True) +default ast_bra_basic1 = DollCloth("astoria", ("upper undergarment", "bras"), "bra", "basic_bra_1", ["#d53e41ff", "#eaeceaff"], unlocked=True) +default ast_bra_basic2 = DollCloth("astoria", ("upper undergarment", "bras"), "bra", "basic_bra_2", ["#d53e41ff"], unlocked=True) +default ast_panties_basic1 = DollCloth("astoria", ("lower undergarment", "panties"), "panties", "basic_panties_1", ["#d53e41ff", "#eaeceaff"], unlocked=True) +default ast_panties_basic2 = DollCloth("astoria", ("lower undergarment", "panties"), "panties", "basic_panties_2", ["#d53e41ff"], unlocked=True) default ast_outfit_default = DollOutfit([ast_hair_base, ast_top_school1, ast_bottom_skirt1, ast_bra_basic1, ast_panties_basic1], unlocked=True) default ast_outfit_last = DollOutfit([ast_hair_base], hidden=True) @@ -82,31 +42,31 @@ default ast_outfit_last = DollOutfit([ast_hair_base], hidden=True) ## Ann Outfit ## ################ -default ast_hair_ann = DollCloth("astoria", ("head", "hair"), "hair", "ann_takamaki", [[229, 198, 129, 255], [163, 125, 80, 255], [255, 209, 105, 255]]) -default ast_hat_ann = DollCloth("astoria", ("head", "headgear"), "headgear", "ann_takamaki", [[173, 18, 18, 255], [238, 188, 187, 255]], level=14) -default ast_top_ann = DollCloth("astoria", ("upper body", "other"), "top", "ann_takamaki", [[173, 18, 18, 255], [232, 232, 232, 255], [238, 188, 187, 255]], level=14, blacklist=("bottom", "bra", "garterbelt"), armfix=True) -default ast_stockings_ann = DollCloth("astoria", ("legwear", "stockings"), "stockings", "ann_takamaki", [[99, 42, 42, 255], [181, 135, 135, 255]], level=14, blacklist=["bottom"], armfix=True) -default ast_gloves_ann = DollCloth("astoria", ("upper body", "gloves"), "gloves", "ann_takamaki", [[249, 139, 225, 255]]) -default ast_buttplug_ann = DollCloth("astoria", ("misc", "accessory"), "accessory0", "ann_takamaki", [[99, 42, 42, 255], [181, 135, 135, 255]], level=14, zorder=-1) +default ast_hair_ann = DollCloth("astoria", ("head", "hair"), "hair", "ann_takamaki", ["#e5c681ff", "#a37d50ff", "#ffd169ff"]) +default ast_hat_ann = DollClothDynamic("astoria", ("head", "headgear"), "headgear", "ann_takamaki", ["#ad1212ff", "#eebcbbff"], level=14, tracking="?hair") +default ast_top_ann = DollCloth("astoria", ("upper body", "other"), "top", "ann_takamaki", ["#ad1212ff", "#e8e8e8ff", "#eebcbbff"], level=14, blacklist=("bottom", "bra", "garterbelt")) +default ast_stockings_ann = DollCloth("astoria", ("legwear", "stockings"), "stockings", "ann_takamaki", ["#632a2aff", "#b58787ff"], level=14, blacklist=["bottom"]) +default ast_gloves_ann = DollCloth("astoria", ("upper body", "gloves"), "gloves", "ann_takamaki", ["#f98be1ff"]) +default ast_buttplug_ann = DollCloth("astoria", ("misc", "accessory"), "accessory", "ann_takamaki", ["#632a2aff", "#b58787ff"], level=14, zorder=-1) default ast_outfit_ann = DollOutfit([ast_hair_ann, ast_hat_ann, ast_top_ann, ast_stockings_ann, ast_gloves_ann, ast_buttplug_ann, ast_panties_basic1], price=500, name="Ann Costume", desc="Wearing this will make you look like a different persona.") -########## -## Misc ## -########## - -default ast_cloth_pants1 = DollCloth("astoria", ("lower body", "trousers"), "bottom", "pants_1", [[180, 180, 180, 255], [213, 161, 13, 255]], armfix=True, unlocked=True) -default ast_cloth_shorts1 = DollCloth("astoria", ("lower body", "shorts"), "bottom", "pants_1_short", [[180, 180, 180, 255], [213, 161, 13, 255]], level=8, armfix=True, unlocked=True) -default ast_cloth_pantyhose1 = DollCloth("astoria", ("legwear", "pantyhose"), "stockings", "pantyhose", [[190, 146, 129, 255]], armfix=True, unlocked=True) - ################ ## Pubic Hair ## ################ -default ast_pubes_arrow = DollCloth("astoria", ("lower undergarment", "pubes"), "pubes", "arrow", [[229, 198, 129, 255]], unlocked=True) -default ast_pubes_beaver = DollCloth("astoria", ("lower undergarment", "pubes"), "pubes", "beaver", [[229, 198, 129, 255]], unlocked=True) -default ast_pubes_stuble = DollCloth("astoria", ("lower undergarment", "pubes"), "pubes", "stuble", [[139, 107, 69, 255]], unlocked=True) -default ast_pubes_unshaved = DollCloth("astoria", ("lower undergarment", "pubes"), "pubes", "unshaved", [[139, 107, 69, 255]], unlocked=True) +default ast_pubes_arrow = DollCloth("astoria", ("lower undergarment", "pubes"), "pubes", "arrow", ["#e5c681ff"], unlocked=True) +default ast_pubes_beaver = DollCloth("astoria", ("lower undergarment", "pubes"), "pubes", "beaver", ["#e5c681ff"], unlocked=True) +default ast_pubes_stuble = DollCloth("astoria", ("lower undergarment", "pubes"), "pubes", "stuble", ["#8b6b45ff"], unlocked=True) +default ast_pubes_unshaved = DollCloth("astoria", ("lower undergarment", "pubes"), "pubes", "unshaved", ["#8b6b45ff"], unlocked=True) -# Lipstick (DollLipstick) -default ast_makeup4_lipstick = DollLipstick("astoria", ("head", "makeup"), "makeup4", "lipstick", [[255, 70, 70, 255]], unlocked=True) +# Lipstick +default ast_makeup_lipstick = DollMakeup("astoria", ("head", "makeup"), "makeup", "lipstick", ["#ff4646ff"], unlocked=True, tracking="mouth") + +########## +## Misc ## +########## + +default ast_cloth_pants1 = DollCloth("astoria", ("lower body", "trousers"), "bottom", "pants_1", ["#b4b4b4ff", "#d5a10dff"], unlocked=True) +default ast_cloth_shorts1 = DollCloth("astoria", ("lower body", "shorts"), "bottom", "pants_1_short", ["#b4b4b4ff", "#d5a10dff"], level=8, unlocked=True) +default ast_cloth_pantyhose1 = DollCloth("astoria", ("legwear", "pantyhose"), "stockings", "pantyhose", ["#be9281ff"], unlocked=True) diff --git a/game/scripts/characters/cho/common.rpy b/game/scripts/characters/cho/common.rpy index 3cf453d0..00f6881f 100644 --- a/game/scripts/characters/cho/common.rpy +++ b/game/scripts/characters/cho/common.rpy @@ -63,9 +63,6 @@ label end_cho_event: $ cho.wear("all") $ cho.set_cum(None) - $ renpy.stop_predict(cho.get_image()) - $ renpy.stop_predict("characters/cho/face/*.webp") - call music_block jump main_room_menu 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 new file mode 100644 index 00000000..51806676 --- /dev/null +++ b/game/scripts/characters/cho/events/favors/inspect_her_body_tier2.rpy @@ -0,0 +1,1216 @@ + +default cc_pf_strip_T2_E3_failed = False + +### Cho Strip ### + +label cc_pf_strip: + + # Start Event + $ cc_pf_strip.start() + + # End Event Jump + label end_cho_strip_event: + + if cho_tier == 2 and cho_whoring < 9: # Points til 9 + $ cho_whoring += 1 + + if cho_tier == 3 and cho_whoring < 15: # Points til 15 + $ cho_whoring += 1 + + $ cho.wear("all") # Reset clothes + jump end_cho_event + +# TODO: Add Fail events as Tier 1, currently named Tier 1 events become Tier 2. + +### Tier 2 (pre Slytherin) ### + +label cc_pf_strip_T2_intro_E1: + gen "It's time for your next favour, [cho_name]." ("base", xpos="far_left", ypos="head") + cho "Of course, [cho_genie_name]." ("base", "base", "base", "mid") + cho "What would you like me to do?" ("soft", "base", "base", "mid") + gen "First, come a bit closer..." ("base", xpos="far_left", ypos="head") + cho "Very well, Sir." ("base", "base", "base", "mid") + + call cho_walk("desk", "base") + + cho "" (xpos="mid", ypos="base", trans=fade) + call ctc + + gen "How often do you typically exercise, Miss Chang?" ("base", xpos="far_left", ypos="head") + cho "As often as I can, [cho_genie_name]!" ("soft", "base", "base", "mid") + gen "Which is... how often, exactly? Twice a week?" ("base", xpos="far_left", ypos="head") + cho "Three times a day, Sir!" ("base", "narrow", "base", "mid") + with hpunch + gen "What?!" ("angry", xpos="far_left", ypos="head") + gen "(I don't even jerk off that often!)" ("angry", xpos="far_left", ypos="head") + gen "I find that a bit hard to believe... You're not embellishing the truth, are you?" ("base", xpos="far_left", ypos="head") + cho "I'm not, Sir! It's necessary for someone in my position!" ("open", "closed", "angry", "mid") + cho "I wake up every morning before dawn, then run around the Quidditch pitch until the sun rises!" ("open", "narrow", "angry", "mid") + cho "My body's at the absolute peak of human condition!" ("open", "narrow", "angry", "R") + gen "It is quite impressive..." ("angry", xpos="far_left", ypos="head") + cho "Glad to hear it, [cho_genie_name]." ("base", "happyCl", "base", "mid") + gen "I assume you get complimented often?" ("base", xpos="far_left", ypos="head") + cho "Sometimes..." ("soft", "base", "base", "R") + gen "And I suspect you have many admirers?" ("grin", xpos="far_left", ypos="head") + cho "Oh, *umm*... maybe?" ("annoyed", "base", "base", "mid") + cho "But that's {b}not{/b} why I take such great care of my body, Sir!" ("open", "narrow", "angry", "mid") + gen "Of course not..." ("base", xpos="far_left", ypos="head") + cho "Quidditch is a hard game for anyone, as I'm sure you know..." ("open", "closed", "base", "mid") + cho "But that goes double for girls!{w=0.6} I have to train twice as hard as the boys if I want to stand a chance!" ("open", "narrow", "angry", "mid") + gen "That's very commendable of you..." ("base", xpos="far_left", ypos="head") + cho "Thank you, Sir." ("base", "base", "base", "mid") + + label .introspection: + + if _in_replay: + show screen blkfade + with d5 + + $ cho.equip(cho_outfit_default) + $ game.gold = 1984 + $ game.day = 123 + call room("main_room") + + hide screen blkfade + with d5 + + # Ask her to strip. + gen "So, Why don't you show me what you are made of?{w=1.0} Let me have a proper look at you!" ("grin", xpos="far_left", ypos="head") + cho "Sir?" ("soft", "wink", "raised", "mid") + gen "I need you to remove your clothes." ("base", xpos="far_left", ypos="head") + + if _in_replay: + show screen blkfade + with d5 + return + + call play_music("stop") + cho "!!!" ("soft", "wide", "base", "mid", cheeks="blush") + call play_music("cho") + gen "Go on, girl. Start with the top..." ("base", xpos="far_left", ypos="head") + cho "No!" ("scream", "happyCl", "angry", "mid", cheeks="blush", trans=hpunch) + cho "Why are you even asking me to do such a thing?!" ("angry", "narrow", "angry", "mid") + #gen "Didn't you take your skirt off for me after the Hufflepuff match?" ("base", xpos="far_left", ypos="head") + #cho "{size=-4}Well, I probably shouldn't have done that..{/size}" ("annoyed", "base", "worried", "R") + #gen "Sorry?" ("base", xpos="far_left", ypos="head") + gen "Have you already forgotten that I'm here to train you?" ("base", xpos="far_left", ypos="head") + cho "And I'm very thankful for that sir, but..." ("open", "closed", "base", "mid") + gen "Am I not your trusted mentor?" ("base", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "narrow", "angry", "mid") + gen "Your strong advisor..." ("base", xpos="far_left", ypos="head") + gen "Your guardian angel!" ("grin", xpos="far_left", ypos="head") + cho "I don't think taking off my clothes will be necessary for our training, [cho_genie_name]." ("annoyed", "narrow", "angry", "R") + gen "I'm very disappointed I've got to say..." ("base", xpos="far_left", ypos="head") + gen "You aren't this shy about undressing in front of your team, are you?" ("base", xpos="far_left", ypos="head") + cho "That's entirely different!" ("soft", "narrow", "angry", "mid") + gen "How so?" ("base", xpos="far_left", ypos="head") + cho "I'm just not comfortable doing this in front of you, Sir!" ("soft", "closed", "worried", "mid") + cho "You're really old..." ("soft", "narrow", "worried", "downR", cheeks="blush") + gen "Pardon me?" ("base", xpos="far_left", ypos="head") + cho "I meant... you're our headmaster! It just feels wrong to me!" ("soft", "narrow", "worried", "mid") + #gen "It didn't bother you the last time you barged into my office..." ("base", xpos="far_left", ypos="head") + #cho "Well, we had just won the game and all that... Maybe my judgement..." ("annoyed", "closed", "worried", "R") + gen "Are you one of those shy girls, Miss Chang?" ("base", xpos="far_left", ypos="head") + cho "No, Sir. I wouldn't say I'm shy, but..." ("soft", "narrow", "worried", "downR") + gen "Well then prove me you aren't, girl!" ("base", xpos="far_left", ypos="head") + gen "Let me see it!" ("grin", xpos="far_left", ypos="head") + + # Cho stays reluctant. + cho "Is there no other way to prove it?" ("annoyed", "narrow", "worried", "mid") + gen "Well, yes.{w=0.3} Several.{w} But we'll get to those later..." ("base", xpos="far_left", ypos="head") + cho "Later, Sir?" ("soft", "base", "raised", "mid") + gen "Girl, I wouldn't be asking you this if it wasn't absolutely necessary for your training!" ("angry", xpos="far_left", ypos="head") + cho "Of course, [cho_genie_name]." ("annoyed", "base", "base", "down") + gen "All that's required of you is to co-operate..." ("base", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "base", "worried", "mid", cheeks="blush") + gen "Now take off your top..." ("base", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "narrow", "angry", "mid", cheeks="blush") + cho "Only my top?" ("soft", "narrow", "worried", "mid") + gen "Would you like to take off {b}more?{/b}" ("grin", xpos="far_left", ypos="head") + cho "I didn't mean it like that!" ("angry", "narrow", "angry", "mid") + gen "[cho_name], it's only the two of us in here. No need to worry." ("base", xpos="far_left", ypos="head") + cho "I'm not worried about others, [cho_genie_name]!" ("annoyed", "narrow", "angry", "mid") + cho "For as long as nobody else will find out...{w} You have to promise me that, Sir!" ("soft", "narrow", "angry", "R") + gen "Promised! Now take it off!" ("grin", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "narrow", "angry", "mid") + gen "*Ahem*{w=0.5} Slowly..." ("base", xpos="far_left", ypos="head") + pause .5 + cho "" ("quiver", "happyCl", "worried", "mid", cheeks="blush") + pause .8 + + # Remove top. + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("robe", "top") + with d3 + pause .5 + + cho "" ("quiver", "narrow", "worried", "mid", cheeks="blush") + call ctc + + menu: + "\"Your posture is remarkable!\"": + cho "Oh... Glad you noticed!" ("smile", "base", "base", "down") # Happy + cho "I'm relieved you actually show interest in my body status, Sir!" ("base", "base", "base", "mid") + gen "(Oh, You have no idea, girl!)" ("base", xpos="far_left", ypos="head") + cho "I thought you just wanted to gush at my body like all the other teachers..." ("soft", "narrow", "worried", "mid", cheeks="blush") + gen "Who?{w} Which other teachers are you talking about?{w} Snape?!" ("base", xpos="far_left", ypos="head") + cho "No, not Snape..." ("annoyed", "narrow", "angry", "R") + cho "(...)" ("annoyed", "base", "worried", "downR", cheeks="blush") + cho "Promise me you won't tell her!" ("quiver", "narrow", "worried", "mid", cheeks="blush") + gen "Her?!" ("base", xpos="far_left", ypos="head") + cho "Madame Hooch, Sir." ("soft", "narrow", "worried", "mid", cheeks="blush") + gen "Ah, the old, grey haired lady..." ("base", xpos="far_left", ypos="head") + cho "Yes, she's been eyeing me a lot lately..." ("annoyed", "base", "worried", "downR", cheeks="blush") + cho "Even more so after our recent game against Hufflepuff..." ("mad", "narrow", "worried", "R", cheeks="blush") + gen "I can't blame her... Your body is very pleasant to look at!" ("grin", xpos="far_left", ypos="head") + cho "Thank you, Sir." ("base", "base", "base", "mid", cheeks="blush") + + "\"You have marvellous abs!\"": + gen "Magnificent." ("angry", xpos="far_left", ypos="head") + gen "Simply...{w} magnificent..." ("angry", xpos="far_left", ypos="head") + cho "*Ehm*..." ("annoyed", "narrow", "worried", "R", cheeks="blush") # Embarrassed + gen "As if Michelangelo himself carved them onto your flesh..." ("angry", xpos="far_left", ypos="head") + gen "I must say I'm very impressed!" ("base", xpos="far_left", ypos="head") + cho "Thank you, Sir." ("soft", "narrow", "worried", "downR", cheeks="blush") + + "\"*Eh*, I've seen better, but that'll do.\"": + $ cho_mood += 3 + cho "What?!" ("mad", "base", "angry", "mid") # Upset + gen "(Crap!)" ("angry", xpos="far_left", ypos="head") + gen "What I meant to say is, you're in great shape but I still see room for improvements." ("base", xpos="far_left", ypos="head") + gen "I'm impressed nonetheless!" ("base", xpos="far_left", ypos="head") + cho "Thank you, I guess..." ("annoyed", "narrow", "angry", "downR", cheeks="blush") + + gen "None of the other girls I get to see here has such fine...{w=1.0} contours." ("base", xpos="far_left", ypos="head") + cho "Other girls?" ("soft", "wide", "base", "mid") + cho "[cho_genie_name], you aren't training anybody else in Quidditch besides me, are you?" ("soft", "narrow", "angry", "mid") + gen "What? Of course not..." ("base", xpos="far_left", ypos="head") + cho "Then which other girls are you talking about?" ("annoyed", "narrow", "angry", "mid") + gen "(Shit! I better just tell her the truth.)" ("angry", xpos="far_left", ypos="head") + gen "Just...{w=1.0} Granger..." ("base", xpos="far_left", ypos="head") + cho "*Phewww*{w=1.0} You scared me there for a second, Sir..." ("smile", "narrow", "worried", "mid") + gen "You... don't mind?" ("base", xpos="far_left", ypos="head") + cho "Please. Why should I care what Granger does for you in here?" ("soft", "narrow", "angry", "R") + cho "All she seems to care about is winning the house cup." ("open", "narrow", "angry", "R") + cho "As long as you don't help any Gryffindor or Slytherin sluts win the Quidditch cup, everything will be fine." ("base", "narrow", "base", "mid") + gen "No worries, [cho_name]. I don't have plans to train other {i}sluts{/i} in quidditch." ("grin", xpos="far_left", ypos="head") + + cho "That's a relief..." ("open", "closed", "base", "mid") + cho "Besides, she clearly doesn't hold a candle against me!" ("open", "narrow", "base", "R") + cho "All she does is sit on her arse all day, studying in the library..." ("soft", "narrow", "angry", "mid") + gen "(...)" ("base", xpos="far_left", ypos="head") + cho "You can't expect somebody who's as lazy as her to look as great as I do!" ("soft", "closed", "base", "mid") + + menu: + "\"Yeah, she's gross.\"": + $ cho_mood = 0 + gen "Miss Granger's body is nothing compared to yours." ("base", xpos="far_left", ypos="head") + cho "I wholeheartedly agree, Sir!" ("base", "narrow", "angry", "mid") + gen "Her tits sag too much, and her fat hips are disgusting..." ("base", xpos="far_left", ypos="head") + hide cho_main + call blktone + gen "(Something deep inside me just died saying this...)" ("angry", xpos="far_left", ypos="head") + call hide_blktone + cho "She really is a..." ("open", "closed", "raised", "mid") + cho "... stupid..." ("angry", "closed", "angry", "mid") + cho "... fat..." ("clench", "narrow", "angry", "mid") + cho "... cow, isn't she?" ("quiver", "narrow", "angry", "mid", cheeks="blush") + gen "Speaking of Hermione..." ("base", xpos="far_left", ypos="head") + gen "Why don't you show me \"your\"{w} very much \"superior\"{w} hips?" ("grin", xpos="far_left", ypos="head") + cho "Are you asking me to take off my bottoms?" ("soft", "wink", "raised", "mid", cheeks="blush") + gen "Yes, my dear." ("base", xpos="far_left", ypos="head") + + "\"Nope, you lose\"": + $ cho_mood += 6 + + cho "What?!" ("scream", "wide", "angry", "mid", trans=hpunch) + cho "" ("angry", "narrow", "angry", "mid") + gen "I'm afraid, Miss Granger is simply...{w} how shall I put it...{w} sexier!" ("base", xpos="far_left", ypos="head") + cho "But she doesn't even do workouts!" ("clench", "narrow", "angry", "mid") + gen "Let's just forget about her, shall we?" ("base", xpos="far_left", ypos="head") + gen "And continue where we left off..." ("base", xpos="far_left", ypos="head") + cho "And where would that be?" ("annoyed", "narrow", "angry", "mid") + gen "Your Quidditch training, Miss Chang." ("base", xpos="far_left", ypos="head") + cho "I'm not sure I want to -- after what you've just said..." ("annoyed", "narrow", "angry", "R") + gen "Why? What did I say?" ("base", xpos="far_left", ypos="head") + cho "That Granger's body is better?! We both know that isn't true." ("mad", "narrow", "angry", "mid") + gen "Do you expect me to apologise?" ("base", xpos="far_left", ypos="head") + cho "Yes!{w} Admit that I'm sexier!" ("annoyed", "closed", "angry", "mid", cheeks="blush") # Snobby + gen "You are indeed, {b}very sexy{/b}, Miss Chang!" ("grin", xpos="far_left", ypos="head") + cho "Thank you, Sir." ("base", "narrow", "base", "mid") + gen "Now take your bottoms off, would you..." ("base", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "narrow", "angry", "mid") + + + cho "Please don't tell anybody about what I'm doing in here, Sir." ("quiver", "narrow", "worried", "mid", cheeks="blush") + cho "It could really tarnish my reputation." ("soft", "narrow", "worried", "R", cheeks="blush") + gen "I'd never think of it..." ("base", xpos="far_left", ypos="head") + cho "I will take off my bottoms now!" ("scream", "happyCl", "angry", "mid") # Scream + cho "" ("horny", "narrow", "worried", "R", cheeks="blush") + gen "(!!!)" ("grin", xpos="far_left", ypos="head") + pause .4 + + # Remove bottoms. + $ renpy.sound.play("sounds/cloth_sound3.ogg") + hide cho_main + $ cho.strip("bottom") + pause 1.2 + $ renpy.sound.play("sounds/cloth_sound4.ogg") + show screen cho_cloth_pile + pause .4 + cho "" (trans=d3) + pause .5 + + cho "" ("horny", "narrow", "base", "mid", cheeks="blush") + call ctc + + gen "YES!" ("angry", xpos="far_left", ypos="head") + gen "Look at those thighs!" ("angry", xpos="far_left", ypos="head") + gen "Those tree trunks!" ("angry", xpos="far_left", ypos="head") + gen "Even the great \"Chun-Li\" would be jealous of those!" ("grin", xpos="far_left", ypos="head") + cho "I'm sorry Sir, who's that?" ("soft", "wink", "raised", "mid") + + menu: + gen "(...)" ("base", xpos="far_left", ypos="head") + + "\"Never seen City Hunter?\"": + cho "\"City Hunter?\"{w=0.3} Can't say that I have." ("soft", "base", "raised", "mid") + gen "What about \"Police Story\"?" ("base", xpos="far_left", ypos="head") + cho "No?" ("soft", "wink", "raised", "mid") + gen "\"Drunken Master\"?" ("base", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "base", "base", "R") + gen "Please tell me you've at the very least seen \"Rush Hour\"?" ("angry", xpos="far_left", ypos="head") + cho "No, Sir." ("annoyed", "closed", "base", "mid") + gen "I'm in shock, over how little you care about your culture..." ("base", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "narrow", "angry", "mid") + gen "Not every man can pull off a cosplay like that!" ("angry", xpos="far_left", ypos="head") + cho "I'm not following, Sir." ("annoyed", "narrow", "angry", "R") + + "\"She's my main...\"": + gen "I simply love playing with her..." ("grin", xpos="far_left", ypos="head") + gen "Seeing that leg rise up when I press the right buttons..." ("base", xpos="far_left", ypos="head") + cho "What?!" ("open", "narrow", "raised", "mid") # confused + + gen "Speaking of which!{w} I don't believe we are done here just yet." ("grin", xpos="far_left", ypos="head") + cho "We aren't? But I did exactly what you wanted!" ("open", "base", "worried", "mid") + gen "You've still got some clothes on..." ("grin", xpos="far_left", ypos="head") + cho "Sir, is this why you are helping me?" ("open", "closed", "angry", "mid") + cho "Might this be all just part of a sick scheme to get to see me naked?" ("annoyed", "narrow", "angry", "mid") + gen "(...)" ("base", xpos="far_left", ypos="head") + + menu: + "\"It absolutely is!\"": + $ cho_mood += 20 + $ cho_mad_about_stripping = True # Flag that enables different dialogue that is a bit more "lewd" in the next favour repeat. + cho "" ("angry", "wide", "base", "mid") # Shock + gen "Now take off that bra of yours and show me those titties!" ("grin", xpos="far_left", ypos="head") + cho "[cho_genie_name], how can you talk to me like that!" ("scream", "closed", "angry", "mid", trans=hpunch) + cho "I'm your student!" ("clench", "narrow", "angry", "mid") + gen "And a very pretty one at that!" ("grin", xpos="far_left", ypos="head") + cho "You disgust me, sir..." ("soft", "narrow", "angry", "mid") + + "\"Of course not...\"": + $ cho_mood += 6 + $ cho_mad_about_stripping = False + cho "Aye right..." ("soft", "narrow", "raised", "mid") # Expression of disbelieve... + cho "And I'm supposed to believe that." ("open", "narrow", "base", "R") + cho "You're practically foaming out of your mouth just looking at me, Sir..." ("soft", "narrow", "angry", "mid") + gen "I'm not...{w} that's just..." ("angry", xpos="far_left", ypos="head") + #if butterbeer_ITEM.owned > 0: + gen "Butterbeer..." ("angry", xpos="far_left", ypos="head") + cho "This is as far as I will go, Sir!" ("annoyed", "narrow", "angry", "mid") + + cho "If you want a bimbo to strip for you, I suggest you call Hermione instead..." ("annoyed", "narrow", "angry", "mid") + pause .5 + + call play_sound("equip") + hide cho_main + $ cho.wear("all") + hide screen cho_cloth_pile + cho "" ("angry", "narrow", "angry", "mid") + pause .8 + + cho "We are done here!" ("angry", "narrow", "angry", "mid") + + # Cho leaves. + call cho_walk(action="leave") + + call bld + gen "She'll do it next time, I'm sure..." ("base", xpos="far_left", ypos="head") + + jump end_cho_strip_event + + +label cc_pf_strip_T2_intro_E2: + cho "" ("upset", "base", "base", "R") + gen "[cho_name], to continue your training where we left off..." ("base", xpos="far_left", ypos="head") + gen "I'd like you to, once again, undress!" ("grin", xpos="far_left", ypos="head") + cho "Of course, Sir." ("annoyed", "base", "angry", "downR") + + call cho_walk("desk", "base") + + cho "Down to my undergarments, [cho_genie_name]?" ("soft", "closed", "base", "mid", xpos="mid", ypos="base", trans=fade) + cho "Or would you like me to take off all of it?" ("soft", "narrow", "base", "mid") + gen "*Ehm*... All of it?" ("base", xpos="far_left", ypos="head") + cho "Very well, Sir." ("soft", "closed", "base", "mid") + gen "(Please don't let this be a trick question.)" ("angry", xpos="far_left", ypos="head") + cho "" ("upset", "narrow", "base", "mid") + pause .4 + + if cho.is_worn("robe"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("robe") + # Remove top. + if cho.is_worn("top"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("robe", "top") + with d3 + pause .5 + + cho "" ("upset", "narrow", "angry", "mid") + call ctc + + cho "I'm a very good trainee, [cho_genie_name]!" ("soft", "narrow", "angry", "mid") + gen "Yes you are!" ("grin", xpos="far_left", ypos="head") + cho "If my trainer requires me to take off my clothing and strip for him..." ("soft", "closed", "base", "mid") + cho "Then I have no other choice but to indulge..." ("soft", "narrow", "base", "R") + cho "I see nothing wrong with that..." ("annoyed", "narrow", "angry", "mid") + pause .4 + + # Remove bottoms. + if cho.is_worn("bottom"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("bottom") + with d3 + pause .5 + + cho "" ("annoyed", "narrow", "base", "mid") + call ctc + + cho "Would you perhaps like me to climb on top of your desk?" ("soft", "narrow", "raised", "mid") + cho "And dance for you like some common harlot?" ("soft", "narrow", "base", "R") + + # You saw Hermione strip before. + if hg_strip.trigger: + gen "If it's not too much trouble..." ("base", xpos="far_left", ypos="head") + cho "Of course not, [cho_genie_name]." ("soft", "closed", "base", "mid") + gen "(I'm having a bit of a deja vu!)" ("angry", xpos="far_left", ypos="head") # In-game font doesn't support special characters. déjà vu! + else: + gen "Yes please!" ("grin", xpos="far_left", ypos="head") + cho "Whatever you say, Sir!" ("soft", "closed", "base", "mid") + cho "Like I said, I'd go to any lengths just to please my trainer..." ("soft", "narrow", "base", "mid") + + # Climbs desk. + call hide_characters + show screen blkfade + with d5 + call play_sound("climb_desk") + pause 1 + + "To your surprise, the athletic petite girl rather playfully climbs on top of your desk." + pause .5 + gen "Nice!" ("grin", xpos="far_left", ypos="head") + pause .2 + + call cho_chibi("stand", "on_desk", "on_desk", flip=False) + hide screen bld1 + hide screen blkfade + with d5 + call ctc + + cho "After all, I promised I'd do anything to win that Quidditch cup..." ("soft", "narrow", "angry", "mid") + cho "If stripping for you is what it takes, then..." ("soft", "base", "angry", "down") + call play_music("sad") + cho "Then..." ("angry", "base", "worried", "down") + cho "I-I'll do it..." ("soft", "narrow", "worried", "down", cheeks="blush") + gen "(Shit. Is she crying?)" ("base", xpos="far_left", ypos="head") + gen "(Can she even cry?)" ("base", xpos="far_left", ypos="head") + gen "Are you alright, girl?" ("base", xpos="far_left", ypos="head") + cho "No.{w} I'm already regretting climbing up here!!!" ("mad", "closed", "worried", "mid") + cho "(What were you thinking, Cho?!)" ("angry", "narrow", "worried", "down", cheeks="blush") + gen "You can come back down if it's too much for yo--" ("base", xpos="far_left", ypos="head") + cho "Shut up!" ("scream", "closed", "angry", "mid", trans=hpunch) # Scream + cho "Can't you see what I'm trying to do here?" ("angry", "narrow", "angry", "mid") + gen "Not really, no." ("base", xpos="far_left", ypos="head") + cho "I-I'm... testing my limits, Sir." ("angry", "narrow", "worried", "down", cheeks="blush") + cho "And I believe I've reached them!" ("mad", "happyCl", "worried", "mid", cheeks="blush") + gen "For real? You are still wearing clothes..." ("base", xpos="far_left", ypos="head") + cho "I thought{w=0.2}, if I could go as far as embarrassing myself in front of my headmaster..." ("soft", "narrow", "worried", "down", cheeks="blush") + cho "Doing the same in front of the school won't feel as bad in comparison." ("annoyed", "narrow", "worried", "down", cheeks="blush") + cho "Sir, I don't think I can do this after all." ("soft", "narrow", "worried", "mid") + cho "Could I get your permission to leave and never come back?" ("angry", "narrow", "worried", "mid") + + menu: + "\"Yes, but take off those clothes first...\"": + call play_music("stop") + cho "Yes! Thank you, Sir!" ("soft", "closed", "worried", "mid", cheeks="blush") + cho "Even after I've given up -- you're still believing in me!" ("soft", "narrow", "worried", "mid", cheeks="blush") + gen "What?{w=0.2} *Ahem* I mean..." ("base", xpos="far_left", ypos="head") + gen "Of course!{w=0.2} I always did!" ("grin", xpos="far_left", ypos="head") + cho "I may not like it. But this is all just part of my training..." ("soft", "base", "worried", "R", cheeks="blush") + gen "*Uhhhh*... Sure..." ("base", xpos="far_left", ypos="head") + call play_music("cho") + cho "It's one of many challenges I have to face before I can call myself a Quidditch champion!" ("soft", "closed", "angry", "mid") + cho "This is just about facing my inner demons, isn't it?" ("soft", "narrow", "angry", "mid") + cho "Overcoming my fears..." ("soft", "narrow", "angry", "R") + cho "Failure, and embarrassment..." ("soft", "closed", "base", "mid") + cho "(Come on Cho, you can do it!!!)" ("horny", "happyCl", "worried", "mid", cheeks="blush") + cho "*Ehm*..." ("horny", "narrow", "worried", "down", cheeks="blush") + cho "What would you like me to do first, [cho_genie_name]?" ("soft", "narrow", "worried", "mid", cheeks="blush") + cho "Remove my bra..." ("soft", "narrow", "base", "mid", cheeks="blush") + cho "Or take off my panties?" ("horny", "narrow", "worried", "down", cheeks="blush") + + "\"Yes, you are dismissed...\"": + $ cho_mood += 6 + call play_music("stop") + cho "What?!" ("soft", "wide", "base", "mid") + cho "But Sir!" ("soft", "base", "worried", "mid") + gen "You can go now..." ("base", xpos="far_left", ypos="head") + cho "You can't do that!" ("scream", "narrow", "angry", "mid", trans=hpunch) + cho "" ("angry", "narrow", "angry", "mid") + gen "Didn't you just beg me to do just that?" ("angry", xpos="far_left", ypos="head") + call play_music("sad") + cho "I begged you to help me win the Quidditch cup!" ("clench", "narrow", "angry", "mid") + cho "And to be my trainer!{w} To be a {b}good{/b} trainer!" ("soft", "narrow", "angry", "mid") + cho "How can I overcome my fear of losing if I can't even do... this!" ("annoyed", "base", "worried", "down", cheeks="blush") + cho "You're supposed to encourage me!{w=0.6} Get me through any challenges I'm confronted with." ("soft", "narrow", "angry", "mid") + gen "Including stripping?" ("base", xpos="far_left", ypos="head") + cho "Including bloody stripping!" ("scream", "closed", "angry", "mid", trans=hpunch) + cho "" ("annoyed", "narrow", "angry", "mid") + gen "To my defence. I got some mixed messages from you earlier..." ("base", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "narrow", "angry", "R") # Annoyed + call play_music("stop") + gen "Very well then..." ("base", xpos="far_left", ypos="head") + gen "Take off your clothes, [cho_name]." ("base", xpos="far_left", ypos="head") + cho "Yes, Sir!" ("soft", "closed", "base", "mid") + cho "Would you like me to take off my bra first?" ("soft", "narrow", "angry", "mid") + cho "Or pull down my panties so you can get a nice look at my lower half?" ("soft", "narrow", "base", "mid") + + menu: + gen "First, I'd like you to..." ("base", xpos="far_left", ypos="head") + "\"Show me those big, juicy \"Quaffles\" of yours!\"": + call play_music("cho") + cho "*uhhh*..." ("upset", "wide", "base", "mid", cheeks="blush") + gen "Those two mean, hearty \"bludgers\"!" ("grin", xpos="far_left", ypos="head") + cho "Sir? Could it be that you are talking about my breasts?" ("soft", "narrow", "worried", "mid", cheeks="heavy_blush") + gen "Yes indeed! Very good." ("base", xpos="far_left", ypos="head") + gen "I was hoping you would eventually catch on." ("base", xpos="far_left", ypos="head") + gen "Also because I ran out of balls to compare them to..." ("base", xpos="far_left", ypos="head") + cho "Promise me that you won't laugh when I show you my..." ("soft", "narrow", "worried", "R", cheeks="blush") + cho "\"Bludgers\"!" ("mad", "happyCl", "worried", "mid", cheeks="heavy_blush") + gen "Why would I ever laugh at a pretty girl like you, Miss Chang?" ("base", xpos="far_left", ypos="head") + cho "Because they...{w} aren't as big as Hermione's..." ("soft", "narrow", "worried", "downR", cheeks="blush") + cho "Hers are more closer to {i}Quaffles{/i} than mine..." ("soft", "base", "worried", "mid", cheeks="blush") + gen "And there will always be a pair of \"Beaters\" that prefer to play with your...{w} balls." ("base", xpos="far_left", ypos="head") + cho "Only two?..." ("upset", "base", "worried", "downR", cheeks="blush") + gen "Don't forget to count those lucky enough to get hit by those \"bludgers\"!" ("grin", xpos="far_left", ypos="head") + cho "" ("upset", "base", "raised", "mid") + gen "Speaking of which..." ("base", xpos="far_left", ypos="head") + cho "Yes?" ("soft", "base", "worried", "mid", cheeks="blush") + gen "I'd like you to hit me with them!" ("angry", xpos="far_left", ypos="head") + cho "With my breasts?" ("open", "wide", "base", "mid", cheeks="blush") + gen "Yes! Hit me full force!{w} Take off that bra!" ("grin", xpos="far_left", ypos="head") + cho "*Ugh!*..." ("mad", "narrow", "base", "down", cheeks="blush") + cho "{size=-4}I can't believe I'm actually going to do this!{/size}" ("mad", "happyCl", "worried", "mid", cheeks="blush") + cho "" ("soft", "narrow", "worried", "mid", cheeks="blush") + pause .4 + + # Remove bra. + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("bra") + with d3 + pause .8 + + cho "" ("horny", "narrow", "worried", "mid", cheeks="heavy_blush") + call ctc + + gen "Simply wonderful, Miss Chang." ("angry", xpos="far_left", ypos="head") + gen "Those are some stellar breasts you got there." ("base", xpos="far_left", ypos="head") + cho "(...)" ("base", "narrow", "worried", "downR", cheeks="blush") + gen "Some \"outstanding\" boobies!" ("angry", xpos="far_left", ypos="head") + cho "..." ("annoyed", "narrow", "base", "mid", cheeks="blush") + gen "Would you mind if I smack them?" ("base", xpos="far_left", ypos="head") + cho "What?! Of course I would mind!" ("soft", "wide", "base", "mid", cheeks="heavy_blush") + gen "I just want to beat them around a bit..." ("base", xpos="far_left", ypos="head") + cho "" ("annoyed", "narrow", "angry", "mid", cheeks="blush") + gen "After all, they are two soft, meaty \"bludgers\"!" ("grin", xpos="far_left", ypos="head") + gen "And I'm a \"beater\"!" ("grin", xpos="far_left", ypos="head") + + $ genie_quid_position = "beater" + + cho "You are childish.{w} That's what you are..." ("soft", "narrow", "angry", "mid") + gen "You're the one playing games." ("base", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "narrow", "angry", "mid") + cho "Fine...{w} But Only once!" ("soft", "narrow", "angry", "R") + cho "Twice...{w} maybe..." ("mad", "narrow", "worried", "downR", cheeks="blush") + gen "That's a hundred percent more than I had hoped for!" ("grin", xpos="far_left", ypos="head") + + call slap_her + cho "*Ouch!*" ("angry", "wide", "base", "mid", cheeks="blush") + call slap_her + call slap_her + call slap_her + cho "Stop it!" ("scream", "happyCl", "worried", "mid", cheeks="blush") + cho "That was more than twice!" ("soft", "narrow", "angry", "mid", cheeks="blush") + gen "I stopped counting halfway through..." ("base", xpos="far_left", ypos="head") + + "\"Let me catch sight of that 'Snitch!'\"": + call play_music("cho") + cho "Don't you mean \"Snatch,\" Sir?" ("annoyed", "narrow", "angry", "mid") + gen "Potato, Potato!" ("grin", xpos="far_left", ypos="head") + cho "Your motives were nothing but for your own perverted gains, weren't they? From the very start." ("soft", "narrow", "base", "mid") # Annoyed + gen "More or less..." ("base", xpos="far_left", ypos="head") + gen "However, I never lied about wanting to help you win the Quidditch cup!" ("base", xpos="far_left", ypos="head") + gen "(Since I've bet a fortune on it...)" ("angry", xpos="far_left", ypos="head") + gen "And I wouldn't be able to call myself a man if I was lying!" ("base", xpos="far_left", ypos="head") + cho "And you'd be called a dead man, if you try to trick me!" ("clench", "narrow", "angry", "mid") + gen "Well technically I'm a geni--" ("base", xpos="far_left", ypos="head") + call play_sound("kick") + cho "" ("annoyed", "narrow", "angry", "mid", trans=vpunch) + gen "*Aaaaah*!" ("angry", xpos="far_left", ypos="head") + call nar(">Cho does a daunting stomp on your desk...") + cho "Don't think for a second I wouldn't do it! After all of this!" ("scream", "narrow", "angry", "mid") + cho "" ("angry", "narrow", "angry", "mid") + call play_sound("gulp") + gen "*Gulp*" ("angry", xpos="far_left", ypos="head") + gen "Yes, Ma'am." ("base", xpos="far_left", ypos="head") + cho "(...)" ("upset", "closed", "base", "mid") + cho "" ("upset", "narrow", "worried", "down", cheeks="blush") + pause .4 + + # Remove panties. + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("panties") + with d3 + pause .5 + + cho "" ("horny", "narrow", "worried", "mid", cheeks="heavy_blush") + call ctc + + cho "Happy, Sir?" ("soft", "narrow", "worried", "mid", cheeks="blush") + gen "Very." ("base", xpos="far_left", ypos="head") + gen "Finally I get the appeal of Quidditch." ("grin", xpos="far_left", ypos="head") + cho "Really?" ("soft", "base", "raised", "mid") + gen "Yes..." ("base", xpos="far_left", ypos="head") + gen "You see, I think I've become quite a bit of a seeker myself!" ("grin", xpos="far_left", ypos="head") + + $ genie_quid_position = "seeker" + + cho "(...)" ("annoyed", "base", "base", "mid") + gen "And I believe I've just found my very own golden snatch!" ("base", xpos="far_left", ypos="head") + cho "" ("annoyed", "narrow", "angry", "mid", cheeks="blush") + gen "You should consider yourself lucky, Miss Chang." ("base", xpos="far_left", ypos="head") + cho "Why?..." ("soft", "narrow", "raised", "mid") + gen "It's very pretty." ("grin", xpos="far_left", ypos="head") + cho "*Ugh*..." ("mad", "narrow", "base", "down", cheeks="heavy_blush") + + + cho "Sir, will that be all then?" ("annoyed", "narrow", "angry", "mid", cheeks="blush") + cho "May I go now?" ("soft", "narrow", "angry", "R") + gen "Haven't you forgotten something?" ("base", xpos="far_left", ypos="head") + cho "Didn't I do enough for you already?" ("angry", "narrow", "angry", "mid") + gen "For me, you did more than enough!{w=0.6} I'm more than pleased with what you've shown me..." ("grin", xpos="far_left", ypos="head") + cho "*Ugh*..." ("disgust", "narrow", "base", "down", cheeks="blush") # Disgusted + gen "But, wasn't your goal earlier to undress entirely?" ("base", xpos="far_left", ypos="head") + gen "To prove to yourself that you {b}could{/b} do it?" ("base", xpos="far_left", ypos="head") + cho "{size=-4}I hoped you'd just forget about that...{/size}" ("mad", "narrow", "worried", "down", cheeks="blush") # Small text. + gen "Well, I didn't!" ("grin", xpos="far_left", ypos="head") + gen "I'm here to help you mature -- and boost your confidence." ("base", xpos="far_left", ypos="head") + gen "A body like yours is nothing you need to hide away!" ("base", xpos="far_left", ypos="head") + cho "" ("base", "narrow", "worried", "mid", cheeks="blush") + gen "Don't you think so too?{w} After all the work you put into it?" ("base", xpos="far_left", ypos="head") + gen "It should be celebrated! And seen by everyone!" ("angry", xpos="far_left", ypos="head") + cho "You're making me blush, [cho_genie_name]..." ("horny", "narrow", "worried", "downR", cheeks="heavy_blush") + gen "You can do it, [cho_name]! Show me the goods!" ("grin", xpos="far_left", ypos="head") + cho "Yes, Sir!" ("angry", "closed", "worried", "mid", cheeks="blush") + cho "" ("base", "narrow", "worried", "mid", cheeks="blush") + pause .4 + + # Cho strips completely. + $ renpy.sound.play("sounds/cloth_sound3.ogg") + hide cho_main + $ cho.strip("clothes") + pause 1.2 + call cho_chibi("stand", "on_desk", "on_desk", flip=True) + pause .4 + $ renpy.sound.play("sounds/cloth_sound4.ogg") + show screen cho_cloth_pile + pause .6 + call cho_chibi("stand", "on_desk", "on_desk", flip=False) + cho "" (trans=d3) + pause .5 + + cho "" ("horny", "narrow", "worried", "mid", cheeks="heavy_blush") + call ctc + + gen "See, that wasn't very hard was it?" ("base", xpos="far_left", ypos="head") + cho "No..." ("soft", "narrow", "base", "down", cheeks="blush") + cho "No! You're right!" ("smile", "base", "base", "mid") + gen "And you have a very beautiful body -- if I might add." ("base", xpos="far_left", ypos="head") + cho "Thank you, Sir." ("soft", "narrow", "worried", "mid") + gen "I can see why Hermione is so jealous." ("base", xpos="far_left", ypos="head") + cho "" ("upset", "base", "base", "mid", cheeks="blush") + pause .8 + cho "She is?" ("scream", "wide", "base", "mid", cheeks="blush", trans=vpunch) + cho "" ("horny", "base", "base", "down", cheeks="heavy_blush") + gen "Look who perked up all of a sudden." ("base", xpos="far_left", ypos="head") + cho "She should be jealous!{w=0.6} These thighs could snap a broom in half if I tried hard enough." ("smile", "narrow", "angry", "mid", cheeks="blush") + call ctc + + call play_sound("gulp") + gen "*Gulp!*" ("angry", xpos="far_left", ypos="head") + gen "I don't doubt it." ("base", xpos="far_left", ypos="head") + + cho "Thank you, [cho_genie_name]." ("base", "closed", "base", "mid") + gen "For what?" ("base", xpos="far_left", ypos="head") + cho "For teaching me." ("soft", "narrow", "worried", "downR") + cho "I couldn't have imagined showing myself off like this before... but." ("horny", "narrow", "worried", "downR", cheeks="blush") + gen "Yes?" ("base", xpos="far_left", ypos="head") + cho "Well, your methods have clearly worked so far..." ("soft", "narrow", "base", "R") + cho "And I feel more confident than ever!" ("soft", "wide", "base", "mid") + gen "That's great news, and hey..." ("base", xpos="far_left", ypos="head") + gen "If distracting doesn't work, you could just crush your opponents with those thighs of yours." ("base", xpos="far_left", ypos="head") + cho "That's true..." ("smile", "narrow", "base", "mid") + call hide_characters + hide screen bld1 + show screen blkfade + with d5 + + call play_sound("climb_desk") + call cho_chibi("stand", "desk", "base", flip=False) + + pause 1 + + hide screen blkfade + with d5 + pause .2 + + cho "Will this be all then, Sir?" ("soft", "base", "base", "R") + gen "Yes Miss Chang, great work today..." ("base", xpos="far_left", ypos="head") + gen "I doubt you'll have any problems distracting anyone with a body like that." ("base", xpos="far_left", ypos="head") + gen "You're dismissed." ("base", xpos="far_left", ypos="head") + cho "Thank you, [cho_genie_name]." ("base", "happyCl", "base", "mid") + call hide_characters + hide screen bld1 + with d3 + pause .1 + + call cho_walk("door", "base") + + call bld + gen "Miss Chang." ("base", xpos="far_left", ypos="head") + hide screen bld1 + with d3 + pause .3 + + call cho_chibi("stand", "door", "base", flip=False) + with d3 + pause .2 + + cho "Yes?" ("soft", "base", "raised", "mid", ypos="head", flip=False) + gen "Aren't you forgetting about something?" ("base", xpos="far_left", ypos="head") + cho "Sir?" ("soft", "narrow", "base", "mid") + gen "You're still naked...{w} I wouldn't go out there if I were you..." ("base", xpos="far_left", ypos="head") + cho "Oh, yes of course!" ("soft", "wide", "base", "mid", cheeks="blush", trans=hpunch) + + call cho_walk("desk", "base") + pause .5 + call chibi_emote("thought", "cho") + pause .8 + + # Cho puts clothes back on. + call play_sound("equip") + hide cho_main + $ cho.wear("all") + hide screen cho_cloth_pile + pause .8 + + cho "(...)" ("disgust", "narrow", "worried", "down", cheeks="blush", xpos="right", ypos="base") + cho "*Uhm*..." ("soft", "narrow", "worried", "mid", cheeks="blush") + if game.daytime: + cho "Have a good day..." ("soft", "base", "base", "R", cheeks="blush") + else: + cho "Have a good night..." ("soft", "base", "base", "R", cheeks="blush") + + # Cho leaves. + call cho_walk(action="leave") + + call bld + gen "She's so cute..." ("base", xpos="far_left", ypos="head") + gen "And sexy!" ("grin", xpos="far_left", ypos="head") + gen "But also a bit intimidating..." ("base", xpos="far_left", ypos="head") + + jump end_cho_strip_event + +label cc_pf_strip_T2_intro_E3: + gen "[cho_name], how would you like to do another striptease for me?" ("grin", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "narrow", "angry", "mid") + gen "You did such a phenomenal job last time!" ("grin", xpos="far_left", ypos="head") + cho "Another strip show?" ("soft", "narrow", "angry", "R") + gen "Yes Indeed! Come a bit closer..." ("grin", xpos="far_left", ypos="head") + cho "(...)" ("angry", "narrow", "base", "down") + + call cho_walk("desk", "base") + + cho "Sir, these favours... You said before that they're a part of my training..." ("soft", "narrow", "angry", "mid", xpos="mid", ypos="base", trans=fade) + gen "Yes indeed, a very integral part in fact." ("base", xpos="far_left", ypos="head") + cho "But, they're not the only type of training I'll be receiving, right?" ("annoyed", "narrow", "angry", "mid") + gen "Expecting me to blow on a whistle and watch you run laps around the pitch all day?" ("base", xpos="far_left", ypos="head") + gen "You're already a good athlete, if you want to get an edge, then what is required is approaching it differently." ("base", xpos="far_left", ypos="head") + gen "My job is to figure out every possible angle, and which would result in you winning." ("base", xpos="far_left", ypos="head") + cho "And seeing me strip is part of that?" ("annoyed", "narrow", "angry", "mid") + gen "Your sexy and muscular physique is indeed a very useful asset in boosting your chance of success, yes." ("base", xpos="far_left", ypos="head") + cho "So, the purpose of these favours were never about me repaying you for training me? It's about me learning how to whore myself out?" ("annoyed", "narrow", "angry", "mid") + gen "Can't it be both?" ("base", xpos="far_left", ypos="head") + gen "I get to partake in that hot bod of yours and in return I teach you how to successfully use it on the pitch." ("base", xpos="far_left", ypos="head") + gen "You've already seen how effective it's been. That Hufflepuffer could barely fly once the broom wasn't the only hard thing between--" ("base", xpos="far_left", ypos="head") + cho "I get the point." ("open", "narrow", "angry", "mid") + cho "But what I don't get is why you didn't just tell me this was the goal from the start, I never imagined that my training would involve...{w} this!" ("annoyed", "base", "worried", "down") + gen "And not give you the opportunity to figure it out for yourself?!" ("base", xpos="far_left", ypos="head") + gen "If I had told you, you would've never accepted my help to begin with, and you'd be sulking in your dorm and be out of the running for the cup by now." ("base", xpos="far_left", ypos="head") + cho "You don't know that!" ("annoyed", "narrow", "worried", "downR") + gen "Or punch a pillow, whatever it is you do when you're mad." ("base", xpos="far_left", ypos="head") + cho "..." ("annoyed", "narrow", "worried", "mid") + gen "Now, unless there are any more objections, it's time we get back to your training." ("base", xpos="far_left", ypos="head") + cho "*Hmph*... I can't believe this could even be considered \"training\"." ("annoyed", "narrow", "angry", "mid") + gen "Well, it is a trainer after all..." + cho "What?" ("annoyed", "narrow", "angry", "mid") + gen "I'll consider incorporating some more physical training for you in the future." ("base", xpos="far_left", ypos="head") + gen "Now, less talking, more stripping." ("base", xpos="far_left", ypos="head") + cho "..." ("annoyed", "narrow", "angry", "mid") + pause .8 + + # Remove top. + if cho.is_worn("top"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("robe", "top") + with d3 + pause .5 + + cho "" ("quiver", "narrow", "worried", "R", cheeks="blush") + call ctc + + cho "Does Granger do these sorts of things for you too?" ("soft", "base", "worried", "mid", cheeks="blush") + + # Remove skirt. + if cho.is_worn("bottom"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + hide cho_main + $ cho.strip("bottom") + pause 1.2 + $ renpy.sound.play("sounds/cloth_sound4.ogg") + show screen cho_cloth_pile + pause .4 + cho "" (trans=d3) + pause .5 + cho "" ("horny", "base", "worried", "mid", cheeks="heavy_blush") + call ctc + + gen "She does a lot of things for me. You need to be more specific!" ("grin", xpos="far_left", ypos="head") + cho "I meant buying \"sexual favours.\"{w} Doing tasks that are, let's say, a little audacious..." ("soft", "narrow", "worried", "downR", cheeks="blush") + gen "Are you talking about stripping, girl?" ("base", xpos="far_left", ypos="head") + + cho "Yes, Sir..." ("quiver", "narrow", "worried", "downR", cheeks="blush") + pause .4 + + # Check if Hermione has already stripped for you. + if not hg_strip.trigger: # Triggers in hg_pf_strip_T3_intro_E2. This check needs to always be no earlier here to make sure Luna is also unlocked. + if cc_pf_strip_T2_E3_failed: + jump cc_pf_strip_T2_E3_fail_repeat + else: + jump cc_pf_strip_T2_E3_fail + + # After you got Hermione to strip. + + gen "She does indeed." ("base", xpos="far_left", ypos="head") + cho "Really?!{w} You got that cow to take off her clothes?" ("soft", "wide", "base", "mid") + cho "Did you get any proof?" ("soft", "base", "worried", "mid") + gen "What?{w} Why would I--" ("base", xpos="far_left", ypos="head") + cho "To blackmail her!{w} To prove that she's in on this whole \"favour trading\" business too..." ("open", "narrow", "angry", "mid") + gen "We had an eye witness, for what it's worth..." ("base", xpos="far_left", ypos="head") + cho "Seriously?! Who was it?" ("smile", "base", "base", "mid") + gen "Snape..." ("base", xpos="far_left", ypos="head") + cho "What?! Professor Snape?" ("scream", "wide", "base", "mid", trans=hpunch) + cho "" ("smile", "wide", "base", "mid") + gen "He sort of just walked in on the action.{w} After all, the door wasn't locked..." ("base", xpos="far_left", ypos="head") + cho "That's too funny! I wish I could have been there!" ("smile", "base", "base", "R") + gen "She was dancing on my desk, right here, butt naked!" ("grin", xpos="far_left", ypos="head") + cho "That sounds sooo embarrassing!" ("soft", "narrow", "worried", "up", cheeks="blush") + gen "As far as I know, that door isn't locked right now either..." ("base", xpos="far_left", ypos="head") + gen "Aren't you scared that Snape might walk in on you too?" ("base", xpos="far_left", ypos="head") + cho "*Hmm*.." ("annoyed", "base", "base", "R") + + call hide_characters + show screen blkfade + with d3 + call play_sound("desk") + pause 3 + + ">You watch as Cho slowly climbs onto your desk..." + + call cho_chibi("stand", "on_desk", "on_desk") + hide screen bld1 + hide screen blkfade + with d3 + pause .8 + + cho "I'm not scared at all, Sir!" ("smile", "narrow", "angry", "mid") + cho "" ("horny", "narrow", "angry", "mid") + pause .4 + + # Remove bra. + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("bra") + with d3 + pause .5 + + cho "" ("horny", "narrow", "angry", "mid") + call ctc + + cho "It's just Professor Snape, after all..." ("soft", "narrow", "base", "R") + cho "Everybody knows that he's a creep! Nobody would believe a word he says." ("open", "base", "angry", "down") + gen "So...{w} what if it's not Snape, but some other teacher that makes their way in here?" ("base", xpos="far_left", ypos="head") + cho "*Huh*?{w=0.5} Oh no!" ("soft", "wide", "base", "mid") + cho "For a second I forgot we even had other teachers at this school!" ("open", "wide", "worried", "L", cheeks="blush") + cho "What if Professor McGonagall stumbles in here while...{w} while I--" ("angry", "happyCl", "worried", "mid", cheeks="heavy_blush") + + + call hide_characters + show screen blkfade + with d3 + pause 1.0 + + $ renpy.sound.play("sounds/jump_shoes.ogg") + call cho_chibi("stand", "desk", "base", flip=True) + hide screen bld1 + hide screen blkfade + with d3 + call teleport(position="cho", effect=False) + pause .5 + + call bld + gen "Don't worry. That won't happen." ("base", xpos="far_left", ypos="head") + call cho_chibi("stand", "desk", "base") + with d3 + pause .5 + + cho "Are you sure, Sir?" ("soft", "narrow", "worried", "mid", cheeks="blush") + gen "You have my word..." ("base", xpos="far_left", ypos="head") + cho "O-{w=0.2}okay..." ("soft", "narrow", "worried", "R", cheeks="blush") + gen "Now then, Miss Chang!{w} It's time for the grand finale..." ("base", xpos="far_left", ypos="head") + gen "Take it all off!" ("grin", xpos="far_left", ypos="head") + gen "I want to see you naked..." ("grin", xpos="far_left", ypos="head") + cho "(...)" ("annoyed", "base", "worried", "down", cheeks="blush") + cho "Very well, Sir." ("base", "base", "base", "mid") + pause .4 + + # Remove panties + everything else. + $ renpy.sound.play("sounds/cloth_sound3.ogg") + hide cho_main + $ cho.strip("clothes") + pause 1.2 + $ renpy.sound.play("sounds/cloth_sound4.ogg") + show screen cho_cloth_pile + pause .6 + + cho "" ("horny", "narrow", "base", "down", cheeks="blush") + call ctc + + gen "I've got to say, once again I'm very impressed by you!" ("angry", xpos="far_left", ypos="head") + cho "Glad to hear it, [cho_genie_name]." ("smile", "narrow", "base", "mid") + cho "Catch!" ("base", "base", "base", "L") + call nar(">Cho throws her panties onto your desk.") + cho "You can keep them, for now..." ("soft", "narrow", "base", "R") + gen "I appreciate the notion!" ("grin", xpos="far_left", ypos="head") + cho "" ("base", "narrow", "base", "mid") + pause .8 + + # Panties acquired message! + call give_reward(">You have acquired Cho's panties!", "interface/icons/panties.webp") + $ has_cho_panties = True + + gen "Well then, Miss Chang..." ("base", xpos="far_left", ypos="head") + gen "You may leave now.{w} Dismissed." ("base", xpos="far_left", ypos="head") + cho "Wait Sir!{w} I can't leave just yet!" ("open", "wide", "base", "mid") + gen "Why not? Don't tell me you want points now after all..." ("base", xpos="far_left", ypos="head") + cho "No Sir, but...{w} I don't believe we are done here..." ("mad", "base", "worried", "downR", cheeks="blush") + gen "We aren't?" ("grin", xpos="far_left", ypos="head") + cho "May I request something of you, Sir?" ("soft", "narrow", "worried", "mid", cheeks="blush") + gen "Yes?{w} What is it?" ("base", xpos="far_left", ypos="head") + + # Cho asks you to summon Hermione. + cho "Could you please..." ("soft", "base", "worried", "downR", cheeks="blush") + cho "*Ehm*..." ("quiver", "narrow", "worried", "downR", cheeks="heavy_blush") + cho "Could you please summon Hermione?" ("soft", "narrow", "worried", "mid", cheeks="heavy_blush") + + with hpunch + gen "What?" ("angry", xpos="far_left", ypos="head") + cho "It's time someone throws \"high and mighty\" Granger off her high horse!" ("open", "narrow", "angry", "mid") + cho "She's been a pain in my butt for years now..." ("angry", "narrow", "angry", "downR") + cho "This is going to be my revenge!" ("soft", "narrow", "angry", "mid") + gen "Are you sure that this is such a good idea? Aren't you scared she'll tattle about it?" ("base", xpos="far_left", ypos="head") + cho "No.{w} Granger is clever..." ("soft", "closed", "base", "mid") + cho "She could destroy my reputation, sure..." ("soft", "base", "base", "R") + cho "But, should that happen, I now have the means to take her down with me!" ("base", "narrow", "angry", "mid") + cho "I'm not the only one stripping for you, after all." ("soft", "narrow", "base", "mid") + gen "I suppose you're right..." ("base", xpos="far_left", ypos="head") + cho "I can't believe how depraved Granger actually is..." ("horny", "narrow", "angry", "down", cheeks="blush") + cho "Stripping for her headmaster.{w=0.6} What a slut..." ("soft", "narrow", "angry", "mid", cheeks="blush") + gen "Aren't you doing exactly the same?" ("base", xpos="far_left", ypos="head") + cho "Yes, but I'm not a whore stripping for points, unlike her!" ("open", "closed", "base", "mid") + gen "Still makes you a slut..." ("base", xpos="far_left", ypos="head") + cho "I'm untouchable! I'll show that {b}bitch{/b} she can't mess with me!" ("angry", "narrow", "angry", "R") + cho "This is gonna be so much fun!" ("smile", "narrow", "angry", "mid") + + stop music fadeout 3.0 + call cho_walk(570, "base") + pause 2.0 + + cho "Call her already!" ("annoyed", "narrow", "angry", "R", flip=True, trans=d5) + gen "I'm on it..." ("base", xpos="far_left", ypos="head") + + hide screen bld1 + show screen blkfade + with d3 + hide cho_main + pause 1.0 + hide screen blkfade + with d3 + + call cc_pf_strip_T2_E3_hermione + + jump end_cho_strip_event + +label cc_pf_strip_T2_E3_repeat: + gen "[cho_name], why don't you come a bit closer?" ("base", xpos="far_left", ypos="head") + cho "Of course, [cho_genie_name]..." ("base", "narrow", "base", "mid") + + call cho_walk("desk", "base") + + cho "" ("base", "base", "base", "R", xpos="mid", ypos="base", trans=fade) + call ctc + + gen "I'm in the mood for another striptease!" ("grin", xpos="far_left", ypos="head") + cho "You are, are you?" ("soft", "base", "raised", "downR") + + # Remove robe. + if cho.is_worn("robe"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("robe") + with d3 + pause .5 + + cho "Good, because so am I!" ("base", "narrow", "angry", "mid") + cho "" ("base", "narrow", "angry", "mid") + + #Remove top. + if cho.is_worn("top"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("top") + cho "*Hmm*... You better be enjoying this, Sir." ("soft", "closed", "base", "mid") + with d3 + pause .5 + + #Remove bottoms. + if cho.is_worn("bottom"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("bottom") + with d3 + pause .5 + gen "*Argh!* You little minx!" ("angry", xpos="far_left", ypos="head") + + cho "Are we going to invite Granger again?" ("soft", "narrow", "raised", "down") + cho "I would like to have some fun with her..." ("smile", "narrow", "angry", "mid") + pause .4 + + # Remove bra. (she is wearing underwear at this level in any case) + if cho.is_worn("bra"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("bra") + with d3 + pause .5 + + gen "The more, the merrier!" ("grin", xpos="far_left", ypos="head") + cho "" ("base", "narrow", "angry", "mid") + pause .4 + + # Remove panties + all else. + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("clothes") + hide cho_main + $ cho.strip("clothes") + pause 1.2 + $ renpy.sound.play("sounds/cloth_sound4.ogg") + show screen cho_cloth_pile + pause .6 + cho "" (trans=d3) + call ctc + + cho "Catch, [cho_genie_name]!" ("soft", "base", "base", "mid") + call nar(">Cho throws her panties at you.") + + # Panties acquired message! + call give_reward(">You have acquired Cho's panties!", "interface/icons/panties.webp") + $ has_cho_panties = True + + gen "Nice!" ("grin", xpos="far_left", ypos="head") + cho "I'd like to have them back after this, mind you." ("soft", "base", "raised", "R") + gen "Of course..." ("base", xpos="far_left", ypos="head") + cho "Anything else you'd like, Sir?" ("base", "base", "base", "mid") + + $ d_flag_01 = False # Cho on desk flag for this event + + menu: + "\"Hop on my desk!\"": + $ d_flag_01 = True + + cho "Good idea, [cho_genie_name]!" ("base", "happyCl", "base", "mid") + call hide_characters + show screen blkfade + with d3 + call play_sound("desk") + pause 2 + + call cho_chibi("stand", "on_desk", "on_desk", flip=False) + hide screen bld1 + hide screen blkfade + with d3 + pause 1 + + cho "How is the view down there, Sir?" ("base", "narrow", "base", "down") + gen "Couldn't be any better!" ("grin", xpos="far_left", ypos="head") + + call hide_characters + hide screen bld1 + with d3 + pause .2 + + call cho_chibi("stand", "on_desk", "on_desk", flip=True) # Facing the door. + with d3 + pause .8 + cho "Now, if you don't mind, Sir..." ("soft", "base", "base", "R", xpos="mid", ypos="base", flip=True) + cho "I'd like you to call that Gryffindor slut to your office!" ("soft", "base", "base", "L") + + "\"Let Granger have a good look at you!\"": + cho "I'll make sure of it, Sir!" ("soft", "narrow", "angry", "mid") + + call cho_walk(570, "base") + cho "Alright, you can call her now." ("soft", "base", "base", "R", xpos="mid", ypos="base", flip=True) + + + gen "On it!" ("grin", xpos="far_left", ypos="head") + pause .8 + cho "(...)" ("annoyed", "narrow", "angry", "L") + gen "(...)" ("base", xpos="far_left", ypos="head") + + call hide_characters + hide screen bld1 + with d3 + pause .5 + + call cc_pf_strip_T2_E3_hermione_repeat + + jump end_cho_strip_event + +label cc_pf_strip_T2_E3_fail: + # Cho demands that you get Hermione to strip, so Cho has something to blackmail her should anything happen. + # Cho gets dressed again and storms off. + + $ cc_pf_strip_T2_E3_failed = True + + gen "Actually, she doesn't..." ("base", xpos="far_left", ypos="head") + cho "What? But I thought she'd--" ("soft", "wide", "base", "mid") + cho "Why do you ask me to do these favours, and not Granger?" ("open", "narrow", "angry", "mid", trans=hpunch) + gen "Let's just say, she isn't as progressive as you...{w} yet." ("base", xpos="far_left", ypos="head") + cho "You haven't even seen her naked?" ("angry", "base", "base", "mid") + cho "What favours are you even buying from her?" ("open", "base", "angry", "mid") + gen "Just chit-chats, mostly..." ("base", xpos="far_left", ypos="head") + cho "Make her strip too!" ("clench", "narrow", "angry", "mid") + gen "It's not that easy, girl!" ("angry", xpos="far_left", ypos="head") + cho "Then get on with it!" ("angry", "closed", "angry", "mid") + cho "What's the worst that could happen?" ("soft", "narrow", "angry", "R") + gen "She could report me, and I'd get kicked out of this school most likely." ("base", xpos="far_left", ypos="head") + gen "She's reported me to that ministry before..." ("base", xpos="far_left", ypos="head") + cho "The \"Ministry of Magic\"?" ("open", "base", "raised", "mid") + cho "If they were to regulate the school rules more strictly, my chance of winning the Quidditch cup would be back down to zero!" ("angry", "wide", "worried", "mid", cheeks="blush") + cho "And if Granger ever was to find out about me stripping for our headmaster, it would mean the end of my Quidditch career for sure!" ("mad", "base", "worried", "downR", cheeks="blush") + gen "So? What do you suggest we do?" ("base", xpos="far_left", ypos="head") + cho "Isn't it obvious?! Ask her to do more advanced favours!" ("soft", "narrow", "angry", "mid") + cho "If I could get a hold of something to blackmail her with, she'd never dare to report to the ministry!" ("clench", "narrow", "angry", "R") + gen "That doesn't sound too bad of an idea..." ("base", xpos="far_left", ypos="head") + cho "Until then, don't expect me to undress for you..." ("soft", "narrow", "angry", "mid") + gen "(Bollocks...)" ("base", xpos="far_left", ypos="head") + cho "" ("annoyed", "closed", "angry", "mid") + pause .5 + + # call play_sound("equip") #The player could technically have taken her top and bottoms off in wardrobe (Unless we change things) + $ cho.wear("all") + hide screen cho_cloth_pile + cho "" ("annoyed", "narrow", "angry", "mid") + pause .8 + + cho "Good day, Sir!" ("soft", "narrow", "angry", "mid") + + # Cho leaves. + call cho_walk(action="leave") + + # Event failed, no progress. + $ cc_pf_strip.fail() + jump end_cho_event + +label cc_pf_strip_T2_E3_fail_repeat: + gen "So, how about that striptease then?" ("base", xpos="far_left", ypos="head") + cho "Oh, already?" ("open", "base", "base", "mid") + cho "I didn't think you'd get her to do it so soon." ("smile", "narrow", "base", "R") + + call cho_walk("desk", "base") + + # Remove top. + if cho.is_worn("top", "robe"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ cho.strip("robe", "top") + with d3 + pause .5 + + gen "Her to do--{w=0.2} I mean, of course, Work smart, not when you're hard and all that..." ("base", xpos="far_left", ypos="head") + + # Remove skirt. + if cho.is_worn("bottom"): + $ renpy.sound.play("sounds/cloth_sound3.ogg") + hide cho_main + $ cho.strip("bottom") + pause 1.2 + $ renpy.sound.play("sounds/cloth_sound4.ogg") + show screen cho_cloth_pile + pause .4 + cho "" (trans=d3) + pause .5 + cho "" ("horny", "base", "worried", "mid", cheeks="heavy_blush") + call ctc + + cho "I knew she was just putting up a front..." ("smile", "base", "base", "R") + cho "I bet she shaves down there, just like everyone else..." ("open", "closed", "base", "mid") + gen "Yeah, probably." ("base", xpos="far_left", ypos="head") + cho "Wait, what do you mean \"probably\", did Granger strip for you or not?!" ("open", "narrow", "angry", "mid") + gen "About that..." ("base", xpos="far_left", ypos="head") + cho "Wait, she didn't?!" ("clench", "narrow", "angry", "mid") + cho "Then why are you asking me to do this again?" ("angry", "narrow", "angry", "mid") + gen "Come on, just pop out a titty or something!" ("base", xpos="far_left", ypos="head") + cho "No!" + + # call play_sound("equip") #The player could technically have taken her top and bottoms off in wardrobe (Unless we change things) + $ cho.wear("all") + hide screen cho_cloth_pile + cho "" ("annoyed", "narrow", "angry", "mid") + pause .8 + + cho "I don't want Granger to report me to the stupid ministry, so unless you get her to take her clothes off--" ("soft", "narrow", "angry", "R") + cho "I won't be \"poppin\" any titties." ("open", "narrow", "angry", "mid") + + # Cho leaves. + call cho_walk(action="leave") + + # Event failed, no progress. + $ cc_pf_strip.fail() + jump end_cho_event + diff --git a/game/scripts/characters/cho/events/favors/inspect_her_body_tier2_hermione.rpy b/game/scripts/characters/cho/events/favors/inspect_her_body_tier2_hermione.rpy new file mode 100644 index 00000000..f8e121c3 --- /dev/null +++ b/game/scripts/characters/cho/events/favors/inspect_her_body_tier2_hermione.rpy @@ -0,0 +1,436 @@ + +label cc_pf_strip_T2_E3_hermione: + + # Equip Hermione default clothing. + $ her_outfit_last.save() # Store current outfit. + $ hermione.equip(her_outfit_default) #Equip Hermione default clothing. + + # Summon Hermione. + call play_sound("door") + call her_chibi("stand", "door", "base") + with d3 + pause .5 + + her "You wanted to see me, Sir?" ("soft", "closed", "base", "mid", xpos="base", ypos="base", flip=False, trans=d3) + + her "...{w=0.4}{nw}" ("soft", "base", "worried", "L") + her "...{fast}Cho?!" ("clench", "wide", "worried", "shocked") + + play music "music/deadly-roulette-by-kevin-macleod.ogg" fadein 1 fadeout 1 + + cho "Hey there, Granger!" ("horny", "narrow", "angry", "mid") # Grinning + her "What? Why are you--" ("disgust", "wide", "worried", "shocked") + + call her_walk(660, "base") + + cho "" ("smile", "narrow", "angry", "L", xpos="mid", ypos="base", flip=True) + her "What the bloody hell is going on here?!" ("scream", "closed", "base", "mid", xpos="right", ypos="base", trans=hpunch) # Scream + her "" ("angry", "base", "angry", "mid") + + cho "You know, just the usual..." ("soft", "base", "base", "L") + cho "Like stripping for our dear headmaster!" ("smile", "narrow", "angry", "L") + cho "I trust that you're more than familiar with it..." ("soft", "closed", "base", "L") + her "You've told her?" ("clench", "base", "angry", "mid") + cho "So you really {b}did{/b} do it!" ("open", "wide", "base", "L") + her "It's none of your business what I do at this school! You slut!" ("angry", "narrow", "angry", "R") + cho "Are you sure about that?{w=0.6} I believe there are some people that would think otherwise..." ("grin", "narrow", "base", "mid") + cho "Your friends...{w} the other students...{w} our teachers..." ("soft", "narrow", "angry", "L") + cho "Maybe even the ministry?" ("smile", "narrow", "angry", "L") + her "You wouldn't dare!!!" ("upset", "happy", "base", "mid") + cho "Indeed, I wouldn't." ("soft", "closed", "base", "mid") + cho "And neither would you!" ("smile", "narrow", "angry", "L") + cho "Which is why we brought you here..." ("open", "base", "base", "mid") + cho "To have some fun!" ("base", "narrow", "angry", "mid") + + her "Sir, I demand that you stop this nonsense!" ("open", "base", "angry", "mid") + cho "I don't think that's very likely to happen, Granger..." ("soft", "narrow", "angry", "mid") + cho "We both know what he would prefer..." ("soft", "closed", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + cho "And who he prefers..." ("smile", "narrow", "angry", "mid") + her "You think that he prefers you over me?{w} Please..." ("soft", "narrow", "angry", "R") + cho "Why don't we just ask him?" ("base", "narrow", "base", "mid") + cho "Tell us, sir..." ("soft", "narrow", "base", "R") + cho "How do you like the athletic, immaculate, nude body of your favourite student?" ("smile", "narrow", "angry", "mid") + cho "It's so much better than Miss Granger's, isn't it?" ("base", "narrow", "angry", "mid") + call ctc + + $ cho_strip_complete = True # Enables wardrobe strip functions. + $ d_flag_01 = False # Cho not on desk + + call cc_pf_strip_T2_E3_hermione_choices + + return + +label cc_pf_strip_T2_E3_hermione_choices: + + menu: + "\"Definitely!\"": + $ her_mood += 10 + her "What?!" ("open", "wide", "base", "stare") + cho "See, I told you!{w=0.6} How could he pick a walking bush on legs over this!" ("smile", "narrow", "angry", "L") + her "" ("angry", "base", "angry", "mid") + cho "Now tell her. Tell her why my body is superior compared to hers." ("soft", "closed", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + gen "Well, you're more flexible for one..." ("base", xpos="far_left", ypos="head") + cho "That's right, I am!" ("soft", "wide", "base", "mid") + her "*Humph*..." ("annoyed", "narrow", "angry", "R") + cho "And? What else?" ("smile", "narrow", "base", "L") + gen "And Cho's thighs are probably the most impressive ones I've seen in the last hund-- decade or more!" ("angry", xpos="far_left", ypos="head") + her "Well in that case..." ("soft", "closed", "base", "mid") + her "In that case I'll give you a great opportunity to stare at them indefinitely." ("angry", "base", "angry", "mid") + cho "What are you talking about, Granger?" ("soft", "narrow", "raised", "L") + + # Hermione walks towards the desk to pick up Cho's clothing. + call her_walk("desk", "base", speed=1.5) + pause .2 + if not d_flag_01: # Cho not on desk + call cho_chibi("stand",570,"base", flip=False) # Facing the desk. + with d3 + pause .6 + + cho "What are you doing?" ("soft", "narrow", "base", "L", ypos="head", flip=False) + + # Hermione picks them up and runs off. + call bld("hide") + pause .2 + call play_sound("equip") + hide screen cho_cloth_pile + pause .5 + + cho "My clothes!" ("open", "wide", "base", "L") + + call play_sound("running") + call her_walk("door", "base", speed=2) + call her_chibi(flip=False) + with d3 + pause .1 + call cho_chibi(flip=True) + with d3 + + her "Hey seeker, looks like someone will have to seek their way to their dorm without any clothes tonight." ("open", "base", "angry", "mid", ypos="head", flip=False) + cho "Hey!" ("clench", "narrow", "angry", "L", ypos="head", flip=True) + + # Hermione leaves out of the door. + hide screen bld1 + call her_chibi("stand", "door", "base", flip=True) + with d3 + pause .2 + + call her_chibi("leave") + + # Cho runs out the door. + if d_flag_01: # On desk + call play_sound("climb_desk") + show screen blkfade + with d3 + pause 1 + + hide screen bld1 + hide screen blkfade + call cho_chibi("stand", "desk", "base", flip=True) + with d3 + + else: + hide screen bld1 + call cho_chibi("stand",570,"base", flip=True) # Facing the door. + with d3 + + pause .2 + + cho "{size=+4}Give them back, you bitch!{/size}" ("scream", "narrow", "angry", "L", ypos="head", flip=True, trans=hpunch) + + call play_sound("running") + call cho_walk(action="leave", speed=2) + + call bld + gen "Did she just?" ("base", xpos="far_left", ypos="head") + gen "(...)" ("base", xpos="far_left", ypos="head") + gen "I don't think she's coming back..." ("base", xpos="far_left", ypos="head") + + "\"Not even close.\"": + $ cho_mood += 15 + cho "Not even clo--" ("soft", "wide", "base", "mid") + her "" ("smile", "base", "base", "R") + cho "Sir, could you please repeat that for me?" ("clench", "closed", "angry", "mid") + gen "Hermione's body is superior." ("base", xpos="far_left", ypos="head") + her "No surprise there..." ("base", "base", "base", "R") + cho "No!{w} It clearly isn't!" ("scream", "narrow", "angry", "mid", trans=hpunch) + cho "Are you mad, old man?" ("angry", "narrow", "angry", "mid") + her "Don't use that tone with the headmaster..." ("soft", "closed", "base", "mid") + cho "Nobody asked you!" ("mad", "narrow", "angry", "L") + her "He's the wisest wizard at our school...{w} Surely his word should be final..." ("smile", "narrow", "base", "mid_soft") + gen "I'd use the word astute but I'll take wise..." ("base", xpos="far_left", ypos="head") + cho "Why are you siding with her all of a sudden?" ("annoyed", "narrow", "angry", "mid") + gen "Good question." ("base", xpos="far_left", ypos="head") + gen "Miss Granger, why don't you show Miss Chang why your body is superior to hers..." ("base", xpos="far_left", ypos="head") + gen "Share with us your two most compelling arguments..." ("grin", xpos="far_left", ypos="head") + her "Sir?" ("soft", "wink", "base", "mid") + cho "He's talking about your {b}tits,{/b} you dimwit!" ("angry", "closed", "angry", "mid", cheeks="blush") + her "(...)" ("clench", "narrow", "base", "down", cheeks="blush") # Embarrassed + cho "" ("annoyed", "narrow", "angry", "mid") + gen "Yes Miss Granger!{w=0.5} Your very round{w=0.5}, handsomely spheroid{w=0.5}, perfectly sized{w=0.5}, very voluptuous and--" ("grin", xpos="far_left", ypos="head") + her "I got it, Professor!" ("clench", "happyCl", "worried", "mid", cheeks="blush") + cho "(Cow tits...)" ("annoyed", "narrow", "angry", "R", cheeks="blush") + $ hermione.strip("robe", "accessory") + her "Here..." ("base", "narrow", "base", "mid_soft") + + # Hermione shows her breasts. + # $ renpy.sound.play("sounds/boing02.ogg") + $ hermione.strip("top", "bra") + with d3 + pause .5 + + her "" ("base", "narrow", "base", "mid_soft", cheeks="blush") + call ctc + + her "Have a good look." ("soft", "narrow", "base", "mid_soft") + cho "(...)" ("annoyed", "narrow", "angry", "downR", cheeks="blush") # Tries to look away. + her "And you'd better take in what a {b}real pair{/b} looks like, slut." ("smile", "narrow", "angry", "R") + cho "I'd rather not, or I might barf..." ("soft", "narrow", "angry", "R") # + gen "Very nice, Miss Granger!" ("grin", xpos="far_left", ypos="head") + + menu: + "\"Ten points to Gryffindor!\"": + $ gryffindor += 10 + cho "(...)" ("annoyed", "narrow", "angry", "mid") + her "Thank you." ("soft", "narrow", "base", "mid_soft") + + "\"Fifty points to Gryffindor!\"": + $ cho_mood += 10 + $ gryffindor += 50 + cho "(Fifty?!)" ("soft", "wide", "base", "mid") # Shocked + her "Thank you." ("soft", "narrow", "base", "mid_soft") + cho "" ("clench", "closed", "angry", "mid", cheeks="heavy_blush") + + gen "For exposing those magnificent breasts." ("grin", xpos="far_left", ypos="head") + + # $ renpy.sound.play("sounds/cloth_sound3.ogg") + $ hermione.wear("all") + with d3 + pause .5 + + her "Any time, Professor." ("soft", "narrow", "base", "mid_soft") + cho "(I bloody hate her!)" ("angry", "narrow", "angry", "L", cheeks="heavy_blush") + + her "If you don't mind, Sir." ("open", "base", "base", "R") + her "I'd like to leave now." ("soft", "base", "base", "mid") + cho "By all means, just go already." ("soft", "narrow", "angry", "R") + her "Did something not go as you expected?" ("smile", "base", "base", "R") + her "Did you think having me here when you exposed yourself would make me jealous..." ("soft", "closed", "base", "mid") + cho "(...)" ("annoyed", "narrow", "angry", "L", cheeks="blush") + her "Thank you for inviting me, Professor." ("soft", "narrow", "base", "mid_soft") + her "I {b}did{/b} enjoy this little obscene \"freak-show\" you arranged for me..." ("grin", "narrow", "base", "mid_soft") + cho "You'll regret this, Granger!" ("clench", "narrow", "angry", "L", cheeks="heavy_blush") + + if game.daytime: + her "Have a nice day, Professor." ("soft", "closed", "base", "mid") + else: + her "Have a good night, Professor." ("soft", "closed", "base", "mid") + + gen "(...)" ("base", xpos="far_left", ypos="head") + her "See you in class Chang!" ("grin", "narrow", "base", "R_soft") + cho "*Tzzzz*!" ("angry", "closed", "angry", "mid", cheeks="blush") + cho "Cow..." ("annoyed", "narrow", "angry", "R", cheeks="heavy_blush") + + # Hermione leaves. + call her_walk(action="leave") + + # Cho stands close to your desk. + call hide_characters + show screen blkfade + call cho_chibi("stand", "desk", "base", flip=True) + with d3 + + pause .5 + hide screen blkfade + with d3 + + pause .8 + call cho_chibi("stand", "desk", "base", flip=False) + + cho "I thought you were on my side, Sir!" ("soft", "narrow", "angry", "mid", xpos="mid", ypos="base", flip=False) + gen "I'm on nobody's side, because nobody is on my side..." ("base", xpos="far_left", ypos="head") + cho "You were supposed to have my back! Not Granger's!" ("angry", "closed", "angry", "mid") + cho "That {b}whore{/b} doesn't deserve your praise!" ("soft", "narrow", "angry", "mid") + gen "She made some good arguments..." ("base", xpos="far_left", ypos="head") + gen "\"A couple\" of good arguments, to be precise!" ("grin", xpos="far_left", ypos="head") + cho "They're barely larger than mine..." ("annoyed", "narrow", "base", "downR", cheeks="blush") + cho "You'll see, Sir.{w} I'm better than her.{w} And I'll prove it to you..." ("soft", "narrow", "angry", "mid") + gen "Well, that is yet to be seen." ("grin", xpos="far_left", ypos="head") + + # Cho gets dressed. + call play_sound("equip") + show screen blkfade + with d5 + $ cho.wear("all") + hide screen cho_cloth_pile + hide screen blkfade + + cho "Sir, my *Ehm*...{w} my panties..." ("open", "narrow", "angry", "R", cheeks="blush", xpos="mid", ypos="base", trans=fade) + gen "Oh, of course..." ("base", xpos="far_left", ypos="head") + cho "" ("annoyed", "narrow", "angry", "mid", cheeks="blush") + pause .5 + gen "Give me just a moment..." ("base", xpos="far_left", ypos="head") + $ renpy.sound.play("sounds/sniff.ogg") + call nar(">You give Cho's panties one last sniff before handing them back to the girl.") + gen "There." ("angry", xpos="far_left", ypos="head") + cho "(Pervert...)" ("annoyed", "narrow", "angry", "R", cheeks="blush") + cho "I think it's time for me to go now." ("soft", "closed", "angry", "mid") + cho "Until next time, [cho_genie_name]." ("soft", "narrow", "angry", "mid") + + # Cho leaves. + call cho_walk(action="leave") + + call bld + gen "Damn!" ("angry", xpos="far_left", ypos="head") + gen "For somebody that does a lot of exercising, she smells really nice!" ("grin", xpos="far_left", ypos="head") + gen "Maybe I should be a bit nicer to her next time..." ("base", xpos="far_left", ypos="head") + + $ has_cho_panties = False + + + "\"Let Hermione assess you, Cho.\"": + $ her_mood += 6 + cho "Her?" ("soft", "wide", "base", "mid") + her "I couldn't care less about the way she looks!" ("soft", "base", "angry", "mid") + cho "(...)" ("annoyed", "narrow", "angry", "L") + gen "Are you sure about that? I've seen you staring..." ("base", xpos="far_left", ypos="head") + cho "" ("base", "narrow", "angry", "L") + her "Because she just so happens to be standing there, butt naked!{w} In your office!" ("angry", "closed", "angry", "mid") + gen "I'd like you to rate Miss Chang's figure, truthfully, and to the best of your ability." ("base", xpos="far_left", ypos="head") + her "Really? Do I have to?" ("annoyed", "base", "base", "mid") + gen "You do! I'd really like to hear your opinion on Miss Chang's shamelessly exposed body!" ("grin", xpos="far_left", ypos="head") + cho "*Mhmm*" ("base", "closed", "base", "mid") # Self assured. + her "Fine..." ("soft", "narrow", "angry", "R") + her "\"Poor,\" I'd say..." ("soft", "closed", "base", "mid") + cho "How dare you!{w=0.6} You snobby skunk!" ("scream", "narrow", "angry", "L", trans=hpunch) + her "" ("base", "base", "base", "R") + gen "(Is that better or worse than \"troll?\")" ("base", xpos="far_left", ypos="head") # Snape explained school ratings during the match. + cho "Our Professor asked you to rate my body truthfully!" ("mad", "narrow", "angry", "L") + her "Which I did!{w} And it's at \"dreadful\" now!" ("soft", "closed", "base", "mid") + cho "\"Dreadful\"?!" ("soft", "wide", "base", "mid") + cho "You're a {b}lying bitch,{/b} Granger!" ("angry", "closed", "angry", "mid", cheeks="blush") + her "Sir, you can't let her talk to me like that!" ("angry", "base", "angry", "mid") + gen "Bitch isn't even a proper curse word." ("base", xpos="far_left", ypos="head") + gen "You can say that on TV..." ("base", xpos="far_left", ypos="head") + cho "Granger, why don't you tell us which part of my immaculate body deserves such a poor rating?" ("soft", "narrow", "angry", "L") + her "Very well..." ("soft", "closed", "base", "mid") + her "For one, you are a {b}narcissistic bitch!{/b}{w} That makes the presumption her body is superior to all others..." ("open", "base", "angry", "L") + cho "Because it is." ("smile", "narrow", "angry", "mid") + her "Not to mention that you have even fewer curves than some of the boys I know..." ("grin", "base", "angry", "mid") + cho "" ("annoyed", "narrow", "angry", "mid", cheeks="blush") + her "Maybe once your Quidditch endeavours all fail, you can apply for a profession to model male underwear..." ("soft", "closed", "base", "mid") + cho "I wonder where you're getting {b}your{/b} undergarments from..." ("soft", "closed", "base", "mid") + cho "Stealing them from Madam Pomfrey, are you?" ("smile", "narrow", "angry", "mid") + her "I do not!!!" ("open", "wide", "base", "stare") + gen "Girls, we all know what really counts is how we appear on the inside." ("base", xpos="far_left", ypos="head") + her "" ("angry", "closed", "angry", "mid") + cho "Oh shut up!" ("angry", "narrow", "angry", "mid") + her "Professor, you're the one who continuously asks us to expose ourselves!" ("soft", "base", "angry", "mid") + gen "Well yes. I also never claimed that {b}I{/b} was pretty on the inside." ("base", xpos="far_left", ypos="head") + gen "You of all people should know better by now..." ("base", xpos="far_left", ypos="head") + her "Despicable..." ("angry", "narrow", "angry", "R") + cho "Don't worry, Granger!" ("soft", "narrow", "angry", "L") + cho "If you were to start doing hourly exercises, our Professor might even be attracted to you by the end of the year..." ("soft", "closed", "raised", "mid") + her "Hourly exercises?" ("soft", "wide", "base", "stare") # Shocked + cho "But I wouldn't say all hope is lost!" ("smile", "narrow", "angry", "L") + cho "While your figure might be a bit repulsive to the eyes..." ("soft", "closed", "base", "mid") + cho "I don't mind looking at those {b}huge melons{/b} of yours." ("soft", "narrow", "base", "L", cheeks="blush") + her "How dare you talk of them like that!" ("angry", "narrow", "angry", "R") + gen "*Heh*... melons..." ("grin", xpos="far_left", ypos="head") + her "Sir, I'd like to leave now." ("open", "base", "angry", "mid") + + cho "Already missing your books, are you?" ("annoyed", "narrow", "base", "L") + her "I am not.{w} And I don't appreciate being made fun of!" ("angry", "closed", "angry", "mid") + + if game.daytime: + her "Good day, Sir." ("soft", "base", "angry", "mid") + cho "See ya around, Granger..." ("smile", "narrow", "angry", "L") + her "*Hmpf*" ("annoyed", "narrow", "angry", "R") + + else: + her "Good night, Sir." ("soft", "base", "angry", "mid") + cho "Nighty-night, Granger..." ("soft", "narrow", "angry", "L") + her "*Tzzzzzh*!" ("annoyed", "narrow", "angry", "R") + + # Hermione leaves. + call her_walk(action="leave") + + show screen blkfade + call cho_chibi("stand", "desk", "base", flip=False) + with d3 + + hide screen blkfade + cho "I have to say, [cho_genie_name], doing these favours is fun!" ("smile", "narrow", "base", "mid", xpos="mid", ypos="base", flip=False, trans=fade) + gen "I'm glad you're enjoying yourself." ("base", xpos="far_left", ypos="head") + cho "Believe me, Sir. I am." ("smile", "narrow", "angry", "mid") + cho "" ("horny", "narrow", "angry", "mid") + pause .4 + + # Cho gets dressed. + call play_sound("equip") + $ cho.wear("all") + hide screen cho_cloth_pile + with d3 + pause .5 + + cho "Now, if you excuse me..." ("soft", "base", "base", "mid") + + if game.daytime: + cho "I have to head back to classes." ("soft", "base", "base", "R") + gen "I still got your--" ("base", xpos="far_left", ypos="head") + cho "See ya next time, [cho_genie_name]!" ("smile", "narrow", "angry", "mid") + else: + cho "I have to head back to my dorms." ("soft", "base", "base", "R") + gen "Don't you want your--" ("base", xpos="far_left", ypos="head") + cho "Sweet dreams, [cho_genie_name]!" ("smile", "narrow", "angry", "mid") + + call cho_walk(action="leave") + + call bld + gen "Nice, I still got her panties!" ("grin", xpos="far_left", ypos="head") + + call give_reward(">You have acquired Cho's panties!", "interface/icons/panties.webp") + $ has_cho_panties = True + + # Reset Hermione clothing. + $ hermione.equip(her_outfit_last) + + return + +label cc_pf_strip_T2_E3_hermione_repeat: + # Equip Hermione default clothing. + $ her_outfit_last.save() # Store current outfit. + $ hermione.equip(her_outfit_default) #Equip Hermione default clothing. + + # Hermione enters. + call play_sound("door") + call her_chibi("stand", "door", "base") + with d3 + pause .5 + + call chibi_emote("thought", "hermione") + pause .8 + + call her_walk(660, "base") + + cho "" ("horny", "narrow", "angry", "L", xpos="mid", ypos="base", flip=True) + her "You wanted to see me, Professor?" ("soft", "closed", "base", "mid", xpos="base", ypos="base") + gen "Yes, but I wasn't the only one." ("grin", xpos="far_left", ypos="head") + her "(...)" ("annoyed", "narrow", "angry", "R") + cho "Hi, Granger!" ("smile", "narrow", "angry", "L") + her "Let me guess, we are here to marvel at your insecurity again?" ("soft", "closed", "base", "mid") + cho "Granger, instead of spitting out insults, why don't you join me and have some fun for once?" ("soft", "base", "raised", "L") + cho "Strip down for your headmaster as well, like you usually do..." ("smile", "narrow", "angry", "L") + cho "Or would it bother you too much, now that I'm here?" ("horny", "narrow", "base", "L") + her "*glare*" ("angry", "base", "angry", "mid") + cho "Maybe then you'd have a chance to win against me!{w} And earn some useless Gryffindor points while you're at it." ("soft", "base", "base", "L") + her "I don't think that will be necessary..." ("soft", "closed", "base", "mid") + cho "Well, we all already know how this is going to turn out don't we, [cho_genie_name]?" ("soft", "base", "base", "mid") + cho "My body is still better than Miss Granger's, isn't it?" ("smile", "narrow", "angry", "L") + her "" ("annoyed", "base", "angry", "mid") + call ctc + + call cc_pf_strip_T2_E3_hermione_choices + + return diff --git a/game/scripts/characters/cho/events/favors/inspect_her_body.rpy b/game/scripts/characters/cho/events/favors/inspect_her_body_tier3.rpy similarity index 52% rename from game/scripts/characters/cho/events/favors/inspect_her_body.rpy rename to game/scripts/characters/cho/events/favors/inspect_her_body_tier3.rpy index 3ab7881f..07d51fd9 100644 --- a/game/scripts/characters/cho/events/favors/inspect_her_body.rpy +++ b/game/scripts/characters/cho/events/favors/inspect_her_body_tier3.rpy @@ -1,1566 +1,4 @@ - -### Cho Strip ### - -label cc_pf_strip: - - # Start Event - $ cc_pf_strip.start() - - # End Event Jump - label end_cho_strip_event: - - if cho_tier == 2 and cho_whoring < 9: # Points til 9 - $ cho_whoring += 1 - - if cho_tier == 3 and cho_whoring < 15: # Points til 15 - $ cho_whoring += 1 - - $ cho.wear("all") # Reset clothes - jump end_cho_event - -# TODO: Add Fail events as Tier 1, currently named Tier 1 events become Tier 2. - -### Tier 1 (pre Slytherin) ### - -label cc_pf_strip_T2_intro_E1: - gen "It's time for your next favour, [cho_name]." ("base", xpos="far_left", ypos="head") - cho "Of course, [cho_genie_name]." ("base", "base", "base", "mid") - cho "What would you like me to do?" ("soft", "base", "base", "mid") - gen "First, come a bit closer..." ("base", xpos="far_left", ypos="head") - cho "Very well, Sir." ("base", "base", "base", "mid") - - call cho_walk("desk", "base") - - cho "" (xpos="mid", ypos="base", trans=fade) - call ctc - - gen "How often do you typically exercise, Miss Chang?" ("base", xpos="far_left", ypos="head") - cho "As often as I can, [cho_genie_name]!" ("soft", "base", "base", "mid") - gen "Which is... how often, exactly? Twice a week?" ("base", xpos="far_left", ypos="head") - cho "Three times a day, Sir!" ("base", "narrow", "base", "mid") - with hpunch - gen "What?!" ("angry", xpos="far_left", ypos="head") - gen "(I don't even jerk off that often!)" ("angry", xpos="far_left", ypos="head") - gen "I find that a bit hard to believe... You're not embellishing the truth, are you?" ("base", xpos="far_left", ypos="head") - cho "I'm not, Sir! It's necessary for someone in my position!" ("open", "closed", "angry", "mid") - cho "I wake up every morning before dawn, then run around the Quidditch pitch until the sun rises!" ("open", "narrow", "angry", "mid") - cho "My body's at the absolute peak of human condition!" ("open", "narrow", "angry", "R") - gen "It is quite impressive..." ("angry", xpos="far_left", ypos="head") - cho "Glad to hear it, [cho_genie_name]." ("base", "happyCl", "base", "mid") - gen "I assume you get complimented often?" ("base", xpos="far_left", ypos="head") - cho "Sometimes..." ("soft", "base", "base", "R") - gen "And I suspect you have many admirers?" ("grin", xpos="far_left", ypos="head") - cho "Oh, *umm*... maybe?" ("annoyed", "base", "base", "mid") - cho "But that's {b}not{/b} why I take such great care of my body, Sir!" ("open", "narrow", "angry", "mid") - gen "Of course not..." ("base", xpos="far_left", ypos="head") - cho "Quidditch is a hard game for anyone, as I'm sure you know..." ("open", "closed", "base", "mid") - cho "But that goes double for girls!{w=0.6} I have to train twice as hard as the boys if I want to stand a chance!" ("open", "narrow", "angry", "mid") - gen "That's very commendable of you..." ("base", xpos="far_left", ypos="head") - cho "Thank you, Sir." ("base", "base", "base", "mid") - - # Ask her to strip. - gen "So, Why don't you show me what you are made of?{w=1.0} Let me have a proper look at you!" ("grin", xpos="far_left", ypos="head") - cho "Sir?" ("soft", "wink", "raised", "mid") - gen "I need you to remove your clothes." ("base", xpos="far_left", ypos="head") - call play_music("stop") - cho "!!!" ("soft", "wide", "base", "mid", cheeks="blush") - call play_music("cho") - gen "Go on, girl. Start with the top..." ("base", xpos="far_left", ypos="head") - cho "No!" ("scream", "happyCl", "angry", "mid", cheeks="blush", trans=hpunch) - cho "Why are you even asking me to do such a thing?!" ("angry", "narrow", "angry", "mid") - #gen "Didn't you take your skirt off for me after the Hufflepuff match?" ("base", xpos="far_left", ypos="head") - #cho "{size=-4}Well, I probably shouldn't have done that..{/size}" ("annoyed", "base", "worried", "R") - #gen "Sorry?" ("base", xpos="far_left", ypos="head") - gen "Have you already forgotten that I'm here to train you?" ("base", xpos="far_left", ypos="head") - cho "And I'm very thankful for that sir, but..." ("open", "closed", "base", "mid") - gen "Am I not your trusted mentor?" ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "mid") - gen "Your strong advisor..." ("base", xpos="far_left", ypos="head") - gen "Your guardian angel!" ("grin", xpos="far_left", ypos="head") - cho "I don't think taking off my clothes will be necessary for our training, [cho_genie_name]." ("annoyed", "narrow", "angry", "R") - gen "I'm very disappointed I've got to say..." ("base", xpos="far_left", ypos="head") - gen "You aren't this shy about undressing in front of your team, are you?" ("base", xpos="far_left", ypos="head") - cho "That's entirely different!" ("soft", "narrow", "angry", "mid") - gen "How so?" ("base", xpos="far_left", ypos="head") - cho "I'm just not comfortable doing this in front of you, Sir!" ("soft", "closed", "worried", "mid") - cho "You're really old..." ("soft", "narrow", "worried", "downR", cheeks="blush") - gen "Pardon me?" ("base", xpos="far_left", ypos="head") - cho "I meant... you're our headmaster! It just feels wrong to me!" ("soft", "narrow", "worried", "mid") - #gen "It didn't bother you the last time you barged into my office..." ("base", xpos="far_left", ypos="head") - #cho "Well, we had just won the game and all that... Maybe my judgement..." ("annoyed", "closed", "worried", "R") - gen "Are you one of those shy girls, Miss Chang?" ("base", xpos="far_left", ypos="head") - cho "No, Sir. I wouldn't say I'm shy, but..." ("soft", "narrow", "worried", "downR") - gen "Well then prove me you aren't, girl!" ("base", xpos="far_left", ypos="head") - gen "Let me see it!" ("grin", xpos="far_left", ypos="head") - - # Cho stays reluctant. - cho "Is there no other way I could repay the favour?" ("annoyed", "narrow", "worried", "mid") - gen "Well, yes.{w=0.3} Several.{w} But we'll get to those later..." ("base", xpos="far_left", ypos="head") - cho "Later, Sir?" ("soft", "base", "raised", "mid") - gen "Girl, I wouldn't be asking you this if it wasn't absolutely necessary for your training!" ("angry", xpos="far_left", ypos="head") - cho "Of course, [cho_genie_name]." ("annoyed", "base", "base", "down") - gen "All that's required of you is to co-operate..." ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "base", "worried", "mid", cheeks="blush") - gen "Now take off your top..." ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "mid", cheeks="blush") - cho "Only my top?" ("soft", "narrow", "worried", "mid") - gen "Would you like to take off {b}more?{/b}" ("grin", xpos="far_left", ypos="head") - cho "I didn't mean it like that!" ("angry", "narrow", "angry", "mid") - gen "[cho_name], it's only the two of us in here. No need to worry." ("base", xpos="far_left", ypos="head") - cho "I'm not worried about others, [cho_genie_name]!" ("annoyed", "narrow", "angry", "mid") - cho "For as long as nobody else will find out...{w} You have to promise me that, Sir!" ("soft", "narrow", "angry", "R") - gen "Promised! Now take it off!" ("grin", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "mid") - gen "*Ahem*{w=0.5} Slowly..." ("base", xpos="far_left", ypos="head") - pause .5 - cho "" ("quiver", "happyCl", "worried", "mid", cheeks="blush") - pause .8 - - # Remove top. - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("robe", "top") - with d3 - pause .5 - - cho "" ("quiver", "narrow", "worried", "mid", cheeks="blush") - call ctc - - menu: - "\"Your posture is remarkable!\"": - cho "Oh... Glad you noticed!" ("smile", "base", "base", "down") # Happy - cho "I'm relieved you actually show interest in my body status, Sir!" ("base", "base", "base", "mid") - gen "(Oh, You have no idea, girl!)" ("base", xpos="far_left", ypos="head") - cho "I thought you just wanted to gush at my body like all the other teachers..." ("soft", "narrow", "worried", "mid", cheeks="blush") - gen "Who?{w} Which other teachers are you talking about?{w} Snape?!" ("base", xpos="far_left", ypos="head") - cho "No, not Snape..." ("annoyed", "narrow", "angry", "R") - cho "(...)" ("annoyed", "base", "worried", "downR", cheeks="blush") - cho "Promise me you won't tell her!" ("quiver", "narrow", "worried", "mid", cheeks="blush") - gen "Her?!" ("base", xpos="far_left", ypos="head") - cho "Madame Hooch, Sir." ("soft", "narrow", "worried", "mid", cheeks="blush") - gen "Ah, the old, grey haired lady..." ("base", xpos="far_left", ypos="head") - cho "Yes, she's been eyeing me a lot lately..." ("annoyed", "base", "worried", "downR", cheeks="blush") - cho "Even more so after our recent game against Hufflepuff..." ("mad", "narrow", "worried", "R", cheeks="blush") - gen "I can't blame her... Your body is very pleasant to look at!" ("grin", xpos="far_left", ypos="head") - cho "Thank you, Sir." ("base", "base", "base", "mid", cheeks="blush") - - "\"You have marvellous abs!\"": - gen "Magnificent." ("angry", xpos="far_left", ypos="head") - gen "Simply...{w} magnificent..." ("angry", xpos="far_left", ypos="head") - cho "*Ehm*..." ("annoyed", "narrow", "worried", "R", cheeks="blush") # Embarrassed - gen "As if Michelangelo himself carved them onto your flesh..." ("angry", xpos="far_left", ypos="head") - gen "I must say I'm very impressed!" ("base", xpos="far_left", ypos="head") - cho "Thank you, Sir." ("soft", "narrow", "worried", "downR", cheeks="blush") - - "\"*Eh*, I've seen better, but that'll do.\"": - $ cho_mood += 3 - cho "What?!" ("mad", "base", "angry", "mid") # Upset - gen "(Crap!)" ("angry", xpos="far_left", ypos="head") - gen "What I meant to say is, you're in great shape but I still see room for improvements." ("base", xpos="far_left", ypos="head") - gen "I'm impressed nonetheless!" ("base", xpos="far_left", ypos="head") - cho "Thank you, I guess..." ("annoyed", "narrow", "angry", "downR", cheeks="blush") - - gen "None of the other girls I get to see here has such fine...{w=1.0} contours." ("base", xpos="far_left", ypos="head") - cho "Other girls?" ("soft", "wide", "base", "mid") - cho "[cho_genie_name], you aren't training anybody else in Quidditch besides me, are you?" ("soft", "narrow", "angry", "mid") - gen "What? Of course not..." ("base", xpos="far_left", ypos="head") - cho "Then which other girls are you talking about?" ("annoyed", "narrow", "angry", "mid") - gen "(Shit! I better just tell her the truth.)" ("angry", xpos="far_left", ypos="head") - gen "Just...{w=1.0} Granger..." ("base", xpos="far_left", ypos="head") - cho "*Phewww*{w=1.0} You scared me there for a second, Sir..." ("smile", "narrow", "worried", "mid") - gen "You... don't mind?" ("base", xpos="far_left", ypos="head") - cho "Please. Why should I care what Granger does for you in here?" ("soft", "narrow", "angry", "R") - cho "All she seems to care about is winning the house cup." ("open", "narrow", "angry", "R") - cho "As long as you don't help any Gryffindor or Slytherin sluts win the Quidditch cup, everything will be fine." ("base", "narrow", "base", "mid") - gen "No worries, [cho_name]. I don't have plans to train other {i}sluts{/i} in quidditch." ("grin", xpos="far_left", ypos="head") - - cho "That's a relief..." ("open", "closed", "base", "mid") - cho "Besides, she clearly doesn't hold a candle against me!" ("open", "narrow", "base", "R") - cho "All she does is sit on her arse all day, studying in the library..." ("soft", "narrow", "angry", "mid") - gen "(...)" ("base", xpos="far_left", ypos="head") - cho "You can't expect somebody who's as lazy as her to look as great as I do!" ("soft", "closed", "base", "mid") - - menu: - "\"Yeah, she's gross.\"": - $ cho_mood = 0 - gen "Miss Granger's body is nothing compared to yours." ("base", xpos="far_left", ypos="head") - cho "I wholeheartedly agree, Sir!" ("base", "narrow", "angry", "mid") - gen "Her tits sag too much, and her fat hips are disgusting..." ("base", xpos="far_left", ypos="head") - hide cho_main - call blktone - gen "(Something deep inside me just died saying this...)" ("angry", xpos="far_left", ypos="head") - call hide_blktone - cho "She really is a..." ("open", "closed", "raised", "mid") - cho "... stupid..." ("angry", "closed", "angry", "mid") - cho "... fat..." ("clench", "narrow", "angry", "mid") - cho "... cow, isn't she?" ("quiver", "narrow", "angry", "mid", cheeks="blush") - gen "Speaking of Hermione..." ("base", xpos="far_left", ypos="head") - gen "Why don't you show me \"your\"{w} very much \"superior\"{w} hips?" ("grin", xpos="far_left", ypos="head") - cho "Are you asking me to take off my bottoms?" ("soft", "wink", "raised", "mid", cheeks="blush") - gen "Yes, my dear." ("base", xpos="far_left", ypos="head") - - "\"Nope, you lose\"": - $ cho_mood += 6 - - cho "What?!" ("scream", "wide", "angry", "mid", trans=hpunch) - cho "" ("angry", "narrow", "angry", "mid") - gen "I'm afraid, Miss Granger is simply...{w} how shall I put it...{w} sexier!" ("base", xpos="far_left", ypos="head") - cho "But she doesn't even do workouts!" ("clench", "narrow", "angry", "mid") - gen "Let's just forget about her, shall we?" ("base", xpos="far_left", ypos="head") - gen "And continue where we left off..." ("base", xpos="far_left", ypos="head") - cho "And where would that be?" ("annoyed", "narrow", "angry", "mid") - gen "Your Quidditch training, Miss Chang." ("base", xpos="far_left", ypos="head") - cho "I'm not sure I want to -- after what you've just said..." ("annoyed", "narrow", "angry", "R") - gen "Why? What did I say?" ("base", xpos="far_left", ypos="head") - cho "That Granger's body is better?! We both know that isn't true." ("mad", "narrow", "angry", "mid") - gen "Do you expect me to apologise?" ("base", xpos="far_left", ypos="head") - cho "Yes!{w} Admit that I'm sexier!" ("annoyed", "closed", "angry", "mid", cheeks="blush") # Snobby - gen "You are indeed, {b}very sexy{/b}, Miss Chang!" ("grin", xpos="far_left", ypos="head") - cho "Thank you, Sir." ("base", "narrow", "base", "mid") - gen "Now take your bottoms off, would you..." ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "mid") - - - cho "Please don't tell anybody about what I'm doing in here, Sir." ("quiver", "narrow", "worried", "mid", cheeks="blush") - cho "It could really tarnish my reputation." ("soft", "narrow", "worried", "R", cheeks="blush") - gen "I'd never think of it..." ("base", xpos="far_left", ypos="head") - cho "I will take off my bottoms now!" ("scream", "happyCl", "angry", "mid") # Scream - cho "" ("horny", "narrow", "worried", "R", cheeks="blush") - gen "(!!!)" ("grin", xpos="far_left", ypos="head") - pause .4 - - # Remove bottoms. - $ renpy.sound.play("sounds/cloth_sound3.ogg") - hide cho_main - $ cho.strip("bottom") - pause 1.2 - $ renpy.sound.play("sounds/cloth_sound4.ogg") - show screen cho_cloth_pile - pause .4 - cho "" (trans=d3) - pause .5 - - cho "" ("horny", "narrow", "base", "mid", cheeks="blush") - call ctc - - gen "YES!" ("angry", xpos="far_left", ypos="head") - gen "Look at those thighs!" ("angry", xpos="far_left", ypos="head") - gen "Those tree trunks!" ("angry", xpos="far_left", ypos="head") - gen "Even the great \"Chun-Li\" would be jealous of those!" ("grin", xpos="far_left", ypos="head") - cho "I'm sorry Sir, who's that?" ("soft", "wink", "raised", "mid") - - menu: - gen "(...)" ("base", xpos="far_left", ypos="head") - - "\"Never seen City Hunter?\"": - cho "\"City Hunter?\"{w=0.3} Can't say that I have." ("soft", "base", "raised", "mid") - gen "What about \"Police Story\"?" ("base", xpos="far_left", ypos="head") - cho "No?" ("soft", "wink", "raised", "mid") - gen "\"Drunken Master\"?" ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "base", "base", "R") - gen "Please tell me you've at the very least seen \"Rush Hour\"?" ("angry", xpos="far_left", ypos="head") - cho "No, Sir." ("annoyed", "closed", "base", "mid") - gen "I'm in shock, over how little you care about your culture..." ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "mid") - gen "Not every man can pull off a cosplay like that!" ("angry", xpos="far_left", ypos="head") - cho "I'm not following, Sir." ("annoyed", "narrow", "angry", "R") - - "\"She's my main...\"": - gen "I simply love playing with her..." ("grin", xpos="far_left", ypos="head") - gen "Seeing that leg rise up when I press the right buttons..." ("base", xpos="far_left", ypos="head") - cho "What?!" ("open", "narrow", "raised", "mid") # confused - - gen "Speaking of which!{w} I don't believe we are done here just yet." ("grin", xpos="far_left", ypos="head") - cho "We aren't? But I did exactly what you wanted!" ("open", "base", "worried", "mid") - gen "You've still got some clothes on..." ("grin", xpos="far_left", ypos="head") - cho "Sir, is this why you are helping me?" ("open", "closed", "angry", "mid") - cho "Might this be all just part of a sick scheme to get to see me naked?" ("annoyed", "narrow", "angry", "mid") - gen "(...)" ("base", xpos="far_left", ypos="head") - - menu: - "\"It absolutely is!\"": - $ cho_mood += 20 - $ cho_mad_about_stripping = True # Flag that enables different dialogue that is a bit more "lewd" in the next favour repeat. - cho "" ("angry", "wide", "base", "mid") # Shock - gen "Now take off that bra of yours and show me those titties!" ("grin", xpos="far_left", ypos="head") - cho "[cho_genie_name], how can you talk to me like that!" ("scream", "closed", "angry", "mid", trans=hpunch) - cho "I'm your student!" ("clench", "narrow", "angry", "mid") - gen "And a very pretty one at that!" ("grin", xpos="far_left", ypos="head") - cho "You disgust me, sir..." ("soft", "narrow", "angry", "mid") - - "\"Of course not...\"": - $ cho_mood += 6 - $ cho_mad_about_stripping = False - cho "Aye right..." ("soft", "narrow", "raised", "mid") # Expression of disbelieve... - cho "And I'm supposed to believe that." ("open", "narrow", "base", "R") - cho "You're practically foaming out of your mouth just looking at me, Sir..." ("soft", "narrow", "angry", "mid") - gen "I'm not...{w} that's just..." ("angry", xpos="far_left", ypos="head") - #if butterbeer_ITEM.owned > 0: - gen "Butterbeer..." ("angry", xpos="far_left", ypos="head") - cho "This is as far as I will go, Sir!" ("annoyed", "narrow", "angry", "mid") - - cho "If you want a bimbo to strip for you, I suggest you call Hermione instead..." ("annoyed", "narrow", "angry", "mid") - pause .5 - - call play_sound("equip") - hide cho_main - $ cho.wear("all") - hide screen cho_cloth_pile - cho "" ("angry", "narrow", "angry", "mid") - pause .8 - - cho "We are done here!" ("angry", "narrow", "angry", "mid") - - # Cho leaves. - call cho_walk(action="leave") - - call bld - gen "She'll do it next time, I'm sure..." ("base", xpos="far_left", ypos="head") - - jump end_cho_strip_event - - -label cc_pf_strip_T2_intro_E2: - cho "" ("upset", "base", "base", "R") - gen "[cho_name], to continue your training where we left off..." ("base", xpos="far_left", ypos="head") - gen "I'd like you to, once again, undress!" ("grin", xpos="far_left", ypos="head") - cho "Of course, Sir." ("annoyed", "base", "angry", "downR") - - call cho_walk("desk", "base") - - cho "Down to my undergarments, [cho_genie_name]?" ("soft", "closed", "base", "mid", xpos="mid", ypos="base", trans=fade) - cho "Or would you like me to take off all of it?" ("soft", "narrow", "base", "mid") - gen "*Ehm*... All of it?" ("base", xpos="far_left", ypos="head") - cho "Very well, Sir." ("soft", "closed", "base", "mid") - gen "(Please don't let this be a trick question.)" ("angry", xpos="far_left", ypos="head") - cho "" ("upset", "narrow", "base", "mid") - pause .4 - - if cho.is_worn("robe"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("robe") - # Remove top. - if cho.is_worn("top"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("robe", "top") - with d3 - pause .5 - - cho "" ("upset", "narrow", "angry", "mid") - call ctc - - cho "I'm a very good trainee, [cho_genie_name]!" ("soft", "narrow", "angry", "mid") - gen "Yes you are!" ("grin", xpos="far_left", ypos="head") - cho "If my trainer requires me to take off my clothing and strip for him..." ("soft", "closed", "base", "mid") - cho "Then I have no other choice but to indulge..." ("soft", "narrow", "base", "R") - cho "I see nothing wrong with that..." ("annoyed", "narrow", "angry", "mid") - pause .4 - - # Remove bottoms. - if cho.is_worn("bottom"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("bottom") - with d3 - pause .5 - - cho "" ("annoyed", "narrow", "base", "mid") - call ctc - - cho "Would you perhaps like me to climb on top of your desk?" ("soft", "narrow", "raised", "mid") - cho "And dance for you like some common harlot?" ("soft", "narrow", "base", "R") - - # You saw Hermione strip before. - if hg_strip.trigger: - gen "If it's not too much trouble..." ("base", xpos="far_left", ypos="head") - cho "Of course not, [cho_genie_name]." ("soft", "closed", "base", "mid") - gen "(I'm having a bit of a deja vu!)" ("angry", xpos="far_left", ypos="head") # In-game font doesn't support special characters. déjà vu! - else: - gen "Yes please!" ("grin", xpos="far_left", ypos="head") - cho "Whatever you say, Sir!" ("soft", "closed", "base", "mid") - cho "Like I said, I'd go to any lengths just to please my trainer..." ("soft", "narrow", "base", "mid") - - # Climbs desk. - call hide_characters - show screen blkfade - with d5 - call play_sound("climb_desk") - pause 1 - - "To your surprise, the athletic petite girl rather playfully climbs on top of your desk." - pause .5 - gen "Nice!" ("grin", xpos="far_left", ypos="head") - pause .2 - - call cho_chibi("stand", "on_desk", "on_desk", flip=False) - hide screen bld1 - hide screen blkfade - with d5 - call ctc - - cho "After all, I promised I'd do anything to win that Quidditch cup..." ("soft", "narrow", "angry", "mid") - cho "If stripping for you is what it takes, then..." ("soft", "base", "angry", "down") - call play_music("sad") - cho "Then..." ("angry", "base", "worried", "down") - cho "I-I'll do it..." ("soft", "narrow", "worried", "down", cheeks="blush") - gen "(Shit. Is she crying?)" ("base", xpos="far_left", ypos="head") - gen "(Can she even cry?)" ("base", xpos="far_left", ypos="head") - gen "Are you alright, girl?" ("base", xpos="far_left", ypos="head") - cho "No.{w} I'm already regretting climbing up here!!!" ("mad", "closed", "worried", "mid") - cho "(What were you thinking, Cho?!)" ("angry", "narrow", "worried", "down", cheeks="blush") - gen "You can come back down if it's too much for yo--" ("base", xpos="far_left", ypos="head") - cho "Shut up!" ("scream", "closed", "angry", "mid", trans=hpunch) # Scream - cho "Can't you see what I'm trying to do here?" ("angry", "narrow", "angry", "mid") - gen "Not really, no." ("base", xpos="far_left", ypos="head") - cho "I-I'm... testing my limits, Sir." ("angry", "narrow", "worried", "down", cheeks="blush") - cho "And I believe I've reached them!" ("mad", "happyCl", "worried", "mid", cheeks="blush") - gen "For real? You are still wearing clothes..." ("base", xpos="far_left", ypos="head") - cho "I thought{w=0.2}, if I could go as far as embarrassing myself in front of my headmaster..." ("soft", "narrow", "worried", "down", cheeks="blush") - cho "Doing the same in front of the school won't feel as bad in comparison." ("annoyed", "narrow", "worried", "down", cheeks="blush") - cho "Sir, I don't think I can do this after all." ("soft", "narrow", "worried", "mid") - cho "Could I get your permission to leave and never come back?" ("angry", "narrow", "worried", "mid") - - menu: - "\"Yes, but take off those clothes first...\"": - call play_music("stop") - cho "Yes! Thank you, Sir!" ("soft", "closed", "worried", "mid", cheeks="blush") - cho "Even after I've given up -- you're still believing in me!" ("soft", "narrow", "worried", "mid", cheeks="blush") - gen "What?{w=0.2} *Ahem* I mean..." ("base", xpos="far_left", ypos="head") - gen "Of course!{w=0.2} I always did!" ("grin", xpos="far_left", ypos="head") - cho "I may not like it. But this is all just part of my training..." ("soft", "base", "worried", "R", cheeks="blush") - gen "*Uhhhh*... Sure..." ("base", xpos="far_left", ypos="head") - call play_music("cho") - cho "It's one of many challenges I have to face before I can call myself a Quidditch champion!" ("soft", "closed", "angry", "mid") - cho "This is just about facing my inner demons, isn't it?" ("soft", "narrow", "angry", "mid") - cho "Overcoming my fears..." ("soft", "narrow", "angry", "R") - cho "Failure, and embarrassment..." ("soft", "closed", "base", "mid") - cho "(Come on Cho, you can do it!!!)" ("horny", "happyCl", "worried", "mid", cheeks="blush") - cho "*Ehm*..." ("horny", "narrow", "worried", "down", cheeks="blush") - cho "What would you like me to do first, [cho_genie_name]?" ("soft", "narrow", "worried", "mid", cheeks="blush") - cho "Remove my bra..." ("soft", "narrow", "base", "mid", cheeks="blush") - cho "Or take off my panties?" ("horny", "narrow", "worried", "down", cheeks="blush") - - "\"Yes, you are dismissed...\"": - $ cho_mood += 6 - call play_music("stop") - cho "What?!" ("soft", "wide", "base", "mid") - cho "But Sir!" ("soft", "base", "worried", "mid") - gen "You can go now..." ("base", xpos="far_left", ypos="head") - cho "You can't do that!" ("scream", "narrow", "angry", "mid", trans=hpunch) - cho "" ("angry", "narrow", "angry", "mid") - gen "Didn't you just beg me to do just that?" ("angry", xpos="far_left", ypos="head") - call play_music("sad") - cho "I begged you to help me win the Quidditch cup!" ("clench", "narrow", "angry", "mid") - cho "And to be my trainer!{w} To be a {b}good{/b} trainer!" ("soft", "narrow", "angry", "mid") - cho "How can I overcome my fear of losing if I can't even do... this!" ("annoyed", "base", "worried", "down", cheeks="blush") - cho "You're supposed to encourage me!{w=0.6} Get me through any challenges I'm confronted with." ("soft", "narrow", "angry", "mid") - gen "Including stripping?" ("base", xpos="far_left", ypos="head") - cho "Including bloody stripping!" ("scream", "closed", "angry", "mid", trans=hpunch) - cho "" ("annoyed", "narrow", "angry", "mid") - gen "To my defence. I got some mixed messages from you earlier..." ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "R") # Annoyed - call play_music("stop") - gen "Very well then..." ("base", xpos="far_left", ypos="head") - gen "Take off your clothes, [cho_name]." ("base", xpos="far_left", ypos="head") - cho "Yes, Sir!" ("soft", "closed", "base", "mid") - cho "Would you like me to take off my bra first?" ("soft", "narrow", "angry", "mid") - cho "Or pull down my panties so you can get a nice look at my lower half?" ("soft", "narrow", "base", "mid") - - menu: - gen "First, I'd like you to..." ("base", xpos="far_left", ypos="head") - "\"Show me those big, juicy \"Quaffles\" of yours!\"": - call play_music("cho") - cho "*uhhh*..." ("upset", "wide", "base", "mid", cheeks="blush") - gen "Those two mean, hearty \"bludgers\"!" ("grin", xpos="far_left", ypos="head") - cho "Sir? Could it be that you are talking about my breasts?" ("soft", "narrow", "worried", "mid", cheeks="heavy_blush") - gen "Yes indeed! Very good." ("base", xpos="far_left", ypos="head") - gen "I was hoping you would eventually catch on." ("base", xpos="far_left", ypos="head") - gen "Also because I ran out of balls to compare them to..." ("base", xpos="far_left", ypos="head") - cho "Promise me that you won't laugh when I show you my..." ("soft", "narrow", "worried", "R", cheeks="blush") - cho "\"Bludgers\"!" ("mad", "happyCl", "worried", "mid", cheeks="heavy_blush") - gen "Why would I ever laugh at a pretty girl like you, Miss Chang?" ("base", xpos="far_left", ypos="head") - cho "Because they...{w} aren't as big as Hermione's..." ("soft", "narrow", "worried", "downR", cheeks="blush") - cho "Hers are more closer to {i}Quaffles{/i} than mine..." ("soft", "base", "worried", "mid", cheeks="blush") - gen "And there will always be a pair of \"Beaters\" that prefer to play with your...{w} balls." ("base", xpos="far_left", ypos="head") - cho "Only two?..." ("upset", "base", "worried", "downR", cheeks="blush") - gen "Don't forget to count those lucky enough to get hit by those \"bludgers\"!" ("grin", xpos="far_left", ypos="head") - cho "" ("upset", "base", "raised", "mid") - gen "Speaking of which..." ("base", xpos="far_left", ypos="head") - cho "Yes?" ("soft", "base", "worried", "mid", cheeks="blush") - gen "I'd like you to hit me with them!" ("angry", xpos="far_left", ypos="head") - cho "With my breasts?" ("open", "wide", "base", "mid", cheeks="blush") - gen "Yes! Hit me full force!{w} Take off that bra!" ("grin", xpos="far_left", ypos="head") - cho "*Ugh!*..." ("mad", "narrow", "base", "down", cheeks="blush") - cho "{size=-4}I can't believe I'm actually going to do this!{/size}" ("mad", "happyCl", "worried", "mid", cheeks="blush") - cho "" ("soft", "narrow", "worried", "mid", cheeks="blush") - pause .4 - - # Remove bra. - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("bra") - with d3 - pause .8 - - cho "" ("horny", "narrow", "worried", "mid", cheeks="heavy_blush") - call ctc - - gen "Simply wonderful, Miss Chang." ("angry", xpos="far_left", ypos="head") - gen "Those are some stellar breasts you got there." ("base", xpos="far_left", ypos="head") - cho "(...)" ("base", "narrow", "worried", "downR", cheeks="blush") - gen "Some \"outstanding\" boobies!" ("angry", xpos="far_left", ypos="head") - cho "..." ("annoyed", "narrow", "base", "mid", cheeks="blush") - gen "Would you mind if I smack them?" ("base", xpos="far_left", ypos="head") - cho "What?! Of course I would mind!" ("soft", "wide", "base", "mid", cheeks="heavy_blush") - gen "I just want to beat them around a bit..." ("base", xpos="far_left", ypos="head") - cho "" ("annoyed", "narrow", "angry", "mid", cheeks="blush") - gen "After all, they are two soft, meaty \"bludgers\"!" ("grin", xpos="far_left", ypos="head") - gen "And I'm a \"beater\"!" ("grin", xpos="far_left", ypos="head") - - $ genie_quid_position = "beater" - - cho "You are childish.{w} That's what you are..." ("soft", "narrow", "angry", "mid") - gen "You're the one playing games." ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "mid") - cho "Fine...{w} But Only once!" ("soft", "narrow", "angry", "R") - cho "Twice...{w} maybe..." ("mad", "narrow", "worried", "downR", cheeks="blush") - gen "That's a hundred percent more than I had hoped for!" ("grin", xpos="far_left", ypos="head") - - call slap_her - cho "*Ouch!*" ("angry", "wide", "base", "mid", cheeks="blush") - call slap_her - call slap_her - call slap_her - cho "Stop it!" ("scream", "happyCl", "worried", "mid", cheeks="blush") - cho "That was more than twice!" ("soft", "narrow", "angry", "mid", cheeks="blush") - gen "I stopped counting halfway through..." ("base", xpos="far_left", ypos="head") - - "\"Let me catch sight of that 'Snitch!'\"": - call play_music("cho") - cho "Don't you mean \"Snatch,\" Sir?" ("annoyed", "narrow", "angry", "mid") - gen "Potato, Potato!" ("grin", xpos="far_left", ypos="head") - cho "Your motives were nothing but for your own perverted gains, weren't they? From the very start." ("soft", "narrow", "base", "mid") # Annoyed - gen "More or less..." ("base", xpos="far_left", ypos="head") - gen "However, I never lied about wanting to help you win the Quidditch cup!" ("base", xpos="far_left", ypos="head") - gen "(Since I've bet a fortune on it...)" ("angry", xpos="far_left", ypos="head") - gen "And I wouldn't be able to call myself a man if I was lying!" ("base", xpos="far_left", ypos="head") - cho "And you'd be called a dead man, if you try to trick me!" ("clench", "narrow", "angry", "mid") - gen "Well technically I'm a geni--" ("base", xpos="far_left", ypos="head") - call play_sound("kick") - cho "" ("annoyed", "narrow", "angry", "mid", trans=vpunch) - gen "*Aaaaah*!" ("angry", xpos="far_left", ypos="head") - call nar(">Cho does a daunting stomp on your desk...") - cho "Don't think for a second I wouldn't do it! After all of this!" ("scream", "narrow", "angry", "mid") - cho "" ("angry", "narrow", "angry", "mid") - call play_sound("gulp") - gen "*Gulp*" ("angry", xpos="far_left", ypos="head") - gen "Yes, Ma'am." ("base", xpos="far_left", ypos="head") - cho "(...)" ("upset", "closed", "base", "mid") - cho "" ("upset", "narrow", "worried", "down", cheeks="blush") - pause .4 - - # Remove panties. - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("panties") - with d3 - pause .5 - - cho "" ("horny", "narrow", "worried", "mid", cheeks="heavy_blush") - call ctc - - cho "Happy, Sir?" ("soft", "narrow", "worried", "mid", cheeks="blush") - gen "Very." ("base", xpos="far_left", ypos="head") - gen "Finally I get the appeal of Quidditch." ("grin", xpos="far_left", ypos="head") - cho "Really?" ("soft", "base", "raised", "mid") - gen "Yes..." ("base", xpos="far_left", ypos="head") - gen "You see, I think I've become quite a bit of a seeker myself!" ("grin", xpos="far_left", ypos="head") - - $ genie_quid_position = "seeker" - - cho "(...)" ("annoyed", "base", "base", "mid") - gen "And I believe I've just found my very own golden snatch!" ("base", xpos="far_left", ypos="head") - cho "" ("annoyed", "narrow", "angry", "mid", cheeks="blush") - gen "You should consider yourself lucky, Miss Chang." ("base", xpos="far_left", ypos="head") - cho "Why?..." ("soft", "narrow", "raised", "mid") - gen "It's very pretty." ("grin", xpos="far_left", ypos="head") - cho "*Ugh*..." ("mad", "narrow", "base", "down", cheeks="heavy_blush") - - - cho "Sir, will that be all then?" ("annoyed", "narrow", "angry", "mid", cheeks="blush") - cho "May I go now?" ("soft", "narrow", "angry", "R") - gen "Haven't you forgotten something?" ("base", xpos="far_left", ypos="head") - cho "Didn't I do enough for you already?" ("angry", "narrow", "angry", "mid") - gen "For me, you did more than enough!{w=0.6} I'm more than pleased with what you've shown me..." ("grin", xpos="far_left", ypos="head") - cho "*Ugh*..." ("disgust", "narrow", "base", "down", cheeks="blush") # Disgusted - gen "But, wasn't your goal earlier to undress entirely?" ("base", xpos="far_left", ypos="head") - gen "To prove to yourself that you {b}could{/b} do it?" ("base", xpos="far_left", ypos="head") - cho "{size=-4}I hoped you'd just forget about that...{/size}" ("mad", "narrow", "worried", "down", cheeks="blush") # Small text. - gen "Well, I didn't!" ("grin", xpos="far_left", ypos="head") - gen "I'm here to help you mature -- and boost your confidence." ("base", xpos="far_left", ypos="head") - gen "A body like yours is nothing you need to hide away!" ("base", xpos="far_left", ypos="head") - cho "" ("base", "narrow", "worried", "mid", cheeks="blush") - gen "Don't you think so too?{w} After all the work you put into it?" ("base", xpos="far_left", ypos="head") - gen "It should be celebrated! And seen by everyone!" ("angry", xpos="far_left", ypos="head") - cho "You're making me blush, [cho_genie_name]..." ("horny", "narrow", "worried", "downR", cheeks="heavy_blush") - gen "You can do it, [cho_name]! Show me the goods!" ("grin", xpos="far_left", ypos="head") - cho "Yes, Sir!" ("angry", "closed", "worried", "mid", cheeks="blush") - cho "" ("base", "narrow", "worried", "mid", cheeks="blush") - pause .4 - - # Cho strips completely. - $ renpy.sound.play("sounds/cloth_sound3.ogg") - hide cho_main - $ cho.strip("all") - pause 1.2 - call cho_chibi("stand", "on_desk", "on_desk", flip=True) - pause .4 - $ renpy.sound.play("sounds/cloth_sound4.ogg") - show screen cho_cloth_pile - pause .6 - call cho_chibi("stand", "on_desk", "on_desk", flip=False) - cho "" (trans=d3) - pause .5 - - cho "" ("horny", "narrow", "worried", "mid", cheeks="heavy_blush") - call ctc - - gen "See, that wasn't very hard was it?" ("base", xpos="far_left", ypos="head") - cho "No..." ("soft", "narrow", "base", "down", cheeks="blush") - cho "No! You're right!" ("smile", "base", "base", "mid") - gen "And you have a very beautiful body -- if I might add." ("base", xpos="far_left", ypos="head") - cho "Thank you, Sir." ("soft", "narrow", "worried", "mid") - gen "I can see why Hermione is so jealous." ("base", xpos="far_left", ypos="head") - cho "" ("upset", "base", "base", "mid", cheeks="blush") - pause .8 - cho "She is?" ("scream", "wide", "base", "mid", cheeks="blush", trans=vpunch) - cho "" ("horny", "base", "base", "down", cheeks="heavy_blush") - gen "Look who perked up all of a sudden." ("base", xpos="far_left", ypos="head") - cho "She should be jealous!{w=0.6} These thighs could snap a broom in half if I tried hard enough." ("smile", "narrow", "angry", "mid", cheeks="blush") - call ctc - - call play_sound("gulp") - gen "*Gulp!*" ("angry", xpos="far_left", ypos="head") - gen "I don't doubt it." ("base", xpos="far_left", ypos="head") - - cho "Thank you, [cho_genie_name]." ("base", "closed", "base", "mid") - gen "For what?" ("base", xpos="far_left", ypos="head") - cho "For teaching me." ("soft", "narrow", "worried", "downR") - cho "I couldn't have imagined showing myself off like this before... but." ("horny", "narrow", "worried", "downR", cheeks="blush") - gen "Yes?" ("base", xpos="far_left", ypos="head") - cho "Well, your methods have clearly worked so far..." ("soft", "narrow", "base", "R") - cho "And I feel more confident than ever!" ("soft", "wide", "base", "mid") - gen "That's great news, and hey..." ("base", xpos="far_left", ypos="head") - gen "If distracting doesn't work, you could just crush your opponents with those thighs of yours." ("base", xpos="far_left", ypos="head") - cho "That's true..." ("smile", "narrow", "base", "mid") - call hide_characters - hide screen bld1 - show screen blkfade - with d5 - - call play_sound("climb_desk") - call cho_chibi("stand", "desk", "base", flip=False) - - pause 1 - - hide screen blkfade - with d5 - pause .2 - - cho "Will this be all then, Sir?" ("soft", "base", "base", "R") - gen "Yes Miss Chang, great work today..." ("base", xpos="far_left", ypos="head") - gen "I doubt you'll have any problems distracting anyone with a body like that." ("base", xpos="far_left", ypos="head") - gen "You're dismissed." ("base", xpos="far_left", ypos="head") - cho "Thank you, [cho_genie_name]." ("base", "happyCl", "base", "mid") - call hide_characters - hide screen bld1 - with d3 - pause .1 - - call cho_walk("door", "base") - - call bld - gen "Miss Chang." ("base", xpos="far_left", ypos="head") - hide screen bld1 - with d3 - pause .3 - - call cho_chibi("stand", "door", "base", flip=False) - with d3 - pause .2 - - cho "Yes?" ("soft", "base", "raised", "mid", ypos="head", flip=False) - gen "Aren't you forgetting about something?" ("base", xpos="far_left", ypos="head") - cho "Sir?" ("soft", "narrow", "base", "mid") - gen "You're still naked...{w} I wouldn't go out there if I were you..." ("base", xpos="far_left", ypos="head") - cho "Oh, yes of course!" ("soft", "wide", "base", "mid", cheeks="blush", trans=hpunch) - - call cho_walk("desk", "base") - pause .5 - call chibi_emote("thought", "cho") - pause .8 - - # Cho puts clothes back on. - call play_sound("equip") - hide cho_main - $ cho.wear("all") - hide screen cho_cloth_pile - pause .8 - - cho "(...)" ("disgust", "narrow", "worried", "down", cheeks="blush", xpos="right", ypos="base") - cho "*Uhm*..." ("soft", "narrow", "worried", "mid", cheeks="blush") - if game.daytime: - cho "Have a good day..." ("soft", "base", "base", "R", cheeks="blush") - else: - cho "Have a good night..." ("soft", "base", "base", "R", cheeks="blush") - - # Cho leaves. - call cho_walk(action="leave") - - call bld - gen "She's so cute..." ("base", xpos="far_left", ypos="head") - gen "And sexy!" ("grin", xpos="far_left", ypos="head") - gen "But also a bit intimidating..." ("base", xpos="far_left", ypos="head") - - jump end_cho_strip_event - - -label cc_pf_strip_T2_intro_E3: - gen "[cho_name], how would you like to do another striptease for me?" ("grin", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "mid") - gen "You did such a phenomenal job last time!" ("grin", xpos="far_left", ypos="head") - cho "Another strip show?" ("soft", "narrow", "angry", "R") - gen "Yes Indeed! Come a bit closer..." ("grin", xpos="far_left", ypos="head") - cho "(...)" ("angry", "narrow", "base", "down") - - call cho_walk("desk", "base") - - cho "Sir, Those favours were never about my training, were they?" ("soft", "narrow", "angry", "mid", xpos="mid", ypos="base", trans=fade) - gen "I never said they were!" ("base", xpos="far_left", ypos="head") - cho "" ("annoyed", "narrow", "angry", "mid") - pause .8 - gen "You keep me happy by doing favours for me, and in return, I will train you..." ("base", xpos="far_left", ypos="head") - gen "That was the deal." ("base", xpos="far_left", ypos="head") - cho "I never expected that they would require me to do...{w} this!" ("annoyed", "base", "worried", "down") - gen "But you did it anyway! Commendable!" ("grin", xpos="far_left", ypos="head") - cho "Please stop it with your compliments, Sir!" ("open", "closed", "angry", "mid") - cho "And explain to me why those favours have to be so..." ("annoyed", "narrow", "worried", "downR") - cho "{size=-4}perverted?{/size}" ("soft", "narrow", "angry", "R", cheeks="blush") # Small text - gen "You see..." ("base", xpos="far_left", ypos="head") - gen "It can get pretty lonely in this room." ("base", xpos="far_left", ypos="head") - gen "There's not even a television set up here..." ("base", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "narrow", "angry", "mid") - pause .8 - - # Remove top. - if cho.is_worn("top"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("robe", "top") - with d3 - pause .5 - - cho "" ("quiver", "narrow", "worried", "R", cheeks="blush") - call ctc - - cho "Does Granger do these sorts of things for you too?" ("soft", "base", "worried", "mid", cheeks="blush") - gen "She does a lot of things for me. You need to be more specific!" ("grin", xpos="far_left", ypos="head") - cho "I meant buying \"sexual favours.\"{w} Doing tasks that are, let's say, a little audacious..." ("soft", "narrow", "worried", "downR", cheeks="blush") - gen "Are you talking about stripping, girl?" ("base", xpos="far_left", ypos="head") - cho "Yes, Sir." ("quiver", "narrow", "worried", "downR", cheeks="blush") - pause .4 - - - # Check if Hermione has already stripped for you. - if not hg_strip.trigger: # Triggers in hg_pf_strip_T3_intro_E2. This check needs to always be no earlier here to make sure Luna is also unlocked. - - # Cho demands that you get Hermione to strip, so Cho has something to blackmail her should anything happen. - # Cho gets dressed again and storms off. - # Remove skirt. - - if cho.is_worn("bottom"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - hide cho_main - $ cho.strip("bottom") - pause 1.2 - $ renpy.sound.play("sounds/cloth_sound4.ogg") - show screen cho_cloth_pile - pause .4 - cho "" (trans=d3) - pause .5 - - cho "" ("horny", "base", "worried", "mid", cheeks="heavy_blush") - call ctc - - gen "Actually, she doesn't..." ("base", xpos="far_left", ypos="head") - cho "What? But I thought she'd--" ("soft", "wide", "base", "mid") - cho "Why do you ask me to do these favours, and not Granger?" ("open", "narrow", "angry", "mid", trans=hpunch) - gen "Let's just say, she isn't as progressive as you...{w} yet." ("base", xpos="far_left", ypos="head") - cho "You haven't even seen her naked?" ("angry", "base", "base", "mid") - cho "What favours are you even buying from her?" ("open", "base", "angry", "mid") - gen "Just chit-chats, mostly..." ("base", xpos="far_left", ypos="head") - cho "Make her strip too!" ("clench", "narrow", "angry", "mid") - gen "It's not that easy, girl!" ("angry", xpos="far_left", ypos="head") - cho "Well then get on with it!" ("angry", "closed", "angry", "mid") - cho "What's the worst that could happen?" ("soft", "narrow", "angry", "R") - gen "She could report me, and I'd get kicked out of this school most likely." ("base", xpos="far_left", ypos="head") - gen "She's reported me to that ministry before..." ("base", xpos="far_left", ypos="head") - cho "The \"Ministry of Magic\"?" ("open", "base", "raised", "mid") - cho "If they were to regulate the school rules more strictly, my chance of winning the Quidditch cup would be back down to zero!" ("angry", "wide", "worried", "mid", cheeks="blush") - cho "And if Granger ever was to find out about me stripping for our headmaster, it would mean the end of my Quidditch career for sure!" ("mad", "base", "worried", "downR", cheeks="blush") - gen "So? What do you suggest we do?" ("base", xpos="far_left", ypos="head") - cho "Isn't it obvious?! Ask her to do more advanced favours!" ("soft", "narrow", "angry", "mid") - cho "If I could get a hold of something to blackmail her with, she'd never dare to report to the ministry!" ("clench", "narrow", "angry", "R") - gen "That doesn't sound too bad of an idea..." ("base", xpos="far_left", ypos="head") - cho "Until then, don't expect me to undress for you..." ("soft", "narrow", "angry", "mid") - gen "(Bollocks...)" ("base", xpos="far_left", ypos="head") - cho "" ("annoyed", "closed", "angry", "mid") - pause .5 - - # call play_sound("equip") #The player could technically have taken her top and bottoms off in wardrobe (Unless we change things) - $ cho.wear("all") - hide screen cho_cloth_pile - cho "" ("annoyed", "narrow", "angry", "mid") - pause .8 - - cho "Good day, Sir!" ("soft", "narrow", "angry", "mid") - - # Cho leaves. - call cho_walk(action="leave") - - # Event failed, no progress. - $ cc_pf_strip.fail() - jump end_cho_event - - - # After you got Hermione to strip. - - # Remove skirt. - if cho.is_worn("bottom"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - hide cho_main - $ cho.strip("bottom") - cho "" (trans=d3) - pause .5 - - cho "" ("horny", "base", "worried", "mid", cheeks="heavy_blush") - call ctc - - gen "She does indeed." ("base", xpos="far_left", ypos="head") - cho "Really?!{w} You got that cow to take off her clothes?" ("soft", "wide", "base", "mid") - cho "Did you get any proof?" ("soft", "base", "worried", "mid") - gen "What?{w} Why would I--" ("base", xpos="far_left", ypos="head") - cho "To blackmail her!{w} To prove that she's in on this whole \"favour trading\" business too..." ("open", "narrow", "angry", "mid") - gen "We had an eye witness, for what it's worth..." ("base", xpos="far_left", ypos="head") - cho "Seriously?! Who was it?" ("smile", "base", "base", "mid") - gen "Snape..." ("base", xpos="far_left", ypos="head") - cho "What?! Professor Snape?" ("scream", "wide", "base", "mid", trans=hpunch) - cho "" ("smile", "wide", "base", "mid") - gen "He sort of just walked in on the action.{w} After all, the door wasn't locked..." ("base", xpos="far_left", ypos="head") - cho "That's too funny! I wish I could have been there!" ("smile", "base", "base", "R") - gen "She was dancing on my desk, right here, butt naked!" ("grin", xpos="far_left", ypos="head") - cho "That sounds sooo embarrassing!" ("soft", "narrow", "worried", "up", cheeks="blush") - gen "As far as I know, that door isn't locked right now either..." ("base", xpos="far_left", ypos="head") - gen "Aren't you scared that Snape might walk in on you too?" ("base", xpos="far_left", ypos="head") - cho "*Hmm*.." ("annoyed", "base", "base", "R") - - call hide_characters - show screen blkfade - with d3 - call play_sound("desk") - pause 3 - - ">You watch as Cho slowly climbs onto your desk..." - - call cho_chibi("stand", "on_desk", "on_desk") - hide screen bld1 - hide screen blkfade - with d3 - pause .8 - - cho "I'm not scared at all, Sir!" ("smile", "narrow", "angry", "mid") - cho "" ("horny", "narrow", "angry", "mid") - pause .4 - - # Remove bra. - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("bra") - with d3 - pause .5 - - cho "" ("horny", "narrow", "angry", "mid") - call ctc - - cho "It's just Professor Snape, after all..." ("soft", "narrow", "base", "R") - cho "Everybody knows that he's a creep! Nobody would believe a word he says." ("open", "base", "angry", "down") - gen "So...{w} what if it's not Snape, but some other teacher that makes their way in here?" ("base", xpos="far_left", ypos="head") - cho "*Huh*?{w=0.5} Oh no!" ("soft", "wide", "base", "mid") - cho "For a second I forgot we even had other teachers at this school!" ("open", "wide", "worried", "L", cheeks="blush") - cho "What if Professor McGonagall stumbles in here while...{w} while I--" ("angry", "happyCl", "worried", "mid", cheeks="heavy_blush") - - - call hide_characters - show screen blkfade - with d3 - pause 1.0 - - $ renpy.sound.play("sounds/jump_shoes.ogg") - call cho_chibi("stand", "desk", "base", flip=True) - hide screen bld1 - hide screen blkfade - with d3 - call teleport(position="cho", effect=False) - pause .5 - - call bld - gen "Don't worry. That won't happen." ("base", xpos="far_left", ypos="head") - call cho_chibi("stand", "desk", "base") - with d3 - pause .5 - - cho "Are you sure, Sir?" ("soft", "narrow", "worried", "mid", cheeks="blush") - gen "You have my word..." ("base", xpos="far_left", ypos="head") - cho "O-{w=0.2}okay..." ("soft", "narrow", "worried", "R", cheeks="blush") - gen "Now then, Miss Chang!{w} It's time for the grand finale..." ("base", xpos="far_left", ypos="head") - gen "Take it all off!" ("grin", xpos="far_left", ypos="head") - gen "I want to see you naked..." ("grin", xpos="far_left", ypos="head") - cho "(...)" ("annoyed", "base", "worried", "down", cheeks="blush") - cho "Very well, Sir." ("base", "base", "base", "mid") - pause .4 - - # Remove panties + everything else. - $ renpy.sound.play("sounds/cloth_sound3.ogg") - hide cho_main - $ cho.strip("all") - pause 1.2 - $ renpy.sound.play("sounds/cloth_sound4.ogg") - show screen cho_cloth_pile - pause .6 - - cho "" ("horny", "narrow", "base", "down", cheeks="blush") - call ctc - - gen "I've got to say, once again I'm very impressed by you!" ("angry", xpos="far_left", ypos="head") - cho "Glad to hear it, [cho_genie_name]." ("smile", "narrow", "base", "mid") - cho "Catch!" ("base", "base", "base", "L") - call nar(">Cho throws her panties onto your desk.") - cho "You can keep them, for now..." ("soft", "narrow", "base", "R") - gen "I appreciate the notion!" ("grin", xpos="far_left", ypos="head") - cho "" ("base", "narrow", "base", "mid") - pause .8 - - # Panties acquired message! - call give_reward(">You have acquired Cho's panties!", "interface/icons/panties.webp") - $ has_cho_panties = True - - gen "Well then, Miss Chang..." ("base", xpos="far_left", ypos="head") - gen "You may leave now.{w} Dismissed." ("base", xpos="far_left", ypos="head") - cho "Wait Sir!{w} I can't leave just yet!" ("open", "wide", "base", "mid") - gen "Why not? Don't tell me you want points now after all..." ("base", xpos="far_left", ypos="head") - cho "No Sir, but...{w} I don't believe we are done here..." ("mad", "base", "worried", "downR", cheeks="blush") - gen "We aren't?" ("grin", xpos="far_left", ypos="head") - cho "May I request something of you, Sir?" ("soft", "narrow", "worried", "mid", cheeks="blush") - gen "Yes?{w} What is it?" ("base", xpos="far_left", ypos="head") - - # Cho asks you to summon Hermione. - cho "Could you please..." ("soft", "base", "worried", "downR", cheeks="blush") - cho "*Ehm*..." ("quiver", "narrow", "worried", "downR", cheeks="heavy_blush") - cho "Could you please summon Hermione?" ("soft", "narrow", "worried", "mid", cheeks="heavy_blush") - - with hpunch - gen "What?" ("angry", xpos="far_left", ypos="head") - cho "It's time someone throws \"high and mighty\" Granger off her high horse!" ("open", "narrow", "angry", "mid") - cho "She's been a pain in my butt for years now..." ("angry", "narrow", "angry", "downR") - cho "This is going to be my revenge!" ("soft", "narrow", "angry", "mid") - gen "Are you sure that this is such a good idea? Aren't you scared she'll tattle about it?" ("base", xpos="far_left", ypos="head") - cho "No.{w} Granger is clever..." ("soft", "closed", "base", "mid") - cho "She could destroy my reputation, sure..." ("soft", "base", "base", "R") - cho "But, should that happen, I now have the means to take her down with me!" ("base", "narrow", "angry", "mid") - cho "I'm not the only one stripping for you, after all." ("soft", "narrow", "base", "mid") - gen "I suppose you're right..." ("base", xpos="far_left", ypos="head") - cho "I can't believe how depraved Granger actually is..." ("horny", "narrow", "angry", "down", cheeks="blush") - cho "Stripping for her headmaster.{w=0.6} What a slut..." ("soft", "narrow", "angry", "mid", cheeks="blush") - gen "Aren't you doing exactly the same?" ("base", xpos="far_left", ypos="head") - cho "Yes, but I'm not a whore stripping for points, unlike her!" ("open", "closed", "base", "mid") - gen "Still makes you a slut..." ("base", xpos="far_left", ypos="head") - cho "I'm untouchable! I'll show that {b}bitch{/b} she can't mess with me!" ("angry", "narrow", "angry", "R") - cho "This is gonna be so much fun!" ("smile", "narrow", "angry", "mid") - - stop music fadeout 3.0 - call cho_walk(570, "base") - pause 2.0 - - cho "Call her already!" ("annoyed", "narrow", "angry", "R", flip=True, trans=d5) - gen "I'm on it..." ("base", xpos="far_left", ypos="head") - - hide screen bld1 - show screen blkfade - with d3 - hide cho_main - pause 1.0 - hide screen blkfade - with d3 - - # Equip Hermione default clothing. - $ her_outfit_last.save() # Store current outfit. - $ hermione.equip(her_outfit_default) #Equip Hermione default clothing. - - # Summon Hermione. - call play_sound("door") - call her_chibi("stand", "door", "base") - with d3 - pause .5 - - her "You wanted to see me, Sir?" ("soft", "closed", "base", "mid", xpos="base", ypos="base", flip=False, trans=d3) - - her "...{w=0.4}{nw}" ("soft", "base", "worried", "L") - her "...{fast}Cho?!" ("clench", "wide", "worried", "shocked") - - play music "music/deadly-roulette-by-kevin-macleod.ogg" fadein 1 fadeout 1 - - cho "Hey there, Granger!" ("horny", "narrow", "angry", "mid") # Grinning - her "What? Why are you--" ("disgust", "wide", "worried", "shocked") - - call her_walk(660, "base") - - cho "" ("smile", "narrow", "angry", "L", xpos="mid", ypos="base", flip=True) - her "What the bloody hell is going on here?!" ("scream", "closed", "base", "mid", xpos="right", ypos="base", trans=hpunch) # Scream - her "" ("angry", "base", "angry", "mid") - - cho "You know, just the usual..." ("soft", "base", "base", "L") - cho "Like stripping for our dear headmaster!" ("smile", "narrow", "angry", "L") - cho "I trust that you're more than familiar with it..." ("soft", "closed", "base", "L") - her "You've told her?" ("clench", "base", "angry", "mid") - cho "So you really {b}did{/b} do it!" ("open", "wide", "base", "L") - her "It's none of your business what I do at this school! You slut!" ("angry", "narrow", "angry", "R") - cho "Are you sure about that?{w=0.6} I believe there are some people that would think otherwise..." ("grin", "narrow", "base", "mid") - cho "Your friends...{w} the other students...{w} our teachers..." ("soft", "narrow", "angry", "L") - cho "Maybe even the ministry?" ("smile", "narrow", "angry", "L") - her "You wouldn't dare!!!" ("upset", "happy", "base", "mid") - cho "Indeed, I wouldn't." ("soft", "closed", "base", "mid") - cho "And neither would you!" ("smile", "narrow", "angry", "L") - cho "Which is why we brought you here..." ("open", "base", "base", "mid") - cho "To have some fun!" ("base", "narrow", "angry", "mid") - - her "Sir, I demand that you stop this nonsense!" ("open", "base", "angry", "mid") - cho "I don't think that's very likely to happen, Granger..." ("soft", "narrow", "angry", "mid") - cho "We both know what he would prefer..." ("soft", "closed", "base", "mid") - gen "..." ("base", xpos="far_left", ypos="head") - cho "And who he prefers..." ("smile", "narrow", "angry", "mid") - her "You think that he prefers you over me?{w} Please..." ("soft", "narrow", "angry", "R") - cho "Why don't we just ask him?" ("base", "narrow", "base", "mid") - cho "Tell us, sir..." ("soft", "narrow", "base", "R") - cho "How do you like the athletic, immaculate, nude body of your favourite student?" ("smile", "narrow", "angry", "mid") - cho "It's so much better than Miss Granger's, isn't it?" ("base", "narrow", "angry", "mid") - call ctc - - $ cho_strip_complete = True # Enables wardrobe strip functions. - $ d_flag_01 = False # Cho not on desk - call cc_pf_strip_T2_hermione - - jump end_cho_strip_event - - -label cc_pf_strip_T2_E3: # Repeats - gen "[cho_name], why don't you come a bit closer?" ("base", xpos="far_left", ypos="head") - cho "Of course, [cho_genie_name]..." ("base", "narrow", "base", "mid") - - call cho_walk("desk", "base") - - cho "" ("base", "base", "base", "R", xpos="mid", ypos="base", trans=fade) - call ctc - - gen "I'm in the mood for another striptease!" ("grin", xpos="far_left", ypos="head") - cho "You are, are you?" ("soft", "base", "raised", "downR") - - # Remove robe. - if cho.is_worn("robe"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("robe") - with d3 - pause .5 - - cho "Good, because so am I!" ("base", "narrow", "angry", "mid") - cho "" ("base", "narrow", "angry", "mid") - - #Remove top. - if cho.is_worn("top"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("top") - cho "*Hmm*... You better be enjoying this, Sir." ("soft", "closed", "base", "mid") - with d3 - pause .5 - - #Remove bottoms. - if cho.is_worn("bottom"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("bottom") - with d3 - pause .5 - gen "*Argh!* You little minx!" ("angry", xpos="far_left", ypos="head") - - cho "Are we going to invite Granger again?" ("soft", "narrow", "raised", "down") - cho "I would like to have some fun with her..." ("smile", "narrow", "angry", "mid") - pause .4 - - # Remove bra. (she is wearing underwear at this level in any case) - if cho.is_worn("bra"): - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("bra") - with d3 - pause .5 - - gen "The more, the merrier!" ("grin", xpos="far_left", ypos="head") - cho "" ("base", "narrow", "angry", "mid") - pause .4 - - # Remove panties + all else. - $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("all") - hide cho_main - $ cho.strip("all") - pause 1.2 - $ renpy.sound.play("sounds/cloth_sound4.ogg") - show screen cho_cloth_pile - pause .6 - cho "" (trans=d3) - call ctc - - cho "Catch, [cho_genie_name]!" ("soft", "base", "base", "mid") - call nar(">Cho throws her panties at you.") - - # Panties acquired message! - call give_reward(">You have acquired Cho's panties!", "interface/icons/panties.webp") - $ has_cho_panties = True - - gen "Nice!" ("grin", xpos="far_left", ypos="head") - cho "I'd like to have them back after this, mind you." ("soft", "base", "raised", "R") - gen "Of course..." ("base", xpos="far_left", ypos="head") - cho "Anything else you'd like, Sir?" ("base", "base", "base", "mid") - - $ d_flag_01 = False # Cho on desk flag for this event - menu: - "\"Hop on my desk!\"": - $ d_flag_01 = True - cho "Good idea, [cho_genie_name]!" ("base", "happyCl", "base", "mid") - call hide_characters - show screen blkfade - with d3 - call play_sound("desk") - pause 2 - - call cho_chibi("stand", "on_desk", "on_desk", flip=False) - hide screen bld1 - hide screen blkfade - with d3 - pause 1 - - cho "How is the view down there, Sir?" ("base", "narrow", "base", "down") - gen "Couldn't be any better!" ("grin", xpos="far_left", ypos="head") - - call hide_characters - hide screen bld1 - with d3 - pause .2 - - call cho_chibi("stand", "on_desk", "on_desk", flip=True) # Facing the door. - with d3 - pause .8 - cho "Now, if you don't mind, Sir..." ("soft", "base", "base", "R", xpos="mid", ypos="base", flip=True) - cho "I'd like you to call that Gryffindor slut to your office!" ("soft", "base", "base", "L") - - "\"Let Granger have a good look at you!\"": - cho "I'll make sure of it, Sir!" ("soft", "narrow", "angry", "mid") - - call cho_walk(570, "base") - cho "Alright, you can call her now." ("soft", "base", "base", "R", xpos="mid", ypos="base", flip=True) - - - gen "On it!" ("grin", xpos="far_left", ypos="head") - pause .8 - cho "(...)" ("annoyed", "narrow", "angry", "L") - gen "(...)" ("base", xpos="far_left", ypos="head") - - call hide_characters - hide screen bld1 - with d3 - pause .5 - - # Equip Hermione default clothing. - $ her_outfit_last.save() # Store current outfit. - $ hermione.equip(her_outfit_default) #Equip Hermione default clothing. - - # Hermione enters. - call play_sound("door") - call her_chibi("stand", "door", "base") - with d3 - pause .5 - - call chibi_emote("thought", "hermione") - pause .8 - - call her_walk(660, "base") - - cho "" ("horny", "narrow", "angry", "L", xpos="mid", ypos="base", flip=True) - her "You wanted to see me, Professor?" ("soft", "closed", "base", "mid", xpos="base", ypos="base") - gen "Yes, but I wasn't the only one." ("grin", xpos="far_left", ypos="head") - her "(...)" ("annoyed", "narrow", "angry", "R") - cho "Hi, Granger!" ("smile", "narrow", "angry", "L") - her "Let me guess, we are here to marvel at your insecurity again?" ("soft", "closed", "base", "mid") - cho "Granger, instead of spitting out insults, why don't you join me and have some fun for once?" ("soft", "base", "raised", "L") - cho "Strip down for your headmaster as well, like you usually do..." ("smile", "narrow", "angry", "L") - cho "Or would it bother you too much, now that I'm here?" ("horny", "narrow", "base", "L") - her "*glare*" ("angry", "base", "angry", "mid") - cho "Maybe then you'd have a chance to win against me!{w} And earn some useless Gryffindor points while you're at it." ("soft", "base", "base", "L") - her "I don't think that will be necessary..." ("soft", "closed", "base", "mid") - cho "Well, we all already know how this is going to turn out don't we, [cho_genie_name]?" ("soft", "base", "base", "mid") - cho "My body is still better than Miss Granger's, isn't it?" ("smile", "narrow", "angry", "L") - her "" ("annoyed", "base", "angry", "mid") - call ctc - - call cc_pf_strip_T2_hermione - - jump end_cho_strip_event - - -label cc_pf_strip_T2_hermione: - - menu: - "\"Definitely!\"": - $ her_mood += 10 - her "What?!" ("open", "wide", "base", "stare") - cho "See, I told you!{w=0.6} How could he pick a walking bush on legs over this!" ("smile", "narrow", "angry", "L") - her "" ("angry", "base", "angry", "mid") - cho "Now tell her. Tell her why my body is superior compared to hers." ("soft", "closed", "base", "mid") - gen "..." ("base", xpos="far_left", ypos="head") - gen "Well, you're more flexible for one..." ("base", xpos="far_left", ypos="head") - cho "That's right, I am!" ("soft", "wide", "base", "mid") - her "*Humph*..." ("annoyed", "narrow", "angry", "R") - cho "And? What else?" ("smile", "narrow", "base", "L") - gen "And Cho's thighs are probably the most impressive ones I've seen in the last hund-- decade or more!" ("angry", xpos="far_left", ypos="head") - her "Well in that case..." ("soft", "closed", "base", "mid") - her "In that case I'll give you a great opportunity to stare at them indefinitely." ("angry", "base", "angry", "mid") - cho "What are you talking about, Granger?" ("soft", "narrow", "raised", "L") - - # Hermione walks towards the desk to pick up Cho's clothing. - call her_walk("desk", "base", speed=1.5) - pause .2 - if not d_flag_01: # Cho not on desk - call cho_chibi("stand",570,"base", flip=False) # Facing the desk. - with d3 - pause .6 - - cho "What are you doing?" ("soft", "narrow", "base", "L", ypos="head", flip=False) - - # Hermione picks them up and runs off. - call bld("hide") - pause .2 - call play_sound("equip") - hide screen cho_cloth_pile - pause .5 - - cho "My clothes!" ("open", "wide", "base", "L") - - call play_sound("running") - call her_walk("door", "base", speed=2) - call her_chibi(flip=False) - with d3 - pause .1 - call cho_chibi(flip=True) - with d3 - - her "Hey seeker, looks like someone will have to seek their way to their dorm without any clothes tonight." ("open", "base", "angry", "mid", ypos="head", flip=False) - cho "Hey!" ("clench", "narrow", "angry", "L", ypos="head", flip=True) - - # Hermione leaves out of the door. - hide screen bld1 - call her_chibi("stand", "door", "base", flip=True) - with d3 - pause .2 - - call her_chibi("leave") - - # Cho runs out the door. - if d_flag_01: # On desk - call play_sound("climb_desk") - show screen blkfade - with d3 - pause 1 - - hide screen bld1 - hide screen blkfade - call cho_chibi("stand", "desk", "base", flip=True) - with d3 - - else: - hide screen bld1 - call cho_chibi("stand",570,"base", flip=True) # Facing the door. - with d3 - - pause .2 - - cho "{size=+4}Give them back, you bitch!{/size}" ("scream", "narrow", "angry", "L", ypos="head", flip=True, trans=hpunch) - - call play_sound("running") - call cho_walk(action="leave", speed=2) - - call bld - gen "Did she just?" ("base", xpos="far_left", ypos="head") - gen "(...)" ("base", xpos="far_left", ypos="head") - gen "I don't think she's coming back..." ("base", xpos="far_left", ypos="head") - - "\"Not even close.\"": - $ cho_mood += 15 - cho "Not even clo--" ("soft", "wide", "base", "mid") - her "" ("smile", "base", "base", "R") - cho "Sir, could you please repeat that for me?" ("clench", "closed", "angry", "mid") - gen "Hermione's body is superior." ("base", xpos="far_left", ypos="head") - her "No surprise there..." ("base", "base", "base", "R") - cho "No!{w} It clearly isn't!" ("scream", "narrow", "angry", "mid", trans=hpunch) - cho "Are you mad, old man?" ("angry", "narrow", "angry", "mid") - her "Don't use that tone with the headmaster..." ("soft", "closed", "base", "mid") - cho "Nobody asked you!" ("mad", "narrow", "angry", "L") - her "He's the wisest wizard at our school...{w} Surely his word should be final..." ("smile", "narrow", "base", "mid_soft") - gen "I'd use the word astute but I'll take wise..." ("base", xpos="far_left", ypos="head") - cho "Why are you siding with her all of a sudden?" ("annoyed", "narrow", "angry", "mid") - gen "Good question." ("base", xpos="far_left", ypos="head") - gen "Miss Granger, why don't you show Miss Chang why your body is superior to hers..." ("base", xpos="far_left", ypos="head") - gen "Share with us your two most compelling arguments..." ("grin", xpos="far_left", ypos="head") - her "Sir?" ("soft", "wink", "base", "mid") - cho "He's talking about your {b}tits,{/b} you dimwit!" ("angry", "closed", "angry", "mid", cheeks="blush") - her "(...)" ("clench", "narrow", "base", "down", cheeks="blush") # Embarrassed - cho "" ("annoyed", "narrow", "angry", "mid") - gen "Yes Miss Granger!{w=0.5} Your very round{w=0.5}, handsomely spheroid{w=0.5}, perfectly sized{w=0.5}, very voluptuous and--" ("grin", xpos="far_left", ypos="head") - her "I got it, Professor!" ("clench", "happyCl", "worried", "mid", cheeks="blush") - cho "(Cow tits...)" ("annoyed", "narrow", "angry", "R", cheeks="blush") - $ hermione.strip("robe", "accessory") - her "Here..." ("base", "narrow", "base", "mid_soft") - - # Hermione shows her breasts. - # $ renpy.sound.play("sounds/boing02.ogg") - $ hermione.strip("top", "bra") - with d3 - pause .5 - - her "" ("base", "narrow", "base", "mid_soft", cheeks="blush") - call ctc - - her "Have a good look." ("soft", "narrow", "base", "mid_soft") - cho "(...)" ("annoyed", "narrow", "angry", "downR", cheeks="blush") # Tries to look away. - her "And you'd better take in what a {b}real pair{/b} looks like, slut." ("smile", "narrow", "angry", "R") - cho "I'd rather not, or I might barf..." ("soft", "narrow", "angry", "R") # - gen "Very nice, Miss Granger!" ("grin", xpos="far_left", ypos="head") - - menu: - "\"Ten points to Gryffindor!\"": - $ gryffindor += 10 - cho "(...)" ("annoyed", "narrow", "angry", "mid") - her "Thank you." ("soft", "narrow", "base", "mid_soft") - - "\"Fifty points to Gryffindor!\"": - $ cho_mood += 10 - $ gryffindor += 50 - cho "(Fifty?!)" ("soft", "wide", "base", "mid") # Shocked - her "Thank you." ("soft", "narrow", "base", "mid_soft") - cho "" ("clench", "closed", "angry", "mid", cheeks="heavy_blush") - - gen "For exposing those magnificent breasts." ("grin", xpos="far_left", ypos="head") - - # $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ hermione.wear("all") - with d3 - pause .5 - - her "Any time, Professor." ("soft", "narrow", "base", "mid_soft") - cho "(I bloody hate her!)" ("angry", "narrow", "angry", "L", cheeks="heavy_blush") - - her "If you don't mind, Sir." ("open", "base", "base", "R") - her "I'd like to leave now." ("soft", "base", "base", "mid") - cho "By all means, just go already." ("soft", "narrow", "angry", "R") - her "Did something not go as you expected?" ("smile", "base", "base", "R") - her "Did you think having me here when you exposed yourself would make me jealous..." ("soft", "closed", "base", "mid") - cho "(...)" ("annoyed", "narrow", "angry", "L", cheeks="blush") - her "Thank you for inviting me, Professor." ("soft", "narrow", "base", "mid_soft") - her "I {b}did{/b} enjoy this little obscene \"freak-show\" you arranged for me..." ("grin", "narrow", "base", "mid_soft") - cho "You'll regret this, Granger!" ("clench", "narrow", "angry", "L", cheeks="heavy_blush") - - if game.daytime: - her "Have a nice day, Professor." ("soft", "closed", "base", "mid") - else: - her "Have a good night, Professor." ("soft", "closed", "base", "mid") - - gen "(...)" ("base", xpos="far_left", ypos="head") - her "See you in class Chang!" ("grin", "narrow", "base", "R_soft") - cho "*Tzzzz*!" ("angry", "closed", "angry", "mid", cheeks="blush") - cho "Cow..." ("annoyed", "narrow", "angry", "R", cheeks="heavy_blush") - - # Hermione leaves. - call her_walk(action="leave") - - # Cho stands close to your desk. - call hide_characters - show screen blkfade - call cho_chibi("stand", "desk", "base", flip=True) - with d3 - - pause .5 - hide screen blkfade - with d3 - - pause .8 - call cho_chibi("stand", "desk", "base", flip=False) - - cho "I thought you were on my side, Sir!" ("soft", "narrow", "angry", "mid", xpos="mid", ypos="base", flip=False) - gen "I'm on nobody's side, because nobody is on my side..." ("base", xpos="far_left", ypos="head") - cho "You were supposed to have my back! Not Granger's!" ("angry", "closed", "angry", "mid") - cho "That {b}whore{/b} doesn't deserve your praise!" ("soft", "narrow", "angry", "mid") - gen "She made some good arguments..." ("base", xpos="far_left", ypos="head") - gen "\"A couple\" of good arguments, to be precise!" ("grin", xpos="far_left", ypos="head") - cho "They're barely larger than mine..." ("annoyed", "narrow", "base", "downR", cheeks="blush") - cho "You'll see, Sir.{w} I'm better than her.{w} And I'll prove it to you..." ("soft", "narrow", "angry", "mid") - gen "Well, that is yet to be seen." ("grin", xpos="far_left", ypos="head") - - # Cho gets dressed. - call play_sound("equip") - show screen blkfade - with d5 - $ cho.wear("all") - hide screen cho_cloth_pile - hide screen blkfade - - cho "Sir, my *Ehm*...{w} my panties..." ("open", "narrow", "angry", "R", cheeks="blush", xpos="mid", ypos="base", trans=fade) - gen "Oh, of course..." ("base", xpos="far_left", ypos="head") - cho "" ("annoyed", "narrow", "angry", "mid", cheeks="blush") - pause .5 - gen "Give me just a moment..." ("base", xpos="far_left", ypos="head") - $ renpy.sound.play("sounds/sniff.ogg") - call nar(">You give Cho's panties one last sniff before handing them back to the girl.") - gen "There." ("angry", xpos="far_left", ypos="head") - cho "(Pervert...)" ("annoyed", "narrow", "angry", "R", cheeks="blush") - cho "I think it's time for me to go now." ("soft", "closed", "angry", "mid") - cho "Until next time, [cho_genie_name]." ("soft", "narrow", "angry", "mid") - - # Cho leaves. - call cho_walk(action="leave") - - call bld - gen "Damn!" ("angry", xpos="far_left", ypos="head") - gen "For somebody that does a lot of exercising, she smells really nice!" ("grin", xpos="far_left", ypos="head") - gen "Maybe I should be a bit nicer to her next time..." ("base", xpos="far_left", ypos="head") - - $ has_cho_panties = False - - - "\"Let Hermione assess you, Cho.\"": - $ her_mood += 6 - cho "Her?" ("soft", "wide", "base", "mid") - her "I couldn't care less about the way she looks!" ("soft", "base", "angry", "mid") - cho "(...)" ("annoyed", "narrow", "angry", "L") - gen "Are you sure about that? I've seen you staring..." ("base", xpos="far_left", ypos="head") - cho "" ("base", "narrow", "angry", "L") - her "Because she just so happens to be standing there, butt naked!{w} In your office!" ("angry", "closed", "angry", "mid") - gen "I'd like you to rate Miss Chang's figure, truthfully, and to the best of your ability." ("base", xpos="far_left", ypos="head") - her "Really? Do I have to?" ("annoyed", "base", "base", "mid") - gen "You do! I'd really like to hear your opinion on Miss Chang's shamelessly exposed body!" ("grin", xpos="far_left", ypos="head") - cho "*Mhmm*" ("base", "closed", "base", "mid") # Self assured. - her "Fine..." ("soft", "narrow", "angry", "R") - her "\"Poor,\" I'd say..." ("soft", "closed", "base", "mid") - cho "How dare you!{w=0.6} You snobby skunk!" ("scream", "narrow", "angry", "L", trans=hpunch) - her "" ("base", "base", "base", "R") - gen "(Is that better or worse than \"troll?\")" ("base", xpos="far_left", ypos="head") # Snape explained school ratings during the match. - cho "Our Professor asked you to rate my body truthfully!" ("mad", "narrow", "angry", "L") - her "Which I did!{w} And it's at \"dreadful\" now!" ("soft", "closed", "base", "mid") - cho "\"Dreadful\"?!" ("soft", "wide", "base", "mid") - cho "You're a {b}lying bitch,{/b} Granger!" ("angry", "closed", "angry", "mid", cheeks="blush") - her "Sir, you can't let her talk to me like that!" ("angry", "base", "angry", "mid") - gen "Bitch isn't even a proper curse word." ("base", xpos="far_left", ypos="head") - gen "You can say that on TV..." ("base", xpos="far_left", ypos="head") - cho "Granger, why don't you tell us which part of my immaculate body deserves such a poor rating?" ("soft", "narrow", "angry", "L") - her "Very well..." ("soft", "closed", "base", "mid") - her "For one, you are a {b}narcissistic bitch!{/b}{w} That makes the presumption her body is superior to all others..." ("open", "base", "angry", "L") - cho "Because it is." ("smile", "narrow", "angry", "mid") - her "Not to mention that you have even fewer curves than some of the boys I know..." ("grin", "base", "angry", "mid") - cho "" ("annoyed", "narrow", "angry", "mid", cheeks="blush") - her "Maybe once your Quidditch endeavours all fail, you can apply for a profession to model male underwear..." ("soft", "closed", "base", "mid") - cho "I wonder where you're getting {b}your{/b} undergarments from..." ("soft", "closed", "base", "mid") - cho "Stealing them from Madam Pomfrey, are you?" ("smile", "narrow", "angry", "mid") - her "I do not!!!" ("open", "wide", "base", "stare") - gen "Girls, we all know what really counts is how we appear on the inside." ("base", xpos="far_left", ypos="head") - her "" ("angry", "closed", "angry", "mid") - cho "Oh shut up!" ("angry", "narrow", "angry", "mid") - her "Professor, you're the one who continuously asks us to expose ourselves!" ("soft", "base", "angry", "mid") - gen "Well yes. I also never claimed that {b}I{/b} was pretty on the inside." ("base", xpos="far_left", ypos="head") - gen "You of all people should know better by now..." ("base", xpos="far_left", ypos="head") - her "Despicable..." ("angry", "narrow", "angry", "R") - cho "Don't worry, Granger!" ("soft", "narrow", "angry", "L") - cho "If you were to start doing hourly exercises, our Professor might even be attracted to you by the end of the year..." ("soft", "closed", "raised", "mid") - her "Hourly exercises?" ("soft", "wide", "base", "stare") # Shocked - cho "But I wouldn't say all hope is lost!" ("smile", "narrow", "angry", "L") - cho "While your figure might be a bit repulsive to the eyes..." ("soft", "closed", "base", "mid") - cho "I don't mind looking at those {b}huge melons{/b} of yours." ("soft", "narrow", "base", "L", cheeks="blush") - her "How dare you talk of them like that!" ("angry", "narrow", "angry", "R") - gen "*Heh*... melons..." ("grin", xpos="far_left", ypos="head") - her "Sir, I'd like to leave now." ("open", "base", "angry", "mid") - - cho "Already missing your books, are you?" ("annoyed", "narrow", "base", "L") - her "I am not.{w} And I don't appreciate being made fun of!" ("angry", "closed", "angry", "mid") - - if game.daytime: - her "Good day, Sir." ("soft", "base", "angry", "mid") - cho "See ya around, Granger..." ("smile", "narrow", "angry", "L") - her "*Hmpf*" ("annoyed", "narrow", "angry", "R") - - else: - her "Good night, Sir." ("soft", "base", "angry", "mid") - cho "Nighty-night, Granger..." ("soft", "narrow", "angry", "L") - her "*Tzzzzzh*!" ("annoyed", "narrow", "angry", "R") - - # Hermione leaves. - call her_walk(action="leave") - - show screen blkfade - call cho_chibi("stand", "desk", "base", flip=False) - with d3 - - hide screen blkfade - cho "I have to say, [cho_genie_name], doing these favours is fun!" ("smile", "narrow", "base", "mid", xpos="mid", ypos="base", flip=False, trans=fade) - gen "I'm glad you're enjoying yourself." ("base", xpos="far_left", ypos="head") - cho "Believe me, Sir. I am." ("smile", "narrow", "angry", "mid") - cho "" ("horny", "narrow", "angry", "mid") - pause .4 - - # Cho gets dressed. - call play_sound("equip") - $ cho.wear("all") - hide screen cho_cloth_pile - with d3 - pause .5 - - cho "Now, if you excuse me..." ("soft", "base", "base", "mid") - - if game.daytime: - cho "I have to head back to classes." ("soft", "base", "base", "R") - gen "I still got your--" ("base", xpos="far_left", ypos="head") - cho "See ya next time, [cho_genie_name]!" ("smile", "narrow", "angry", "mid") - else: - cho "I have to head back to my dorms." ("soft", "base", "base", "R") - gen "Don't you want your--" ("base", xpos="far_left", ypos="head") - cho "Sweet dreams, [cho_genie_name]!" ("smile", "narrow", "angry", "mid") - - call cho_walk(action="leave") - - call bld - gen "Nice, I still got her panties!" ("grin", xpos="far_left", ypos="head") - - call give_reward(">You have acquired Cho's panties!", "interface/icons/panties.webp") - $ has_cho_panties = True - - # Reset Hermione clothing. - $ hermione.equip(her_outfit_last) - return - - -############## -### Tier 3 ### -############## - - ## Tier 3 - Event 1 ## # Cho hops on your desk and she strips for you. @@ -1675,7 +113,7 @@ label cc_pf_strip_T3_intro_E1: $ renpy.sound.play("sounds/cloth_sound3.ogg") hide cho_main - $ cho.strip("all") + $ cho.strip("clothes") pause 1.2 call cho_chibi("stand", "on_desk", "on_desk", flip=True) pause .4 @@ -1698,7 +136,7 @@ label cc_pf_strip_T3_intro_E1: pause .8 #Remove any remaining items (no sound since she might be naked) - $ cho.strip("all") + $ cho.strip("clothes") with d3 pause .5 @@ -2067,7 +505,7 @@ label cc_pf_strip_T3_intro_E2: cho "I don't think they're big enough." ("open", "narrow", "worried", "downR", cheeks="heavy_blush") # sad cho "" ("normal", "narrow", "worried", "down", cheeks="heavy_blush") ton "Big enough for what? Impress some idiot?" ("open", "narrow", "annoyed", "L", hair="angry") - ton "No offense, Professor." ("soft", "narrow", "base", "mid") + 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") cho "" ("annoyed", "narrow", "base", "L", cheeks="blush") @@ -2141,7 +579,7 @@ label cc_pf_strip_T3_intro_E2: # Remove all. $ renpy.sound.play("sounds/cloth_sound3.ogg") hide cho_main - $ cho.strip("all") + $ cho.strip("clothes") pause 1.2 $ renpy.sound.play("sounds/cloth_sound4.ogg") show screen cho_cloth_pile @@ -2254,7 +692,7 @@ label cc_pf_strip_T3_intro_E2: # Remove other clothes. $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ tonks.strip("all") + $ tonks.strip("clothes") with d3 pause .5 @@ -2603,6 +1041,7 @@ label cc_pf_strip_T3_intro_E2: ### Tier 3 - Event 3 ### # Cho and Tonks strip on your desk again. +# CG: Tonks spreading and spanking Cho's ass. # Tonks gives Cho a demonstration of her Metamorphmagi ability. label cc_pf_strip_T3_intro_E3: @@ -2649,7 +1088,7 @@ label cc_pf_strip_T3_intro_E3: call bld gen "..." ("base", xpos="far_left", ypos="head") - cho "..." ("quiver", "narrow", "base", "L", ypos="head", flip=True) + cho "..." ("quiver", "narrow", "base", "L", ypos="base", flip=True) # Fireplace turns on. @@ -3027,7 +1466,7 @@ label cc_pf_strip_T3_intro_E3: # Tonks removes the rest of her clothes. $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ tonks.strip("all") + $ tonks.strip("clothes") with hpunch pause .2 @@ -3107,7 +1546,7 @@ label cc_pf_strip_T3_intro_E3: # Remove Cho Panties + Everything else. $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ cho.strip("all") + $ cho.strip("clothes") with vpunch pause .5 @@ -3120,7 +1559,7 @@ label cc_pf_strip_T3_intro_E3: cho "Glad you're enjoying it, Professor..." ("horny", "narrow", "worried", "L", cheeks="heavy_blush") #Remove any remaining items (no sound since she might be naked) - $ cho.strip("all") + $ cho.strip("clothes") with d3 pause .5 @@ -3130,19 +1569,1287 @@ label cc_pf_strip_T3_intro_E3: call ctc - ton "*Hmm*... I can't decide which teacher has the best view now..." ("horny", "narrow", "base", "mid", hair="horny", cheeks="blush") + ton "*Hmm*... I can't decide which teacher has the best view now..." ("horny", "narrow", "base", "down", cheeks="blush", hair="horny") gen "Looking pretty good from where I'm sitting..." ("grin", xpos="far_left", ypos="head") - cho "..." ("smile", "narrow", "worried", "mid", cheeks="heavy_blush") - call play_music("stop") + + call play_sound("giggle") + cho "" ("horny", "narrow", "base", "mid", cheeks="blush") + ton "*giggles*" ("grin", "base", "base", "mid", cheeks="blush", hair="horny") + + ton "Well, we still have the best saved for last." ("grin", "narrow", "base", "down", cheeks="blush", hair="horny") + ton "Let's give Professor Dumbledore a proper view of what a real athlete can achieve..." ("grin", "base", "base", "L", cheeks="blush", hair="horny") + cho "*Ehm*..." ("disgust", "narrow", "base", "L", cheeks="blush") + ton "Your buns, hun." ("crooked_smile", "narrow", "base", "L", cheeks="blush", hair="horny") + + stop music fadeout 1.0 + + cho "Oh... Alright..." ("angry", "narrow", "base", "downR", cheeks="blush") + + call play_music("playful_tension") # SEX THEME. + + #Cho and Tonks on Desk CG + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho as cg zorder 17 + with fade + + ton "There you go, professor..." + ton "The magnificent ass of a Quidditch player." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open as cg + with d3 + + cho "Professor!" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_annoyed cho_eyes_open_down as cg + with d3 + + gen "Heh-Heh..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile as cg + with d3 + + ton "Someone had to say it." + ton "I must say, gripping that broom has done wonders for your thighs and butt, Miss Chang." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_annoyed cho_eyes_open_look_at_tonks as cg + with d3 + + cho "...{w=0.4} Thank you I suppose." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho as cg + with d3 + + ton "No, really Miss Chang...{w=0.4} Have a feel of mine and I'm sure you'll notice the difference." + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tits cho_mouth_lip_bite as cg + with d3 + + cho "You--{w=0.2} You want me to..." + ton "Don't be shy now." + + #Cho grabs Tonks ass + show cho_strip_personal_t3_e3_on_knees cho_body_grab as cg + with d3 + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base tonks_eyes_open_down as cg + with d3 + + cho "..." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho as cg + with d3 + + ton "So?" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_smirk as cg + with d3 + + cho "It's...{w=0.4} Nice." + + call play_sound("giggle") + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile tonks_eyes_open_look_at_cho as cg + with d3 + ton "*giggles*... I was asking if you could feel the difference, not for a review, Miss Chang." + + #Base Pose + show cho_strip_personal_t3_e3_on_knees -cho_body_grab cho_mouth_open cho_eyes_wide_look_at_tonks cho_blush_heavy as cg + with d3 + + cho "Oh, I'm so sorry, Professor!" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_tits cho_eyes_open_down tonks_mouth_base cho_mouth_base as cg + with d3 + + ton "Don't worry, Miss Chang... Your honesty is greatly appreciated." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile as cg + with d3 + + ton "So, what do you say? Quite a fair bit softer than your own, wouldn't you say?" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_closed cho_mouth_open as cg + with d3 + + cho "I...{w=0.4} Suppose...{w=0.4} Maybe just a little bit." + ton "No need to be modest Miss Chang... Your grip on that broom is unmatched." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_smirk as cg + with d3 + + cho "..." + gen "You know..." + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_down tonks_eyes_open_down cho_mouth_smirk as cg + with d3 + + gen "There's a simple way if you'd like to measure the difference." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_tits as cg + with d3 + + ton "I was thinking the same thing." + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_look_at_tonks tonks_eyes_open_look_at_cho tonks_mouth_open as cg + with d3 + + ton "Miss Chang...{w=0.4} If I may?" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tonks cho_mouth_lip_bite as cg + with d3 + + cho "*Ah*--{w=0.2} Alright..." + + #Tonks grabs Cho's cheeks, spreading them + + show cho_strip_personal_t3_e3_on_knees tonks_body_grab_spread tonks_eyes_open_look_at_tits cho_eyes_closed tonks_mouth_lip_bite cho_mouth_open as cg + with d3 + + cho "*Ah*..." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_lip_bite as cg + with d3 + + cho "..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base as cg + with d3 + + ton "*Mmm*...{w=0.4} As suspected...{w=0.4} A lot firmer than mine." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_base as cg + with d3 + + cho "Oh..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile as cg + with d3 + + ton "That's not a bad thing, Miss Chang... A tight butt has its advantages, not only for Quidditch..." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_down as cg + with d3 + + ton "So, what do you think, professor?" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_down cho_mouth_smirk as cg + with d3 + + gen "I like both." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base as cg + with d3 + + ton "I'm talking about her training." + gen "Oh...{w=0.4} She's done very well." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open tonks_eyes_open_look_at_tits as cg + with d3 + + ton "Very well indeed..." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_down tonks_mouth_base cho_mouth_base cho_eyes_open_down as cg + with d3 + + gen "Is that jealousy I'm hearing in your voice?" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_look_at_tonks cho_mouth_smile as cg + with d3 + + gen "If you're looking for a workout, I'm sure I could sort something out." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_lip_bite as cg + with d3 + + ton "*Mmm*..." + ton "Perhaps it's time I bring out the old comet..." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open cho_eyes_open_look_at_tonks as cg + with d3 + + cho "Professor?" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho tonks_mouth_smile as cg + with d3 + + ton "Yes, sweetie?" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_lip_bite as cg + with d3 + + cho "You're squeezing my butt still." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open tonks_eyes_open_look_at_tits as cg + with d3 + + ton "Oh... So I am..." + + #Base pose + show cho_strip_personal_t3_e3_on_knees -tonks_body_grab_spread tonks_eyes_open_look_at_cho as cg + with d3 + + ton "Sorry, Miss Chang... I got lost appreciating your butt, I forgot what we were doing for a second." + + #Tonks looks at genie + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_down as cg + with d3 + + ton "*Hmm*... It appears I'm not the only one..." + + #Cho looks at genie who has a boner (off screen) + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_down cho_mouth_annoyed as cg + with d3 + + pause .8 + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_down cho_mouth_angry as cg + with d3 + + cho "Sir! Not when Tonks-- I mean--" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_base tonks_mouth_smile as cg + with d3 + + ton "No, I think he's got the right idea." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_angry cho_eyes_wide_look_at_tonks as cg + with d3 + + cho "What?!" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base cho_eyes_wide_down as cg + with d3 + + ton "Go on, professor... Whip it out." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open cho_eyes_wide_look_at_tonks as cg + with d3 + + cho "Professor Tonks!" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_annoyed tonks_eyes_open_look_at_cho as cg + with d3 + + ton "Now-now, Miss Chang... This is a necessary part of your training." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open cho_eyes_open_look_at_tonks as cg + with d3 + + cho "But, professor!" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile cho_mouth_annoyed as cg + with d3 + + ton "It's inevitable with how your matches have been going recently, that at least a couple of boys would end up whipping it out during the finals." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open as cg + with d3 + + ton "You wouldn't want to get distracted by such a sight during Quidditch now, would you?" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base cho_mouth_lip_bite cho_eyes_open_down as cg + with d3 + + if cho_blowjob_done: + cho "But I've already seen-- I mean..." + else: + cho "..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile tonks_eyes_open_down as cg + with d3 + + ton "I'm sure your professor... Or should I say coach... Would agree." + gen "I'll agree to--{w=0.2} *Ngh*...{w=0.4} anything at this point." + + call play_sound("giggle") + ton "*giggles*" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_down cho_mouth_base as cg + with d3 + + ton "I'll remember that next time we discuss my salary." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho cho_eyes_open_look_at_tonks as cg + with d3 + + ton "So, what do you say Miss Chang?" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_lip_bite as cg + with d3 + + cho "{size=-4}Alright...{/size}" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile as cg + with d3 + + ton "Marvellous." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_down tonks_mouth_base cho_eyes_open_down as cg + with d3 + + ton "Please, help yourself professor." + gen "(Finally!)" + + # TODO: cloth sounds + + #Cho wide eyed looking at dick + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile cho_eyes_wide_down cho_mouth_open as cg + with d3 + pause .8 + #Cho clenched eyes + show cho_strip_personal_t3_e3_on_knees cho_mouth_lip_bite cho_eyes_closed_happy as cg + with d3 + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open as cg + with d3 + + ton "Wow, look at him go!" + + #Tonks looking at Cho + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho tonks_mouth_base as cg + with d3 + + ton "...{w=0.4} Miss Chang, you can't be missing out on this." + ton "Closing your eyes won't be an option during Quidditch." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_annoyed as cg + with d3 + + cho "..." #Eyes still closed + + menu: + "-Motion Tonks to spank Cho's ass-": #Tonks spanks Cho's ass, Tonks gets wet + + # tonks smile + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open tonks_eyes_open_down as cg + with d3 + + ton "...?" # Doesn't get it at first + pause 0.8 + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile as cg + with d3 + + nar ">Tonks nods, grinning mischievously, letting you know she's on-board with your plan." + + call play_sound("slap") + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho cho_handprint cho_eyes_wide_down cho_mouth_open as cg + with flash + + cho "{heart}*Ah*!{heart}" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_angry as cg + with d3 + + cho "..." + ton "There you go, that wasn't so hard was it?" + + #Tonks wet down legs + show cho_strip_personal_t3_e3_on_knees tonks_wetness cho_eyes_open_look_at_tonks cho_mouth_lip_bite as cg + with d3 + + cho "..." + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_closed tonks_mouth_base as cg + with d3 + + call play_sound("giggle") + ton "*giggles*" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_down cho_eyes_open_down as cg + with d3 + + ton "Looks like that really got him going." + gen "You're the one to talk." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open as cg + with d3 + + ton "Shush now..." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho cho_eyes_open_look_at_tonks tonks_mouth_base cho_mouth_base as cg + with d3 + + cho "Professor, what is he talking--" + + call slap_her + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_down cho_mouth_open as cg + + cho "{heart}*Ah*!{heart}" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_closed_happy cho_mouth_lip_bite tonks_mouth_smile tonks_eyes_open_look_at_tits as cg + with d3 + + ton "Oh yes, I'm sure a broomstick would slide quite nicely between these cheeks!" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_down cho_mouth_annoyed as cg + with d3 + + cho "...{w=0.4} Slide?" + + call nar("*Fap* *Fap* *Fap*") + + gen "(*Ngh*... This isn't good, If they keep going like this, I'll paint their asses white!)" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_down tonks_mouth_base as cg + with d3 + + ton "*Hmm*... Already?" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tonks cho_mouth_base as cg + with d3 + + cho "Professor?" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho tonks_mouth_smile as cg + with d3 + + ton "I believe coach is almost ready to show his appreciation for your hard work." + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_down cho_mouth_open as cg + with d3 + + cho "Wait, you don't mean--" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho tonks_mouth_open cho_mouth_lip_bite as cg + with d3 + + ton "Oh?{w=0.6} Is that not what we're doing?" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tonks as cg + with d3 + + ton "My apologies." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_tits tonks_mouth_smile tonks_body_grab as cg + with d3 + + ton "I was under the impression that seduction was part of your winning strategy..." + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_look_at_tonks cho_mouth_open as cg + with d3 + + cho "How did you--" + + show cho_strip_personal_t3_e3_on_knees -tonks_body_grab tonks_mouth_base tonks_eyes_open_look_at_cho as cg + with d3 + + ton "Sweetie... You're speaking to an expert..." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_base as cg + with d3 + + cho "Professor?" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_closed as cg + with d3 + + call play_sound("giggle") + ton "*giggles*" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho tonks_mouth_smile as cg + with d3 + + ton "You thought that I got to where I am by working hard?" + ton "Please... When you've got a body like mine, the only thing you need is the knowledge of how to use it..." + ton "For example, if you're ever looking to get a raise, just show some skin and any man is sure to just nod and agree to anything you say." + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open tonks_eyes_open_down as cg + with d3 + + ton "Observe..." + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_down tonks_mouth_smile as cg + with d3 + + ton "So, how about that raise, Professor?" + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open as cg + with d3 + + ton "Professor?" + + gen "Huh?" + gen "Oh...{w=0.2} *Err*...{w=0.2} Sure!{w=0.4} Whatever you say." + + #Tonks looks at Cho + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base tonks_eyes_open_look_at_cho cho_eyes_open_look_at_tonks as cg + with d3 + + ton "See?" + ton "Of course, even though I got what I wanted, you should finish what you started or they'll know something's up..." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_lip_bite as cg + with d3 + + cho "..." + ton "So... Do you have what it takes?" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open as cg + with d3 + + if cho_blowjob_done: + cho "*Ehm*... Haven't I already proved--" + else: + cho "But he's my--{w=0.2} And you--{w=0.2} Surely I can't just--" + + call slap_her + show cho_strip_personal_t3_e3_on_knees cho_eyes_closed_happy as cg + + cho "{heart}*Ah*!{heart}" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tonks as cg + with d3 + + ton "You can do it." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_lip_bite as cg + with d3 + + cho "*Ah*...{w=0.4} Okay then..." + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile tonks_eyes_open_down cho_eyes_open_down as cg + with d3 + + ton "Oh, looks like the moment has arrived!" + + "-Multitasking is too hard, keep beating it-": #Tonks spreads Cho's ass, Cho's wet, Cho then spreads Tonks' ass at the same time. + + #Cho opens eyes and looks at genie + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open cho_eyes_open_down as cg + with d3 + + ton "Very good..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile as cg + with d3 + + ton "Now, I think it would be a good idea to give him something to look at as well." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_angry cho_eyes_wide_look_at_tonks as cg + with d3 + + cho "No, wait!" + + #Tonks spreads Cho's ass and she's wet + show cho_strip_personal_t3_e3_on_knees tonks_body_grab_spread cho_wetness cho_mouth_open cho_eyes_wide_down as cg + with d3 + + pause 1 + + gen "Whoa!" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open cho_eyes_wide_look_at_tonks as cg + with d3 + + ton "*Hmm*? What's wrong, sweetie?" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base cho_eyes_wide_down as cg + with d3 + + gen "She's--" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_look_at_tonks cho_mouth_angry as cg + with d3 + + cho "Nothing!" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_closed_happy as cg + with d3 + + cho "I'm fine!" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_base as cg + with d3 + + call nar("*Fap* *Fap* *Fap*") + gen "Very fine indeed!" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_base cho_eyes_open_look_at_tonks as cg + with d3 + + ton "*Mmm*... You almost had me worried for a second..." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open as cg + with d3 + + cho "*Ehm*... How long do I have to stay like this?" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open cho_mouth_base as cg + with d3 + + ton "Until he finishes, of course." + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_look_at_tonks tonks_mouth_base cho_mouth_angry as cg + with d3 + + cho "Until--{w=0.2} But professor!" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tonks tonks_mouth_open cho_mouth_annoyed as cg + with d3 + + ton "Or is that not what we're doing?" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_closed as cg + with d3 + + ton "I thought that seduction was a big part of your winning strategy..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base tonks_eyes_open_look_at_tits cho_mouth_open cho_eyes_wide_look_at_tonks as cg + with d3 + + cho "How did you--" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open tonks_eyes_open_look_at_cho cho_eyes_open_look_at_tonks as cg + with d3 + + ton "Please, Miss Chang...{w=0.4} You're talking to an expert..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base as cg + with d3 + + ton "And as an expert, let me tell you, if you don't fully commit, you won't achieve your goals." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base cho_mouth_lip_bite cho_eyes_open_down as cg + with d3 + + cho "But I--{w=0.2} He can see my--" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open cho_eyes_open_look_at_tonks as cg + with d3 + + ton "Endurance, Miss Chang." + ton "As a Quidditch player, I'm sure you know the importance of endurance." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base cho_eyes_wide_down cho_mouth_annoyed as cg + with d3 + + cho "That's not the problem!" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open cho_mouth_annoyed cho_eyes_open_look_at_tonks as cg + with d3 + + ton "Very well, Miss Chang..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_lip_bite cho_mouth_base cho_eyes_open_look_at_tonks as cg + with d3 + + ton "You may help yourself to my buttocks." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open cho_eyes_wide_look_at_tonks as cg + with d3 + + cho "Your--" + gen "Yes please!" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_lip_bite cho_eyes_open_look_at_tits as cg + with d3 + + cho "..." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_base tonks_mouth_base as cg + with d3 + + ton "Go on then." + + #Cho spreads Tonks' Ass Tonks wet pussy + show cho_strip_personal_t3_e3_on_knees cho_body_grab_spread tonks_wetness tonks_mouth_base as cg + with d3 + + pause.5 + + gen "Whoa, you're-" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_down tonks_mouth_lip_bite tonks_blush_heavy as cg + with d3 + + ton "Shush!" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tonks cho_mouth_lip_bite as cg + with d3 + + cho "Professor?" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho as cg + with d3 + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_closed tonks_mouth_open as cg + with d3 + + ton "*Ahem*...{w=0.4} Why don't you keep your eyes on what Professor Dumbledore is doing, Miss Chang." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_closed tonks_mouth_base cho_mouth_annoyed as cg + with d3 + + cho "But--" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open as cg + with d3 + + ton "Be a good girl and listen to your teacher." + + #Tonks wet down legs, Closed eyes horny + #Cho looks at genie, Tonks steals glances at Cho + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_tits cho_eyes_open_down cho_mouth_lip_bite tonks_mouth_base as cg + with d3 + + pause .8 + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_lip_bite as cg + with d3 + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_down as cg + with d3 + + gen "*Ah*..." + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tonks as cg + with d3 + + cho "Professor..." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho as cg + with d3 + + ton "Huh? I wasn't--{w=0.4} Didn't I just tell you to--" + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_base cho_mouth_open as cg + with d3 + + cho "But Professor, I think he's about to-- *Ehm*..." + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_open tonks_eyes_open_down cho_mouth_lip_bite cho_eyes_open_down as cg + with d3 + + ton "*Huh*?" #looks at genie + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile as cg + with d3 + + ton "Oh, I see!" + + $ _temp_facial = False + + menu: + "-Keep going and finish like this-": #Genie cums on desk + + #Base pose + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile as cg + with d3 + + ton "Go on coach, cum for us!" + ton "Claim your pupil, claim your slut, shake that cock, cum on butt!" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open cho_eyes_open_look_at_tonks as cg + with d3 + + cho "Professor!" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_closed as cg + with d3 + + call play_sound("giggle") + ton "*giggles*" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho as cg + with d3 + + ton "You tell him, Miss Chang!" + + show cho_strip_personal_t3_e3_on_knees cho_mouth_angry as cg + with d3 + + cho "I--" + ton "Tell him to paint his slutty little Quidditch player in cum!" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_down tonks_eyes_open_down cho_mouth_lip_bite as cg + with d3 + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_on_knees cho_eyes_closed as cg + with d3 + + cho "..." + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tits tonks_eyes_open_look_at_cho as cg + with d3 + + pause .5 + + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_down cho_mouth_open as cg + with d3 + + cho "P-- Please, do it, sir!" + + show cho_strip_personal_t3_e3_on_knees tonks_body_idle tonks_eyes_open_look_at_cho cho_eyes_wide_look_at_tonks as cg + with d3 + + pause .5 + + call play_sound("slap") + show cho_strip_personal_t3_e3_on_knees cho_handprint cho_eyes_closed_happy cho_mouth_lip_bite as cg + with flash + + cho "*Ah*!!" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho as cg + with d3 + + ton "More conviction!" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_look_at_tonks tonks_eyes_open_look_at_tits as cg + with d3 + + cho "Conv--" + + call play_sound("slap") + show cho_strip_personal_t3_e3_on_knees cho_eyes_closed_happy cho_mouth_open as cg + with flash + + cho "{heart}*Ah*!!{heart}" + + #Tonks spreads cho's ass (cho is wet) + show cho_strip_personal_t3_e3_on_knees cho_eyes_open_look_at_tonks cho_mouth_lip_bite cho_wetness as cg + with d3 + + pause .5 + + show cho_strip_personal_t3_e3_on_knees tonks_body_grab_spread tonks_eyes_open_look_at_cho as cg + with d3 + + ton "Say it!" + + show cho_strip_personal_t3_e3_on_knees cho_eyes_closed tonks_eyes_open_down as cg + with d3 + + pause .8 + + show cho_strip_personal_t3_e3_on_knees cho_eyes_closed tonks_eyes_open_down cho_mouth_smirk as cg + with d3 + + pause .5 + + show cho_strip_personal_t3_e3_on_knees cho_eyes_wide_down cho_mouth_open as cg + with d3 + + cho "C-cum for me, [cho_genie_name]!" # Deliberate; Tonks will mention Cho's choice of calling him by nickname later + + gen "Aaargh!!" + + #Cho closed eyes + show cho_strip_personal_t3_e3_on_knees -cho_body_grab_spread cho_eyes_closed_happy as cg + with d3 + + cho "*Eeek*!" + + # Cumblock -- Genie cum flying through the air. + call cum_block + show cho_strip_personal_t3_e3_on_knees desk_cum_spurt as cg + $ renpy.sound.play("sounds/slick_02.ogg") + + #fade to black + pause 0.6 + + show screen blkfade + with d3 + + ton "..." + gen "*Ah*..." + cho "Did--{w=0.2} Did he finish?" + ton "*chuckles*" + ton "Oh, he did finish alright..." + cho "..." + + #Fade back to CG, cum on side of desk (none on Tonks or Cho) + + show cho_strip_personal_t3_e3_on_knees desk_cum_post cho_eyes_open_down cho_mouth_lip_bite as cg + hide screen blkfade + with d5 + + pause 1 + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open as cg + with d3 + + cho "(He--{w=0.4} He missed...)" + + show cho_strip_personal_t3_e3_on_knees -tonks_body_grab_spread tonks_mouth_base cho_mouth_lip_bite as cg + with d3 + + gen "Fuck, I missed..." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho cho_eyes_closed cho_mouth_smirk as cg + with d3 + + cho "*Phew*..." + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho tonks_mouth_smile as cg + with d3 + + call play_sound("giggle") + ton "*giggles*" + + "-Give Tonks a sign to get closer-": #Tonks and Cho lay down and genie cums on their faces + + $ _temp_facial = True + + show cho_strip_personal_t3_e3_on_knees tonks_mouth_smile cho_eyes_open_look_at_tonks as cg + with d3 + + ton "*Mmm*... You naughty boy..." + + show cho_strip_personal_t3_e3_on_knees cho_mouth_open as cg + with d3 + + cho "Professor?" + + show cho_strip_personal_t3_e3_on_knees tonks_eyes_open_look_at_cho as cg + with d3 + + ton "Follow my lead, Miss Chang." + + show screen blkfade + with d3 + + call play_sound("climb_desk") + pause .8 + + cho "Professor!" + ton "Hurry up Miss Chang, don't leave your coach hanging." + ton "Lay down next to me, just like this." + cho "..." + + #Cho lies down, open mouth (talking) looking at tonks + + show cho_strip_personal_t3_e3_lying as cg + hide screen blkfade + with d5 + + cho "Like this?" + + show cho_strip_personal_t3_e3_lying cho_mouth_base tonks_mouth_open as cg + with d3 + + ton "Yes, Very good Miss Chang..." + + show cho_strip_personal_t3_e3_lying cho_eyes_open_down cho_mouth_open tonks_mouth_base as cg + with d3 + + cho "But, why with our hands out?" + + show cho_strip_personal_t3_e3_lying cho_eyes_open_look_at_tonks tonks_mouth_smile cho_mouth_base as cg + with d3 + + ton "Oh... I think you already know the answer to that question..." + call nar("*Fap* *Fap* *Fap*") + + #Cho angry mouth + show cho_strip_personal_t3_e3_lying cho_eyes_open_down tonks_mouth_smile cho_mouth_angry as cg + with d3 + + pause .5 + + call play_sound("giggle") + ton "*Giggles*" + + show cho_strip_personal_t3_e3_lying tonks_mouth_open as cg + with d3 + + ton "You're not going to chicken out on me now are you, Miss Chang?" + + show cho_strip_personal_t3_e3_lying tonks_mouth_base cho_mouth_open as cg + with d3 + + cho "I--" + + #Cho looks at genie + show cho_strip_personal_t3_e3_lying cho_mouth_base cho_eyes_open_mid as cg + with d3 + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_lying cho_eyes_closed cho_mouth_open as cg + with d3 + + cho "I won't." + + show cho_strip_personal_t3_e3_lying cho_mouth_base tonks_mouth_smile as cg + with d3 + + ton "Good..." + + show cho_strip_personal_t3_e3_lying cho_eyes_open_down tonks_mouth_open as cg + with d3 + + ton "Then give your Coach your biggest smile and repeat after me..." + + show cho_strip_personal_t3_e3_lying cho_eyes_open_look_at_tonks tonks_mouth_base cho_mouth_angry as cg + with d3 + + cho "You want me to--" + + show cho_strip_personal_t3_e3_lying tonks_mouth_smile cho_mouth_angry as cg + with d3 + + ton "Smile, Miss Chang..." + cho "...{w=0.8}{nw}" + + #Cho smiles + show cho_strip_personal_t3_e3_lying cho_mouth_smile as cg + with d3 + + pause .8 + + ton "There you go... And such a pretty smile as well..." + cho "Thank you..." + + call nar("*Fap* *Fap* *Fap*") + gen "*Ah*... Ladies..." + + #Tonks and Cho looks at genie + show cho_strip_personal_t3_e3_lying tonks_eyes_open_mid cho_eyes_open_mid as cg + with d3 + + ton "Oh, of course sir..." + ton "Now, keep your eyes on your coach and repeat after me..." + + show cho_strip_personal_t3_e3_lying tonks_mouth_open cho_mouth_smile as cg + with d3 + + ton "\"Thank you coach, for being such a good mentor...\"" + + show cho_strip_personal_t3_e3_lying tonks_mouth_base cho_mouth_open as cg + with d3 + + cho "Thank you coach... For being such a good mentor..." + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_lying tonks_mouth_open cho_mouth_smile as cg + with d3 + + ton "\"I'll always be in your debt after everything that you've done for me...\"" + + show cho_strip_personal_t3_e3_lying tonks_mouth_base cho_mouth_open as cg + with d3 + + cho "I'll always be in your debt... After everything that you've done for me..." + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_lying tonks_mouth_open cho_mouth_smile as cg + with d3 + + ton "\"But I hope to be able to repay you some day...\"" + + show cho_strip_personal_t3_e3_lying tonks_mouth_base cho_mouth_open as cg + with d3 + + ton "But I hope to be able to repay you some day..." + + call nar("*Fap* *Fap* *Fap*") + + show cho_strip_personal_t3_e3_lying tonks_mouth_open cho_mouth_smile as cg + with d3 + + ton "\"With...\"" + + show cho_strip_personal_t3_e3_lying tonks_mouth_base cho_mouth_open as cg + with d3 + + cho "With..." + + show cho_strip_personal_t3_e3_lying tonks_mouth_open cho_mouth_smile as cg + with d3 + + ton "\"My...\"" + + show cho_strip_personal_t3_e3_lying tonks_mouth_base cho_mouth_open as cg + with d3 + + cho "My..." + + show cho_strip_personal_t3_e3_lying tonks_mouth_open cho_mouth_smile as cg + with d3 + + ton "\"Body...\"" + + show cho_strip_personal_t3_e3_lying tonks_mouth_smile cho_mouth_open as cg + with d3 + + cho "Body--" + + show cho_strip_personal_t3_e3_lying cho_mouth_smile as cg + with d3 + + pause .5 + + #Cho looks at Tonks, angry mouth + show cho_strip_personal_t3_e3_lying cho_eyes_open_look_at_tonks cho_mouth_angry as cg + with d3 + + cho "Wait, what?!" + + gen "*Aaargh*!!" + + show cho_strip_personal_t3_e3_lying tonks_mouth_tongue_out cho_mouth_open as cg + with d3 + + ton "Open wide, Cho!" + + #Tonks tongue out + #Cho clenched eyes + show cho_strip_personal_t3_e3_lying cho_eyes_open_mid cho_mouth_angry as cg + with d3 + + cho "Wait!" + + #Genie cums on their faces, and in tonks mouth. + + call cum_block + show cho_strip_personal_t3_e3_lying cum_tongue cho_mouth_open cho_eyes_closed_happy as cg + with flash + + cho "*Aaaah*!" + + gen "Yeeeees!! Take that, you sluts!" + call cum_block + + show cho_strip_personal_t3_e3_lying cum_face tonks_eyes_closed as cg + with flash + show cho_strip_personal_t3_e3_lying cum_tits as cg + with flash + show cho_strip_personal_t3_e3_lying tonks_eyes_open_mid cum_hands as cg + with flash + + + cho "It's--{w=0.4} I can feel it on my hands!" + cho "It's... So warm..." + + #Cho looks at tonks + show cho_strip_personal_t3_e3_lying cho_eyes_open_look_at_tonks as cg + cho "Professor--" + + #Tonks swallows + sound + call play_sound("gulp") + show cho_strip_personal_t3_e3_lying tonks_eyes_closed tonks_mouth_smile -cum_tongue as cg + with d3 + + ton "*Mmm*... Tasty..." + cho "Whoa..." + + show cho_strip_personal_t3_e3_lying tonks_eyes_open_look_at_cho as cg + with d3 + call play_sound("giggle") + ton "*Giggles*" + + cho "You--{w=0.2} His--" + ton "*Mmm*... I hope you're not ticklish, Miss Chang..." + cho "What do you--" + + #fade to black + call play_sound("climb_desk") + show screen blkfade + with d3 + + cho "Oooh!!" + ton "*slurp* *lick* *slurp*" + cho "Professor!" + + call play_sound("giggle") + ton "*giggles*..." + + stop music fadeout 1.0 + show screen blkfade + with d5 + hide cg + + cho "" ("soft", "narrow", "base", "downR", cheeks="blush") + ton "" ("grin", "base", "base", "L", cheeks="blush") + + hide screen blkfade + with d5 + #Hide CG ## Transformation Section ## - gen "Now then, Miss Chang..." ("base", xpos="far_left", ypos="head") + + + ton "Great job Miss Chang... I'm sure no man will be able to resist you now...{nw}" ("grin", "narrow", "base", "L", cheeks="blush") + ton "Great job Miss Chang... I'm sure no man will be able to resist you now...{fast} Wouldn't you agree, professor?" ("grin", "narrow", "base", "mid", cheeks="blush") + gen "What? Oh yes, sure! Nice job!" ("grin", xpos="far_left", ypos="head") + cho "Thanks, [cho_genie_name]..." ("base", "narrow", "base", "down", cheeks="blush") + + if cho_genie_name in ("Sir", "Professor"): #Acceptable names that she should be using + ton "If you ever have any questions about men, you know where my door is..." ("base", "narrow", "base", "L", cheeks="blush", hair="neutral") + gen "Got it." ("base", xpos="far_left", ypos="head") + ton "I was referring to Miss Chang." ("soft", "narrow", "base", "mid", cheeks="blush") + gen "Oh... Yeah, me too." ("base", xpos="far_left", ypos="head") + elif cho_genie_name == "Dumbledore": + ton "Using first names already, I see..." ("soft", "base", "raised", "L", cheeks="blush") + cho "I mean, Sir!" ("angry", "base", "base", "stare", cheeks="heavy_blush") + ton "Don't worry Miss Chang, if that's what he would like you to call him, then I won't tell anyone." ("base", "wink", "base", "L", cheeks="blush") + ton "" ("base", "base", "base", "L", cheeks="blush") + cho "*Ehm*... Thank you, Professor." ("disgust", "narrow", "base", "down", cheeks="heavy_blush") + elif cho_genie_name == "Coach": + ton "So you do call him coach!" ("grin", "narrow", "shocked", "L", cheeks="blush") + cho "Oh, *Ehm*... Well..." ("angry", "narrow", "base", "L", cheeks="heavy_blush") + ton "Well, seeing that he's helping you, it's only appropriate." ("base", "narrow", "base", "L", cheeks="blush") + gen "That's what I said." ("grin", xpos="far_left", ypos="head") + cho "..." ("base", "narrow", "base", "down", cheeks="heavy_blush") + else: + gen "*Cough*..." ("base", xpos="far_left", ypos="head") + cho "I mean--{w=0.2} Thank you Sir..." ("angry", "base", "base", "mid", cheeks="blush") + ton "*chuckles* So, this is what he has you call him... Well, nothing wrong with that..." ("soft", "base", "base", "mid", cheeks="blush") + cho "..." ("base", "narrow", "base", "down", cheeks="heavy_blush") + + call play_music("cho") + + if _temp_facial: + cho "*Ehm*...{w=0.4} Professor..." ("soft", "narrow", "base", "L", cheeks="blush") + ton "Yes, Miss Chang?" ("base", "narrow", "raised", "L", cheeks="blush") + cho "What did you mean when you said...{w=0.4} Repay him with my body?" ("open", "narrow", "base", "L", cheeks="heavy_blush") + ton "*Hmm*?" ("base", "base", "raised", "mid", cheeks="blush") + ton "You're selling favours to Professor Dumbledore, are you not?" ("base", "narrow", "base", "L", cheeks="blush") + cho "I--{w=0.2} Yes, but that's not--{w=0.2} I mean...{w=0.2} They're meant to help me with Quidditch, I swear!" ("mad", "narrow", "base", "L", cheeks="heavy_blush") + else: + ton "*Mmm*... Your coach is very lucky to have the opportunity to buy favours from you." ("base", "base", "base", "mid", cheeks="blush") + cho "He's--{w=0.2} They're meant to help me with Quidditch, I swear!" ("base", "base", "base", "mid", cheeks="blush") + + call play_sound("giggle") + ton "*giggles*" ("crooked_smile", "closed", "base", "mid", cheeks="blush") + + ton "Your reasons for selling favours does not concern me, Miss Chang..." ("base", "narrow", "base", "L", cheeks="blush") + cho "Oh..." ("disgust", "narrow", "base", "down", cheeks="blush") + ton "As long as both ends of the bargain is met at a satisfactory level." ("soft", "narrow", "base", "mid", cheeks="blush") + ton "They are, I presume?" ("normal", "narrow", "raised", "L", cheeks="blush") + cho "Yes..." ("angry", "narrow", "base", "down", cheeks="blush") + gen "I mean..." ("base", xpos="far_left", ypos="head") + ton "Then that is everything I need to know." ("grin", "closed", "base", "mid", cheeks="blush") + ton "Now, if that's everything... I think I'll better be off." ("soft", "base", "base", "R", cheeks="blush") + cho "Oh... Okay then!" ("angry", "narrow", "base", "L", cheeks="blush") + gen "*Ahem*... Miss Chang." ("base", xpos="far_left", ypos="head") + cho "Yes, professor?" ("angry", "base", "base", "mid", cheeks="blush") gen "I think this would be the perfect time to ask Professor Tonks your question." ("grin", xpos="far_left", ypos="head") cho "W-what...{w=0.4} Oh, yes!" ("soft", "base", "raised", "mid", cheeks="heavy_blush") ton "*Hmm*?" ("base", "base", "raised", "L", hair="horny") cho "Professor Dumbledore told me about how you helped me during the Slytherin game." ("open", "base", "base", "L", cheeks="blush") - ton "What? You told her I'm a Metamorphmagi?" ("clench", "wide", "worried", "mid", hair="horny") + ton "What? You told her I'm a Metamorphmagi?" ("mad", "wide", "shocked", "mid", hair="neutral") cho "You are?!?" ("open", "wide", "raised", "L", cheeks="blush") cho "That's so cool!" ("grin", "happyCl", "base", "mid", cheeks="heavy_blush") ton "Did I just spoil the surprise myself?{w=0.5} Whoopsie!" ("mad", "narrow", "worried", "downR", hair="horny", cheeks="heavy_blush") @@ -3169,7 +2876,7 @@ label cc_pf_strip_T3_intro_E3: # Transforms into Hermione call play_sound("magic") hide tonks_main - $ hermione.strip("all") + $ hermione.strip("clothes") $ cho_chibi.zorder = 3 # Reset to default. $ hermione_chibi.zorder = 2 # behind Cho. Default is 3. call ton_chibi("hide") @@ -3347,7 +3054,6 @@ label cc_pf_strip_T3_intro_E3: # End event. jump end_cho_strip_event - label cc_pf_strip_T3_repeat: gen "I'm in the mood for another strip-show, [cho_name]." ("base", xpos="far_left", ypos="head") cho "Of course you are, [cho_genie_name]." ("base", "narrow", "raised", "mid") @@ -3361,14 +3067,3 @@ label cc_pf_strip_T3_repeat: "\"Miss Tonks\"": cho "Alright then..." ("grin", "narrow", "base", "mid") jump cc_pf_strip_T3_tonks - - - ## Chibi Pos - for multiple people ## - - #call ton_chibi("stand", flip=False, 380, 360) - #call cho_chibi("stand", flip=True, 322, 360) - - #call cho_chibi("stand", flip=True, 320, 370) - - #call cho_chibi("stand", 314, 366, flip=True) - #call cho_chibi("stand", 370, 360, flip=False) diff --git a/game/scripts/characters/cho/events/favors/inspect_her_body_tonks.rpy b/game/scripts/characters/cho/events/favors/inspect_her_body_tier3_tonks.rpy similarity index 93% rename from game/scripts/characters/cho/events/favors/inspect_her_body_tonks.rpy rename to game/scripts/characters/cho/events/favors/inspect_her_body_tier3_tonks.rpy index 831d345c..13db40c0 100644 --- a/game/scripts/characters/cho/events/favors/inspect_her_body_tonks.rpy +++ b/game/scripts/characters/cho/events/favors/inspect_her_body_tier3_tonks.rpy @@ -1,8 +1,4 @@ -############## -### Tier 3 ### -############## - ## Tier 3 - Summon Tonks ## label cc_pf_strip_T3_tonks: @@ -234,7 +230,7 @@ label .strip_cho: ton "There isn't that much more for me to help her take off, is there?" ("soft", "narrow", "base", "L", hair="horny") cho "..." ("base", "narrow", "base", "downR", cheeks="heavy_blush") pause .2 - $ cho.strip("all") + $ cho.strip("clothes") with d3 call cc_pf_strip_T3_tonks.spank_cho @@ -306,7 +302,7 @@ label .strip_cho: # Remove all Cho clothes. - $ cho.strip("all") + $ cho.strip("clothes") with d3 cho "" ("base", "narrow", "base", "mid", cheeks="heavy_blush") call ctc @@ -528,7 +524,7 @@ label .strip_tonks: gen "Damn right you are!" ("grin", xpos="far_left", ypos="head") cho "..." ("base", "narrow", "base", "downR", cheeks="heavy_blush") pause .2 - $ tonks.strip("all") + $ tonks.strip("clothes") with d3 call cc_pf_strip_T3_tonks.spank_tonks @@ -604,7 +600,7 @@ label .strip_tonks: # Remove all Cho clothes. ton "" ("base", "narrow", "base", "mid", hair="horny") - $ tonks.strip("all") + $ tonks.strip("clothes") with d3 call ctc @@ -1221,7 +1217,7 @@ label .hermione_E1: # Transforms into Hermione call play_sound("magic") hide tonks_main - $ hermione.strip("all") + $ hermione.strip("clothes") $ cho_chibi.zorder = 3 # Reset to default. $ hermione_chibi.zorder = 2 # behind Cho. Default is 3. call ton_chibi("hide") @@ -1345,7 +1341,7 @@ label .hermione_E1: $ hermione.set_body_zorder(armright=0) $ hermione.set_body(armleft="down", armright="down") $ hermione.set_pose(None) - $ hermione.strip("all") + $ hermione.strip("clothes") with d5 call play_music("tonks") @@ -1380,8 +1376,6 @@ label .hermione_E1: # End Event. jump cc_pf_strip_T3_tonks.end_event - - ## End Event ## label .end_event: @@ -1449,106 +1443,3 @@ label .end_event: # End event. jump end_cho_strip_event - - - - - - -############## -### Tier 4 ### -############## - -## Tier 4 - Summon Tonks ## - - -## Transformations ## - -## Succubus - Tier 4 ## -#label cc_pf_strip_T4_tonks.succubus_E1: -# gen "Tell me, Miss Tonks." ("base", xpos="far_left", ypos="head") -# gen "Are you one of these Succubbi that like to hunt virgins?" ("grin", xpos="far_left", ypos="head") -# ton "*Ha-ha-ha*... Where did you hear that?" # cracks up. -# gen "I've read it in a-- *uhm*...{w=0.5} in a book." ("base", xpos="far_left", ypos="head") -# gen "If you're a virgin by the age of forty and one visits you, you might end up lucky!" ("base", xpos="far_left", ypos="head") -# cho "Lucky... how?" -# ton "I don't know... I'd have to do some research on that..." -# ton "I was sure I knew everything there was to know about succubi..." -# gen "I suppose you might not be sophisticated enough to appreciate fine arts..." ("base", xpos="far_left", ypos="head") -# ton "*Hmm*... Then perhaps It'd be worth covering during one of my lesson." #looking at cho -# ton "Although I'd have to borrow that book of yours." - -## Hermione - Tier 4 ## -#label cc_pf_strip_T4_tonks.hermione_E1: - ton "Move aside, Chang!" # angry - ton "The headmaster wants me to strip for him." - gen "That's right, Miss Granger." ("grin", xpos="far_left", ypos="head") - cho "..." - -# gen "Seeing that she was being groped for the better part of it." ("grin", xpos="far_left", ypos="head") -# cho "Groped?-- What?" # confused -# gen "I her while she had to announce those points. It was quite funny!" ("grin", xpos="far_left", ypos="head") -# cho "You were molesting her, in front of everybody?" -# gen "I molested her -- with her consent!...{w} {size=-6}more or less.{/size}{w=0.3}{nw}" ("angry", xpos="far_left", ypos="head") -# gen "She practicly begged me to continue." ("base", xpos="far_left", ypos="head") -# ton "Was it that obvious, Professor?" -# ton "I loved the way you fingered my pussy in front of everybody. {heart}" -# cho "Merlin's beard, you're such a slut..." # judgemental - - - # Hermione stands in the middle, between Genie and Cho. - - ton "Professor, how many house points may I get for this shameless act you're asking me to do?" - gen "You're requesting house points for this, Miss Granger?" ("grin", xpos="far_left", ypos="head") - ton "Naturally." - gen "*Hmm*..." ("base", xpos="far_left", ypos="head") - - menu: - "You shall receive five points.": - ton "Only so little, Professor?" - ton "Surely revealing my tits must be worth a lot more to you than that..." - gen "Five points, Miss Granger. And I demand to see a lot more than just your tits!" ("grin", xpos="far_left", ypos="head") - cho "..." ("smile", "narrow", "base", "mid", cheeks="blush") - ton "So be it then..." - ton "I'll do anything for my precious Gryffindor house!" - gen "Five points for Gryffindor, Miss Granger!" ("grin", xpos="far_left", ypos="head") - $ gryffindor += 5 - gen "Now strip for us, you little slut." ("angry", xpos="far_left", ypos="head") - - "You shall receive one hundred points!": - ton "Seriously?" - cho "Professor, what are you doing?" ("base", "narrow", "base", "mid") - ton "Well, one hundred points seem to be sufficient, Professor..." - cho "..." ("base", "narrow", "base", "mid") - ton "I'd gladly bare my tits for that amount." - gen "Not just your tits, Miss Granger!" ("grin", xpos="far_left", ypos="head") - ton "Anything for you, Sir." - cho "I don't want Granger to get points from this! She isn't even here..." ("base", "narrow", "base", "mid") - gen "Didn't you say you don't give a flying fuck about the house cup?" ("base", xpos="far_left", ypos="head") - ton "*snort*... You said what?" - cho "I didn't say it like that!" ("base", "narrow", "base", "mid") - ton "*shsss*, Professor.{w=0.5} Just mumble a bit when giving out those points..." - gen "Very well, then..." ("base", xpos="far_left", ypos="head") - gen "One hundret points for this Gryffin-whore!" ("grin", xpos="far_left", ypos="head") - cho "*Ha-ha*!" ("base", "narrow", "base", "mid") - ton "Thank you, Sir." - ton "I know I deserve those Gryffin-whore points more than anyone!" - ton "I'm the biggest slut in all of Hogwarts!" - - "No points for you, Granger.": - ton "What? But Professor!" - ton "You're asking me to expose myself for you, without getting any of those precious house points?" - ton "How outragious!" - gen "Cho isn't asking for points either, Miss Granger. I'd say it's quite fair if you receive none as well..." ("base", xpos="far_left", ypos="head") - ton "Well, I'm not a slag like Miss Chang here... Who loves stripping for her headmaster!" - cho "Hey!" ("annoyed", "narrow", "angry", "L") - ton "What? It's the truth, isn't it... You slut!" - cho "..." ("annoyed", "narrow", "base", "mid") - cho "Sir, could you ask her to turn back again? She's starting to get on my nerves..." ("open", "narrow", "base", "mid") - gen "Not a chance. She's doing great!" ("grin", xpos="far_left", ypos="head") - cho "A bit too convincing for my likeing..." ("annoyed", "narrow", "base", "L") - ton "..." - ton "Very well, then. I shall undress for you, Professor." - ton "My friends will be so disappointed when they hear I'm doing this for free..." - ton "But I simply can't help it, can I?" - ton "I want to be the biggest slut in all of Hogwarts!" diff --git a/game/scripts/characters/cho/events/favors/inspect_her_body_tier4_tonks_INCOMPLETE.txt b/game/scripts/characters/cho/events/favors/inspect_her_body_tier4_tonks_INCOMPLETE.txt new file mode 100644 index 00000000..039f396e --- /dev/null +++ b/game/scripts/characters/cho/events/favors/inspect_her_body_tier4_tonks_INCOMPLETE.txt @@ -0,0 +1,97 @@ +############## +### Tier 4 ### +############## + +## Tier 4 - Summon Tonks ## + + +## Transformations ## + +## Succubus - Tier 4 ## +#label cc_pf_strip_T4_tonks.succubus_E1: +# gen "Tell me, Miss Tonks." ("base", xpos="far_left", ypos="head") +# gen "Are you one of these Succubbi that like to hunt virgins?" ("grin", xpos="far_left", ypos="head") +# ton "*Ha-ha-ha*... Where did you hear that?" # cracks up. +# gen "I've read it in a-- *uhm*...{w=0.5} in a book." ("base", xpos="far_left", ypos="head") +# gen "If you're a virgin by the age of forty and one visits you, you might end up lucky!" ("base", xpos="far_left", ypos="head") +# cho "Lucky... how?" +# ton "I don't know... I'd have to do some research on that..." +# ton "I was sure I knew everything there was to know about succubi..." +# gen "I suppose you might not be sophisticated enough to appreciate fine arts..." ("base", xpos="far_left", ypos="head") +# ton "*Hmm*... Then perhaps It'd be worth covering during one of my lesson." #looking at cho +# ton "Although I'd have to borrow that book of yours." + +## Hermione - Tier 4 ## +#label cc_pf_strip_T4_tonks.hermione_E1: + # ton "Move aside, Chang!" # angry + # ton "The headmaster wants me to strip for him." + # gen "That's right, Miss Granger." ("grin", xpos="far_left", ypos="head") + # cho "..." + +# gen "Seeing that she was being groped for the better part of it." ("grin", xpos="far_left", ypos="head") +# cho "Groped?-- What?" # confused +# gen "I her while she had to announce those points. It was quite funny!" ("grin", xpos="far_left", ypos="head") +# cho "You were molesting her, in front of everybody?" +# gen "I molested her -- with her consent!...{w} {size=-6}more or less.{/size}{w=0.3}{nw}" ("angry", xpos="far_left", ypos="head") +# gen "She practicly begged me to continue." ("base", xpos="far_left", ypos="head") +# ton "Was it that obvious, Professor?" +# ton "I loved the way you fingered my pussy in front of everybody. {heart}" +# cho "Merlin's beard, you're such a slut..." # judgemental + + + # Hermione stands in the middle, between Genie and Cho. + + # ton "Professor, how many house points may I get for this shameless act you're asking me to do?" + # gen "You're requesting house points for this, Miss Granger?" ("grin", xpos="far_left", ypos="head") + # ton "Naturally." + # gen "*Hmm*..." ("base", xpos="far_left", ypos="head") + + # menu: + # "You shall receive five points.": + # ton "Only so little, Professor?" + # ton "Surely revealing my tits must be worth a lot more to you than that..." + # gen "Five points, Miss Granger. And I demand to see a lot more than just your tits!" ("grin", xpos="far_left", ypos="head") + # cho "..." ("smile", "narrow", "base", "mid", cheeks="blush") + # ton "So be it then..." + # ton "I'll do anything for my precious Gryffindor house!" + # gen "Five points for Gryffindor, Miss Granger!" ("grin", xpos="far_left", ypos="head") + # $ gryffindor += 5 + # gen "Now strip for us, you little slut." ("angry", xpos="far_left", ypos="head") + + # "You shall receive one hundred points!": + # ton "Seriously?" + # cho "Professor, what are you doing?" ("base", "narrow", "base", "mid") + # ton "Well, one hundred points seem to be sufficient, Professor..." + # cho "..." ("base", "narrow", "base", "mid") + # ton "I'd gladly bare my tits for that amount." + # gen "Not just your tits, Miss Granger!" ("grin", xpos="far_left", ypos="head") + # ton "Anything for you, Sir." + # cho "I don't want Granger to get points from this! She isn't even here..." ("base", "narrow", "base", "mid") + # gen "Didn't you say you don't give a flying fuck about the house cup?" ("base", xpos="far_left", ypos="head") + # ton "*snort*... You said what?" + # cho "I didn't say it like that!" ("base", "narrow", "base", "mid") + # ton "*shsss*, Professor.{w=0.5} Just mumble a bit when giving out those points..." + # gen "Very well, then..." ("base", xpos="far_left", ypos="head") + # gen "One hundret points for this Gryffin-whore!" ("grin", xpos="far_left", ypos="head") + # cho "*Ha-ha*!" ("base", "narrow", "base", "mid") + # ton "Thank you, Sir." + # ton "I know I deserve those Gryffin-whore points more than anyone!" + # ton "I'm the biggest slut in all of Hogwarts!" + + # "No points for you, Granger.": + # ton "What? But Professor!" + # ton "You're asking me to expose myself for you, without getting any of those precious house points?" + # ton "How outragious!" + # gen "Cho isn't asking for points either, Miss Granger. I'd say it's quite fair if you receive none as well..." ("base", xpos="far_left", ypos="head") + # ton "Well, I'm not a slag like Miss Chang here... Who loves stripping for her headmaster!" + # cho "Hey!" ("annoyed", "narrow", "angry", "L") + # ton "What? It's the truth, isn't it... You slut!" + # cho "..." ("annoyed", "narrow", "base", "mid") + # cho "Sir, could you ask her to turn back again? She's starting to get on my nerves..." ("open", "narrow", "base", "mid") + # gen "Not a chance. She's doing great!" ("grin", xpos="far_left", ypos="head") + # cho "A bit too convincing for my likeing..." ("annoyed", "narrow", "base", "L") + # ton "..." + # ton "Very well, then. I shall undress for you, Professor." + # ton "My friends will be so disappointed when they hear I'm doing this for free..." + # ton "But I simply can't help it, can I?" + # ton "I want to be the biggest slut in all of Hogwarts!" diff --git a/game/scripts/characters/cho/events/favors/suck_it.rpy b/game/scripts/characters/cho/events/favors/suck_it.rpy index caece1d7..db0542b5 100644 --- a/game/scripts/characters/cho/events/favors/suck_it.rpy +++ b/game/scripts/characters/cho/events/favors/suck_it.rpy @@ -24,6 +24,7 @@ label cc_pf_blowjob: # End Event Jump label end_cc_pf_blowjob: + $ cho_blowjob_done = True $ cho.set_cum(None) if cho_tier == 3: @@ -46,8 +47,29 @@ label cc_pf_blowjob_T3_intro_E1: gen "Your dream is to become a professional is it not?" ("base", xpos="far_left", ypos="head") cho "I... yes... I suppose it is." ("soft", "narrow", "base", "R") gen "Then we should do our best to prepare you for what's out there!" ("base", xpos="far_left", ypos="head") + + label .introspection: + + if _in_replay: + show screen blkfade + with d5 + + $ cho.equip(cho_outfit_default) + $ game.gold = 1984 + $ game.day = 124 + call room("main_room") + + hide screen blkfade + with d5 + gen "I won't be your coach forever... Once you're looking for a proper team, you'll be in fierce competition with the other women athletes." ("base", xpos="far_left", ypos="head") gen "Women that will stop at nothing to get what they want." ("base", xpos="far_left", ypos="head") + + if _in_replay: + show screen blkfade + with d5 + return + gen "So, as your coach, it's my responsibility to prepare you!" ("base", xpos="far_left", ypos="head") cho "And a blowjob is necessary for this?" ("angry", "narrow", "raised", "mid") diff --git a/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy b/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy index 38aa176d..b8ef2a28 100644 --- a/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy +++ b/game/scripts/characters/cho/events/quidditch/gryffindor_match.rpy @@ -116,6 +116,24 @@ label start_gryffindor_match: #Next day #Cho flies up in the window and reminds genie about the game label gryffindor_match: + + label .introspection1: # not required, but added for clarity + + if _in_replay: + + show screen blkfade + with d5 + + $ game.gold = 1984 + $ game.day = 665 + $ game.daytime = True + $ game.weather = "clear" + camera screens at sepia + call room("main_room") + + hide screen blkfade + with d5 + # Quidditch match: Ravenclaw vs. Gryffindor $ lun_outfit_last.save() @@ -140,43 +158,65 @@ label gryffindor_match: call play_music("day") gen "*Yawn*" ("base", xpos="far_left", ypos="head") - gen "(Alright then, time to get up and moving.)" ("base", xpos="far_left", ypos="head") - gen "(Today is going to be a good day, I can feel it in those old bones!)" ("grin", xpos="far_left", ypos="head") - gen "(Seeing Cho on that broom again, and wiping the smirk of Snape's smug face when she stomps those--)" ("grin", xpos="far_left", ypos="head") - call play_music("stop") + if _in_replay: + cho "(Oh coach...)" + cho "(I should have pushed harder on the broom being an issue earlier...)" - gen "(Hold on...)" ("base", xpos="far_left", ypos="head") + play music "music/marty-gots-a-plan-by-kevin-macleod.ogg" fadein 1 fadeout 1 - play music "music/marty-gots-a-plan-by-kevin-macleod.ogg" fadein 1 fadeout 1 + cho "(How do I tell him that his plan isn't going to work?)" + cho "(But... What if he's got a backup plan?)" + cho "(I'll have to ask him!)" - gen "(The final match...)" ("base", xpos="far_left", ypos="head") - gen "{size=-4}*Murmur*...{w=0.4} I feel like I've forgotten something...{/size}" ("base", xpos="far_left", ypos="head") - gen "(Hold your carpets!)" ("angry", xpos="far_left", ypos="head") - gen "(Since it's the finals... That means no more matches!)" ("angry", xpos="far_left", ypos="head") - gen "(Cho won't have any more reason to let me coach her!)" ("angry", xpos="far_left", ypos="head") - gen "(I've been so focused on Snape and our stupid bet that I didn't even begin to see the bigger picture!)" ("base", xpos="far_left", ypos="head") - gen "(What good for is money when there's not a single brothel you can spend it at.)" ("base", xpos="far_left", ypos="head") - gen "(There's only so many sweets and clothes one can buy...)" ("base", xpos="far_left", ypos="head") - gen "(*Hmm*...)" ("base", xpos="far_left", ypos="head") - gen "(Perhaps I could pay her to--)" ("base", xpos="far_left", ypos="head") + cho "[cho_genie_name]!" - # Note: I've tried using chibis, but it's too difficult/buggy. + cho "(Wait, he's expecting me to drink the potion as a backup!)" + cho "(I'll just tell him I came to fetch--)" - #Cho appears in the window on her broom/knocks on door - #show image "ch_cho fly_window_masked" onlayer screens zorder 5 - #call cho_chibi("fly_window", "mid", "base") + gen "I'm such an idiot!" ("angry", xpos="far_left", ypos="head") - cho "[cho_genie_name]!" + cho "(Is he talking to himself?)" + cho "(I should say something, so he won't think I've been eavesdropping.)" - if cho_bj_choice == "points": - gen "(No, she got pissed when I offered points before.)" ("base", xpos="far_left", ypos="head") - gen "(Even now I can hear her calling me out, and who knows what she would do if I offered her real money...)" ("base", xpos="far_left", ypos="head") else: - gen "(Nah, I can hear her screaming at me in my head.)" ("base", xpos="far_left", ypos="head") - gen "(All she cares about is that broomstick sport of hers.)" ("base", xpos="far_left", ypos="head") + gen "(Alright then, time to get up and moving.)" ("base", xpos="far_left", ypos="head") + gen "(Today is going to be a good day, I can feel it in those old bones!)" ("grin", xpos="far_left", ypos="head") + gen "(Seeing Cho on that broom again, and wiping the smirk of Snape's smug face when she stomps those--)" ("grin", xpos="far_left", ypos="head") - gen "I'm such an idiot!" ("angry", xpos="far_left", ypos="head") # Says out loud + call play_music("stop") + + gen "(Hold on...)" ("base", xpos="far_left", ypos="head") + + play music "music/marty-gots-a-plan-by-kevin-macleod.ogg" fadein 1 fadeout 1 + + gen "(The final match...)" ("base", xpos="far_left", ypos="head") + gen "{size=-4}*Murmur*...{w=0.4} I feel like I've forgotten something...{/size}" ("base", xpos="far_left", ypos="head") + gen "(Hold your carpets!)" ("angry", xpos="far_left", ypos="head") + gen "(Since it's the finals... That means no more matches!)" ("angry", xpos="far_left", ypos="head") + gen "(Cho won't have any more reason to let me coach her!)" ("angry", xpos="far_left", ypos="head") + gen "(I've been so focused on Snape and our stupid bet that I didn't even begin to see the bigger picture!)" ("base", xpos="far_left", ypos="head") + gen "(What good for is money when there's not a single brothel you can spend it at.)" ("base", xpos="far_left", ypos="head") + gen "(There's only so many sweets and clothes one can buy...)" ("base", xpos="far_left", ypos="head") + gen "(*Hmm*...)" ("base", xpos="far_left", ypos="head") + gen "(Perhaps I could pay her to--)" ("base", xpos="far_left", ypos="head") + + # 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 + #call cho_chibi("fly_window", "mid", "base") + + cho "[cho_genie_name]!" + + if cho_bj_choice == "points": + gen "(No, she got pissed when I offered points before.)" ("base", xpos="far_left", ypos="head") + gen "(Even now I can hear her calling me out, and who knows what she would do if I offered her real money...)" ("base", xpos="far_left", ypos="head") + else: + gen "(Nah, I can hear her screaming at me in my head.)" ("base", xpos="far_left", ypos="head") + gen "(All she cares about is that broomstick sport of hers.)" ("base", xpos="far_left", ypos="head") + + gen "I'm such an idiot!" ("angry", xpos="far_left", ypos="head") # Says out loud cho "Hey, [cho_genie_name]!" cho "The game is about to start... You're going to be late!" gen "W-What..." ("base", xpos="far_left", ypos="head") @@ -193,6 +233,11 @@ label gryffindor_match: gen "[cho_name]?" ("base", xpos="far_left", ypos="head") gen "What are you doing in here?" ("base", xpos="far_left", ypos="head") gen "Or rather, what are you doing {i}out there{/i}, outside my window?" ("base", xpos="far_left", ypos="head") + + if _in_replay: + cho "(I screwed up the whole plan, I poured out the potion you left for me, the broom isn't working, and my world is crumbling to pieces!)" + cho "(...)" + cho "I flew up here to remind you about the finals, [cho_genie_name]." gen "Ah yes, I suppose I better get going..." ("base", xpos="far_left", ypos="head") @@ -216,6 +261,14 @@ label gryffindor_match: cho "(Is it because--)" cho "(No, that's impossible... is it?)" + # Used in Quidditch Outro + if _in_replay: + show screen blkfade + with d5 + camera screens + $ renpy.end_replay() + # + #Cho flies off # gen "(...{w=0.5} Well then, I suppose I better get going, I've still got that prize money to look forward to if she wins...)" ("base", xpos="far_left", ypos="head") @@ -535,6 +588,31 @@ label gryffindor_match: gen "{size=+4}Don't play dumb with me. Tell me what you're planning!{/size}" ("angry", xpos="far_left", ypos="head") sna "As I said--" ("snape_01") ton "*Sigh*...{w=0.4} You boys and your silly bets." ("open", "narrow", "shocked", "downR") + + label .introspection2: + + if _in_replay: + show screen blkfade + with d5 + + $ cho.equip(cho_outfit_quidditch_gryffindor) + $ game.gold = 1984 + $ game.day = 667 + $ game.daytime = False + $ game.weather = "clear" + $ snape_chibi.zorder = 3 + $ tonks_chibi.zorder = 4 + camera screens at sepia + call room("quidditch_stands",) + call quidditch_stands(weather="sun_high", crowd=crowd_full) + call sna_chibi("stand", 150, 290, flip=True) + call ton_chibi("stand", 130, 310, flip=True) + call gen_chibi("stand", 168, 326, flip=True) + call her_chibi("stand", 300, 400, flip=True) + + hide screen blkfade + with d5 + her "--And finally, making their way onto the pitch..." ("angry", "happy", "base", "L", xpos=290, ypos="base", flip=True, trans=d5) her "The Ravenclaw seeker...{w=0.6}{nw}" ("open", "base", "base", "L") @@ -549,6 +627,14 @@ label gryffindor_match: $ renpy.sound.play("sounds/crowd_cheer2.ogg") "The Crowd" "Cho! Cho! Cho!" + # Used in Quidditch Outro + if _in_replay: + show screen blkfade + with d5 + camera screens + $ renpy.end_replay() + # + her "*Hmph*...{w=0.4} It appears some of us aren't here just for sports." ("open", "squint", "annoyed", "L", cheeks="blush") call quidditch_stands(crowd_react=[None, None, None]) sna "She sure has become quite popular amongst the students hasn't she." ("snape_37") @@ -652,130 +738,358 @@ label gryffindor_match: #Fade back to pitch sna "What's she up to anyway? She looks like a niffler who's got caught stealing their grandmother's brooch." ("snape_01") - gen "(Come on, girl...{w=0.4} Focus.)" ("base", xpos="far_left", ypos="head") - gen "(Get that broom going...)" ("base", xpos="far_left", ypos="head") - ">Cho, frustrated in a multitude of ways, looks down towards you in desperation." - menu: - "-Give her a sign-": - ">You begin moving one of your hands in a spanking motion." - ">Her expression changes as she stares at you in confusion." - ">You put your other hand out over what could only be described as an imaginary ass and begin spanking the air violently." - ton "Professor?" ("soft", "base", "raised", "mid") #Confused + label .introspection3: - "-Point towards the Gryffindor players-": - ">You point towards the Gryffindor side of the pitch." - ">Cho looks at you confused, and then points towards that side as well." - ">Shaking your head, you point towards one of the female players." + if _in_replay: - "-Give her a seductive look-": - ">You begin fluttering your eyelashes up towards Cho." - ">She looks down at you in confusion." - ">You lick your lips and give her a wink." - ">Looking at you in horror for a brief moment, she then finally understands what you were trying to say." + #Shifts to new view of Cho Doll flying in the air (her perspective when genie starts gesticulating wildly to have her spank the enemy on their ass) + # TODO: No idea what view is supposed to be. - ">Cho gives you a quick nod and then flies up towards one of the Gryffindor chasers who has positioned themselves near the Ravenclaw goalposts." - her "Johnson passing to Spinnet--" ("grin", "base", "base", "L", xpos=290, ypos="base", flip=True, trans=d5) - #Spank sound - call play_sound("slap") - "*Smack*!!" - her "What the--" ("soft", "wide", "base", "up", cheeks="blush") - her "What is Cho doing?" ("disgust", "wide", "base", "up", cheeks="blush") + show screen blkfade + with d5 - hide hermione_main - with d3 + $ cho.equip(cho_outfit_quidditch_gryffindor) + $ game.gold = 1984 + $ game.day = 667 + $ game.daytime = True + $ game.weather = "clear" + $ snape_chibi.zorder = 3 + $ tonks_chibi.zorder = 4 + camera screens at sepia + call room("quidditch_stands",) + call quidditch_stands(weather="sun_high", crowd=crowd_full) + call sna_chibi("stand", 150, 290, flip=True) + call ton_chibi("stand", 130, 310, flip=True) + call gen_chibi("stand", 168, 326, flip=True) + call her_chibi("stand", 300, 400, flip=True) - #Hermione turns around - call her_chibi("stand", 300, 400, flip=False) - with d3 + hide screen blkfade + with d5 - her "Sir!" ("disgust", "narrow", "annoyed", "mid", cheeks="blush", xpos=290, ypos="base", flip=False, trans=d5) - her "She--{w=0.2} She smacked one of the chasers on the bum..." ("angry", "happy", "annoyed", "mid", cheeks="blush") - her "Sir, you can't let her get away with this!" ("clench", "happy", "annoyed", "mid", cheeks="blush") - gen "I'm not hearing any objections from the referee...{w=0.5} Or the player, matter-of-factly..." ("base", xpos="far_left", ypos="head") - gen "Unless she used her elbows, that's not against the rules." ("base", xpos="far_left", ypos="head") - her "But...{w=0.4} Sir!" ("disgust", "base", "annoyed", "mid", cheeks="blush") - gen "I didn't write the rules, Miss Granger..." ("base", xpos="far_left", ypos="head") - her "*Tsk*..." ("soft", "happy", "angry", "R", cheeks="blush") + cho "(Come on... This stupid broom!)" + cho "(Get it going already!)" + cho "(Why...{w=0.4} Can't...{w=0.4} I...{w=0.6} Get Horny!!)" - hide hermione_main - with d3 + ">Cho, frustrated in a multitude of ways, looks down towards the commentator tower in desperation." + ">She notices her coach making funny faces and gesticulating wildly." - call her_chibi("stand", 300, 400, flip=True) - with d3 + cho "(What is he doing...)" + cho "(Oh! The other part of our plan! Get close to the enemy team!)" - ">Hermione gritting her teeth holds back her anger, and eventually resumes commentating the game." - ">Looking up at Cho, you see a mix of frustration and worry across her face as she flies off again." + show screen blkfade + with d5 - gen "{size=-4}Damn it...{/size}" ("base", xpos="far_left", ypos="head") #whisper - sna "{size=-4}Miss Chang isn't doing so well this time is she?{/size}" ("snape_05") #whisper - sna "{size=-4}It appears your feeble attempts at riling up Miss Granger were in vain.{/size}" ("snape_37") #whisper - gen "{size=-4}How did you--{/size}" ("angry", xpos="far_left", ypos="head") #whisper - sna "{size=-4}Why, you were the one that told me about their contempt for each other when we made our little bet.{/size}" ("snape_02") #whisper - gen "..." ("base", xpos="far_left", ypos="head") - ton "*Hmm*?" ("soft", "base", "base", "R") - sna "{size=-4}That little witch has successfully been making my life a misery since the moment she got here.{/size}" ("snape_01") - sna "{size=-4}To think that Miss Chang would be able to rile her up...{/size}" ("snape_37") - her "Another goal for Team Gryffindor!" ("crooked_smile", "happy", "base", "L", xpos=290, ypos="base", flip=True, trans=d5) + ">Cho gets close to one of the enemy chasers, Katie Bell." - #crowd cheer - $ renpy.sound.play("sounds/crowd_cheer.ogg") - call quidditch_stands(crowd_react=["th", None, "emo8"]) + cho "Hey Katie!" + "Katie" "Not now Cho, I'm a little busy if you haven't noticed!" + cho "Cannot say that I have. All I see is you staring at Alicia's butt." + "Katie" "Are you trying to piss me off, little raven?" + cho "So what if I am?" + "Katie" "Nice try, but I won't lose my temper, unlike you, I am trying to win this game--" - sna "Go-Go Gryffindor..." ("snape_37") #Smugface, out loud - call quidditch_stands(crowd_react=[None, None, None]) - her "And with such a steady lead, soon it won't even matter if Ravenclaw catches the snitch or not!" ("smile", "base", "base", "L") + #Spank sound + call play_sound("slap") + "*Smack*!!" - hide hermione_main - with d3 + ">Cho smacks Katie on her shapely bum." + "Katie" "*Owww*!!" + cho "*imitates Katie's voice* \"Ohh yes Alicia, please spank me harder!\"" + "Katie" "H-How--" + ">Cho grins at her briefly, then swiftly flies away." + "Katie" "Why you little--" + ">Katie dashes after Cho." + "Katie" "Come back here, I'm not done with you!" - gen "Hold the fuck up." ("angry", xpos="far_left", ypos="head") - gen "No one has told me that's a thing! I thought the rules were set up in favour of the protagonist!" ("angry", xpos="far_left", ypos="head") + hide screen blkfade + with d3 + + #Hermione turns around + call her_chibi("stand", 300, 400, flip=False) + with d3 + + "Hermione" "Sir!" + cho "(Finally! That's done it!)" + "Hermione" "*inaudible*" + cho "(Look at her going, she's bound to distract her team for me!)" + gen "*Shrugs*" + "Hermione" "*inaudible shouting*" + + call her_chibi("stand", 300, 400, flip=True) + with d3 + + ">Hermione gritting her teeth holds back her anger, and eventually resumes commentating the game." + + #Shifts to screen of Cho Doll flying in the air + ">Cho is being chased by Katie, but not for long as Angelina's attention turns to them." + "Angelina" "What the hell are you doing, Katie?!" + "Katie" "N-Nothing, I'm just--" + "Angelina" "I don't wanna hear it, just get back to the game!" + "Katie" "...Yes ma'am." + ">Katie gives up the chase, glaring daggers at Cho." + + cho "(What the--)" + cho "(It didn't work!?!)" + cho "(Our Plan! What am I supposed to do now?!)" + + ">Cho looks down towards her Coach, who appears to be in some sort of argument with Professor Snape." + + "Hermione" "Another goal for Team Gryffindor!" + + cho "(Another goal!)" #Worried + "Hermione" "And with such a steady lead, soon it won't even matter if Ravenclaw catches the snitch or not!" + ">Moving her gaze away from her coach, Cho briefly locks eyes with Hermione." + cho "(Stupid bitch!)" + cho "(Stupid broom!)" + cho "(Now where's that--{w=0.4} Stupid--{w=0.4} snitch!?)" + + ">Cho begins to feverishly look around for the snitch, her eyes darting around the pitch." + ">Unable to locate it, she looks back towards the commentators' tower for assistance." + + cho "Where did he vanish?!" + + "Hermione" "A fantastic--{w=0.4} Hold on...{w=0.4} What's that on the pitch?{fast} Is that--" + cho "(What the--{w=0.4} Where's he going?)" + + pause 0.3 + + 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 screen blkfade + with ComposeTransition(pushleft, before=faderight) + hide screen blkfade + with ComposeTransition(pushleft, after=faderight) + + #Camera transitions and Genie appears in Luna's tower on the opposite side of the pitch + + $ renpy.sound.play("sounds/run_02.ogg") + pause 1.5 + + call gen_chibi("stand", 780, 480, flip=False) + with d3 + call gen_walk(xpos=740, ypos=470) + + pause 0.5 + + call gen_chibi(flip=True) + with d3 + + cho "Is he talking with Gi--" + cho "Hold on. What's that thing near the balustrade... Is that... Luna?!" + cho "What is she wearing?!" + + #Genie walks down to Luna. + call gen_walk(xpos=650, ypos=430) + + #Hit sound + $ renpy.sound.play("sounds/ball_hit.ogg") + + "Hermione" "Ouch... What a blunder! Surely he should've seen that coming!" #big text + gen "*inaudible*" + "Hermione" "Katie Bell passing to Alicia Spinnet..." #text larger + cho "(Oh right, I did ask him to get someone to cheer for me...)" + "Hermione" "Expertly dodging a bludger..." #text larger + cho "(...)" + "Hermione" "Coming up towards the goal..." #text larger + cho "(To think he'd go so far as asking Loony Luna...)" + "Hermione" "Gryffindor!" #text larger + cho "(He still believes I can do it without the potion...)" + + ">Staring into the distance, Cho begins shuffling on her broom, thinking hard on what to do..." + + cho "(I can't get this stupid broom going...)" + cho "(Spanking Angelina wasn't enough either...)" + + #Cut to cho Doll flying + + ">Glancing towards the commentator booth, Cho's eyes are once again drawn towards Hermione, who is grinning from ear to ear, and jumping on the spot excitedly." + ">Cho moves her gaze away from Hermione angrily, promptly staring into space, trying to figure out what to do next." + + cho "(Think, Cho... Think...)" + cho "(What would coach tell me to do...)" #closes eyes to think + + # Note: We need to make a call because we already are in Replay scope + call cc_pf_strip_T2_intro_E1.introspection + + $ cho.equip(cho_outfit_quidditch_gryffindor) + $ game.gold = 1984 + $ game.day = 667 + call room("quidditch_stands",) + call quidditch_stands(weather="sun_high", crowd=crowd_full) + call lun_chibi(xpos=620, ypos=400) + call gen_chibi("stand", 650, 430, flip=True) + + hide screen blkfade + with d5 + + cho "(That's not it...)" #blush, open eyes + "Hermione" "{{Gryffindor scores another goal!}" + + play sound "sounds/crowd_cheer.ogg" + + cho "..." #angry #eyes closed + + call cc_pf_blowjob_T3_intro_E1.introspection + + $ cho.equip(cho_outfit_quidditch_gryffindor) + $ game.gold = 1984 + $ game.day = 667 + call room("quidditch_stands",) + call quidditch_stands(weather="sun_high", crowd=crowd_full) + call lun_chibi(xpos=620, ypos=400) + call gen_chibi("stand", 650, 430, flip=True) + + hide screen blkfade + with d5 + + cho "(Yes coach... But what am I supposed to do?)" + gen "Go on, girl. Start with the top..." ("grin", xpos="far_left", ypos="head") # TODO: Add transparency + cho "(Coach... Please, this isn't the time--)" + cho "(Hold on...)" + cho "(That's it!!)" #open eyes wide + cho "(Granger...)" #mischievous + cho "(She'll be furious...)" #horny + cho "(But... Doing it in front of the entire school...)" + + ">Cho Shifts around slightly on her new broom and suddenly finds herself able to slide up and down the dildo effortlessly." + cho "..." #surprised + cho "..." #smirks + + #Cho flies off the screen + + $ renpy.end_replay() - if quidditchguide_ITEM.used: - sna "I see someone hasn't been paying attention to the \"Basics of Quidditch\"." ("snape_41") - gen "Of course I did, I just... forgot." ("base", xpos="far_left", ypos="head") - sna "Oh well, perhaps next time... Oh wait, there's no next time..." ("snape_46") else: - sna "Of course, you can win the game even without your team being the ones to catch the snitch, albeit it is very uncommon..." ("snape_41") - sna "Perhaps if you'd learnt the actual game you wouldn't need to rely on silly rules like excessive elbow usage..." ("snape_46") # smug + gen "(Come on, girl...{w=0.4} Focus.)" ("base", xpos="far_left", ypos="head") + gen "(Get that broom going...)" ("base", xpos="far_left", ypos="head") - gen "{size=-4}Smug bastard...{/size}" ("base", xpos="far_left", ypos="head") - sna "I'll take that as a compliment." ("snape_37") + ">Cho, frustrated in a multitude of ways, looks down towards you in desperation." - ">As you turn your gaze back to Cho, you see her eyes darting around, seemingly searching for the snitch." - gen "(Damn it... She's lost all confidence in our plan!)" ("base", xpos="far_left", ypos="head") - gen "(Hold on...{w=0.4} Yes! That's it, confidence!)" ("base", xpos="far_left", ypos="head") - gen "Tonks, Where's Lovegood?" ("base", xpos="far_left", ypos="head") - ton "Lovegood, sir?" ("soft", "base", "base", "mid") - gen "Yes, what tower is she in?" ("base", xpos="far_left", ypos="head") - ton "Oh, Miss Lovegood... She should be in that one across the pitch--" ("open", "base", "raised", "mid") + menu: + "-Give her a sign-": + ">You begin moving one of your hands in a spanking motion." + ">Her expression changes as she stares at you in confusion." + ">You put your other hand out over what could only be described as an imaginary ass and begin spanking the air violently." + ton "Professor?" ("soft", "base", "raised", "mid") #Confused - #Genie chibi disappears - $ renpy.sound.play("sounds/run_02.ogg") - call gen_chibi("hide") + "-Point towards the Gryffindor players-": + ">You point towards the Gryffindor side of the pitch." + ">Cho looks at you confused, and then points towards that side as well." + ">Shaking your head, you point towards one of the female players." - ton "Where are you going?!" ("clench", "wide", "base", "mid") + "-Give her a seductive look-": + ">You begin fluttering your eyelashes up towards Cho." + ">She looks down at you in confusion." + ">You lick your lips and give her a wink." + ">Looking at you in horror for a brief moment, she then finally understands what you were trying to say." - with hpunch - $ renpy.sound.play("sounds/falling_stairs.ogg") + ">Cho gives you a quick nod and then flies up towards one of the Gryffindor chasers who has positioned themselves near the Ravenclaw goalposts." - #Falls down stairs - pause 2.0 - sna "*Tsk*, *Tsk*...{w=0.4} The sense of imminent loss must've been too much for him." ("snape_37") + her "Johnson passing to Spinnet--" ("grin", "base", "base", "L", xpos=290, ypos="base", flip=True, trans=d5) - her "A fantastic--{w=0.4}{nw}" ("grin", "base", "base", "L", xpos=290, ypos="base", flip=True, trans=d5) - her "A fantastic--{fast} Hold on...{w=0.4} What's that on the pitch?{nw}" ("soft", "narrow", "base", "L") - her "A fantastic-- Hold on... What's that on the pitch?{fast} Is that--" ("clench", "wide", "base", "L") - $ renpy.sound.play("sounds/murmur.ogg") - sna "What the--" ("snape_25") - sna "He's going to blow our cover, running like that!" ("snape_32") - ton "Focus on the game, Miss Granger!" ("scream", "wide", "base", "mid") - her "R-Right!" ("mad", "happy", "base", "L") - her "Fred--{w=0.2} I mean, George Weasley intercepting a bludger--" ("scream", "squint", "base", "L") - hide screen bld1 - hide hermione_main - with d3 + #Spank sound + call play_sound("slap") + "*Smack*!!" + her "What the--" ("soft", "wide", "base", "up", cheeks="blush") + her "What is Cho doing?" ("disgust", "wide", "base", "up", cheeks="blush") + + hide hermione_main + with d3 + + #Hermione turns around + call her_chibi("stand", 300, 400, flip=False) + with d3 + + her "Sir!" ("disgust", "narrow", "annoyed", "mid", cheeks="blush", xpos=290, ypos="base", flip=False, trans=d5) + her "She--{w=0.2} She smacked one of the chasers on the bum..." ("angry", "happy", "annoyed", "mid", cheeks="blush") + her "Sir, you can't let her get away with this!" ("clench", "happy", "annoyed", "mid", cheeks="blush") + gen "I'm not hearing any objections from the referee...{w=0.5} Or the player, matter-of-factly..." ("base", xpos="far_left", ypos="head") + gen "Unless she used her elbows, that's not against the rules." ("base", xpos="far_left", ypos="head") + her "But...{w=0.4} Sir!" ("disgust", "base", "annoyed", "mid", cheeks="blush") + gen "I didn't write the rules, Miss Granger..." ("base", xpos="far_left", ypos="head") + her "*Tsk*..." ("soft", "happy", "angry", "R", cheeks="blush") + + hide hermione_main + with d3 + + call her_chibi("stand", 300, 400, flip=True) + with d3 + + ">Hermione gritting her teeth holds back her anger, and eventually resumes commentating the game." + ">Looking up at Cho, you see a mix of frustration and worry across her face as she flies off again." + + gen "{size=-4}Damn it...{/size}" ("base", xpos="far_left", ypos="head") #whisper + sna "{size=-4}Miss Chang isn't doing so well this time is she?{/size}" ("snape_05") #whisper + sna "{size=-4}It appears your feeble attempts at riling up Miss Granger were in vain.{/size}" ("snape_37") #whisper + gen "{size=-4}How did you--{/size}" ("angry", xpos="far_left", ypos="head") #whisper + sna "{size=-4}Why, you were the one that told me about their contempt for each other when we made our little bet.{/size}" ("snape_02") #whisper + gen "..." ("base", xpos="far_left", ypos="head") + ton "*Hmm*?" ("soft", "base", "base", "R") + sna "{size=-4}That little witch has successfully been making my life a misery since the moment she got here.{/size}" ("snape_01") + sna "{size=-4}To think that Miss Chang would be able to rile her up...{/size}" ("snape_37") + her "Another goal for Team Gryffindor!" ("crooked_smile", "happy", "base", "L", xpos=290, ypos="base", flip=True, trans=d5) + + #crowd cheer + $ renpy.sound.play("sounds/crowd_cheer.ogg") + call quidditch_stands(crowd_react=["th", None, "emo8"]) + + sna "Go-Go Gryffindor..." ("snape_37") #Smugface, out loud + call quidditch_stands(crowd_react=[None, None, None]) + her "And with such a steady lead, soon it won't even matter if Ravenclaw catches the snitch or not!" ("smile", "base", "base", "L") + + hide hermione_main + with d3 + + gen "Hold the fuck up." ("angry", xpos="far_left", ypos="head") + gen "No one has told me that's a thing! I thought the rules were set up in favour of the protagonist!" ("angry", xpos="far_left", ypos="head") + + if quidditchguide_ITEM.used: + sna "I see someone hasn't been paying attention to the \"Basics of Quidditch\"." ("snape_41") + gen "Of course I did, I just... forgot." ("base", xpos="far_left", ypos="head") + sna "Oh well, perhaps next time... Oh wait, there's no next time..." ("snape_46") + else: + sna "Of course, you can win the game even without your team being the ones to catch the snitch, albeit it is very uncommon..." ("snape_41") + sna "Perhaps if you'd learnt the actual game you wouldn't need to rely on silly rules like excessive elbow usage..." ("snape_46") # smug + + gen "{size=-4}Smug bastard...{/size}" ("base", xpos="far_left", ypos="head") + sna "I'll take that as a compliment." ("snape_37") + + ">As you turn your gaze back to Cho, you see her eyes darting around, seemingly searching for the snitch." + gen "(Damn it... She's lost all confidence in our plan!)" ("base", xpos="far_left", ypos="head") + gen "(Hold on...{w=0.4} Yes! That's it, confidence!)" ("base", xpos="far_left", ypos="head") + gen "Tonks, Where's Lovegood?" ("base", xpos="far_left", ypos="head") + ton "Lovegood, sir?" ("soft", "base", "base", "mid") + gen "Yes, what tower is she in?" ("base", xpos="far_left", ypos="head") + ton "Oh, Miss Lovegood... She should be in that one across the pitch--" ("open", "base", "raised", "mid") + + #Genie chibi disappears + $ renpy.sound.play("sounds/run_02.ogg") + call gen_chibi("hide") + + ton "Where are you going?!" ("clench", "wide", "base", "mid") + + with hpunch + $ renpy.sound.play("sounds/falling_stairs.ogg") + + #Falls down stairs + pause 2.0 + sna "*Tsk*, *Tsk*...{w=0.4} The sense of imminent loss must've been too much for him." ("snape_37") + + her "A fantastic--{w=0.4}{nw}" ("grin", "base", "base", "L", xpos=290, ypos="base", flip=True, trans=d5) + her "A fantastic--{fast} Hold on...{w=0.4} What's that on the pitch?{nw}" ("soft", "narrow", "base", "L") + her "A fantastic-- Hold on... What's that on the pitch?{fast} Is that--" ("clench", "wide", "base", "L") + $ renpy.sound.play("sounds/murmur.ogg") + sna "What the--" ("snape_25") + sna "He's going to blow our cover, running like that!" ("snape_32") + ton "Focus on the game, Miss Granger!" ("scream", "wide", "base", "mid") + her "R-Right!" ("mad", "happy", "base", "L") + her "Fred--{w=0.2} I mean, George Weasley intercepting a bludger--" ("scream", "squint", "base", "L") + hide screen bld1 + hide hermione_main + with d3 pause 0.3 @@ -1463,7 +1777,7 @@ label gryffindor_match_return: $ cho.set_pose(None) $ cho.animation = None - $ cho.strip("all") + $ cho.strip("clothes") call play_music("stop") @@ -1831,6 +2145,26 @@ label gryffindor_match_return: $ renpy.play("sounds/giggle2.ogg") ton "*Giggles*..." ("grin", "narrow", "base", "R", trans=d3) #smirks + label .introspection: + + if _in_replay: + show screen blkfade + with d5 + + pause 1 + + $ cho.set_pose(None) + $ cho.animation = None + $ cho.strip("clothes") + + call play_music("stop") + + call room("main_room") + call gen_chibi("hide") + + hide screen blkfade + with d5 + ton "You can come out now Miss Chang... The scary pale man is gone." ("base", "narrow", "base", "L") gen "Just give her one more minute--" ("base", xpos="far_left", ypos="head") ton "Go on Miss Chang, no need to worry." ("soft", "base", "base", "L") @@ -1867,11 +2201,34 @@ label gryffindor_match_return: cho "*Hmm*..." ("soft", "narrow", "base", "down", cheeks="blush", trans=d3) cho "Have f--{w=0.2} Oh, I see..." ("soft", "narrow", "base", "down", cheeks="heavy_blush") + + if _in_replay: + cho "(She thinks I drank the potion... But how does she know I want to--)" + cho "(Is it that obvious...)" + cho "(But how could I ask him... I didn't drink it...)" + cho "(Unless I told him--)" + cho "{size=-4}The potion would let me know if this wasn't what he wanted...{/size}" ("soft", "narrow", "base", "downR", cheeks="heavy_blush") gen "*Huh*?" ("base", xpos="far_left", ypos="head") gen "What are you mumbling--" ("base", xpos="far_left", ypos="head") play music "music/marty-gots-a-plan-by-kevin-macleod.ogg" fadeout 3 fadein 1.0 cho "[cho_genie_name], Why don't you take your clothes off and get on that desk for me?" ("soft", "narrow", "base", "mid", cheeks="blush") #smirk + + if _in_replay: + return + + + ###### FINISHED HERE + + + + + + + + + + gen "W--{w=0.2} What?!" ("base", xpos="far_left", ypos="head") $ renpy.sound.play("sounds/giggle.ogg") cho "*giggles*" ("smile", "narrow", "base", "R", cheeks="heavy_blush") diff --git a/game/scripts/characters/cho/events/quidditch/gryffindor_practice.rpy b/game/scripts/characters/cho/events/quidditch/gryffindor_practice.rpy index cc4d3b3f..bade041a 100644 --- a/game/scripts/characters/cho/events/quidditch/gryffindor_practice.rpy +++ b/game/scripts/characters/cho/events/quidditch/gryffindor_practice.rpy @@ -92,7 +92,29 @@ label cc_gt_return: cho "Please believe me [cho_genie_name]!" ("scream", "closed", "worried", "mid") gen "A school supplied broom will have to suffice." ("base", xpos="far_left", ypos="head") cho "Why aren't you listening, [cho_genie_name]!" ("angry", "wide", "worried", "mid") - cho "The school supplied brooms are ancient, there's no way I'd be able to win anything flying on that rubbish!" ("scream", "narrow", "worried", "mid") + + # Used in Quidditch Outro + label .introspection: + + if _in_replay: + + show screen blkfade + with d5 + + $ cho.equip(cho_outfit_quidditch_gryffindor) + $ game.gold = 1984 + $ game.day = 665 + $ game.daytime = False + $ game.weather = "clear" + camera screens at sepia + call room("main_room") + call cho_chibi(xpos="mid", ypos="base") + + hide screen blkfade + with d5 + # + + cho "The school supplied brooms are ancient, there's no way I'd be able to win anything flying on that rubbish!" ("scream", "narrow", "worried", "mid", xpos="mid") cho "Harry's firebolt--" ("angry", "closed", "worried", "mid") gen "A broom's a broom. I'm sure the expensive ones are just branding." ("base", xpos="far_left", ypos="head") cho "..." ("disgust", "narrow", "base", "mid") @@ -120,8 +142,15 @@ label cc_gt_return: call cho_walk(action="leave") pause .8 - gen "*Hmm*..." ("base", xpos="far_left", ypos="head") + # Used in Quidditch Outro + if _in_replay: + show screen blkfade + with d5 + camera screens + $ renpy.end_replay() + # + gen "*Hmm*..." ("base", xpos="far_left", ypos="head") $ cho.equip(cho_outfit_last) # Equip last worn clothes diff --git a/game/scripts/characters/cho/events/quidditch/intros.rpy b/game/scripts/characters/cho/events/quidditch/intros.rpy index d2c109ad..19f4dd57 100644 --- a/game/scripts/characters/cho/events/quidditch/intros.rpy +++ b/game/scripts/characters/cho/events/quidditch/intros.rpy @@ -1509,6 +1509,31 @@ label cho_quid_E12: cho "You did?" ("angry", "narrow", "base", "L", cheeks="heavy_blush") hoo "Yes, and I assure you, I understand your feelings completely..." ("base", "narrow", "shocked", "L", cheeks="blush_heavy") hoo "As it happens... There's nothing that gets me more excited than a crowd..." ("base", "narrow", "base", "mid", cheeks="blush_heavy") + + # Used in Quidditch Outro + label .introspection: + + if _in_replay: + show screen blkfade + with d5 + + $ hooch.equip(hoo_outfit_default) + $ hooch.equip(hoo_accessory_broom_dildo) + $ cho.equip(cho_outfit_quidditch_gryffindor) + $ game.gold = 1984 + $ game.day = 666 + $ game.daytime = True + $ game.weather = "clear" + $ hooch_chibi.move((450, 500), speed=100) # TODO, fix after chibi changes are merged + camera screens at sepia + call room("quidditch_pitch") + call cho_chibi("stand", "right", "base", flip=False) + call gen_chibi(xpos="mid", ypos="base", flip=False) + + hide screen blkfade + with d5 + # + hoo "And all those feelings are imbued into this very broom..." ("base", "narrow", "base", "R", cheeks="blush") hoo "I remember using it at the quidditch world cup finals... Thousands of people watching..." ("grin", "closed", "worried", "mid", cheeks="blush_heavy") cho "" ("horny", "narrow", "base", "downR", cheeks="heavy_blush") @@ -1516,6 +1541,14 @@ label cho_quid_E12: hoo "When I caught the snitch... Why I've never felt such a rush." ("grin", "closed", "shocked", "mid", cheeks="blush_heavy") cho "{size=-6}I'll do it...{/size}" ("disgust", "narrow", "base", "downR", cheeks="heavy_blush") #Small text + # Used in Quidditch Outro + if _in_replay: + show screen blkfade + with d5 + camera screens + $ renpy.end_replay() + # + if cho_received_thestral: gen "Wait, how come when I tried to give you a broom with a--" ("angry", xpos="far_left", ypos="head") else: @@ -1634,3 +1667,479 @@ label cho_quid_E13: $ cho_quid.E13_complete = True jump main_room_menu + +label cho_quid_E14: + + # Quidditch Outro + + call cho_walk("mid", "base", action="enter") + + cho "Hello Coach." + gen "Hello [cho_name]... So, I still am your coach after all?" ("base", xpos="far_left", ypos="head") + cho "Of course you are!" + cho "Unless you would rather not be anymore?" + gen "Nonsense." ("base", xpos="far_left", ypos="head") + gen "If you ever need me, I'll be there before you can even say snitch." ("base", xpos="far_left", ypos="head") + cho "Well, in that case...{w=0.3} {size=-2}Snitch...{/size}" + + #Genie chibi stands up next to his desk + + menu: + "-Use Instant Transmission-": + + # Genie teleports to Cho + + call gen_chibi("stand", 430, "base") + call teleport(position="genie", effect=False) + + cho "Apparition, I presume?" + gen "Appa-- What?" + gen "Isn't that the flying thing from Four Elements Tr-- I mean Avatar!" + cho "What?" + gen "*Err*... Yeah, whatever you said." + + "\"Wait, right now?\"": + + gen "Wait, now?" ("angry", xpos="far_left", ypos="base") + cho "Isn't the coach supposed to make sure their pupil keeps up with their training?" + gen "*Hmm*... I suppose another examination of your physique would be in order." ("base", xpos="far_left", ypos="base") + + call gen_chibi("stand", 225, "base") + with d3 + call gen_walk(path=[(230, 470), (410, 470), (430, "base")]) + + # Genie walks to cho + + gen "So, how about we start with examining your chest, and then move on to--" ("grin", xpos="far_left", ypos="base") + cho "Actually, I was thinking of showing you how I take care of my favourite lumber." + gen "{i}Your favourite lumber?{/i}" ("base", xpos="far_left", ypos="base") + cho "Yes, is it that surprising?" + gen "(Last I checked she didn't have any lumber down there, we have even had sex!)" ("base", xpos="far_left", ypos="base") + gen "(Have my dick gotten so worn down that I can't tell the difference between a pussy and an ass?)" ("base", xpos="far_left", ypos="base") + gen "(Or maybe she's a were-futa?!)" ("angry", xpos="far_left", ypos="base") + gen "(Nah... She would show symptoms much earlier.)" ("angry", xpos="far_left", ypos="base") + gen "(Perhaps she has been under some sort of body concealment charm this entire time?)" + gen "(No... That'd be ridiculous...{w=0.5} Although--)" ("base", xpos="far_left", ypos="base") + cho "Earth to [cho_genie_name]! Are you listening?" + gen "*Huh*?" + cho "I'd like to show off my skills as a beater." #beater is used deliberately instead of beating + gen "(Quidditch... Of course that's what she meant...)" ("base", xpos="far_left", ypos="base") + cho "Why are you looking at me like that?" + gen "Oh, I was just--{w=0.2} Well, I just thought you--" ("base", xpos="far_left", ypos="base") + cho "Is it because I'm a girl?!" + gen "What?!" ("angry", xpos="far_left", ypos="base") + cho "You think I can't do it because I'm a girl?!" + gen "W--What, how are you implying--" ("angry", xpos="far_left", ypos="base") + cho "Just because boys have it easier, it doesn't mean a girl like me can't do it!" + gen "I wasn't saying--{w=0.2} I mean, can you even--" ("angry", xpos="far_left", ypos="base") + cho "Of course I can, I have everything I need right here!" + gen "Y-You do?" ("base", xpos="far_left", ypos="base") + cho "Of course!" + cho "Just close your eyes for a moment, and I'll get to it." + gen "Why would I need to--" ("base", xpos="far_left", ypos="base") + cho "Close them!" + gen "(I hope I don't regret this...)" ("angry", xpos="far_left", ypos="base") + + #Fade to black + #rustle sound + + show screen blkfade + with d5 + + gen "What are you doing?" + cho "One moment [cho_genie_name], I'm just having trouble trying to pull it out..." + gen "*gulp*" + + #rustle sound + + gen "[cho_name], is that...?" + cho "One more second..." + cho "Now, if I could just--" + + #cloth sound + + cho "There we go!" + cho "You can open your eyes now." + + show image Placeholder("bg girl") as cg zorder 15 + + hide screen blkfade + with d5 + + + + #Fade to CG, Cho has arm to her side, normal shirt (ingame shader for night variant) + + #Cho looks down at genie's soft cock + + gen "Whoa! You were talking about my trousers!" ("grin", xpos="far_left", ypos="head") + + #Cho looks up and smiles + + gen "But, I thought you said you wanted to show off your skills--" ("base", xpos="far_left", ypos="head") + gen "Okay, I think I just caught up to what we're doing here..." ("base", xpos="far_left", ypos="head") + cho "I don't know what you're talking about, [cho_genie_name]... This is just yet another normal training session with one of your trainees." + gen "(Sounds like something I would say.)" ("base", xpos="far_left", ypos="head") + gen "I must've rubbed off on you in more ways than one." ("grin", xpos="far_left", ypos="head") + cho "What can I say, I'm very impressionable..." + cho "Speaking off rubbing... Would you like a demonstration of how I enchant my equipment?" + gen "A few minutes ago, I would be hesitant, but now? Sure!" ("grin", xpos="far_left", ypos="head") + cho "Although..." + cho "It looks like the equipment isn't quite ready yet." + gen "The--{w=0.2} (Floppy cock)!!" ("angry", xpos="far_left", ypos="head") + gen "(She got me all stressed out for a moment, but I cannot show weakness!)" + + menu: + "\"It's cold in here!\"": + gen "And I wasn't ready!" ("angry", xpos="far_left", ypos="head") + + "\"I wasn't ready!\"": + gen "And it's cold in here!" ("angry", xpos="far_left", ypos="head") + + cho "No big deal, [cho_genie_name]... I learned how to deal with this sort of thing during one of my lessons." + gen "(During her lessons...?)" + cho "{size=+5}Up!{/size}" + cho "Hold on, that's for brooms, not for--" + + #Genie gets a boner + + cho "Oh, it worked!" + cho "I mean, of course it worked!" + cho "Well then... Let's start with the enchanting process..." + + #Cho takes genie's cock in her hand + #Cho turn head down towards dick + #Spit trailing from mouth towards dick + #Spit on dick + #Cho hand on dick, jacking it. + #Shiny dick (spit) + + gen "That's the stuff, [cho_name]!" ("open", xpos="far_left", ypos="base") + cho "Don't worry, [cho_genie_name], this is just one of the steps I learned about enchanting." + gen "Hold on, you're actually enchanting my cock? I didn't know you could do that!" ("grin", xpos="far_left", ypos="base") + cho "Your cock?" + cho "I'm merely creating a magical connection between myself and this magnificent piece of wood..." + gen "And the spit helps with that?" ("base", xpos="far_left", ypos="base") + cho "Of course! You don't want friction--" + cho "*Ahem*... I mean, you need the element of water to cast a successful enchantment!" + gen "You're not trying to turn my penis into a water geyser, are you?" ("base", xpos="far_left", ypos="base") + cho "*Sigh*" + gen "Alright, I'll listen... What's this magical spit rubbing called again?" ("base", xpos="far_left", ypos="base") + cho "Imbuing." + gen "Fascinating." ("base", xpos="far_left", ypos="base") + cho "I'm basically channelling my magic into the element to create a connection between myself and this piece of wood." + gen "Magic spit, huh." ("base", xpos="far_left", ypos="base") + cho "Once the connection is established, it can then be strengthened and enforced in various ways, through stimulation." + gen "You're starting to sound like Hermione." ("base", xpos="far_left", ypos="base") + cho "Of course, the type of stimulation depends on what the magic user has the strongest affinity for." + gen "Right?" ("base", xpos="far_left", ypos="base") + cho "So, I usually rub the surface..." + cho "Because that's the type of stimulation I enjoy the most..." + gen "Nice." ("base", xpos="far_left", ypos="base") + gen "Although, I still don't get what the fuck you're on about--" ("base", xpos="far_left", ypos="base") + + #Cho stops jacking + #Cho turn head down towards dick + #Spit trailing from mouth towards dick + + #Cho resumes jacking slow + + gen "Ah!" ("angry", xpos="far_left", ypos="base") + cho "You were saying?" + gen "Never mind! I totally get it now!" ("grin", xpos="far_left", ypos="base") + cho "Good! Then we can proceed to the next step." + + #jerking medium + + gen "Damn, [cho_name]! Since when did you get so good at giving handjobs?" ("grin", xpos="far_left", ypos="base") + cho "I'm not sure what you mean by a handjob, [cho_genie_name]." + cho "But what I can tell you is, to establish a strong connection, an enchanter must always use their full potential." + gen "That Hooch lady's sure taught you a lot!" ("grin", xpos="far_left", ypos="base") + cho "*giggles*" + cho "Practice makes perfect... It's what she taught me." + cho "I've practised enchanting on my own equipment a countless times by now." + cho "My snitch absolutely glows with magic once I'm finished with it." + gen "I bet..." ("grin", xpos="far_left", ypos="base") + cho "Although I have to do it in secret, so I end up picking a time and place where I won't be bothered, like the changing rooms after practice." + gen "Clever... *Nghh* girl." ("base", xpos="far_left", ypos="base") + gen "So, is experiencing the real deal any different from your practice?" ("base", xpos="far_left", ypos="base") + cho "It's Somewhat similar, but..." + cho "You know what, Why don't I tell you how I usually do it, and we could compare?" + gen "Sounds like a plan!" ("grin", xpos="far_left", ypos="base") + cho "Well..." + + # This section would either show the CG of Cho masturbating in front of lockers inside a small bubble, to go along with her jerking genie off, or swap to that CG temporarily. + + #Cho puts fingers in mouth (masturbate) + #Cho stops jacking (genie) + #Cho turn head down towards dick (genie) + #Spit trailing from mouth towards dick (genie) + + cho "First, I start by covering the surface with a good coat of spit-- I mean the magical conductor..." + gen "Magical conductor, right." + + #Cho puts hand on clit (masturbate) + #Cho normal head pose (genie) + + cho "I then slowly begin fondling it gently with my fingers." + + #Cho starts jerking (genie) + #Cho starts rubbing clit (masturbate) + + cho "Rubbing it,{w=0.3} up and down,{w=0.3} up and down..." + cho "Once I've spread the coating evenly, then I begin channelling my magic into it." + + #jerking medium (genie) + #rubbing medium (masturbate) + + gen "*Ngh*... You're--{w=0.2} You're able to channel your own magic into your--" ("grin", xpos="far_left", ypos="base") + cho "Of course, any able-bodied witch should be able to do that." + gen "I have so many questions, but... Please, continue..." ("grin", xpos="far_left", ypos="base") + cho "And I keep the flow at a steady pace, until I start feeling tingly." + cho "That's when I increase the speed-- I mean flow..." + + #jerking fast (genie) + #rubbing fast (masturbate) + + gen "*Ngh*!!!" ("angry", xpos="far_left", ypos="base") + cho "I pour every ounce of magic I've got into the process, until it's almost bursting with magic!" + gen "*Aargh*!" ("angry", xpos="far_left", ypos="base") + + #Cho stops jerking (genie) + #Cho stops masturbating (masturbate) + + cho "Then I stop, leaving it pulsing, and filled to the brim with magical energy." + + #Masturbate view removed + + gen "*Ah*...{w=0.4} Why did you?!" ("angry", xpos="far_left", ypos="base") + cho "Even though it might be tempting, one shouldn't overdo it, or they might have an accidental discharge." + + gen "*Mhm*...{w=0.2} Yes, who would want that to--{w=0.2} *Ngh*...{w=0.4} To happen..." ("open", xpos="far_left", ypos="base") + + cho "Of course, sometimes you can't help it... I've left quite the mess inside the changing room a couple of times." + gen "Then why leave me hanging now, maybe I wanted to experience it myself..." ("open", xpos="far_left", ypos="base") + cho "Huh? Oh, I'm sorry [cho_genie_name]... I got a bit carried away..." + cho "I'm sorry, [cho_genie_name], I don't think I can keep this up..." + gen "W--{w=0.2} What? No, you're doing a fantastic job keeping it up!" ("angry", xpos="far_left", ypos="base") + cho "I mean this role-playing thing." + gen "(Role-playing? Is that what we're doing?)" ("base", xpos="far_left", ypos="base") + cho "There is... Something I need to talk to you about..." + gen "Now?! What about the--" ("base", xpos="far_left", ypos="base") + cho "..." + gen "*Ahem*... Of course, there's no better time for that than now, I suppose..." ("base", xpos="far_left", ypos="base") + gen "(But why does it always have to be one of those times!)" ("base", xpos="far_left", ypos="base") + cho "I thought I could just pretend it never happened, and that I could trick myself into thinking I'm just doing this to get better at Quidditch." + cho "But I can't!" + gen "..." ("angry", xpos="far_left", ypos="base") + cho "I won the cup already!" + cho "So I can't really fool myself that this is about Quidditch, can I?" + gen "*Err*..." ("base", xpos="far_left", ypos="base") + gen "We could pretend that it's to help you with Quidditch still, if it makes you feel better." ("base", xpos="far_left", ypos="base") + gen "Training your body to help you reach for the cock-- I mean the snitch and all that." ("base", xpos="far_left", ypos="base") + cho "..." + gen "Or we could compare wind resistance whenever you fly naked versus clothed." ("base", xpos="far_left", ypos="base") + cho "..." + gen "Still not convinced? Hmm." ("base", xpos="far_left", ypos="base") + gen "How about some sexual-- I mean, completely normal yoga!" ("base", xpos="far_left", ypos="base") + cho "It's okay, [cho_genie_name]..." #looks up at genie + cho "While I'm sure there are still a great number of things you could teach me that I could apply at the pitch--" + cho "--It's clear that this is not about Quidditch any more, I just need to get to terms with it." + gen "Why stick with one hobby when you can have many, that's what I always say!" ("grin", xpos="far_left", ypos="base") + gen "Well, if you're asking me to broaden your horizons, past holding a piece of wood in-between your legs, my answer is--" ("base", xpos="far_left", ypos="base") + cho "Wait!" + gen "--Yes?" ("base", xpos="far_left", ypos="base") + cho "There's one more thing..." + cho "I think it would be best that we be fully honest with each other from now on." + gen "Oh... *Err*..." ("base", xpos="far_left", ypos="base") + cho "You had me do all those naughty things..." + gen "..." ("base", xpos="far_left", ypos="base") + cho "Well, it took me a while, but I finally figured it out..." + gen "You got me! I did it all, just for a chance to get my dick squeezed between your muscly thighs!" ("grin", xpos="far_left", ypos="base") + cho "My--{w=0.4}{nw}" + + #Cho removes hand off genie's dick, putting it to her side + + cho "My--{fast} My Thighs?" + gen "Yes?" ("base", xpos="far_left", ypos="base") + cho "You know, you don't need to lie to me, [cho_genie_name]." + cho "I understand now that the only reason why you had me do all those things, was to help me raise my confidence, despite my recklessness." # Important note + gen "*Huh*?" + cho "I mean, the deal was that I'd sell you favours as a way to repay you for your coaching." + cho "But if it was sex that you were after, then surely you would've wanted us to go all the way before the finals." + cho "But you didn't push me even once to cross that line... You patiently waited for me to be ready, to do what was necessary to win the cup." + gen "(Probably a bad time to tell her that I just kind of forgot...)" + cho "And that's why...{w=0.4} Well, I felt as if I have to--" + cho "You have spent so much of your time guiding and encouraging me..." + cho "And you even gave me a luck potion, just so I could finally achieve my dreams!" + gen "(Did I do that...?)" + cho "But then I threw it all away, my urges for sexual gratification became too strong." + cho "I ended up getting carried away..." + gen "(Been there, done that...)" ("base", xpos="far_left", ypos="base") + cho "I was sort of running on a high after winning the cup, thinking I could do anything I wanted--" + gen "No need to apologise [cho_name], you drank that luck potion after all, if there were any consequences I'm sure they would have happened by now." ("base", xpos="far_left", ypos="base") + cho "*Ehm*..." + cho "It's just... Well, I thought I should... Since we ended up having sex..." + gen "Oh... I understand what you're trying to say..." ("grin", xpos="far_left", ypos="base") + cho "You do?" + gen "Of course, and there's no need to worry, I've coached my swimmers to not accidentally get anyone pregnant." ("grin", xpos="far_left", ypos="base") + cho "That's--{w=0.2} I wasn't even considering that..." + gen "You weren't?!" ("base", xpos="far_left", ypos="base") + cho "Not really..." + cho "(But I'll have to keep it in mind for the future...)" + cho "(If he would even give me another chance after this...)" + gen "(Maybe shouldn't have said anything...)" + gen "So, what is bothering you then?" ("base", xpos="far_left", ypos="base") + cho "Well... The potion..." + gen "Yeah?" ("base", xpos="far_left", ypos="base") + cho "I never drank any of it." + gen "I see..." ("base", xpos="far_left", ypos="base") + gen "{size=+4}Wait what?!{/size}" ("angry", xpos="far_left", ypos="base") #Big text + + #Cue flashback effect with woosh sound + #Should we use the replay function that we do for mirror stories for this section? Would we change the day counter at all/set it to 0? + #Editors note. Sections taken from original writing should not be adjusted, for obvious reasons. + + #Office evening, (Gryffindor practice return event) + + #TODO add cho chibi/doll position, night time etc + + $ renpy.call_replay("cc_gt_return.introspection") + + show screen blkfade + with None + hide screen blkfade + with d5 + + #New scene, Flashback Shifts to CG with liquid luck potion bottle on bed + # TODO: Add CG + + show image Placeholder("bg") as cg + + cho "(What's this?)" + cho "(A bottle of...{w=0.3} liquid luck?!)" + cho "(Did coach leave this for me?)" + + #Bottle is removed from covers. + + cho "(That must be why he wasn't so concerned about my equipment...)" + cho "(Unless it's a placebo...)" + + $ renpy.sound.play("sounds/bottle.ogg") + pause .5 + $ renpy.sound.play("sounds/sniff.ogg") + cho "(*Sniff*)" + + cho "(No, that's liquid luck alright, no doubts about it...)" + cho "(Of course, he would know that you can't trick a Ravenclaw after all.)" + cho "(But to think he'd give me this... Just so I could win the finals...)" + cho "(...)" + cho "(I'll just put it in my pocket for now...)" + + #New scene, Flashback shifts to daytime. Cho is at the quidditch pitch entrance. (early morning shader?) + + call room("quidditch_pitch") + call cho_chibi("stand", "mid", "base") + play bg_sounds "sounds/outskirts.ogg" fadein 2 + with fade + + cho "(Hmm... He's not here yet...)" + cho "(I guess I'll sit down and wait for him.)" + #cloth sound + + #Fade to New CG potion held up into sky + show image Placeholder("bg") as cg zorder 15 + with fade + + cho "(Liquid luck...)." + cho "(I never thought I'd hold one of those in my hand...)" + cho "([cho_genie_name] must really want me to win if he's willing to risk his career by giving this...)" + cho "(But why did we go through all those lewd favours, if he was just going to give me a luck potion anyway...)" + cho "(Did he agree to train me because of--)" + cho "(... No, he wouldn't, would he?)" + cho "(The training is over if I win, if he just wanted me for my body, he wouldn't try to help me win.)" + cho "(He must want to help me succeed, like he said from the start...)" + cho "(Help me succeed... No matter-- *Yawn*... The cost.)" + + show image Placeholder("bg") as cg zorder 15 at Transform(blur=5) + with d9 + + # Show snape's head + + show image Placeholder("bg") as cg zorder 15 + with d9 + + #CG goes blurry for a moment and back again as Cho blinks, as the CG comes back, Snape's head appear inside the potion. + + sna "Today's lesson will be about Felix Felicis." + sly1 "Who's that?" + sna "It's a potion, you idiot! A luck potion more specifically." + sna "This potion provides the drinker with a tremendous amount of luck, turning an ordinary day into an extraordinary one." + sna "When under its effects, it will make the one who drinks it succeed in whatever activity they partake in, no matter what it is." + sna "However, it is highly toxic in large quantities, therefore can only be consumed a handful of times during one's lifetime." + sly2 "Have you ever tried it yourself, sir?" + sna "Certainly!" + sna "I brewed and drank my very first one when I was about your age." + sna "Even though I knew about how it worked, I still couldn't believe that consuming it was enough to solve all my problems." + sly1 "What problems did it solve, sir?" + sna "Why, losing my virginity of course!" + + show image Placeholder("bg") as cg zorder 15 at Transform(blur=5) + with d9 + + # hide snape's head + + show image Placeholder("bg") as cg zorder 15 + with d9 + + cho "Gross!!" + cho "(What am I thinking...)" + cho "(I can't achieve my goals like this!)" + + show screen blkfade + with d5 + + #Fade to black + $ renpy.sound.play("sounds/bottle.ogg") + pause .6 + $ renpy.sound.play("sounds/spill.ogg") + + pause .6 + #Pouring liquid sound + + cho "(It's done... There's no going back now.)" + cho "(Hold on... Didn't Snape say luck potion is expensive...)" + cho "(Blimey! I could have sold it got a new broom... )" + cho "(Too late for that now. I better find the best alternative broom I can!)" + + $ renpy.call_replay("cho_quid_E12.introspection") + + show screen blkfade + with None + hide screen blkfade + with d5 + + $ renpy.call_replay("gryffindor_match.introspection1") + + show screen blkfade + with None + hide screen blkfade + with d5 + + $ renpy.call_replay("gryffindor_match.introspection2") + + show screen blkfade + with None + hide screen blkfade + with d5 + + $ renpy.call_replay("gryffindor_match.introspection3") + + show screen blkfade + with None + hide screen blkfade + with d5 + + $ renpy.call_replay("gryffindor_match_return.introspection") + + return diff --git a/game/scripts/characters/cho/events/quidditch/slytherin_match.rpy b/game/scripts/characters/cho/events/quidditch/slytherin_match.rpy index aa99c58e..cc214546 100644 --- a/game/scripts/characters/cho/events/quidditch/slytherin_match.rpy +++ b/game/scripts/characters/cho/events/quidditch/slytherin_match.rpy @@ -1456,7 +1456,7 @@ label slytherin_match_return: $ tonks.equip(ton_outfit_default) $ astoria.equip(ast_outfit_default) - $ tonks.strip("all") + $ tonks.strip("clothes") hide screen blkfade with d9 diff --git a/game/scripts/characters/cho/events/requests/manipulate_boys.rpy b/game/scripts/characters/cho/events/requests/manipulate_boys.rpy index f591ad12..ae73206a 100644 --- a/game/scripts/characters/cho/events/requests/manipulate_boys.rpy +++ b/game/scripts/characters/cho/events/requests/manipulate_boys.rpy @@ -723,7 +723,7 @@ label cc_pr_manipulate_boys_T3_twins: # Setup $ cho_outfit_last.save() # Save player outfit - $ cho.strip("all") + $ cho.strip("clothes") $ cho.set_body_hue(200) # Cho enters. @@ -1427,7 +1427,7 @@ label cc_pr_manipulate_boys_twins_branch: show screen blkfade with fade $ cho.equip(cho_outfit_smurfette) - $ cho.equip(cho_hair_ponytail1) # Override hair + $ cho.equip(cho_hair_base) # Override hair $ renpy.sound.play("sounds/cloth_sound3.ogg") cho "" ("upset", "base", "angry", "down", cheeks="blush") pause .8 diff --git a/game/scripts/characters/cho/favors.rpy b/game/scripts/characters/cho/favors.rpy index 8f1c1542..55f42c6a 100644 --- a/game/scripts/characters/cho/favors.rpy +++ b/game/scripts/characters/cho/favors.rpy @@ -26,7 +26,7 @@ default cc_pf_strip = event_class(title = "Inspect her body!", start_label = "cc [ ["cc_pf_strip_T2_intro_E1"], ["cc_pf_strip_T2_intro_E2"], - ["cc_pf_strip_T2_intro_E3"], ["cc_pf_strip_T2_E3"] + ["cc_pf_strip_T2_intro_E3"], ["cc_pf_strip_T2_E3_repeat"] ], [ ["cc_pf_strip_T3_intro_E1"], diff --git a/game/scripts/characters/cho/summon.rpy b/game/scripts/characters/cho/summon.rpy index 0060cc0f..30b66e0a 100644 --- a/game/scripts/characters/cho/summon.rpy +++ b/game/scripts/characters/cho/summon.rpy @@ -24,6 +24,9 @@ label summon_cho: # Gryffindor Quidditch Intro. elif cho_tier == 3 and not cho_quid.E10_complete: jump cho_quid_E10 + # Quidditch Outro + elif cho_tier == 4 and not cho_quid.E14_complete: + jump cho_quid_E14 # Clothes Events call cho_summon_setup @@ -143,9 +146,9 @@ label summon_cho: stop music fadeout 3.0 if cho_mood == 0: - cho "Goodbye, [cho_genie_name]." ("base") + cho "Goodbye, [cho_genie_name]." ("base", "base", "base", "mid") else: - cho "Goodbye, [cho_genie_name]." ("annoyed") + cho "Goodbye, [cho_genie_name]." ("annoyed", "base", "base", "L") call play_sound("door") diff --git a/game/scripts/characters/cho/vars.rpy b/game/scripts/characters/cho/vars.rpy index 0f9f4bb8..b26683bb 100644 --- a/game/scripts/characters/cho/vars.rpy +++ b/game/scripts/characters/cho/vars.rpy @@ -25,6 +25,7 @@ default doppler_done = False # For Strip event with Tonks. default succubus_done = False # For Strip event with Tonks. default cho_received_thestral = False default cho_hermione_affection = None # Dynamic string. Valid choices: cho, hermione, neither. +default cho_blowjob_done = False # Intro default jerked_off_during_cho_intro = False diff --git a/game/scripts/characters/cho/wardrobe.rpy b/game/scripts/characters/cho/wardrobe.rpy index ebf2603b..9b46c471 100644 --- a/game/scripts/characters/cho/wardrobe.rpy +++ b/game/scripts/characters/cho/wardrobe.rpy @@ -2,289 +2,301 @@ ## Character ## ############### -default cho = Doll(name="cho", - clothes={"headgear": [None, 15, True], - "hair": [None, 4, True], - "glasses": [None, 12, True], - "earrings": [None, 14, True], - "neckwear": [None, 11, True], - "robe": [None, 28, True], - "gloves": [None, 21, True], - "top": [None, 15, True], - "bra": [None, 9, True], - "bottom": [None, 8, True], - "garterbelt": [None, 7, True], - "panties": [None, 6, True], - "stockings": [None, 5, True], - "buttplug": [None, -1, True], - "pubes": [None, 3, True], - "footwear": [None, 6, True], - "tattoo0": [None, 1, True], - "tattoo1": [None, 1, True], - "tattoo2": [None, 1, True], - "tattoo3": [None, 1, True], - "tattoo4": [None, 1, True], - "piercing0": [None, 2, True], - "piercing1": [None, 2, True], - "piercing2": [None, 2, True], - "piercing3": [None, 2, True], - "piercing4": [None, 2, True], - "accessory0": [None, 12, True], - "accessory1": [None, 12, True], - "accessory2": [None, 12, True], - "accessory3": [None, 12, True], - "accessory4": [None, 12, True], - "makeup0": [None, 3, True], - "makeup1": [None, 3, True], - "makeup2": [None, 3, True], - "makeup3": [None, 3, True], - "makeup4": [None, 3, True]}, - face={"tears": [None, 12, True], - "cheeks": [None, 7, True], - "eyebrows": ["base", 11, True], - "eyes": ["base", 8, True], - "pupils": ["mid", 9, True], - "mouth": ["base", 13, True]}, - body={"armleft": ["down", 3], - "armright":["down", 1], - "base": ["front", 0], - "breasts": ["normal", 2]}) +default cho = Doll(name="cho") -################ -## Schoolgirl ## -################ +default cho_frame_default = DollBodypart("cho", ("hidden", "frame"), "frame", "default") +default cho_body_default = DollOutfit([cho_frame_default], hidden=True) -default cho_footwear_shoes = DollClothDummy("cho", type="footwear") -default cho_hair_ponytail1 = DollCloth("cho", ("head", "hair"), "hair", "ponytail", [[52, 59, 80, 255], [70, 90, 147, 255]], unlocked=True) -default cho_top_school1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_1", [[183, 183, 184, 255], [109, 105, 121, 255], [216, 163, 10, 255], [89, 116, 194, 255]], unlocked=True) -default cho_top_school2 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_2", [[183, 183, 184, 255], [109, 105, 121, 255], [216, 163, 10, 255], [89, 116, 194, 255]], level=4, unlocked=True) -default cho_top_school3 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_3", [[183, 183, 184, 255], [216, 163, 10, 255], [89, 116, 194, 255]], level=8, unlocked=True) -default cho_top_school4 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_4", [[183, 183, 184, 255], [216, 163, 10, 255], [89, 116, 194, 255]], level=8, unlocked=True) -default cho_top_school5 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_5", [[183, 183, 184, 255], [216, 163, 10, 255], [89, 116, 194, 255]], level=12, unlocked=True) -default cho_top_school6 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_6", [[109, 105, 121, 255], [216, 163, 10, 255], [89, 116, 194, 255]], level=12, unlocked=True) -default cho_bottom_school1 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_1", [[103, 90, 108, 255], [232, 177, 13, 255]], armfix=True, unlocked=True) -default cho_bottom_school2 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_2", [[103, 90, 108, 255], [232, 177, 13, 255]], level=4, armfix=True, unlocked=True) -default cho_bottom_school3 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_3", [[103, 90, 108, 255], [232, 177, 13, 255]], level=8, armfix=True, unlocked=True) -default cho_bottom_school4 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_4", [[103, 90, 108, 255], [232, 177, 13, 255]], level=12, armfix=True, unlocked=True) -default cho_bra_basic1 = DollCloth("cho", ("upper undergarment", "bras"), "bra", "basic_bra_1", [[230, 230, 231, 255], [89, 116, 194, 255]], unlocked=True) -default cho_panties_basic1 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "basic_panties_1", [[230, 230, 231, 255], [89, 116, 194, 255]], unlocked=True) -default cho_stockings_house = DollCloth("cho", ("legwear", "socks"), "stockings", "house", [[216, 163, 10, 255], [89, 116, 194, 255]], unlocked=True) -default cho_robe_school_1 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_school_1", color=[[96, 96, 96, 255], [206, 206, 209, 255], [89, 116, 194, 255]], level=0, unlocked=True) -default cho_robe_school_2 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_school_2", color=[[96, 96, 96, 255], [206, 206, 209, 255], [89, 116, 194, 255]], level=4, unlocked=True) -default cho_robe_school_3 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_school_3", color=[[96, 96, 96, 255], [206, 206, 209, 255], [89, 116, 194, 255]], level=8, unlocked=True) -#default cho_neckwear_tie1 = DollCloth("cho", ("head", "neckwear"), "neckwear", "tie_1", [[216, 163, 10, 255], [89, 116, 194, 255]]) +########## +## Hair ## +########## -default cho_outfit_last = DollOutfit([cho_hair_ponytail1], hidden=True) -default cho_outfit_default = DollOutfit([cho_hair_ponytail1, cho_top_school1, cho_bottom_school1, cho_bra_basic1, cho_panties_basic1, cho_stockings_house, cho_footwear_shoes], unlocked=True) +default cho_hair_base = DollCloth("cho", ("head", "hair"), "hair", "ponytail", ["#343b50ff", "#465a93ff"], unlocked=True) + +####################### +## Schoolgirl Outfit ## +####################### + +default cho_top_school1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_1", ["#b7b7b8ff", "#6d6979ff", "#d8a30aff", "#5974c2ff"], unlocked=True) +default cho_top_school2 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_2", ["#b7b7b8ff", "#6d6979ff", "#d8a30aff", "#5974c2ff"], level=4, unlocked=True) +default cho_top_school3 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_3", ["#b7b7b8ff", "#d8a30aff", "#5974c2ff"], level=8, unlocked=True) +default cho_top_school4 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_4", ["#b7b7b8ff", "#d8a30aff", "#5974c2ff"], level=8, unlocked=True) +default cho_top_school5 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_5", ["#b7b7b8ff", "#d8a30aff", "#5974c2ff"], level=12, unlocked=True) +default cho_top_school6 = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_6", ["#6d6979ff", "#d8a30aff", "#5974c2ff"], level=12, unlocked=True) + +default cho_bottom_school1 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_1", ["#675a6cff", "#e8b10dff"], unlocked=True) +default cho_bottom_school2 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_2", ["#675a6cff", "#e8b10dff"], level=4, unlocked=True) +default cho_bottom_school3 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_3", ["#675a6cff", "#e8b10dff"], level=8, unlocked=True) +default cho_bottom_school4 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_4", ["#675a6cff", "#e8b10dff"], level=12, unlocked=True) + +default cho_bra_basic1 = DollCloth("cho", ("upper undergarment", "bras"), "bra", "basic_bra_1", ["#e6e6e7ff", "#5974c2ff"], unlocked=True) +default cho_panties_basic1 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "basic_panties_1", ["#e6e6e7ff", "#5974c2ff"], unlocked=True) + +default cho_stockings_house = DollCloth("cho", ("legwear", "socks"), "stockings", "house", ["#d8a30aff", "#5974c2ff"], unlocked=True) + +default cho_robe_school_1 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_school_1", color=["#606060ff", "#ceced1ff", "#5974c2ff"], level=0, unlocked=True) +default cho_robe_school_2 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_school_2", color=["#606060ff", "#ceced1ff", "#5974c2ff"], level=4, unlocked=True) +default cho_robe_school_3 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_school_3", color=["#606060ff", "#ceced1ff", "#5974c2ff"], level=8, unlocked=True) + +default cho_outfit_last = DollOutfit([cho_hair_base], hidden=True) +default cho_outfit_default = DollOutfit([cho_hair_base, cho_top_school1, cho_bottom_school1, cho_bra_basic1, cho_panties_basic1, cho_stockings_house], unlocked=True) ######################## ## Cheerleader Outfit ## ######################## -#default cho_hair_pigtails = DollCloth("cho", ("head", "hair"), "hair", "pigtails", [[52, 59, 80, 255], [70, 90, 147, 255], [242, 162, 73, 255]], level=8) -default cho_earring_snitch = DollCloth("cho", ("head", "earrings"), "earrings", "snitch", [[220, 220, 221, 255], [213, 161, 13, 255]]) -default cho_stockings_quid1 = DollCloth("cho", ("legwear", "socks"), "stockings", "quid1", [[64, 84, 141, 255], [213, 161, 13, 255]], level=10) -default cho_panties_sport2 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "sport_panties_2", [[156, 204, 249, 255]], level=4) -default cho_bra_sports1 = DollCloth("cho", ("upper undergarment", "bras"), "bra", "sport_bra_1", [[156, 204, 249, 255]], unlocked=True) -default cho_top_quid1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_quid_1", [[64, 84, 141, 255], [213, 161, 13, 255]], level=10) -default cho_bottom_quid1 = DollCloth("cho", ("lower body", "skirts"), "bottom", "quid_skirt_1", [[64, 84, 141, 255], [213, 161, 13, 255]], level=10, armfix=True) -default cho_makeup0_blush = DollCloth("cho", ("makeup", "blush"), "makeup0", "blush", [[238, 113, 196, 255]], level=2) +default cho_earring_snitch = DollCloth("cho", ("head", "earrings"), "earrings", "snitch", ["#dcdcddff", "#d5a10dff"]) +default cho_top_quid1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_quid_1", ["#40548dff", "#d5a10dff"], level=10) +default cho_bottom_quid1 = DollCloth("cho", ("lower body", "skirts"), "bottom", "quid_skirt_1", ["#40548dff", "#d5a10dff"], level=10) +default cho_stockings_quid1 = DollCloth("cho", ("legwear", "socks"), "stockings", "quid1", ["#40548dff", "#d5a10dff"], level=10) +default cho_panties_sport2 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "sport_panties_2", ["#9cccf9ff"], level=4) +default cho_bra_sports1 = DollCloth("cho", ("upper undergarment", "bras"), "bra", "sport_bra_1", ["#9cccf9ff"], unlocked=True) +default cho_makeup_blush = DollCloth("cho", ("makeup", "blush"), "makeup", "blush", ["#ee71c4ff"], level=2) -default cho_outfit_cheerleader = DollOutfit([cho_hair_ponytail1, cho_earring_snitch, cho_stockings_quid1, cho_panties_sport2, cho_bra_sports1, cho_bottom_quid1, cho_top_quid1, cho_makeup0_blush], price=500, name="Ravenclaw Cheerleader Uniform", desc="Ravenclaw! Ravenclaw!") +default cho_outfit_cheerleader = DollOutfit([cho_hair_base, cho_earring_snitch, cho_stockings_quid1, cho_panties_sport2, cho_bra_sports1, cho_bottom_quid1, cho_top_quid1, cho_makeup_blush], price=500, name="Ravenclaw Cheerleader Uniform", desc="Ravenclaw! Ravenclaw!") ################## ## Misty Outfit ## ################## -default cho_top_shirt1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_shirt_1", [[255, 229, 126, 255]], level=14) -default cho_bottom_shorts3 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_3", [[47, 150, 136, 255], [175, 220, 191, 255], [247, 152, 38, 255]], level=10, armfix=True) -default cho_accessory3_suspenders = DollCloth("cho", ("misc", "accessory"), "accessory3", "suspenders", [[137, 22, 17, 255], [229, 140, 33, 255]], zorder=16) +default cho_top_shirt1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_shirt_1", ["#ffe57eff"], level=14) +default cho_bottom_shorts3 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_3", ["#2f9688ff", "#afdcbfff", "#f79826ff"], level=10) +default cho_accessory_suspenders = DollCloth("cho", ("misc", "accessory"), "accessory", "suspenders", ["#891611ff", "#e58c21ff"], zorder=213) -default cho_outfit_misty = DollOutfit([cho_hair_ponytail1, cho_accessory3_suspenders, cho_top_shirt1, cho_bottom_shorts3, cho_panties_sport2], price=500, name="Misty Costume", desc="For trainers that want to be the very best! To train them is your cause!") +default cho_outfit_misty = DollOutfit([cho_hair_base, cho_accessory_suspenders, cho_top_shirt1, cho_bottom_shorts3, cho_panties_sport2], price=500, name="Misty Costume", desc="For trainers that want to be the very best! To train them is your cause!") -################## -## Party Outfit ## -################## +##################### +## Clubslut Outfit ## +##################### -default cho_bottom_skirt2 = DollCloth("cho", ("lower body", "skirts"), "bottom", "skirt_short_2", [[93, 119, 173, 255]], level=16, armfix=True) -default cho_bra_bikini1 = DollCloth("cho", ("upper undergarment", "bikini bras"), "bra", "bikini_top_1", [[3, 237, 234, 255]], level=10) +default cho_bottom_skirt2 = DollCloth("cho", ("lower body", "skirts"), "bottom", "skirt_short_2", ["#5d77adff"], level=16) +default cho_bra_bikini1 = DollCloth("cho", ("upper undergarment", "bikini bras"), "bra", "bikini_top_1", ["#03edeaff"], level=10) -default cho_outfit_party = DollOutfit([cho_hair_ponytail1, cho_bottom_skirt2, cho_bra_bikini1], price=500, name="Clubslut Outfit", desc="Release your inner slut with this unique club outfit!") +default cho_outfit_party = DollOutfit([cho_hair_base, cho_bottom_skirt2, cho_bra_bikini1], price=500, name="Clubslut Outfit", desc="Release your inner slut with this unique club outfit!") ################### ## Sailor Outfit ## ################### -default cho_bottom_skirt1 = DollCloth("cho", ("lower body", "skirts"), "bottom", "skirt_short_1", [[89, 116, 194, 255]], level=18, armfix=True) -default cho_top_sailor1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_sailor_1", [[252, 252, 253, 255], [89, 116, 194, 255]], level=14) -default cho_stockings_sailor1 = DollCloth("cho", ("legwear", "stockings"), "stockings", "sailor", [[232, 232, 233, 255]], armfix=True) -default cho_panties_bikini2 = DollCloth("cho", ("lower undergarment", "bikini panties"), "panties", "bikini_bottom_2", [[213, 161, 13, 255]], level=18, armfix=True) +default cho_bottom_skirt1 = DollCloth("cho", ("lower body", "skirts"), "bottom", "skirt_short_1", ["#5974c2ff"], level=18) +default cho_top_sailor1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_sailor_1", ["#fcfcfdff", "#5974c2ff"], level=14) +default cho_stockings_sailor1 = DollCloth("cho", ("legwear", "stockings"), "stockings", "sailor", ["#e8e8e9ff"]) +default cho_panties_bikini2 = DollCloth("cho", ("lower undergarment", "bikini panties"), "panties", "bikini_bottom_2", ["#d5a10dff"], level=18) -default cho_outfit_sailor = DollOutfit([cho_hair_ponytail1, cho_top_sailor1, cho_bottom_skirt1, cho_stockings_sailor1, cho_panties_bikini2], price=500, name="Sailor Outfit", desc="A slutty sailor outfit, perfect for the average cannon swabber.") +default cho_outfit_sailor = DollOutfit([cho_hair_base, cho_top_sailor1, cho_bottom_skirt1, cho_stockings_sailor1, cho_panties_bikini2], price=500, name="Sailor Outfit", desc="A slutty sailor outfit, perfect for the average cannon swabber.") ############################ ## Japanese School Outfit ## ############################ -default cho_top_j_school1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_j_school_1", [[255, 248, 223, 255], [95, 110, 142, 255], [161, 161, 164, 255], [253, 254, 250, 255]], level=4, armfix=True) -default cho_bottom_j_skirt1 = DollCloth("cho", ("lower body", "skirts"), "bottom", "j_school_skirt_1", [[161, 161, 164, 255]], level=4, armfix=True) -default cho_stockings_j_kneehigh1 = DollCloth("cho", ("legwear", "socks"), "stockings", "kneehigh", [[253, 254, 250, 255]], level=0) +default cho_top_j_school1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_j_school_1", ["#fff8dfff", "#5f6e8eff", "#a1a1a4ff", "#fdfefaff"], level=4) +default cho_bottom_j_skirt1 = DollCloth("cho", ("lower body", "skirts"), "bottom", "j_school_skirt_1", ["#a1a1a4ff"], level=4) +default cho_stockings_j_kneehigh1 = DollCloth("cho", ("legwear", "socks"), "stockings", "kneehigh", ["#fdfefaff"], level=0) -default cho_outfit_j_school = DollOutfit([cho_hair_ponytail1, cho_top_j_school1, cho_bottom_j_skirt1, cho_stockings_j_kneehigh1, cho_panties_basic1, cho_bra_basic1], price=300, name="Japanese School Uniform", desc="A school girl uniform inspired by the land of culture.") +default cho_outfit_j_school = DollOutfit([cho_hair_base, cho_top_j_school1, cho_bottom_j_skirt1, cho_stockings_j_kneehigh1, cho_panties_basic1, cho_bra_basic1], price=300, name="Japanese School Uniform", desc="A school girl uniform inspired by the land of culture.") ################### ## Bikini Outfit ## ################### -default cho_bra_bikini2 = DollCloth("cho", ("upper undergarment", "bikini bras"), "bra", "bikini_top_2", [[89, 116, 194, 255]], level=14) #Red: [138, 22, 17, 255] -default cho_panties_bikini1 = DollCloth("cho", ("lower undergarment", "bikini panties"), "panties", "bikini_bottom_1", [[213, 161, 13, 255]], level=14, armfix=True) +default cho_bra_bikini2 = DollCloth("cho", ("upper undergarment", "bikini bras"), "bra", "bikini_top_2", ["#5974c2ff"], level=14) #Red: [138, 22, 17, 255] +default cho_panties_bikini1 = DollCloth("cho", ("lower undergarment", "bikini panties"), "panties", "bikini_bottom_1", ["#d5a10dff"], level=14) -default cho_outfit_bikini = DollOutfit([cho_hair_ponytail1, cho_bra_bikini2, cho_panties_bikini1], price=500, name="Micro Bikini Set", desc="The regular size bikinis are out of stock...") +default cho_outfit_bikini = DollOutfit([cho_hair_base, cho_bra_bikini2, cho_panties_bikini1], price=500, name="Micro Bikini Set", desc="The regular size bikinis are out of stock...") ########################## ## Lace Lingerie Outfit ## ########################## -default cho_neckwear_lace1 = DollCloth("cho", ("head", "neckwear"), "neckwear", "choker_lace_1", [[100, 100, 255, 255], [220, 220, 221, 255]]) -default cho_garterbelt_lace1 = DollCloth("cho", ("legwear", "garterbelts"), "garterbelt", "lace_garter_1", [[220, 220, 221, 255], [100, 100, 255, 255], [220, 220, 221, 255], [89, 116, 194, 255]], level=12) -default cho_stockings_lace1 = DollCloth("cho", ("legwear", "stockings"), "stockings", "lace_stockings_1", [[100, 100, 255, 255], [220, 220, 221, 255]], armfix=True, level=12) -default cho_bra_lace1 = DollCloth("cho", ("upper undergarment", "bras"), "bra", "lace_bra_1", [[100, 100, 255, 255], [220, 220, 221, 255], [89, 116, 194, 255]], level=14) -default cho_panties_lace1 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "lace_panties_1", [[100, 100, 255, 255], [220, 220, 221, 255], [89, 116, 194, 255]], level=12) -default cho_earring_feather = DollCloth("cho", ("head", "earrings"), "earrings", "feather", [[232, 232, 232, 255], [70, 90, 147, 255], [136, 91, 34, 255]]) +default cho_neckwear_lace1 = DollCloth("cho", ("head", "neckwear"), "neckwear", "choker_lace_1", ["#6464ffff", "#dcdcddff"]) +default cho_garterbelt_lace1 = DollCloth("cho", ("legwear", "garterbelts"), "garterbelt", "lace_garter_1", ["#dcdcddff", "#6464ffff", "#dcdcddff", "#5974c2ff"], level=12) +default cho_stockings_lace1 = DollCloth("cho", ("legwear", "stockings"), "stockings", "lace_stockings_1", ["#6464ffff", "#dcdcddff"], level=12) +default cho_bra_lace1 = DollCloth("cho", ("upper undergarment", "bras"), "bra", "lace_bra_1", ["#6464ffff", "#dcdcddff", "#5974c2ff"], level=14) +default cho_panties_lace1 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "lace_panties_1", ["#6464ffff", "#dcdcddff", "#5974c2ff"], level=12) +default cho_earring_feather = DollCloth("cho", ("head", "earrings"), "earrings", "feather", ["#e8e8e8ff", "#465a93ff", "#885b22ff"]) -default cho_outfit_lacelingerie = DollOutfit([cho_hair_ponytail1, cho_neckwear_lace1, cho_garterbelt_lace1, cho_panties_lace1, cho_bra_lace1, cho_stockings_lace1, cho_earring_feather], price=500, name="Lace Lingerie Set", desc="This lingerie set turns even the toughest tomboy into a cute and sexy princess!") +default cho_outfit_lacelingerie = DollOutfit([cho_hair_base, cho_neckwear_lace1, cho_garterbelt_lace1, cho_panties_lace1, cho_bra_lace1, cho_stockings_lace1, cho_earring_feather], price=500, name="Lace Lingerie Set", desc="This lingerie set turns even the toughest tomboy into a cute and sexy princess!") ################## ## Dress Outfit ## ################## -default cho_top_dress1 = DollCloth("cho", ("upper body", "dresses"), "top", "dress_1", [[231, 29, 41, 255], [242, 162, 73, 255]], armfix=True, level=12, blacklist=["bottom"]) +default cho_top_dress1 = DollCloth("cho", ("upper body", "dresses"), "top", "dress_1", ["#e71d29ff", "#f2a249ff"], level=12, blacklist=["bottom"]) -default cho_outfit_dress1 = DollOutfit([cho_hair_ponytail1, cho_top_dress1, cho_panties_basic1, cho_bra_basic1], price=500, name="Traditional Chinese Dress", desc="A traditional dress inspired by Chinese culture.") +default cho_outfit_dress1 = DollOutfit([cho_hair_base, cho_top_dress1, cho_panties_basic1, cho_bra_basic1], price=500, name="Traditional Chinese Dress", desc="A traditional dress inspired by Chinese culture.") #################### ## Trainee Outfit ## #################### -default cho_top_tank2 = DollCloth("cho", ("upper body", "shirts"), "top", "top_tanktop_2", [[252, 192, 213, 255], [253, 221, 232, 255]], level=10) -default cho_bottom_shorts1 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_1", [[230, 230, 231, 255]], level=8, armfix=True) -default cho_stockings_pantyhose = DollCloth("cho", ("legwear", "pantyhose"), "stockings", "pantyhose", [[190, 146, 129, 255]], armfix=True) -default cho_earring_basic = DollCloth("cho", ("head", "earrings"), "earrings", "basic", [[220, 220, 221, 255]]) +default cho_top_tank2 = DollCloth("cho", ("upper body", "shirts"), "top", "top_tanktop_2", ["#fcc0d5ff", "#fddde8ff"], level=10) +default cho_bottom_shorts1 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_1", ["#e6e6e7ff"], level=8) +default cho_stockings_pantyhose = DollCloth("cho", ("legwear", "pantyhose"), "stockings", "pantyhose", ["#be9281ff"]) +default cho_earring_basic = DollCloth("cho", ("head", "earrings"), "earrings", "basic", ["#dcdcddff"]) -default cho_outfit_trainee = DollOutfit([cho_hair_ponytail1, cho_bra_basic1, cho_panties_basic1, cho_bottom_shorts1, cho_top_tank2, cho_stockings_pantyhose, cho_earring_basic], price=500, name="Sporty Outfit", desc="Great for reducing fat.") +default cho_outfit_trainee = DollOutfit([cho_hair_base, cho_bra_basic1, cho_panties_basic1, cho_bottom_shorts1, cho_top_tank2, cho_stockings_pantyhose, cho_earring_basic], price=500, name="Sporty Outfit", desc="Great for reducing fat.") ###################### -## Space Jam Outfit ## +## Toonsquad Outfit ## ###################### -default cho_headgear_toon_band = DollCloth("cho", ("head", "headgear"), "headgear", "toon_band", [[43, 81, 151, 255]], level=4) -default cho_top_toon_shirt = DollCloth("cho", ("upper body", "shirts"), "top", "toon_shirt", [[255, 255, 255, 255]], level=4) -default cho_bottom_toon_shorts = DollCloth("cho", ("lower body", "shorts"), "bottom", "toon_shorts", [[43, 81, 151, 255], [255, 255, 255, 255]], level=4, armfix=True) -default cho_stockings_toon_socks = DollCloth("cho", ("legwear", "socks"), "stockings", "toon_socks", [[43, 81, 151, 255], [255, 255, 255, 255]], level=4) +default cho_headgear_toon_band = DollClothDynamic("cho", ("head", "headgear"), "headgear", "toon_band", ["#2b5197ff"], level=4, tracking="?hair") +default cho_top_toon_shirt = DollCloth("cho", ("upper body", "shirts"), "top", "toon_shirt", ["#ffffffff"], level=4) +default cho_bottom_toon_shorts = DollCloth("cho", ("lower body", "shorts"), "bottom", "toon_shorts", ["#2b5197ff", "#ffffffff"], level=4) +default cho_stockings_toon_socks = DollCloth("cho", ("legwear", "socks"), "stockings", "toon_socks", ["#2b5197ff", "#ffffffff"], level=4) -default cho_outfit_toon = DollOutfit([cho_hair_ponytail1, cho_headgear_toon_band, cho_top_toon_shirt, cho_bottom_toon_shorts, cho_stockings_toon_socks, cho_bra_basic1, cho_panties_basic1], price=500, name="Toonsquad Outfit", desc="\"Don't ever call me a doll!\" - Some Sexy Bunny") +default cho_outfit_toon = DollOutfit([cho_hair_base, cho_headgear_toon_band, cho_top_toon_shirt, cho_bottom_toon_shorts, cho_stockings_toon_socks, cho_bra_basic1, cho_panties_basic1], price=500, name="Toonsquad Outfit", desc="\"Don't ever call me a doll!\" - Some Sexy Bunny") #################### ## Chun-Li Outfit ## #################### -default cho_top_chun_li = DollCloth("cho", ("upper body", "dresses"), "top", "chun_li_dress", [[237, 34, 79, 255], [255, 226, 121, 255]], blacklist=["bottom"], level=12, armfix=True) -default cho_accessory_chun_li_wrap = DollCloth("cho", ("misc", "accessory"), "accessory3", "body_wrap", [[255, 251, 222, 255]], level=12, zorder=3) -default cho_accessory_chun_li_shoulders = DollCloth("cho", ("misc", "accessory"), "accessory4", "chun_li_shoulders", [[237, 34, 79, 255], [255, 226, 121, 255]], level=12, zorder=16) -default cho_headgear_chun_li_puffies = DollCloth("cho", ("head", "headgear"), "headgear", "chun_li_puffies", [[255, 251, 222, 255]], level=10) -default cho_tattoo2_chun_li_dragon = DollCloth("cho", ("piercings & tattoos", "tattoos"), "tattoo2", "chun_li_dragon", [[237, 34, 79, 255], [255, 226, 121, 255]]) -default cho_tattoo1_chun_li_mule = DollCloth("cho", ("piercings & tattoos", "tattoos"), "tattoo1", "chun_li_mule", [[0, 0, 0, 255]]) +default cho_top_chun_li = DollCloth("cho", ("upper body", "dresses"), "top", "chun_li_dress", ["#ed224fff", "#ffe279ff"], blacklist=["bottom"], level=12) +default cho_accessory_chun_li_wrap = DollCloth("cho", ("misc", "accessory"), "accessory", "body_wrap", ["#fffbdeff"], level=12, zorder=193) +default cho_accessory_chun_li_shoulders = DollCloth("cho", ("misc", "accessory"), "accessory", "chun_li_shoulders", ["#ed224fff", "#ffe279ff"], level=12, zorder=213) +default cho_headgear_chun_li_puffies = DollClothDynamic("cho", ("head", "headgear"), "headgear", "chun_li_puffies", ["#fffbdeff"], level=10, tracking="?hair") +default cho_tattoo_chun_li_dragon = DollCloth("cho", ("piercings & tattoos", "tattoos"), "tattoo", "chun_li_dragon", ["#ed224fff", "#ffe279ff"]) +default cho_tattoo_chun_li_mule = DollCloth("cho", ("piercings & tattoos", "tattoos"), "tattoo", "chun_li_mule", ["#000000ff"]) -default cho_outfit_chun_li = DollOutfit([cho_hair_ponytail1, cho_top_chun_li, cho_accessory_chun_li_wrap, cho_accessory_chun_li_shoulders, cho_headgear_chun_li_puffies, cho_bra_basic1, cho_panties_basic1, cho_tattoo2_chun_li_dragon, cho_tattoo1_chun_li_mule], price=500, name="Chun-Li Outfit", desc="For the strongest woman in the world!") +default cho_outfit_chun_li = DollOutfit([cho_hair_base, cho_top_chun_li, cho_accessory_chun_li_wrap, cho_accessory_chun_li_shoulders, cho_headgear_chun_li_puffies, cho_bra_basic1, cho_panties_basic1, cho_tattoo_chun_li_dragon, cho_tattoo_chun_li_mule], price=500, name="Chun-Li Outfit", desc="For the strongest woman in the world!") ################## -## Police Woman ## +## Police Woman ## #unlocked in not_so_great_escape mirror story ################## -default cho_top_police1 = DollCloth("cho", ("upper body", "shirts"), "top", "police", [[69, 84, 149, 255], [235, 209, 101, 255]], level=9) -default cho_bottom_police_skirt = DollCloth("cho", ("lower body", "skirts"), "bottom", "police_skirt", [[69, 84, 149, 255], [235, 209, 101, 255], [163, 95, 58, 255], [235, 209, 101, 255]], level=10, armfix=True) -default cho_glasses_aviators = DollCloth("cho", ("head", "glasses"), "glasses", "aviators", [[183, 199, 216, 255], [243, 217, 84, 255]], level=6) -default cho_headgear_police_cap = DollCloth("cho", ("head", "headgear"), "headgear", "police_cap", [[126, 126, 192, 255], [235, 209, 101, 255], [183, 199, 216, 255], [235, 209, 101, 255]], level=6) +default cho_top_police1 = DollCloth("cho", ("upper body", "shirts"), "top", "police", ["#455495ff", "#ebd165ff"], level=9) +default cho_bottom_police_skirt = DollCloth("cho", ("lower body", "skirts"), "bottom", "police_skirt", ["#455495ff", "#ebd165ff", "#a35f3aff", "#ebd165ff"], level=10) +default cho_glasses_aviators = DollCloth("cho", ("head", "glasses"), "glasses", "aviators", ["#b7c7d8ff", "#f3d954ff"], level=6) +default cho_headgear_police_cap = DollClothDynamic("cho", ("head", "headgear"), "headgear", "police_cap", ["#7e7ec0ff", "#ebd165ff", "#b7c7d8ff", "#ebd165ff"], level=6, tracking="?hair") -default cho_outfit_police = DollOutfit([cho_hair_ponytail1, cho_top_police1, cho_bottom_police_skirt, cho_bra_basic1, cho_panties_basic1, cho_glasses_aviators, cho_headgear_police_cap]) +default cho_outfit_police = DollOutfit([cho_hair_base, cho_top_police1, cho_bottom_police_skirt, cho_bra_basic1, cho_panties_basic1, cho_glasses_aviators, cho_headgear_police_cap]) -########### -## Other ## -########### +###################### +## Reindeer Costume ## #unlocked in genies_christmas_wish mirror story +###################### -default cho_panties_sport1 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "sport_panties_1", [[156, 204, 249, 255]], unlocked=True, armfix=True) -default cho_pubes_thick = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "thick", [[52, 59, 80, 255], [70, 90, 147, 255]], unlocked=True) -default cho_pubes_heart = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "heart", [[52, 59, 80, 255], [70, 90, 147, 255]], unlocked=True) -default cho_tattoo0_free = DollCloth("cho", ("piercings & tattoos", "tattoos"), "tattoo0", "pelv_free", [[0, 0, 1, 255]], unlocked=True) -default cho_piercing0_stud = DollCloth("cho", ("piercings & tattoos", "piercings"), "piercing0", "stud", [[220, 220, 221, 255]], unlocked=True) -default cho_tattoo1_slut = DollCloth("cho", ("piercings & tattoos", "tattoos"), "tattoo1", "breasts_slut", [[0, 0, 1, 255]], unlocked=True) -default cho_piercing1_barbell = DollCloth("cho", ("piercings & tattoos", "piercings"), "piercing1", "breast_barbell", [[220, 220, 221, 255]], unlocked=True) -default cho_hat_catears = DollCloth("cho", ("head", "headgear"), "headgear", "catears", [[70, 90, 147, 255]], level=10, unlocked=True) -default cho_hat_witch = DollCloth("cho", ("head", "headgear"), "headgear", "witch", [[71, 51, 102, 255], [215, 170, 98, 255]], unlocked=True) -default cho_accessory4_glasses1 = DollCloth("cho", ("head", "glasses"), "glasses", "glasses1", [[240, 240, 241, 255]], unlocked=True) -default cho_hat_goggles = DollCloth("cho", ("head", "headgear"), "headgear", "goggles", [[137, 150, 193, 255], [165, 165, 166, 255]], unlocked=True) -default cho_neckwear_medallion = DollCloth("cho", ("head", "neckwear"), "neckwear", "choker_medallion", [[25, 25, 26, 255]], unlocked=True) -default cho_neckwear_leather1 = DollCloth("cho", ("head", "neckwear"), "neckwear", "collar_leather_1", [[56, 56, 57, 255]], unlocked=True) -default cho_stockings_fishnet = DollCloth("cho", ("legwear", "stockings"), "stockings", "fishnet", [[100, 100, 101, 255], [50, 50, 51, 255]], level=14, armfix=True, unlocked=True) -default cho_top_sweater1 = DollCloth("cho", ("upper body", "sweaters"), "top", "top_sweater_1", [[89, 116, 194, 255], [213, 161, 13, 255]], armfix=True, unlocked=True) -default cho_top_sweater2 = DollCloth("cho", ("upper body", "sweaters"), "top", "top_sweater_2", [[89, 116, 194, 255]], level=6, unlocked=True) -default cho_top_tanktop1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_tanktop_1", [[230, 230, 231, 255]], level=14, unlocked=True) -default cho_robe_quidditch1 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_quidditch_1", [[89, 116, 194, 255], [213, 161, 13, 255]], armfix=True, unlocked=True) -default cho_bottom_pants1 = DollCloth("cho", ("lower body", "trousers"), "bottom", "pants_long_1", [[230, 230, 231, 255]], armfix=True, unlocked=True) -default cho_bottom_shorts2 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_2", [[114, 168, 210, 255], [232, 177, 13, 255]], level=10, armfix=True, unlocked=True) -default cho_bottom_pants2 = DollCloth("cho", ("lower body", "trousers"), "bottom", "pants_long_2", [[109, 105, 121, 255], [213, 161, 13, 255]], armfix=True, unlocked=True) -default cho_bottom_shorts4 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_4", [[109, 105, 121, 255], [213, 161, 13, 255]], level=8, armfix=True, unlocked=True) +default cho_top_bunny2 = DollCloth("cho", ("upper body", "one-piece suits"), "top", "bunny_top_2", ["#84220bff"], blacklist=["panties", "bra"], zorder=183, level=15) +default cho_hat_antlers = DollClothDynamic("cho", ("head", "headgear"), "headgear", "antlers", ["#984b30ff", "#ffffffff", "#c29d63ff"], level=12, tracking="?hair") +default cho_neckwear_reindeer_collar = DollCloth("cho", ("head", "neckwear"), "neckwear", "reindeer_collar", ["#7e4422ff", "#c4ab5fff"], level=15) +default cho_accessory_mistletoe = DollCloth("cho", ("misc", "accessory"), "accessory", "mistletoe", ["#1b5cc9ff"], zorder=193, level=7) -# Quidditch separate category -default choq_bra_sports1 = DollCloth("cho", ("upper undergarment", "bras"), "bra", "sport_bra_1", [[156, 204, 249, 255]]) -default choq_panties_sport1 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "sport_panties_1", [[156, 204, 249, 255]]) -default choq_cloth_robequidditch1 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_quidditch_1", [[60, 78, 131, 255], [186, 141, 11, 255]]) -default choq_cloth_topsweater1 = DollCloth("cho", ("upper body", "sweaters"), "top", "top_sweater_1", [[60, 78, 131, 255], [186, 141, 11, 255]]) -default choq_cloth_pantslong2 = DollCloth("cho", ("lower body", "trousers"), "bottom", "pants_long_2", [[109, 105, 121, 255], [213, 161, 13, 255]]) -default choq_cloth_pantsshort4 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_4", [[109, 105, 121, 255], [213, 161, 13, 255]]) -#default choq_cloth_glovesquidditch1 = DollCloth("cho", ("upper body", "gloves"), "gloves", "quidditch", [[213, 161, 13, 255]]) # Not in use anymore. -default choq_goggles = DollCloth("cho", ("head", "glasses"), "glasses", "goggles", [[137, 150, 193, 255], [165, 165, 166, 255]]) -#default choq_goggles_face = DollCloth("cho", ("head", "headgear"), "headgear", "goggles_face", [[137, 150, 193, 255], [165, 165, 166, 255]], unlocked=False) # Not in use -default choq_cloth_schoolskirt2 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_2", [[103, 90, 108, 255], [232, 177, 13, 255]]) -default choq_cloth_schoolskirt3 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_3", [[103, 90, 108, 255], [232, 177, 13, 255]]) -default choq_panties_in_hand = DollCloth("cho", ("misc", "accessory"), "accessory2", "panties_in_hand", [[156, 204, 249, 255]]) +default cho_outfit_reindeer = DollOutfit([cho_hair_base, cho_top_bunny2, cho_accessory_mistletoe, cho_hat_antlers, cho_neckwear_reindeer_collar]) -default choq_accessory_protectors = DollCloth("cho", ("misc", "accessory"), "accessory1", "protectors1", [[0, 0, 0, 255]], zorder=27) -default choq_accessory_protectors2 = DollCloth("cho", ("misc", "accessory"), "accessory1", "protectors2", [[0, 0, 0, 255]], zorder=27) +################### +## Bunny Costume ## +################### -# Add choq_accessory_protectors2 once drawn for normal pose -default cho_outfit_quidditch = DollOutfit([cho_hair_ponytail1, choq_cloth_topsweater1, choq_cloth_pantslong2, choq_cloth_robequidditch1, choq_bra_sports1, choq_panties_sport1], hidden=True) +default cho_top_bunny1 = DollCloth("cho", ("upper body", "one-piece suits"), "top", "bunny_top_1", ["#000000ff"], blacklist=["panties", "bra"], zorder=183, level=15) +default cho_stockings_bunny1 = DollCloth("cho", ("legwear", "pantyhose"), "stockings", "bunny_stockings_1", ["#515151ff"], level=5) +default cho_hat_bunny1 = DollClothDynamic("cho", ("head", "headgear"), "headgear", "bunny_hat_1", ["#2b2a32ff", "#575370ff"], level=15, tracking="?hair") -default cho_outfit_quidditch_hufflepuff = DollOutfit([cho_hair_ponytail1, choq_cloth_topsweater1, choq_cloth_schoolskirt2, choq_cloth_robequidditch1, choq_accessory_protectors, choq_bra_sports1, choq_panties_sport1], hidden=True) -default cho_outfit_quidditch_slytherin = DollOutfit([cho_hair_ponytail1, choq_cloth_topsweater1, choq_cloth_pantslong2, choq_accessory_protectors2, choq_bra_sports1, choq_panties_sport1], hidden=True) -default cho_outfit_quidditch_gryffindor = DollOutfit([cho_hair_ponytail1, choq_cloth_topsweater1, choq_cloth_schoolskirt3, choq_accessory_protectors, choq_bra_sports1, choq_panties_sport1], hidden=True) +default cho_outfit_bunny = DollOutfit([cho_hair_base, cho_top_bunny1, cho_stockings_bunny1, cho_hat_bunny1], price=250, name="Sexy Bunny Costume", desc="A costume to turn you into the bunny equivalent of a neko.") + +########################## +## Virgin Killer Outfit ## +########################## + +default cho_top_virgin_killer = DollCloth("cho", ("upper body", "one-piece suits"), "top", "virgin_killer_top", ["#de4047ff", "#de4047ff"], blacklist=["panties", "bra"], zorder=183, level=15) + +default cho_outfit_virgin_killer = DollOutfit([cho_hair_base, cho_top_virgin_killer], price=200, name="Virgin Killer", desc="Disclaimer: Does not actually kill virgins.") ################ ## Pubic Hair ## ################ -default cho_pubes_arrow = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "arrow", [[70, 90, 147, 255]], unlocked=True) -default cho_pubes_beaver = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "beaver", [[70, 90, 147, 255]], unlocked=True) -default cho_pubes_stuble = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "stuble", [[52, 59, 80, 255]], unlocked=True) -default cho_pubes_unshaved = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "unshaved", [[52, 59, 80, 255]], unlocked=True) +default cho_pubes_arrow = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "arrow", ["#465a93ff"], unlocked=True) +default cho_pubes_beaver = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "beaver", ["#465a93ff"], unlocked=True) +default cho_pubes_stuble = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "stuble", ["#343b50ff"], unlocked=True) +default cho_pubes_unshaved = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "unshaved", ["#343b50ff"], unlocked=True) +default cho_pubes_thick = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "thick", ["#343b50ff", "#465a93ff"], unlocked=True) +default cho_pubes_heart = DollCloth("cho", ("lower undergarment", "pubes"), "pubes", "heart", ["#343b50ff", "#465a93ff"], unlocked=True) -default cho_makeup4_lipstick = DollLipstick("cho", ("head", "makeup"), "makeup4", "lipstick", [[255, 70, 70, 255]], unlocked=True) +default cho_makeup_lipstick = DollMakeup("cho", ("head", "makeup"), "makeup", "lipstick", ["#ff4646ff"], unlocked=True, tracking="mouth") -### Event Specific ### +############# +## Tattoos ## +############# -default cho_top_school1_slyt = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_1", [[183, 183, 184, 255], [109, 105, 121, 255], [58, 115, 75, 255], [205, 205, 206, 255]]) -default cho_top_school1_gryf = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_1", [[183, 183, 184, 255], [109, 105, 121, 255], [167, 77, 42, 255], [237, 179, 14, 255]]) -default cho_top_school1_huff = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_1", [[183, 183, 184, 255], [109, 105, 121, 255], [251, 198, 10, 255], [51, 43, 54, 255]]) -default cho_stockings_slyt = DollCloth("cho", ("legwear", "socks"), "stockings", "house", [[58, 115, 75, 255], [205, 205, 206, 255]]) -default cho_stockings_gryf = DollCloth("cho", ("legwear", "socks"), "stockings", "house", [[219, 165, 13, 255], [146, 63, 30, 255]]) -default cho_stockings_huff = DollCloth("cho", ("legwear", "socks"), "stockings", "house", [[251, 198, 10, 255], [51, 43, 54, 255]]) +default cho_tattoo_free = DollCloth("cho", ("piercings & tattoos", "tattoos"), "tattoo", "pelv_free", ["#000001ff"], unlocked=True) +default cho_tattoo_slut = DollCloth("cho", ("piercings & tattoos", "tattoos"), "tattoo", "breasts_slut", ["#000001ff"], unlocked=True) -default cho_outfit_slyt = DollOutfit([cho_hair_ponytail1, cho_top_school1_slyt, cho_bottom_school1, cho_bra_basic1, cho_panties_basic1, cho_stockings_slyt], hidden=True) -default cho_outfit_gryf = DollOutfit([cho_hair_ponytail1, cho_top_school1_gryf, cho_bottom_school1, cho_bra_basic1, cho_panties_basic1, cho_stockings_gryf], hidden=True) -default cho_outfit_huff = DollOutfit([cho_hair_ponytail1, cho_top_school1_huff, cho_bottom_school1, cho_bra_basic1, cho_panties_basic1, cho_stockings_huff], hidden=True) +############### +## Piercings ## +############### -default smurfette_hair = DollCloth("cho", ("head", "hair"), "hair", "smurfette", [[255, 221, 71, 255],[255, 237, 158, 255]], level=4) -default smurfette_hat = DollCloth("cho", ("head", "headgear"), "headgear", "smurfette", [[251, 251, 251, 255]], level=4) -default smurfette_top = DollCloth("cho", ("upper body", "dresses"), "top", "smurfette", [[251, 251, 251, 255],[251, 251, 251, 255]], level=4, blacklist=["bottom"], armfix=True) +default cho_piercing_stud = DollCloth("cho", ("piercings & tattoos", "piercings"), "piercing", "stud", ["#dcdcddff"], unlocked=True) +default cho_piercing_barbell = DollCloth("cho", ("piercings & tattoos", "piercings"), "piercing", "breast_barbell", ["#dcdcddff"], unlocked=True) +# Quidditch separate category +default choq_bra_sports1 = DollCloth("cho", ("upper undergarment", "bras"), "bra", "sport_bra_1", ["#9cccf9ff"]) +default choq_panties_sport1 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "sport_panties_1", ["#9cccf9ff"]) +default choq_cloth_robequidditch1 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_quidditch_1", ["#3c4e83ff", "#ba8d0bff"]) +default choq_cloth_topsweater1 = DollCloth("cho", ("upper body", "sweaters"), "top", "top_sweater_1", ["#3c4e83ff", "#ba8d0bff"]) +default choq_cloth_pantslong2 = DollCloth("cho", ("lower body", "trousers"), "bottom", "pants_long_2", ["#6d6979ff", "#d5a10dff"]) +default choq_cloth_pantsshort4 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_4", ["#6d6979ff", "#d5a10dff"]) +#default choq_cloth_glovesquidditch1 = DollCloth("cho", ("upper body", "gloves"), "gloves", "quidditch", ["#d5a10dff"]) # Not in use anymore. +default choq_goggles = DollCloth("cho", ("head", "glasses"), "glasses", "goggles", ["#8996c1ff", "#a5a5a6ff"]) +#default choq_goggles_face = DollCloth("cho", ("head", "headgear"), "headgear", "goggles_face", ["#8996c1ff", "#a5a5a6ff"], unlocked=False) # Not in use +default choq_cloth_schoolskirt2 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_2", ["#675a6cff", "#e8b10dff"]) +default choq_cloth_schoolskirt3 = DollCloth("cho", ("lower body", "skirts"), "bottom", "school_skirt_3", ["#675a6cff", "#e8b10dff"]) +default choq_panties_in_hand = DollCloth("cho", ("misc", "accessory"), "accessory", "panties_in_hand", ["#9cccf9ff"]) + +default choq_accessory_protectors = DollCloth("cho", ("misc", "accessory"), "accessory", "protectors1", None, zorder=300) +default choq_accessory_protectors2 = DollCloth("cho", ("misc", "accessory"), "accessory", "protectors2", None, zorder=300) +default choq_accessory_snitch_in_hand = DollCloth("cho", ("hidden", "accessory"), "accessory", "snitch_in_hand", None, zorder=-1) + +# Add choq_accessory_protectors2 once drawn for normal pose +default cho_outfit_quidditch = DollOutfit([cho_hair_base, choq_cloth_topsweater1, choq_cloth_pantslong2, choq_cloth_robequidditch1, choq_bra_sports1, choq_panties_sport1], hidden=True) + +default cho_outfit_quidditch_hufflepuff = DollOutfit([cho_hair_base, choq_cloth_topsweater1, choq_cloth_schoolskirt2, choq_cloth_robequidditch1, choq_accessory_protectors, choq_bra_sports1, choq_panties_sport1], hidden=True) +default cho_outfit_quidditch_slytherin = DollOutfit([cho_hair_base, choq_cloth_topsweater1, choq_cloth_pantslong2, choq_accessory_protectors2, choq_bra_sports1, choq_panties_sport1], hidden=True) +default cho_outfit_quidditch_gryffindor = DollOutfit([cho_hair_base, choq_cloth_topsweater1, choq_cloth_schoolskirt3, choq_accessory_protectors, choq_bra_sports1, choq_panties_sport1], hidden=True) + +############ +## Events ## +############ + +# cc_pr_manipulate_boys_twins_branch +default cho_top_school1_slyt = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_1", ["#b7b7b8ff", "#6d6979ff", "#3a734bff", "#cdcdceff"]) +default cho_top_school1_gryf = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_1", ["#b7b7b8ff", "#6d6979ff", "#a74d2aff", "#edb30eff"]) +default cho_top_school1_huff = DollCloth("cho", ("upper body", "shirts"), "top", "top_school_1", ["#b7b7b8ff", "#6d6979ff", "#fbc60aff", "#332b36ff"]) +default cho_stockings_slyt = DollCloth("cho", ("legwear", "socks"), "stockings", "house", ["#3a734bff", "#cdcdceff"]) +default cho_stockings_gryf = DollCloth("cho", ("legwear", "socks"), "stockings", "house", ["#dba50dff", "#923f1eff"]) +default cho_stockings_huff = DollCloth("cho", ("legwear", "socks"), "stockings", "house", ["#fbc60aff", "#332b36ff"]) + +default smurfette_hair = DollCloth("cho", ("head", "hair"), "hair", "smurfette", ["#ffdd47ff", "#ffed9eff"], level=4) +default smurfette_hat = DollClothDynamic("cho", ("head", "headgear"), "headgear", "smurfette", ["#fbfbfbff"], level=4, tracking="?hair") +default smurfette_top = DollCloth("cho", ("upper body", "dresses"), "top", "smurfette", ["#fbfbfbff", "#fbfbfbff"], level=4, blacklist=["bottom"]) + +default cho_outfit_slyt = DollOutfit([cho_hair_base, cho_top_school1_slyt, cho_bottom_school1, cho_bra_basic1, cho_panties_basic1, cho_stockings_slyt], hidden=True) +default cho_outfit_gryf = DollOutfit([cho_hair_base, cho_top_school1_gryf, cho_bottom_school1, cho_bra_basic1, cho_panties_basic1, cho_stockings_gryf], hidden=True) +default cho_outfit_huff = DollOutfit([cho_hair_base, cho_top_school1_huff, cho_bottom_school1, cho_bra_basic1, cho_panties_basic1, cho_stockings_huff], hidden=True) default cho_outfit_smurfette = DollOutfit([smurfette_hair, smurfette_hat, smurfette_top], price=0, name="Smurfette Costume", desc="I'm coming for you, Gargamel.{heart}") + +########## +## Misc ## +########## + +default cho_panties_sport1 = DollCloth("cho", ("lower undergarment", "panties"), "panties", "sport_panties_1", ["#9cccf9ff"], unlocked=True) +default cho_hat_catears = DollClothDynamic("cho", ("head", "headgear"), "headgear", "catears", ["#465a93ff"], level=10, unlocked=True, tracking="?hair") +default cho_hat_witch = DollClothDynamic("cho", ("head", "headgear"), "headgear", "witch", ["#473366ff", "#d7aa62ff"], unlocked=True, tracking="?hair") +default cho_accessory_glasses1 = DollCloth("cho", ("head", "glasses"), "glasses", "glasses1", ["#f0f0f1ff"], unlocked=True) +default cho_hat_goggles = DollClothDynamic("cho", ("head", "headgear"), "headgear", "goggles", ["#8996c1ff", "#a5a5a6ff"], unlocked=True, tracking="?hair") +default cho_neckwear_medallion = DollCloth("cho", ("head", "neckwear"), "neckwear", "choker_medallion", ["#19191aff"], unlocked=True) +default cho_neckwear_leather1 = DollCloth("cho", ("head", "neckwear"), "neckwear", "collar_leather_1", ["#383839ff"], unlocked=True) +default cho_stockings_fishnet = DollCloth("cho", ("legwear", "stockings"), "stockings", "fishnet", ["#646465ff", "#323233ff"], level=14, unlocked=True) +default cho_top_sweater1 = DollCloth("cho", ("upper body", "sweaters"), "top", "top_sweater_1", ["#5974c2ff", "#d5a10dff"], unlocked=True) +default cho_top_sweater2 = DollCloth("cho", ("upper body", "sweaters"), "top", "top_sweater_2", ["#5974c2ff"], level=6, unlocked=True) +default cho_top_tanktop1 = DollCloth("cho", ("upper body", "shirts"), "top", "top_tanktop_1", ["#e6e6e7ff"], level=14, unlocked=True) +default cho_robe_quidditch1 = DollCloth("cho", ("upper body", "robes"), "robe", "robe_quidditch_1", ["#5974c2ff", "#d5a10dff"], unlocked=True) +default cho_bottom_pants1 = DollCloth("cho", ("lower body", "trousers"), "bottom", "pants_long_1", ["#e6e6e7ff"], unlocked=True) +default cho_bottom_shorts2 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_2", ["#72a8d2ff", "#e8b10dff"], level=10, unlocked=True) +default cho_bottom_pants2 = DollCloth("cho", ("lower body", "trousers"), "bottom", "pants_long_2", ["#6d6979ff", "#d5a10dff"], unlocked=True) +default cho_bottom_shorts4 = DollCloth("cho", ("lower body", "shorts"), "bottom", "pants_short_4", ["#6d6979ff", "#d5a10dff"], level=8, unlocked=True) + +################ +## Not In Use ## +################ + +#default cho_hair_pigtails = DollCloth("cho", ("head", "hair"), "hair", "pigtails", ["#343b50ff", "#465a93ff", "#f2a249ff"], level=8) +#default cho_neckwear_tie1 = DollCloth("cho", ("head", "neckwear"), "neckwear", "tie_1", ["#d8a30aff", "#5974c2ff"]) #Tie Only diff --git a/game/scripts/characters/cho/wardrobe_reactions.rpy b/game/scripts/characters/cho/wardrobe_reactions.rpy index c9e05e9e..c0163521 100644 --- a/game/scripts/characters/cho/wardrobe_reactions.rpy +++ b/game/scripts/characters/cho/wardrobe_reactions.rpy @@ -532,6 +532,47 @@ label cho_reaction_equip_outfit(item): gen "Sure!" ("base", xpos="far_left", ypos="head") cho "Alright then... If you say so." ("base", "base", "base", "mid") + ################### + ## Bunny Costume ## + ################### + elif item == cho_outfit_bunny: #req 15 (no bra, no panties) + gen "I've got this bunny costume for you to put on." ("base", xpos="far_left", ypos="head") + cho "A bunny costume?" ("soft", "base", "base", "mid") + cho "Do you really think a bunny costume would suit me?" ("open", "base", "base", "R", cheeks="blush") + gen "Of course! Why wouldn't it?" ("base", xpos="far_left", ypos="head") + cho "Well, I thought that you'd need bigger--" ("upset", "narrow", "base", "down", cheeks="blush") + cho "I mean, of course it will suit me!" ("angry", "closed", "angry", "mid", cheeks="blush") + cho "Hand it over!" ("angry", "base", "base", "mid", cheeks="blush") + + ###################### + ## Reindeer Costume ## + ###################### + elif item == cho_outfit_reindeer: #req 15 (no bra, no panties) + gen "How about you put on this reindeer costume for me?" ("base", xpos="far_left", ypos="head") + cho "A reindeer costume?" ("soft", "base", "raised", "mid") + gen "That's right. This one right here..." ("base", xpos="far_left", ypos="head") + cho "*Hmm*... I suppose I could--" ("soft", "narrow", "base", "down") + cho "Hold on, there's a--" ("clench", "narrow", "base", "down") + cho "{size=-4}There's a hole in this...{/size}" ("base", "narrow", "base", "down", cheeks="blush") + gen "Something wrong?" ("base", xpos="far_left", ypos="head") + cho "I'm fine, let me just put it on..." ("soft", "narrow", "base", "down", cheeks="blush") + cho "" ("soft", "narrow", "base", "mid", cheeks="blush") + + ################### + ## Virgin Killer ## + ################### + elif item == cho_outfit_virgin_killer: #req 14 (no bra, no panties) + gen "I've got this jumper I'd like you to put on." ("base", xpos="far_left", ypos="head") + cho "A jumper?" ("soft", "base", "base", "mid") + gen "Yup, is that surprising?." ("base", xpos="far_left", ypos="head") + cho "*Hmm*... I suppose I would've imagined something more--" ("open", "base", "base", "R") + gen "Here you go." ("base", xpos="far_left", ypos="head") + cho "Oh... It's one of those." ("open", "narrow", "base", "down", cheeks="blush") + gen "Do you like it?" ("base", xpos="far_left", ypos="head") + gen "I thought it would enhance your features." ("base", xpos="far_left", ypos="head") + cho "*Hmm*... If you say so..." ("base", "narrow", "base", "down", cheeks="blush") + cho "Alright, just give me a moment to put it on." ("base", "base", "base", "mid", cheeks="blush") + # TODO: Blacklist fallbacks have to be added. return @@ -878,6 +919,70 @@ label cho_reaction_equip_outfit_fail(item): cho "..." ("disgust", "base", "angry", "mid") gen "Alright then... Maybe some other time." ("base", xpos="far_left", ypos="head") + ################### + ## Bunny Costume ## + ################### + elif item == cho_outfit_bunny: #req 15 (no bra, no panties) + gen "How about you take the leap and wear something that shows off your figure for a change?" ("base", xpos="far_left", ypos="head") + cho "What?!" ("disgust", "base", "base", "mid") + gen "A bunny costume!" ("grin", xpos="far_left", ypos="head") + gen "Get it? Take the leap?" ("grin", xpos="far_left", ypos="head") + cho "..." ("disgust", "base", "base", "stare") + gen "Cause that's what bunnies do." ("base", xpos="far_left", ypos="head") + gen "Well, technically they hop, but--" ("base", xpos="far_left", ypos="head") + cho "I sincerely hope you're joking..." ("open", "narrow", "angry", "mid") + gen "Yes, so why aren't anyone laughing?" ("base", xpos="far_left", ypos="head") + cho "Oh... Thank Merlin..." ("disgust", "closed", "worried", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + cho "..." ("base", "base", "base", "mid") + gen "(Wait...)" ("base", xpos="far_left", ypos="head") + + ###################### + ## Reindeer Costume ## + ###################### + elif item == cho_outfit_reindeer: #req 15 (no bra, no panties) + gen "What do you say about putting on this reindeer costume?" ("base", xpos="far_left", ypos="head") + cho "A reindeer costume? Is this like a Christmas thing?" ("soft", "base", "raised", "mid") + gen "Something like that." ("base", xpos="far_left", ypos="head") + gen "Here you go." ("base", xpos="far_left", ypos="head") + cho "Well, that's kind of-- Hold on..." ("angry", "narrow", "base", "down") + cho "There's a hole in the crotch!" ("mad", "base", "base", "mid", cheeks="blush") + gen "Oh, really?" ("base", xpos="far_left", ypos="head") + cho "Surely you're not expecting--" ("angry", "base", "angry", "mid", cheeks="blush") + gen "Of course not! It must've happened during shipping!" ("angry", xpos="far_left", ypos="head") + gen "Those bloody owls and their claws!" ("angry", xpos="far_left", ypos="head") + cho "If Owls did that, then what's up with the mistletoe right above it?!" ("annoyed", "narrow", "angry", "mid") + gen "*Err*... I asked for it to be the centrepiece, so they must've thought I meant the centre of the costume!" ("angry", xpos="far_left", ypos="head") + cho "Then shouldn't it be on the stomach?" ("open", "narrow", "angry", "mid") + cho "Hold on... I can see the seams around this hole, no owl could--" ("angry", "base", "base", "mid") + gen "Let me see!" ("open", xpos="far_left", ypos="head") + gen "Oh, you're right!" ("angry", xpos="far_left", ypos="head") + gen "This isn't at all what I asked for!" ("angry", xpos="far_left", ypos="head") + gen "I'm going to have to give that seamstress a piece of my mind!" ("angry", xpos="far_left", ypos="head") + cho "..." ("disgust", "narrow", "base", "mid") + + ################### + ## Virgin Killer ## + ################### + elif item == cho_outfit_virgin_killer: #req 14 (no bra, no panties) + gen "Ever heard of a virgin killer?" ("base", xpos="far_left", ypos="head") + cho "Can't say that I have, is it some kind of drink?" ("soft", "base", "base", "mid") + gen "Good guess, but no. It's a type of jumper." ("base", xpos="far_left", ypos="head") + cho "I see... Why are you telling me this?" ("open", "narrow", "raised", "mid") + gen "Well, I've heard that they're the rage these days, so I got you one." ("base", xpos="far_left", ypos="head") + cho "Oh, well, that's very kind of you." ("base", "base", "base", "mid") + gen "Here you go." ("base", xpos="far_left", ypos="head") + cho "..." ("disgust", "narrow", "base", "down") + cho "*Ehm*... Did you actually look at this before you decided to give it to me?" ("open", "narrow", "base", "down", cheeks="blush") + gen "Not really, why?" ("base", xpos="far_left", ypos="head") + cho "Well, it's a bit revealing." ("upset", "narrow", "base", "mid", cheeks="blush") + gen "What?! Really?" ("base", xpos="far_left", ypos="head") + gen "But I spent so much money on it!" ("base", xpos="far_left", ypos="head") + gen "Are you sure it's that bad?" ("base", xpos="far_left", ypos="head") + cho "Yeah, it's pretty bad alright." ("angry", "narrow", "base", "down", cheeks="blush") + gen "Well, I guess I'll have to try to return it... Damn!" ("base", xpos="far_left", ypos="head") + cho "" ("angry", "narrow", "base", "mid", cheeks="blush") + else: $ random_number = renpy.random.randint(1, 5) if random_number == 1: diff --git a/game/scripts/characters/genie/wardrobe.rpy b/game/scripts/characters/genie/wardrobe.rpy index beb78f20..b1a9faf8 100644 --- a/game/scripts/characters/genie/wardrobe.rpy +++ b/game/scripts/characters/genie/wardrobe.rpy @@ -10,25 +10,11 @@ init python: layeredimage genie_stats: anchor (0.0, 1.0) - group hair: - attribute nude "characters/genie/hair.webp" - - group fixes: - attribute robes "characters/genie/robes_fix.webp" - always "characters/genie/base.webp" + always "characters/genie/outfits/robes.webp" + always "characters/genie/outfits/robes_beard.webp" - group face: - attribute base 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" - - group outfit: - - attribute nude Null() - attribute robes default "characters/genie/robes.webp" + # TODO: Add outfit support; Low priority layeredimage genie: anchor (0.0, 1.0) @@ -36,22 +22,28 @@ layeredimage genie: group hair: attribute nude "characters/genie/hair.webp" - group fixes: - attribute robes "characters/genie/robes_fix.webp" - always "characters/genie/base.webp" group face: - attribute base Null() + 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" group outfit: - attribute nude Null() - attribute robes default "characters/genie/robes.webp" + attribute robes default "characters/genie/outfits/robes.webp" + attribute santa "characters/genie/outfits/santa.webp" + + group beard multiple: + attribute nude default "characters/genie/beard.webp" if_all ["nude"] + attribute robes default "characters/genie/outfits/robes_beard.webp" if_all ["robes"] + attribute santa_base default "characters/genie/outfits/santa_beard_base.webp" if_all ["santa", "base"] + attribute santa_grin default "characters/genie/outfits/santa_beard_grin.webp" if_all ["santa", "grin"] + attribute santa_angry default "characters/genie/outfits/santa_beard_angry.webp" if_all ["santa", "angry"] + attribute santa_smile default "characters/genie/outfits/santa_beard_smile.webp" if_all ["santa", "smile"] + attribute santa_open default "characters/genie/outfits/santa_beard_open.webp" if_all ["santa", "open"] at Transform(function=genie_transform) diff --git a/game/scripts/characters/hermione/events/favors/dance_for_me.rpy b/game/scripts/characters/hermione/events/favors/dance_for_me.rpy index 491c4717..e48377f7 100644 --- a/game/scripts/characters/hermione/events/favors/dance_for_me.rpy +++ b/game/scripts/characters/hermione/events/favors/dance_for_me.rpy @@ -630,7 +630,7 @@ label hg_pf_strip_T3_intro_E2: gen "*Hmm*... Well I'm not sure we're quite done here yet..." ("base", xpos="far_left", ypos="head") her "..." ("upset", "squint", "annoyed", "mid") - $ hermione.strip("all") + $ hermione.strip("clothes") her "" ("angry", "narrow", "base", "down") @@ -890,7 +890,7 @@ label hg_pf_strip_T3_watch: call nar(">Hermione moves her body in an attempted seductive manner.") call nar(">Your gaze on her current state of undress causing her some difficulties in maintaining her concentration.") - $ hermione.strip("all") + $ hermione.strip("clothes") pause 1.0 @@ -1194,9 +1194,9 @@ label hg_pf_strip_T4: gen "Oh, you humans know nothing of true love..." ("base", xpos="far_left", ypos="head") her ".....................................?" ("soft", "base", "base", "mid") if hermione.is_worn("bottom"): - gen "Err... I mean, take off your bottoms, [hermione_name]!" ("base", xpos="far_left", ypos="head") + gen "*Err*... I mean, take off your bottoms, [hermione_name]!" ("base", xpos="far_left", ypos="head") else: - gen "Err... I mean, keep on dancing, [hermione_name]!" ("base", xpos="far_left", ypos="head") + gen "*Err*... I mean, keep on dancing, [hermione_name]!" ("base", xpos="far_left", ypos="head") her "................." ("annoyed", "narrow", "angry", "R") "\"I feel like I'm in love right now!\"": @@ -1257,7 +1257,7 @@ label hg_pf_strip_T4_watch: call nar(">Hermione moves her body in an attempted seductive manner.") call nar(">Trying her best to focus on her task she tries to avoid looking directly at you.") - $ hermione.strip("all") + $ hermione.strip("clothes") call nar(">You can see that she is doing her best to be graceful...","start") call nar(">But she looks rather ridiculous in her attempts to act like a professional stripper...","end") @@ -1362,7 +1362,7 @@ label hg_pf_strip_T4_masturbate: call nar(">Hermione moves her body in an attempted seductive manner.") call nar(">Trying her best to focus on her task she tries to avoid looking directly at you.") - $ hermione.strip("all") + $ hermione.strip("clothes") call nar(">You can see that she is doing her best to be graceful...","start") call nar(">But she looks rather ridiculous in her attempts to act like a professional stripper...","end") 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 2d97f594..fd5b540b 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 @@ -55,7 +55,7 @@ label hg_pf_strip_T4_fingering: if hermione.is_any_worn("clothes"): gen "Now take off the rest." ("base", xpos="far_left", ypos="head") - $ hermione.strip("all") + $ hermione.strip("clothes") pause .5 her "(I never would've imagined... To do this in front of my headmaster of all people...)" ("normal", "happyCl", "worried", "mid") @@ -261,7 +261,7 @@ label hg_pf_strip_T4_fingering: $ hermione.set_body_zorder(armright=0) $ hermione.set_body(armleft="down", armright="down") $ hermione.set_pose(None) - $ hermione.strip("all") + $ hermione.strip("clothes") stop bg_sounds her "*SOB*!{w=0.3} I can't..." ("angry", "happyCl", "base", "down", cheeks="blush", tears="messy") @@ -300,7 +300,7 @@ label hg_pf_strip_T4_fingering: $ hermione.set_body_zorder(armright=0) $ hermione.set_body(armleft="down", armright="down") $ hermione.set_pose(None) - $ hermione.strip("all") + $ hermione.strip("clothes") her "Thank you [genie_name]." ("base", "base", "worried", "mid", cheeks="blush", tears="soft") her "I promise to try harder next time." ("base", "happyCl", "worried", "mid", cheeks="blush") @@ -338,7 +338,7 @@ label hg_pf_strip_T5_fingering: if hermione.is_any_worn("clothes"): gen "Now take off the rest." ("base", xpos="far_left", ypos="head") - $ hermione.strip("all") + $ hermione.strip("clothes") her "(Okay then, here I go...)" ("normal", "happyCl", "worried", "mid") @@ -450,7 +450,7 @@ label hg_pf_strip_T6_fingering: if hermione.is_any_worn("clothes"): gen "Now take off the rest." ("base", xpos="far_left", ypos="head") - $ hermione.strip("all") + $ hermione.strip("clothes") her "(...)" ("base", "happyCl", "worried", "mid") @@ -577,7 +577,7 @@ label hg_pf_strip_T6_fingering: $ hermione.set_body_zorder(armright=0) $ hermione.set_body(armleft="down", armright="down") $ hermione.set_pose(None) - $ hermione.strip("all") + $ hermione.strip("clothes") call her_chibi_scene("behind_desk_front") 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 51b9c9ec..3927e9a0 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 @@ -106,7 +106,7 @@ label hg_pf_strip_T4_snape: pause.5 call play_music("dark_fog") - sna "Genie... err, I mean Albus, you wanted to see me?" ("snape_01", xpos="base", ypos="base") + sna "Genie... *err*, I mean Albus, you wanted to see me?" ("snape_01", xpos="base", ypos="base") gen "Yes. Are you in the mood for a little striptease?" ("base", xpos="far_left", ypos="head") sna "Oh...?" ("snape_05") sna "Miss Granger here will be performing I assume?" 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 66a23743..d3807ff2 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 @@ -737,7 +737,7 @@ label hg_pf_handjob_2: gen "[hermione_name], you are killing me!" ("angry", xpos="far_left", ypos="head") her "Really? Really?!" ("smile", "happyCl", "base", "mid", emote="happy") her "This is actually quite fun!" - her "Err... I mean..." ("angry", "wink", "base", "mid") + her "*Err*... I mean..." ("angry", "wink", "base", "mid") her "I am only doing this to help my house of course..." gen "Yes, yes... The Gryffindor honour and all that." ("base", xpos="far_left", ypos="head") gen "You just keep massaging that spot..." ("base", xpos="far_left", ypos="head") 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 6c77f46b..461d8710 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 @@ -310,7 +310,7 @@ label hg_pf_titjob_1: her "............." ("disgust", "narrow", "worried", "down") gen "............." ("base", xpos="far_left", ypos="head") her "............." ("normal", "happyCl", "worried", "mid") - her "Err... [genie_name]?" + her "*Err*... [genie_name]?" gen "Yes, what is it?" ("base", xpos="far_left", ypos="head") her "Are you almost...{w=0.3} there?" ("open", "base", "base", "mid") gen "Why?" ("base", xpos="far_left", ypos="head") @@ -715,7 +715,7 @@ label hg_pf_titjob_2: gen "[hermione_name], you little slut!" ("angry", xpos="far_left", ypos="head") $ dynamic_cg("herm_boob", "base", "23") her "It was just practice, nothing else!" ("grin", "happyCl", "worried", "mid", emote="sweat") - her "Err... I mean..." ("angry", "wink", "base", "mid") + her "*Err*... I mean..." ("angry", "wink", "base", "mid") $ dynamic_cg("herm_boob", "base", "21") her "It's not like I enjoyed it or anything..." ("angry", "narrow", "base", "down") gen "Yes, yes... you're not a slut at all..." ("base", xpos="far_left", ypos="head") 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 af082eb0..39ec82a8 100644 --- a/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy +++ b/game/scripts/characters/hermione/events/favors/lets_have_sex.rpy @@ -107,7 +107,7 @@ label hg_pf_sex_T6_intro_E1: her "Of course, I mind, [genie_name]!" ("upset", "closed", "base", "mid") her "I am not a prostitute!" gen "But you'll do it anyway??" ("base", xpos="far_left", ypos="head") - if gryffindor < hufflepuff or gryffindor < slytherin or gryffindor < ravenclaw: + if not is_in_lead(gryffindor): her "Gryffindor is falling behind again..." ("open", "closed", "base", "mid") else: her "I have to make sure Gryffindor stays in the lead..." ("open", "closed", "base", "mid") @@ -1164,7 +1164,7 @@ label hg_sex_3: # Hermione Setup $ hermione.set_pose("CG_lean_back") - $ hermione.strip("all") + $ hermione.strip("clothes") hide hermione_main # Genie Setup @@ -1228,7 +1228,7 @@ label hg_sex_3: $ camera.set(zoom=0.45, pos=(-340, -380), rotate=0, t=2.0, pause=False) $ hermione.set_pose("CG_lean_forward") - $ hermione.strip("all") + $ hermione.strip("clothes") $ genie_doll = "caress" $ genie_doll_armfix = "images/CG/her_sex/caress_armfix.webp" with d3 @@ -1284,7 +1284,7 @@ label hg_sex_3: $ camera.set(zoom=0.45, pos=(-340, -380), rotate=0, t=2.0, pause=False) $ hermione.set_pose("CG_lean_forward") - $ hermione.strip("all") + $ hermione.strip("clothes") $ genie_doll = "caress" $ genie_doll_armfix = "images/CG/her_sex/caress_armfix.webp" her "" ("normal", "closed", "base", "R", cheeks="blush") @@ -1322,7 +1322,7 @@ label hg_sex_3: $ camera.set(zoom=0.45, pos=(-340, -380), rotate=0, t=2.0, pause=False) $ hermione.set_pose("CG_lean_forward") - $ hermione.strip("all") + $ hermione.strip("clothes") $ genie_doll = "caress" $ genie_doll_armfix = "images/CG/her_sex/caress_armfix.webp" with d3 @@ -1352,7 +1352,7 @@ label hg_sex_3: gen "For example..." $ hermione.set_pose("CG_bent_over") - $ hermione.strip("all") + $ hermione.strip("clothes") $ genie_doll = "grab" $ genie_doll_armfix = "images/CG/her_sex/grab_armfix.webp" $ camera.set(zoom=0.44, pos=(-305, -650), rotate=0, t=2.0) diff --git a/game/scripts/characters/hermione/events/favors/lets_have_sex_anal.rpy b/game/scripts/characters/hermione/events/favors/lets_have_sex_anal.rpy index 0838ac30..eeb18913 100644 --- a/game/scripts/characters/hermione/events/favors/lets_have_sex_anal.rpy +++ b/game/scripts/characters/hermione/events/favors/lets_have_sex_anal.rpy @@ -718,7 +718,7 @@ label hg_anal_sex_2_intro: call nar(">You grab Hermione's top and quickly pull it and her bra over her head, revealing her tits...") $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ hermione.strip("all") + $ hermione.strip("clothes") with d3 her "" ("grin", "narrow", "worried", "R", cheeks="blush") @@ -791,7 +791,7 @@ label hg_anal_sex_2_intro: gen "Fine! Have it your way whore!" $ hermione.set_pose("CG_bent_over") - $ hermione.strip("all") + $ hermione.strip("clothes") $ genie_doll = "grab" $ genie_doll_armfix = "images/CG/her_sex/grab_armfix.webp" $ camera.set(zoom=0.44, pos=(-305, -650), rotate=0, t=2.0) @@ -972,7 +972,7 @@ label hg_anal_sex_3: # Hermione Setup $ hermione.set_pose("CG_lean_back") - $ hermione.strip("all") + $ hermione.strip("clothes") hide hermione_main # Genie Setup @@ -1145,7 +1145,7 @@ label hg_anal_sex_3: gen "Well, you're about to find out!" $ hermione.set_pose("CG_bent_over") - $ hermione.strip("all") + $ hermione.strip("clothes") $ genie_doll = "grab" $ genie_doll_armfix = "images/CG/her_sex/grab_armfix.webp" $ camera.set(zoom=0.44, pos=(-305, -650), rotate=0, t=2.0) diff --git a/game/scripts/characters/hermione/events/favors/show_me_your_tits.rpy b/game/scripts/characters/hermione/events/favors/show_me_your_tits.rpy index e13ceb80..82481807 100644 --- a/game/scripts/characters/hermione/events/favors/show_me_your_tits.rpy +++ b/game/scripts/characters/hermione/events/favors/show_me_your_tits.rpy @@ -66,13 +66,13 @@ label hg_pf_admire_breasts: call her_walk("door", "base") if her_tier <= 1 and hg_pf_admire_breasts.points == 1: - her "........................" ("disgust", "narrow", "base", "down", cheeks="blush", xpos="right", flip=True, trans=d3) + her "........................" ("disgust", "narrow", "base", "down", cheeks="blush", xpos="far_right", flip=True, trans=d3) elif her_tier <= 2 and hg_pf_admire_breasts.points == 1: - her "(How humiliating... What have I become...?)" ("disgust", "narrow", "base", "down", cheeks="blush", xpos="right", flip=True, trans=d3) + her "(How humiliating... What have I become...?)" ("disgust", "narrow", "base", "down", cheeks="blush", xpos="far_right", flip=True, trans=d3) elif her_tier <= 2: - her "........................" ("disgust", "narrow", "base", "down", cheeks="blush", xpos="right", flip=True, trans=d3) + her "........................" ("disgust", "narrow", "base", "down", cheeks="blush", xpos="far_right", flip=True, trans=d3) elif her_tier <= 3 and hg_pf_admire_breasts.points == 1: - her "{size=-5}(That was so humiliating...){/size}" ("base", "narrow", "base", "up", cheeks="blush", xpos="right", flip=True, trans=d3) + her "{size=-5}(That was so humiliating...){/size}" ("base", "narrow", "base", "up", cheeks="blush", xpos="far_right", flip=True, trans=d3) her "{size=-5}(No, Hermione, you silly girl!){/size}" ("angry", "base", "angry", "mid", cheeks="blush") her "{size=-5}(We are doing this to protect the honour of our house!){/size}" ("angry", "base", "angry", "mid", cheeks="blush") her "................................." ("base", "narrow", "base", "up", cheeks="blush") diff --git a/game/scripts/characters/hermione/events/favors/talk_to_me.rpy b/game/scripts/characters/hermione/events/favors/talk_to_me.rpy index 8993d702..e131f9b6 100644 --- a/game/scripts/characters/hermione/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/hermione/events/favors/talk_to_me.rpy @@ -77,7 +77,7 @@ label hg_pf_talk_T1_intro_E1: call play_music("chipper_doodle") gen "Alright then..." ("base", xpos="far_left", ypos="head") - gen "Just tell me some news about you." ("base", xpos="far_left", ypos="head") + gen "Just tell me some news about yourself." ("base", xpos="far_left", ypos="head") her "*Ehm*... Alright..." ("open", "squint", "base", "mid") her "I just stand here and talk then...? Like this?" ("base", "squint", "base", "mid", xpos="mid", ypos="base", trans=fade) pause.8 @@ -96,7 +96,7 @@ label hg_pf_talk_T1_E1: call play_music("chipper_doodle") gen "Alright then..." ("base", xpos="far_left", ypos="head") - gen "Just tell me some news about you." ("base", xpos="far_left", ypos="head") + gen "Just tell me some more news about yourself." ("base", xpos="far_left", ypos="head") her "Here in the middle, right? I remember..." ("open", "squint", "base", "mid", xpos="mid", ypos="base", trans=fade) pause.8 diff --git a/game/scripts/characters/hermione/events/intro.rpy b/game/scripts/characters/hermione/events/intro.rpy index 1c4751f7..368a4f7f 100644 --- a/game/scripts/characters/hermione/events/intro.rpy +++ b/game/scripts/characters/hermione/events/intro.rpy @@ -122,7 +122,7 @@ label hermione_intro_E1: with hpunch gen "{size=+4}NO!{/size}" pause 1.0 - gen "Err...{w=0.5} I mean, no thank you dear child, it won't be necessary." + gen "*Err*...{w=0.5} I mean, no thank you dear child, it won't be necessary." her "If you say so, professor..." ("annoyed", "base", "worried", "L") her "*clears throat*" ("normal", "closed", "base", "mid") "\"................................\"": @@ -646,7 +646,7 @@ label ss_he_hermione_E2: sna "Oh, yes!" ("snape_34") gen "And she thinks that she is better than everyone else..." ("base", xpos="far_left", ypos="head") sna "Where are you going with this?" ("snape_44") - gen "Well, it seems like all of her power comes from her reputation..." ("base", xpos="far_left", ypos="head") + gen "Well, it seems like all of her power comes from her reputation and good grades..." ("base", xpos="far_left", ypos="head") sna "......................?" ("snape_39") gen "What if we take that away from her?" ("base", xpos="far_left", ypos="head") sna "That would shut her up I suppose..." ("snape_38") @@ -656,6 +656,8 @@ label ss_he_hermione_E2: sna "She is always way ahead of schedule..." ("snape_31") sna "Damn, how I hate it when she corrects me during my classes..." ("snape_08") sna "And thanks to her the Gryffindor house is way ahead of everybody else now..." ("snape_34") + sna "It's only a matter of time before they win the house cup..." ("snape_34") + gen "(Students fighting for imaginary points... That sure seems like a normal school.)" ("base", xpos="far_left", ypos="head") sna "Even Slytherin is no match for them this year..." ("snape_35") sna "........................" ("snape_43") sna "Dammit... I need more wine..." ("snape_34") @@ -679,7 +681,7 @@ label ss_he_hermione_E2: gen "Exactly!" ("base", xpos="far_left", ypos="head") sna "You're right! I can grade her tests unfairly! I could even persuade other teachers to do the same!" ("snape_02") sna "I could say that the order comes from you..." ("snape_02") - sna "And when the real Dumbledore shows up I will pretend that I had no idea that he was away..." ("snape_45") + sna "And when the real Dumbledore shows up, I will pretend that I had no idea that he was away..." ("snape_45") gen "Works for me." ("base", xpos="far_left", ypos="head") sna "*Err*..." ("snape_38") sna "This is still you, genie, right?" ("snape_38") @@ -806,7 +808,7 @@ label hermione_intro_E3: "\"There, there... It'll be alright.\"": her "No it won't! This is a catastrophe!" ("mad", "happyCl", "worried", "mid", tears="soft_blink") - her "And the worst part is that I think I might be the only one who failed..." ("angry", "base", "base", "mid", tears="soft") + her "And the worst part is that I think I might be the only one who failed... Well... {i}Almost{/i}" ("angry", "base", "base", "mid", tears="soft") her "How will this make me look?" ("angry", "base", "base", "mid", tears="soft") her "I will know for sure when we get the results though..." ("normal", "base", "base", "R", tears="soft") her "Yes, I'm sure everyone else failed as well..." ("soft", "base", "base", "R") @@ -1051,7 +1053,7 @@ label nt_he_hermione_E1: ton "Now that's surprising." ("annoyed", "base", "base", "R") gen "No he literally couldn't believe it... He thought I was lying at first." ("base", xpos="far_left", ypos="head") gen "Although after he stopped laughing like a maniac..." ("base", xpos="far_left", ypos="head") - gen "He did figure out quite quickly that the ministry probably wouldn't have sent a full fletched auror for something like this." ("base", xpos="far_left", ypos="head") + gen "He did figure out quite quickly that the ministry probably wouldn't have sent a full-fledged Auror for a minor case like this one." ("base", xpos="far_left", ypos="head") ton "Well, what can I say... I'm an open book." ("base", "happyCl", "base", "mid") ton "I'm sure you'll both find out the benefits of having me around soon enough..." ("horny", "narrow", "base", "R") gen "I'm sure..." ("base", xpos="far_left", ypos="head") @@ -1060,7 +1062,7 @@ label nt_he_hermione_E1: ton "Maybe I can be of help with her?" ("base", "base", "base", "mid") ton "I can be very convincing." ("horny", "narrow", "annoyed", "mid") gen "What are you suggesting?" ("base", xpos="far_left", ypos="head") - ton "To persuade her into having a try of it herself, for a start..." ("open", "base", "base", "R") + ton "To persuade her into giving it a try before being judgemental, for a start..." ("open", "base", "base", "R") ton "Convince her that trading favours isn't all bad." ("base", "base", "base", "mid") gen "That would indeed be very helpful. She's stubborn in that regard." ("base", xpos="far_left", ypos="head") ton "You don't have to tell me. She's been lecturing me about those \"sexual favours\" since the very day I got here..." ("upset", "base", "base", "R") @@ -1145,7 +1147,7 @@ label hermione_intro_E6: gen "What is it, miss Granger?" ("base", xpos="far_left", ypos="head") her "Well... *Ehm*." ("open", "base", "base", "mid") - if gryffindor < slytherin: + if not is_in_lead(gryffindor): her "You see... The Gryffindor house is not in the lead anymore..." ("open", "base", "worried", "R") else: her "You see... The Gryffindor house is struggling with points..." ("open", "base", "worried", "R") @@ -1164,6 +1166,8 @@ label hermione_intro_E6: $ renpy.music.set_pause(False, channel="music") $ renpy.music.set_volume(1.0, 1.0) + gen "(Way to go Tonks!)" ("grin", xpos="far_left", ypos="head") + menu: "\"You mean like a sexual favour?\"": her "*Ehm*... I'm not sure..." ("angry", "wink", "worried", "mid", emote="sweat") @@ -1431,20 +1435,20 @@ label hermione_intro_E6: with d3 if current_favor == "show_tongue": - her "{size=-4}(*Hmm*...){/size}" ("annoyed", "narrow", "worried", "down", ypos="head", flip=False, trans=d3) + her "{size=-4}(*Hmm*...){/size}" ("annoyed", "narrow", "worried", "down", xpos="far_right", ypos="head", flip=True, trans=d3) her "{size=-4}(Students show teachers their tongues all the time...){/size}" ("soft", "base", "base", "R") her "{size=-4}(Although that's usually when the teacher is not looking...){/size}" ("base", "narrow", "base", "R_soft") her "{size=-4}(But there is nothing wrong with what I did today...){/size}" ("annoyed", "base", "base", "L") her "{size=-4}(I earned my house extra points...){/size}" ("smile", "happyCl", "base", "mid") elif current_favor == "stand_there": - her "{size=-4}(I can just stand there and let the professor look at me...){/size}" ("annoyed", "base", "base", "R", ypos="head", flip=False, trans=d3) + her "{size=-4}(I can just stand there and let the professor look at me...){/size}" ("annoyed", "base", "base", "R", xpos="far_right", ypos="head", flip=True, trans=d3) her "{size=-4}(There is nothing wrong with that... nothing at all...){/size}" ("base", "closed", "base", "mid") elif current_favor == "silly_face": - her "{size=-4}(Stupid face...){/size}" ("silly", "base", "base", "squint", ypos="head", flip=False, trans=d3) + her "{size=-4}(Stupid face...){/size}" ("silly", "base", "base", "squint", xpos="far_right", ypos="head", flip=True, trans=d3) her "{size=-4}(Stupid face...){/size}" ("disgust", "happy", "base", "squint") her "{size=-4}(I need to practise this.){/size}" ("base", "happyCl", "base", "mid") elif current_favor == "bad_girl": - her "{size=-4}(I'm a bad girl...){/size}" ("angry", "base", "angry", "stare", ypos="head", flip=False, trans=d3) + her "{size=-4}(I'm a bad girl...){/size}" ("angry", "base", "angry", "stare", xpos="far_right", ypos="head", flip=True, trans=d3) her "{size=-4}(I am a very bad girl...){/size}" ("base", "base", "angry", "stare") her "{size=-4}(Yes, I can say things like that easily...){/size}" ("smile", "happyCl", "base", "mid") her "{size=-4}(I guess I'm a born actress...){/size}" ("base", "happyCl", "base", "mid") diff --git a/game/scripts/characters/hermione/events/items/butt_plugs.rpy b/game/scripts/characters/hermione/events/items/butt_plugs.rpy index ef69503e..94f09fa0 100644 --- a/game/scripts/characters/hermione/events/items/butt_plugs.rpy +++ b/game/scripts/characters/hermione/events/items/butt_plugs.rpy @@ -812,7 +812,7 @@ label hg_butt_plugs_medium_return: gen "And did you return the favour?" ("grin", xpos="far_left", ypos="head") if hg_pr_kiss.counter >= 1: - her "Err... maybe..." ("open", "happy", "base", "mid",cheeks="blush") + her "*Err*... maybe..." ("open", "happy", "base", "mid",cheeks="blush") gen "What did you do?" ("base", xpos="far_left", ypos="head") her "Well I don't want to say too much [genie_name]." ("base", "base", "base", "R",cheeks="blush") her "But after she saw what it was doing to me..." diff --git a/game/scripts/characters/hermione/events/items/collars.rpy b/game/scripts/characters/hermione/events/items/collars.rpy index c4a6df6e..9d8cf0b7 100644 --- a/game/scripts/characters/hermione/events/items/collars.rpy +++ b/game/scripts/characters/hermione/events/items/collars.rpy @@ -537,7 +537,7 @@ label whore_scene: #(locked behind public reputation and last sex event) $ renpy.sound.play("sounds/cloth_sound3.ogg") call nar(">While looking away, she strips down until standing butt naked in front of you, wearing nothing but the collar.") - $ hermione.strip("all") + $ hermione.strip("clothes") #call nar(">Throwing the collar to the floor she quickly walks over to your desk, then bends over and presents herself.") $ hermione.wear("neckwear") @@ -757,7 +757,7 @@ label slave_scene: $ renpy.sound.play("sounds/cloth_sound3.ogg") call nar(">Hermione takes off her clothes and bends over your desk, leaving herself bare.") - $ hermione.strip("all") + $ hermione.strip("clothes") $ hermione.wear("neckwear") call her_chibi_scene("sex_pause") @@ -1008,7 +1008,7 @@ label flasher_scene: her "Strip me--" ("open", "base", "base", "mid", cheeks="blush") $ renpy.play("sounds/flashbang.ogg") - $ hermione.strip("all") + $ hermione.strip("clothes") $ hermione.wear("neckwear") with flashbulb diff --git a/game/scripts/characters/hermione/events/items/vibrators.rpy b/game/scripts/characters/hermione/events/items/vibrators.rpy index 8c5fd557..5260be51 100644 --- a/game/scripts/characters/hermione/events/items/vibrators.rpy +++ b/game/scripts/characters/hermione/events/items/vibrators.rpy @@ -108,7 +108,7 @@ label hg_vibrators: else: gen "Oh wait, that's just some remaining residue from whoever used them previously." ("grin", xpos="far_left", ypos="head") her "Someone else has already used these?" ("open", "narrow", "base", "mid", cheeks="blush") - gen "Err... Of course not!" ("grin", xpos="far_left", ypos="head") + gen "*Err*... Of course not!" ("grin", xpos="far_left", ypos="head") her "If you say so..." ("base", "narrow", "base", "R", cheeks="blush") # Introduction (worn) @@ -194,10 +194,10 @@ label hg_vibrators: pause 1 if hermione.is_any_worn("bra", "panties"): #Removes eveything except bra or panties if she's wearing them (maybe this could be done differently) - $ hermione.strip("all") + $ hermione.strip("clothes") $ hermione.wear("bra", "panties") else: - $ hermione.strip("all") + $ hermione.strip("clothes") # Additional dialogue for lower levels (Optional) @@ -3460,8 +3460,6 @@ label hg_vibrators_public_return: # Strength was set to high before #Hermione is denied an orgasm, the boys doesn't notice. #Vagina is wet - play sound "sounds/click4.ogg" - play bg_sounds "sounds/vibrator_low.ogg" show her_vibrators_public eyes_clenched mouth_open as xray_child show her_vibrators_public_proxy eyes_clenched mouth_open as xray_overlay @@ -3576,6 +3574,9 @@ label hg_vibrators_public_return: show vibrator_interface vibration_low low_disabled + play sound "sounds/click4.ogg" + play bg_sounds "sounds/vibrator_low.ogg" + # Hermione does not reach orgasm. if _vibrator_last == "medium": # Strength was set to medium before. (worst ending) diff --git a/game/scripts/characters/hermione/events/potions/ass_expand.rpy b/game/scripts/characters/hermione/events/potions/ass_expand.rpy index 5bd68f50..44cc0dfa 100644 --- a/game/scripts/characters/hermione/events/potions/ass_expand.rpy +++ b/game/scripts/characters/hermione/events/potions/ass_expand.rpy @@ -302,7 +302,7 @@ label her_potion_ass_give: $ renpy.sound.play("sounds/cloth_sound3.ogg") $ hermione.strip("bottom", "panties") - $ hermione.strip("all") + $ hermione.strip("clothes") gen "Just from a potion that's meant to spank you a little!" ("base", xpos="far_left", ypos="head") @@ -325,12 +325,12 @@ label her_potion_ass_give: her "{size=+4}OW!!!{/size}" ("angry", "happyCl", "base", "mid", cheeks="blush") her "Where is that coming from??" ("angry", "squint", "base", "mid", cheeks="blush") - $ hermione.strip("all") + $ hermione.strip("clothes") gen "It appears the potion is working." ("base", xpos="far_left", ypos="head") her "It-- Hold on, is it--" ("angry", "wide", "base", "mid", cheeks="blush") - $ hermione.set_body(backside="big1") + $ hermione.equip(her_hips_ass1) $ renpy.sound.play("sounds/boing05.ogg") with d3 @@ -340,7 +340,7 @@ label her_potion_ass_give: gen "I assure you I had no idea [hermione_name], it was only meant to spank you a little." ("base", xpos="far_left", ypos="head") her "Then how come it's--" ("soft", "narrow", "annoyed", "down", cheeks="blush") - $ hermione.set_body(backside="big2") + $ hermione.equip(her_hips_ass2) $ renpy.sound.play("sounds/boing05.ogg") with d3 @@ -350,7 +350,7 @@ label her_potion_ass_give: gen "Well, it is an untested potion to be fair... You'll have to expect some side effects." ("base", xpos="far_left", ypos="head") her "Side effects? But you assured me this potion was--" ("clench", "narrow", "worried", "down", cheeks="blush") - $ hermione.set_body(backside="big3") + $ hermione.equip(her_hips_ass3) $ renpy.sound.play("sounds/boing04.ogg") with d3 @@ -386,7 +386,7 @@ label her_potion_ass_give: $ renpy.sound.play("sounds/cloth_sound3.ogg") $ hermione.strip("bottom", "panties") - $ hermione.strip("all") + $ hermione.strip("clothes") her "..." ("grin", "narrow", "base", "down", cheeks="blush") her "So, when will is it supposed to happen?" ("grin", "wink", "base", "mid", cheeks="blush") @@ -416,12 +416,12 @@ label her_potion_ass_give: her "{size=+4}*Ah*....{/size}" ("open_tongue", "narrow", "base", "up", cheeks="blush") her "What's doing this to me?" ("grin", "narrow", "base", "down", cheeks="blush") - $ hermione.strip("all") + $ hermione.strip("clothes") - gen "I don't... *Err.... I brewed it to do that!" ("base", xpos="far_left", ypos="head") + gen "I don't... *Err*.... I brewed it to do that!" ("base", xpos="far_left", ypos="head") her "You brewed it to-- I thought it was meant to make it--" ("disgust", "narrow", "base", "down", cheeks="blush") - $ hermione.set_body(backside="big1") + $ hermione.equip(her_hips_ass1) $ renpy.sound.play("sounds/boing05.ogg") with d3 @@ -434,7 +434,7 @@ label her_potion_ass_give: gen "You underestimate me, girl..." ("base", xpos="far_left", ypos="head") her "What do you--" ("soft", "narrow", "base", "down", cheeks="blush") - $ hermione.set_body(backside="big2") + $ hermione.equip(her_hips_ass2) $ renpy.sound.play("sounds/boing05.ogg") with d3 @@ -445,7 +445,7 @@ label her_potion_ass_give: gen "Well you expected wrong... We're not done yet, [hermione_name]." ("base", xpos="far_left", ypos="head") her "We're--" ("mad", "base", "base", "mid", cheeks="blush") - $ hermione.set_body(backside="big3") + $ hermione.equip(her_hips_ass3) $ renpy.sound.play("sounds/boing04.ogg") with d3 @@ -478,7 +478,7 @@ label her_potion_ass_give: $ hermione.strip("bottom", "panties") pause .5 - $ hermione.strip("all") + $ hermione.strip("clothes") gen "Now let's wait and see..." ("base", xpos="far_left", ypos="head") else: #Not wearing top, bra, bottom or panties @@ -499,7 +499,7 @@ label her_potion_ass_give: gen "It's that sensitive?" ("base", xpos="far_left", ypos="head") her "*Ehm*... Yes..." ("angry", "narrow", "base", "down", cheeks="blush") gen "Alright then... Go ahead..." ("base", xpos="far_left", ypos="head") - $ hermione.strip("all") + $ hermione.strip("clothes") her "This potions sure is taking its time..." ("angry", "narrow", "base", "down", cheeks="blush") gen "Patience, [hermione_name]... We'll see the effects kicking in soon enough..." ("base", xpos="far_left", ypos="head") gen "..." ("base", xpos="far_left", ypos="head") @@ -516,7 +516,7 @@ label her_potion_ass_give: call nar(">You start to notice Hermione's ass increase in size.") - $ hermione.set_body(backside="big1") + $ hermione.equip(her_hips_ass1) $ renpy.sound.play("sounds/boing05.ogg") with d3 @@ -525,7 +525,7 @@ label her_potion_ass_give: gen "I think you look great!" ("grin", xpos="far_left", ypos="head") her "If only this was as big as it's going to--" ("annoyed", "narrow", "worried", "down", cheeks="blush") - $ hermione.set_body(backside="big2") + $ hermione.equip(her_hips_ass2) $ renpy.sound.play("sounds/boing05.ogg") with d3 @@ -535,7 +535,7 @@ label her_potion_ass_give: gen "As in there's even more of you now." ("grin", xpos="far_left", ypos="head") her "I understood what you--" ("disgust", "narrow", "annoyed", "down", cheeks="blush") - $ hermione.set_body(backside="big3") + $ hermione.equip(her_hips_ass3) $ renpy.sound.play("sounds/boing04.ogg") with d3 @@ -552,7 +552,7 @@ label her_potion_ass_give: gen "Perhaps." ("base", xpos="far_left", ypos="head") her "I figured..." ("angry", "narrow", "base", "R", cheeks="blush") - $ hermione.set_body(backside="big1") + $ hermione.equip(her_hips_ass1) $ renpy.sound.play("sounds/boing05.ogg") with d3 @@ -561,7 +561,7 @@ label her_potion_ass_give: her "I guess..." ("base", "closed", "base", "mid", cheeks="blush") her "So when is it supposed to start--" ("open", "squint", "base", "mid", cheeks="blush") - $ hermione.set_body(backside="big2") + $ hermione.equip(her_hips_ass2) $ renpy.sound.play("sounds/boing05.ogg") with d3 @@ -577,7 +577,7 @@ label her_potion_ass_give: gen "Disappointed, [hermione_name]?" ("base", xpos="far_left", ypos="head") her "No, I was just expecting it to--" ("angry", "base", "base", "mid", cheeks="blush") - $ hermione.set_body(backside="big3") + $ hermione.equip(her_hips_ass3) $ renpy.sound.play("sounds/boing04.ogg") with d3 @@ -821,7 +821,7 @@ label her_potion_ass_give: gen "{cps=3}...{/cps}" ("base", xpos="far_left", ypos="head") gen "No buts next time, got it." ("base", xpos="far_left", ypos="head") - $ hermione.set_body(backside=None) + $ hermione.unequip("hips") $ her_ass_expand_drank = True $ her_ass_expand_finger = True $ her_ass_expand_no_clothes = False #Took off main clothing check reset @@ -1024,7 +1024,7 @@ label her_potion_ass_give: $ her_ass_expand_drank = True $ her_ass_expand_finger = True $ her_ass_expand_no_clothes = False #Took off main clothing check reset - $ hermione.set_body(backside=None) + $ hermione.unequip("hips") jump end_hermione_event "-Let go of her-": @@ -1048,12 +1048,12 @@ label her_potion_ass_give: show screen blkfade with d5 - $ hermione.set_body(backside="big2") + $ hermione.equip(her_hips_ass2) call nar(">As Hermione's straightens her back you watch as her ass begins shrinking in size.") call nar(">With a short sigh, she then walk up to the front of your desk.") - $ hermione.set_body(backside="big1") + $ hermione.equip(her_hips_ass1) call her_chibi("stand","desk","base", flip=False) call gen_chibi("sit_behind_desk") @@ -1062,7 +1062,7 @@ label her_potion_ass_give: hide screen blkfade with d5 - $ hermione.set_body(backside=None) + $ hermione.unequip("hips") her "So, is that it [genie_name]?" ("open", "squint", "base", "R", cheeks="blush", xpos="base", ypos="base", flip=False, trans=d3) if her_whoring < 19: diff --git a/game/scripts/characters/hermione/events/potions/breast_expand.rpy b/game/scripts/characters/hermione/events/potions/breast_expand.rpy index 08e802f7..f826839b 100644 --- a/game/scripts/characters/hermione/events/potions/breast_expand.rpy +++ b/game/scripts/characters/hermione/events/potions/breast_expand.rpy @@ -427,7 +427,7 @@ label her_potion_breasts_give: call ctc - $ hermione.set_body(breasts="big1") + $ hermione.equip(her_chest_breasts1) $ renpy.sound.play("sounds/boing02.ogg") with d3 @@ -439,7 +439,7 @@ label her_potion_breasts_give: gen "Maybe it takes a while for it to take full effect." ("base", xpos="far_left", ypos="head") her "A lot bigger? How big are they supposed to--" ("clench", "squint", "base", "mid") - $ hermione.set_body(breasts="big2") + $ hermione.equip(her_chest_breasts1) $ renpy.sound.play("sounds/boing02.ogg") with d3 @@ -488,7 +488,7 @@ label her_potion_breasts_give: call ctc - $ hermione.set_body(breasts="big1") + $ hermione.equip(her_chest_breasts1) $ renpy.sound.play("sounds/boing02.ogg") with d3 @@ -501,7 +501,7 @@ label her_potion_breasts_give: gen "Can't have too much of a good thing." ("base", xpos="far_left", ypos="head") her "That's not--" ("open", "narrow", "base", "mid", cheeks="blush") - $ hermione.set_body(breasts="big2") + $ hermione.equip(her_chest_breasts2) $ renpy.sound.play("sounds/boing02.ogg") with d3 @@ -566,7 +566,7 @@ label her_potion_breasts_give: call nar (">Hermione's breasts expand as the potion spreads through her body.") - $ hermione.set_body(breasts="big1") + $ hermione.equip(her_chest_breasts1) $ renpy.sound.play("sounds/boing02.ogg") with d3 @@ -578,7 +578,7 @@ label her_potion_breasts_give: her "... Oh, thank Merlin..." ("angry", "narrow", "base", "down", cheeks="blush") her "I was readying myself for them to get even--" ("angry", "narrow", "worried", "down", cheeks="blush") - $ hermione.set_body(breasts="big2") + $ hermione.equip(her_chest_breasts2) $ renpy.sound.play("sounds/boing02.ogg") with d3 pause .5 @@ -625,7 +625,7 @@ label her_potion_breasts_give: her "*Mmm*...{w=0.4} What...{w=0.4} What's that supposed to mean?" ("smile", "narrow", "base", "stare", cheeks="blush") call nar (">Hermione's breasts bounces slightly as the potion spreads through her body.") - $ hermione.set_body(breasts="big1") + $ hermione.equip(her_chest_breasts1) $ renpy.sound.play("sounds/boing02.ogg") with d3 @@ -635,7 +635,7 @@ label her_potion_breasts_give: her "Although... Are they not supposed to get bigger?" ("open", "narrow", "base", "down", cheeks="blush") gen "Well..." ("base", xpos="far_left", ypos="head") - $ hermione.set_body(breasts="big2") + $ hermione.equip(her_chest_breasts2) $ renpy.sound.play("sounds/boing02.ogg") with d3 @@ -740,7 +740,7 @@ label her_potion_breasts_give: $ renpy.sound.play("sounds/boing04.ogg") with vpunch - $ hermione.set_body(breasts="big3") + $ hermione.equip(her_chest_breasts2) with d3 @@ -775,7 +775,7 @@ label her_potion_breasts_give: $ renpy.sound.play("sounds/boing04.ogg") with vpunch - $ hermione.set_body(breasts="big3") + $ hermione.equip(her_chest_breasts2) her "Aaaah!!!" ("scream", "wide", "base", "stare", cheeks="blush") with d3 @@ -1017,8 +1017,7 @@ label her_potion_breasts_give: $ her_breast_expand_groped = True $ her_breast_expand_drank = True $ her_breast_expand_effects_known = True - - $ hermione.set_body(breasts="normal") + $ hermione.unequip("chest") jump end_hermione_event 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 49f79e74..e6c7339d 100644 --- a/game/scripts/characters/hermione/events/requests/flash_your_tits.rpy +++ b/game/scripts/characters/hermione/events/requests/flash_your_tits.rpy @@ -69,7 +69,7 @@ label hg_pr_flash: her "I am getting paid for this, am I not?" ("base", "narrow", "base", "mid_soft") gen "Of course." ("base", xpos="far_left", ypos="head") her "Why would I complain about a simple task like this then?" ("open", "closed", "base", "mid") - her "{number=current_payout} house points is a fair prices for a few seconds of excitement... err..." + her "{number=current_payout} house points is a fair prices for a few seconds of excitement... *Err*..." her "... I mean, embarrassment." ("base", "happyCl", "base", "mid") gen "{size=-3}(She changed this much already?){/size}" ("base", xpos="far_left", ypos="head") gen "{size=-3}(I'm so good at this training thing that it's starting to get creepy!){/size}" ("grin", xpos="far_left", ypos="head") @@ -260,7 +260,7 @@ label hg_pr_flash_T3_E2: with d5 her "We were suddenly interrupted by the sounds of the other Hufflepuff students footsteps around the corner." - her "So, before even got to properly take in his reaction, I had to put my clothes back into place, and quickly." + her "So, before even getting the chance to properly take in his reaction, I had to put my clothes back into place, and quickly." show her_flash_public npc_pose3 hermione_pose3 eyes_clenched mouth_soft as cg with d5 diff --git a/game/scripts/characters/hermione/events/requests/give_a_blowjob.rpy b/game/scripts/characters/hermione/events/requests/give_a_blowjob.rpy index d9e65084..a73b6c94 100644 --- a/game/scripts/characters/hermione/events/requests/give_a_blowjob.rpy +++ b/game/scripts/characters/hermione/events/requests/give_a_blowjob.rpy @@ -336,7 +336,7 @@ label hg_pr_blowjob_T6_E3: her "How embarrassing..." ("base", "narrow", "base", "mid_soft") her "That thing at the boy's restroom sort of escalated I suppose..." her "Before I knew what happened I was surrounded with hard throbbing cocks..." - her "Oh... Just talking about it makes me shiver with excitement... *err*.." ("silly", "narrow", "base", "dead") + her "Oh... Just talking about it makes me shiver with excitement... *Err*.." ("silly", "narrow", "base", "dead") her "... I mean, with fear... no, not fear..." ("grin", "narrow", "annoyed", "up") her "Embarrassment...? No, that's not it... *Hmm*..." ("base", "base", "base", "R", cheeks="blush") gen "Are you asking me?" ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/hermione/events/requests/give_a_handjob.rpy b/game/scripts/characters/hermione/events/requests/give_a_handjob.rpy index 383ede76..3138b883 100644 --- a/game/scripts/characters/hermione/events/requests/give_a_handjob.rpy +++ b/game/scripts/characters/hermione/events/requests/give_a_handjob.rpy @@ -509,7 +509,7 @@ label hg_pr_handjob_T6_intro_E1: gen "A handjob, *huh*? Are you sure that was all you did?" ("base", xpos="far_left", ypos="head") her "[genie_name]?" ("angry", "base", "base", "mid", tears="soft") gen "There is something in your hair..." ("base", xpos="far_left", ypos="head") - her "What? But I swallowed it all... err..." ("soft", "base", "base", "mid", tears="soft") + her "What? But I swallowed it all... *Err*..." ("soft", "base", "base", "mid", tears="soft") her "I mean..." ("clench", "base", "worried", "mid", cheeks="blush", tears="soft") her "*Sigh*" ("shock", "base", "base", "R", cheeks="blush", tears="soft") her "... I sucked him off, [genie_name]." diff --git a/game/scripts/characters/hermione/events/requests/kiss_a_girl.rpy b/game/scripts/characters/hermione/events/requests/kiss_a_girl.rpy index 861aa318..a568207e 100644 --- a/game/scripts/characters/hermione/events/requests/kiss_a_girl.rpy +++ b/game/scripts/characters/hermione/events/requests/kiss_a_girl.rpy @@ -472,7 +472,7 @@ label hg_pr_kiss_T5_E2: her "And Ginny returned my kiss with such passion..." ("base", "narrow", "base", "mid_soft") her "that we sort of ended up doing more than just kissing..." gen "And afterwards you had a pillow fight in lingerie?" ("grin", xpos="far_left", ypos="head") - her "Err... No..." ("open", "happy", "base", "mid", cheeks="blush") + her "*Err*... No..." ("open", "happy", "base", "mid", cheeks="blush") gen "What did you do then?" ("base", xpos="far_left", ypos="head") her "I am not telling you, [genie_name]." ("base", "base", "base", "R", cheeks="blush") # :) her "You sent me out to kiss a girl..." diff --git a/game/scripts/characters/hermione/events/tutoring.rpy b/game/scripts/characters/hermione/events/tutoring.rpy index 49369a05..ee484cfd 100644 --- a/game/scripts/characters/hermione/events/tutoring.rpy +++ b/game/scripts/characters/hermione/events/tutoring.rpy @@ -57,6 +57,7 @@ label hg_tutor_start: gen "(I have taught her everything there was to teach.)" ("base", xpos="far_left", ypos="head") else: gen "(She's not ready for her next lesson yet.)" ("base", xpos="far_left", ypos="head") + gen "(I should ask her for some favours first.)" ("base", xpos="far_left", ypos="head") jump hermione_requests @@ -175,7 +176,7 @@ label hg_tutor_E2: gen "Miss Granger, time for your first lesson." ("base", xpos="far_left", ypos="head") her "Yes, professor." ("soft", "base", "base", "R") gen "Have you thought about what we discussed?" ("base", xpos="far_left", ypos="head") - her "Not really, I'm not sure what you mean by \"emotions\"." ("normal", "base", "base", "mid") + her "Not really, I'm not sure what you meant by increasing magic ability through \"emotions\"." ("normal", "base", "base", "mid") gen "{size=-2}(You'll learn soon enough, girl.){/size}" ("grin", xpos="far_left", ypos="head") gen "For example, what was your state of mind when you heard those rumours about the Slytherin girls?" ("base", xpos="far_left", ypos="head") her "Please don't bring that up, sir! it really makes me mad!" ("clench", "base", "worried", "stare") @@ -193,7 +194,7 @@ label hg_tutor_E2: gen "Knowledge, Miss Granger, knowledge..." ("base", xpos="far_left", ypos="head") her "I am by far the most knowledgeable of my peers, professor. What more can you ask?" ("open", "closed", "base", "mid") gen "......{w=0.5}Miss Granger, did we not discuss this already? You need to accept you still have much to learn." ("base", xpos="far_left", ypos="head") - gen "I'm tired if repeating myself, let's finish it for tonight." ("base", xpos="far_left", ypos="head") + gen "I'm tired of repeating myself, let's finish it for tonight." ("base", xpos="far_left", ypos="head") her "What? So soon?" ("open", "narrow", "annoyed", "mid") gen "There are other students requiring my attention, you're not the only one." ("base", xpos="far_left", ypos="head") her "Don't tell me you're planning on tutoring one of those harlots from Slytherin, professor?" ("normal", "narrow", "annoyed", "mid", cheeks="blush") @@ -210,8 +211,9 @@ label hg_tutor_E2: call her_walk("door", "base") - her "{size=-4}(Filthy whores...){/size}" ("angry", "closed", "angry", "mid", cheeks="blush", ypos="head", flip=False, trans=d3) - her "{size=-4}(Oh, I should not talk like that...{w=0.5} but it feels so good!){/size}" ("base", "happyCl", "worried", "mid", cheeks="blush") + her "{size=-4}(Filthy whores...){/size}" ("angry", "closed", "angry", "mid", cheeks="blush", xpos="far_right", ypos="head", flip=True, trans=d3) + her "{size=-4}(Oh, I should not talk like that...{w=0.5} but it feels good to let my emotions out!){/size}" ("base", "happyCl", "worried", "mid", cheeks="blush") + her "{size=-4}(Maybe professor is onto something, after all...){/size}" ("soft", "base", "base", "R", cheeks="blush") call her_chibi("leave") @@ -250,7 +252,7 @@ label hg_tutor_E3: call her_walk("door", "base") - her "{size=-4}(*Hmm*... I wonder what he {b}was{/b} thinking about.){/size}" ("base", "narrow", "base", "down", cheeks="blush", ypos="head", flip=False, trans=d3) + her "{size=-4}(*Hmm*... I wonder what he {b}was{/b} thinking about.){/size}" ("base", "narrow", "base", "down", cheeks="blush", xpos="far_right", ypos="head", flip=True, trans=d3) her "{size=-4}(Probably all the problems caused by those harlots.){/size}" ("base", "narrow", "base", "mid_soft", cheeks="blush") her "{size=-4}(Well, I will never be like them, so no need to worry.){/size}" ("silly", "narrow", "base", "mid_soft", cheeks="blush") @@ -1054,7 +1056,7 @@ label hg_tutor_E10: if hermione.is_any_worn("clothes"): gen "Get rid off the rest of your silly attire." ("base", xpos="far_left", ypos="head") - $ hermione.strip("all") + $ hermione.strip("clothes") ### Milestone ### $ hg_masturbated.triggered() @@ -1803,7 +1805,7 @@ label hg_tutor_E14: #call set_her_action("naked") #call set_her_action("hold_book") - $ hermione.strip("all") + $ hermione.strip("clothes") call her_chibi_scene("lie_on_desk") hide screen bld1 diff --git a/game/scripts/characters/hermione/wardrobe.rpy b/game/scripts/characters/hermione/wardrobe.rpy index 9b424925..ba3ea99f 100644 --- a/game/scripts/characters/hermione/wardrobe.rpy +++ b/game/scripts/characters/hermione/wardrobe.rpy @@ -2,100 +2,65 @@ ## Character ## ############### -default hermione = Doll(name="hermione", - clothes={"headgear": [None, 15, True], - "hair": [None, 4, True], - "glasses": [None, 12, True], - "earrings": [None, 14, True], - "neckwear": [None, 16, True], - "robe": [None, 22, True], - "gloves": [None, 14, True], - "top": [None, 15, True], - "bra": [None, 9, True], - "bottom": [None, 8, True], - "garterbelt": [None, 7, True], - "panties": [None, 6, True], - "stockings": [None, 5, True], - "buttplug": [None, -1, True], - "pubes": [None, 3, True], - "footwear": [None, 6, True], - "tattoo0": [None, 1, True], - "tattoo1": [None, 1, True], - "tattoo2": [None, 1, True], - "tattoo3": [None, 1, True], - "tattoo4": [None, 1, True], - "piercing0": [None, 2, True], - "piercing1": [None, 2, True], - "piercing2": [None, 2, True], - "piercing3": [None, 2, True], - "piercing4": [None, 2, True], - "accessory0": [None, 12, True], - "accessory1": [None, 12, True], - "accessory2": [None, 12, True], - "accessory3": [None, 12, True], - "accessory4": [None, 12, True], - "makeup0": [None, 3, True], - "makeup1": [None, 3, True], - "makeup2": [None, 3, True], - "makeup3": [None, 3, True], - "makeup4": [None, 3, True]}, - face={"tears": [None, 12, True], - "cheeks": [None, 7, True], - "eyebrows": ["base", 11, True], - "eyes": ["base", 8, True], - "pupils": ["mid", 9, True], - "mouth": ["base", 13, True]}, - body={"armleft": ["down", 3], - "armright":["down", -1], - "base": ["front", 0], - "breasts": ["normal", 2], - "backside": [None, 1]} - ) +default hermione = Doll(name="hermione") -############### -## Hair ## -############### +default her_frame_default = DollBodypart("hermione", ("hidden", "frame"), "frame", "default") +default her_body_default = DollOutfit([her_frame_default], hidden=True) -default her_hair_base = DollCloth("hermione", ("head", "hair"), "hair", "base", [[152, 89, 48, 255], [195, 137, 89, 255], [230, 141, 32, 255]], unlocked=True) +########## +## Hair ## +########## -################ -## Schoolgirl ## -################ +default her_hair_base = DollCloth("hermione", ("head", "hair"), "hair", "base", ["#985930ff", "#c38959ff", "#e68d20ff"], unlocked=True) -default her_footwear_shoes = DollClothDummy("hermione", type="footwear") -default her_top_school1 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_1", [[183, 183, 184, 255], [109, 105, 121, 255], [167, 77, 42, 255], [237, 179, 14, 255]], unlocked=True) -default her_top_school2 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_2", [[183, 183, 184, 255], [109, 105, 121, 255], [167, 77, 42, 255], [237, 179, 14, 255]], unlocked=True) -default her_top_school3 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_3", [[183, 183, 184, 255], [167, 77, 42, 255], [237, 179, 14, 255]], unlocked=True) -default her_top_school4 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_4", [[183, 183, 184, 255], [167, 77, 42, 255], [237, 179, 14, 255]], unlocked=True, level=4) -default her_top_school5 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_5", [[183, 183, 184, 255], [167, 77, 42, 255], [237, 179, 14, 255]], unlocked=True, level=10) -default her_top_school6 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_6", [[109, 105, 121, 255], [167, 77, 42, 255], [237, 179, 14, 255]], unlocked=True, level=10) -default her_top_school7 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_7", [[183, 183, 184, 255], [167, 77, 42, 255], [237, 179, 14, 255]], unlocked=True, level=13) -default her_bottom_school1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "school_skirt_1", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True) -default her_bottom_school2 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "school_skirt_2", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True, level=4) -default her_bottom_school3 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "school_skirt_3", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True, level=10) -default her_bottom_school4 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "school_skirt_4", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True, level=19) -default her_stockings_base1 = DollCloth("hermione", ("legwear", "socks"), "stockings", "stockings_1", [[219, 165, 13, 255], [146, 63, 30, 255]], unlocked=True) -default her_panties_base1 = DollCloth("hermione", ("lower undergarment", "panties"), "panties", "basic_panties_1", [[232, 232, 232, 255], [202, 60, 1, 255]], unlocked=True) -default her_bra_base1 = DollCloth("hermione", ("upper undergarment", "bras"), "bra", "basic_bra_1", [[232, 232, 232, 255], [202, 60, 1, 255]], unlocked=True) -default her_robe_school_1 = DollCloth("hermione", ("upper body", "robes"), "robe", "robe_school_1", [[96, 96, 96, 255], [206, 206, 209, 255], [167, 77, 42, 255]], unlocked=True, level=0) -default her_robe_school_2 = DollCloth("hermione", ("upper body", "robes"), "robe", "robe_school_2", [[96, 96, 96, 255], [206, 206, 209, 255], [167, 77, 42, 255]], unlocked=True, level=4) -default her_robe_school_3 = DollCloth("hermione", ("upper body", "robes"), "robe", "robe_school_3", [[96, 96, 96, 255], [206, 206, 209, 255], [167, 77, 42, 255]], unlocked=True, level=10) -default her_robe_school_4 = DollCloth("hermione", ("upper body", "robes"), "robe", "robe_school_4", [[96, 96, 96, 255], [206, 206, 209, 255], [167, 77, 42, 255]], unlocked=True, level=13) +####################### +## Schoolgirl Outfit ## +####################### -default her_accessory_house_emblem = DollCloth("hermione", ("misc", "accessory"), "accessory0", "house_emblem", [[167, 77, 42, 255], [237, 179, 14, 255]], zorder=16, unlocked=True) -default her_accessory4_reading_glasses = DollCloth("hermione", ("head", "glasses"), "glasses", "reading_glasses", [[240, 240, 241, 255]], unlocked=True) -default her_accessory4_vintage_glasses = DollCloth("hermione", ("head", "glasses"), "glasses", "vintage_glasses", [[255, 255, 255, 50], [36, 36, 36, 255], [116, 116, 116, 255]], unlocked=True, zorder=3) +default her_top_school1 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_1", ["#b7b7b8ff", "#6d6979ff", "#a74d2aff", "#edb30eff"], unlocked=True) +default her_top_school2 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_2", ["#b7b7b8ff", "#6d6979ff", "#a74d2aff", "#edb30eff"], unlocked=True) +default her_top_school3 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_3", ["#b7b7b8ff", "#a74d2aff", "#edb30eff"], unlocked=True) +default her_top_school4 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_4", ["#b7b7b8ff", "#a74d2aff", "#edb30eff"], unlocked=True, level=4) +default her_top_school5 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_5", ["#b7b7b8ff", "#a74d2aff", "#edb30eff"], unlocked=True, level=10) +default her_top_school6 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_6", ["#6d6979ff", "#a74d2aff", "#edb30eff"], unlocked=True, level=10) +default her_top_school7 = DollCloth("hermione", ("upper body", "shirts"), "top", "top_school_7", ["#b7b7b8ff", "#a74d2aff", "#edb30eff"], unlocked=True, level=13) + +default her_bottom_school1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "school_skirt_1", ["#675a6cff", "#e8b10dff"], unlocked=True) +default her_bottom_school2 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "school_skirt_2", ["#675a6cff", "#e8b10dff"], unlocked=True, level=4) +default her_bottom_school3 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "school_skirt_3", ["#675a6cff", "#e8b10dff"], unlocked=True, level=10) +default her_bottom_school4 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "school_skirt_4", ["#675a6cff", "#e8b10dff"], unlocked=True, level=19) + +default her_stockings_base1 = DollCloth("hermione", ("legwear", "socks"), "stockings", "stockings_1", ["#dba50dff", "#923f1eff"], unlocked=True) + +default her_panties_base1 = DollCloth("hermione", ("lower undergarment", "panties"), "panties", "basic_panties_1", ["#e8e8e8ff", "#ca3c01ff"], unlocked=True) +default her_bra_base1 = DollCloth("hermione", ("upper undergarment", "bras"), "bra", "basic_bra_1", ["#e8e8e8ff", "#ca3c01ff"], unlocked=True) + +default her_robe_school_1 = DollCloth("hermione", ("upper body", "robes"), "robe", "robe_school_1", ["#606060ff", "#ceced1ff", "#a74d2aff"], unlocked=True, level=0) +default her_robe_school_2 = DollCloth("hermione", ("upper body", "robes"), "robe", "robe_school_2", ["#606060ff", "#ceced1ff", "#a74d2aff"], unlocked=True, level=4) +default her_robe_school_3 = DollCloth("hermione", ("upper body", "robes"), "robe", "robe_school_3", ["#606060ff", "#ceced1ff", "#a74d2aff"], unlocked=True, level=10) +default her_robe_school_4 = DollCloth("hermione", ("upper body", "robes"), "robe", "robe_school_4", ["#606060ff", "#ceced1ff", "#a74d2aff"], unlocked=True, level=13) default her_outfit_default = DollOutfit([her_hair_base, her_top_school1, her_bottom_school1, her_panties_base1, her_bra_base1, her_stockings_base1], unlocked=True) default her_outfit_default_no_vest = DollOutfit([her_hair_base, her_top_school3, her_bottom_school1, her_panties_base1, her_bra_base1, her_stockings_base1], hidden=True) default her_outfit_default_no_tie_open_shirt = DollOutfit([her_hair_base, her_top_school5, her_bottom_school1, her_panties_base1, her_bra_base1, her_stockings_base1], hidden=True) default her_outfit_last = DollOutfit([her_hair_base], hidden=True) +####################### +## Slutty Schoolgirl ## +####################### + +default her_top_slutty1 = DollCloth("hermione", ("upper body", "sweaters"), "top", "open_top_1", ["#b7b7b8ff", "#6d6979ff", "#a74d2aff", "#edb30eff"], level=19) +default her_bottom_slutty1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "open_skirt_1", ["#675a6cff"], level=19) +default her_stockings_slutty = DollCloth("hermione", ("legwear", "stockings"), "stockings", "stockings_2", ["#aaaaaaff"], level=4) + +default her_outfit_slutty_schoolgirl = DollOutfit([her_hair_base, her_top_slutty1, her_bottom_slutty1, her_stockings_slutty], price=500, name="Slutty Schoolgirl Outfit", desc="An arguably better version of the regular school outfit.") + ######################## ## Rave Bikini Outfit ## ######################## -default her_panties_bikini1 = DollCloth("hermione", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1", [[138, 0, 0, 255], [252, 135, 0, 255]], level=18) -default her_bra_bikini1 = DollCloth("hermione", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1", [[138, 0, 0, 255], [252, 135, 0, 255]], level=18) + +default her_panties_bikini1 = DollCloth("hermione", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1", ["#8a0000ff", "#fc8700ff"], level=18) +default her_bra_bikini1 = DollCloth("hermione", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1", ["#8a0000ff", "#fc8700ff"], level=18) default her_outfit_bikini1 = DollOutfit([her_hair_base, her_panties_bikini1, her_bra_bikini1], price=350, name="Rave Bikini Set", desc="A Bunch of straps for a bunch of gold!") @@ -103,16 +68,16 @@ default her_outfit_bikini1 = DollOutfit([her_hair_base, her_panties_bikini1, her ## Leather Bikini Outfit ## ########################### -default her_panties_bikini2 = DollCloth("hermione", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_2", [[55, 55, 55, 255], [197, 142, 35, 255]], level=16) -default her_bra_bikini2 = DollCloth("hermione", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_2", [[55, 55, 55, 255], [197, 142, 35, 255]], level=16) +default her_panties_bikini2 = DollCloth("hermione", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_2", ["#373737ff", "#c58e23ff"], level=16) +default her_bra_bikini2 = DollCloth("hermione", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_2", ["#373737ff", "#c58e23ff"], level=16) default her_outfit_bikini2 = DollOutfit([her_hair_base, her_panties_bikini2, her_bra_bikini2], price=350, name="Leathered Bikini Set", desc="Emits a slight squeaking sound when rubbed.") ######################### ## Sling Bikini Outfit ## ######################### -default her_panties_bikini3 = DollCloth("hermione", ("lower undergarment", "bikini panties"), "panties", "sling_panties", [[48, 69, 164, 255], [212, 164, 32, 255]], level=17) -default her_bra_bikini3 = DollCloth("hermione", ("upper undergarment", "bikini bras"), "bra", "sling_bra", [[48, 69, 164, 255], [212, 164, 32, 255]], level=17) +default her_panties_bikini3 = DollCloth("hermione", ("lower undergarment", "bikini panties"), "panties", "sling_panties", ["#3045a4ff", "#d4a420ff"], level=17) +default her_bra_bikini3 = DollCloth("hermione", ("upper undergarment", "bikini bras"), "bra", "sling_bra", ["#3045a4ff", "#d4a420ff"], level=17) default her_outfit_bikini3 = DollOutfit([her_hair_base, her_panties_bikini3, her_bra_bikini3], price=350, name="Sling Bikini Set", desc="Slingshot your dignity with one simple trick.") @@ -120,55 +85,67 @@ default her_outfit_bikini3 = DollOutfit([her_hair_base, her_panties_bikini3, her ## Maid Outfit ## ################# -default her_top_maid1 = DollCloth("hermione", ("upper body", "dresses"), "top", "maid_dress_1", [[40, 51, 61, 255], [236, 243, 244, 255], [53, 63, 84, 255]], level=4) -default her_stockings_maid1 = DollCloth("hermione", ("legwear", "socks"), "stockings", "maid_stockings_1", [[53, 33, 30, 255]], level=4) -default her_hat_maid1 = DollCloth("hermione", ("head", "headgear"), "headgear", "maid_hat_1", [[236, 243, 244, 255]], level=4) -default her_neckwear_maid1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "maid_choker_1", [[40, 51, 61, 255], [236, 243, 244, 255]], level=4) -default her_neckwear_maid2 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "maid_choker_2", [[236, 243, 244, 255]], level=4) -default her_gloves_maid1 = DollCloth("hermione", ("upper body", "gloves"), "gloves", "maid_gloves_1", [[40, 51, 61, 255], [236, 243, 244, 255], [53, 63, 84, 255]], level=4) +default her_top_maid1 = DollCloth("hermione", ("upper body", "dresses"), "top", "maid_dress_1", ["#28333dff", "#ecf3f4ff", "#353f54ff"], level=4) +default her_stockings_maid1 = DollCloth("hermione", ("legwear", "socks"), "stockings", "maid_stockings_1", ["#35211eff"], level=4) +default her_hat_maid1 = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "maid_hat_1", ["#ecf3f4ff"], level=4, tracking="?hair") +default her_neckwear_maid1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "maid_choker_1", ["#28333dff", "#ecf3f4ff"], level=4) +default her_neckwear_maid2 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "maid_choker_2", ["#ecf3f4ff"], level=4) +default her_gloves_maid1 = DollCloth("hermione", ("upper body", "gloves"), "gloves", "maid_gloves_1", ["#28333dff", "#ecf3f4ff", "#353f54ff"], level=4) default her_outfit_maid = DollOutfit([her_hair_base, her_top_maid1, her_stockings_maid1, her_hat_maid1, her_neckwear_maid1, her_gloves_maid1, her_panties_base1, her_bra_base1], addons=[her_neckwear_maid2], price=450, name="French Maid Costume", desc="A classic Maid Outfit for a classy Witch.") ################## -## Poker Outfit ## +## Poker Outfit ## # Unlockable with Tokens only ################## -default her_hat_poker1 = DollCloth("hermione", ("head", "headgear"), "headgear", "poker_hat_1", [[26, 26, 35, 255], [232, 232, 232, 255], [153, 22, 10, 255]], level=4) -default her_hat_poker2 = DollCloth("hermione", ("head", "headgear"), "headgear", "poker_hat_2", [[26, 26, 35, 255], [232, 232, 232, 255], [153, 22, 10, 255]], level=4) -default her_neckwear_poker1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "poker_bowtie_1", [[232, 232, 232, 255], [153, 22, 10, 255], [255, 179, 3, 255]], level=4) -default her_stockings_poker1 = DollCloth("hermione", ("legwear", "stockings"), "stockings", "poker_stockings_1", [[26, 26, 35, 255], [153, 22, 10, 255]], level=13) -default her_stockings_poker2 = DollCloth("hermione", ("legwear", "stockings"), "stockings", "poker_stockings_2", [[26, 26, 35, 255], [153, 22, 10, 255]], level=13) -default her_panties_poker1 = DollCloth("hermione", ("lower undergarment", "panties"), "panties", "poker_panties_1", [[26, 26, 35, 255], [153, 22, 10, 255], [255, 179, 3, 255]], level=19) -default her_bra_poker1 = DollCloth("hermione", ("upper undergarment", "other"), "bra", "poker_bra_1", [[26, 26, 35, 255], [232, 232, 232, 255], [153, 22, 10, 255], [255, 179, 3, 255]], blacklist=["panties", "top", "bottom"], level=19) -default her_gloves_poker1 = DollCloth("hermione", ("upper body", "gloves"), "gloves", "poker_gloves_1", [[232, 232, 232, 255], [255, 179, 3, 255]], level=4) -default her_earring_poker1 = DollCloth("hermione", ("head", "earrings"), "earrings", "poker_earring_1", [[255, 179, 3, 255]], level=4) -default her_piercing2_poker1 = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing2", "poker_belly_1", [[26, 26, 35, 255], [232, 232, 232, 255], [153, 22, 10, 255], [255, 179, 3, 255]]) +default her_hat_poker1 = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "poker_hat_1", ["#1a1a23ff", "#e8e8e8ff", "#99160aff"], level=4, tracking="?hair") +default her_hat_poker2 = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "poker_hat_2", ["#1a1a23ff", "#e8e8e8ff", "#99160aff"], level=4, tracking="?hair") +default her_neckwear_poker1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "poker_bowtie_1", ["#e8e8e8ff", "#99160aff", "#ffb303ff"], level=4) +default her_stockings_poker1 = DollCloth("hermione", ("legwear", "stockings"), "stockings", "poker_stockings_1", ["#1a1a23ff", "#99160aff"], level=13) +default her_stockings_poker2 = DollCloth("hermione", ("legwear", "stockings"), "stockings", "poker_stockings_2", ["#1a1a23ff", "#99160aff"], level=13) +default her_panties_poker1 = DollCloth("hermione", ("lower undergarment", "panties"), "panties", "poker_panties_1", ["#1a1a23ff", "#99160aff", "#ffb303ff"], level=19) +default her_bra_poker1 = DollCloth("hermione", ("upper undergarment", "other"), "bra", "poker_bra_1", ["#1a1a23ff", "#e8e8e8ff", "#99160aff", "#ffb303ff"], blacklist=["panties", "top", "bottom"], level=19) +default her_gloves_poker1 = DollCloth("hermione", ("upper body", "gloves"), "gloves", "poker_gloves_1", ["#e8e8e8ff", "#ffb303ff"], level=4) +default her_earring_poker1 = DollCloth("hermione", ("head", "earrings"), "earrings", "poker_earring_1", ["#ffb303ff"], level=4) +default her_piercing_poker1 = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "poker_belly_1", ["#1a1a23ff", "#e8e8e8ff", "#99160aff", "#ffb303ff"]) -# Unlockable with Tokens only -default her_outfit_poker = DollOutfit([her_hair_base, her_hat_poker1, her_hat_poker2, her_neckwear_poker1, her_stockings_poker1, her_stockings_poker2, her_panties_poker1, her_bra_poker1, her_gloves_poker1, her_earring_poker1, her_piercing2_poker1], name="Poke-her-nips Costume", desc="An outfit that doesn't leave much for the mind's desire, perfect for a lewd card loving girl.") +default her_outfit_poker = DollOutfit([her_hair_base, her_hat_poker1, her_hat_poker2, her_neckwear_poker1, her_stockings_poker1, her_stockings_poker2, her_panties_poker1, her_bra_poker1, her_gloves_poker1, her_earring_poker1, her_piercing_poker1], name="Poke-her-nips Costume", desc="An outfit that doesn't leave much for the mind's desire, perfect for a lewd card loving girl.") ################## ## Bunny Outfit ## ################## -default her_top_bunny1 = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "bunny_top_1", [[48, 48, 48, 255]], blacklist=["panties", "bra"], zorder=7, level=19) -default her_stockings_bunny1 = DollCloth("hermione", ("legwear", "pantyhose"), "stockings", "bunny_stockings_1", [[81, 81, 81, 255]], level=19) -default her_tattoo3_bunny1 = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo3", "bunny_tattoo1", [[0, 0, 1, 255]]) -default her_hat_bunny1 = DollCloth("hermione", ("head", "headgear"), "headgear", "bunny_hat_1", [[48, 48, 48, 255], [232, 232, 232, 255]], level=13) -default her_gloves_bunny1 = DollCloth("hermione", ("upper body", "gloves"), "gloves", "bunny_gloves_1", [[232, 232, 232, 255]], level=4) -default her_neckwear_bunny1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "bunny_bowtie_1", [[232, 232, 232, 255], [48, 48, 48, 255]], level=4) +default her_top_bunny1 = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "bunny_top_1", ["#303030ff"], blacklist=["panties", "bra"], zorder=183, level=19) +default her_top_bunny2 = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "bunny_top_2", ["#000000ff"], blacklist=["panties", "bra"], zorder=183, level=19) +default her_stockings_bunny1 = DollCloth("hermione", ("legwear", "pantyhose"), "stockings", "bunny_stockings_1", ["#515151ff"], level=19) +default her_tattoo_bunny1 = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "bunny_tattoo", ["#000001ff"]) +default her_hat_bunny1 = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "bunny_hat_1", ["#303030ff", "#e8e8e8ff"], level=13, tracking="?hair") +default her_hat_bunny2 = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "bunny_hat_2", ["#b7a873ff", "#dba18cff", "#fdfdfdff"], level=13, tracking="?hair") +default her_gloves_bunny1 = DollCloth("hermione", ("upper body", "gloves"), "gloves", "bunny_gloves_1", ["#e8e8e8ff"], level=4) +default her_neckwear_bunny1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "bunny_bowtie_1", ["#e8e8e8ff", "#303030ff"], level=4) -default her_outfit_bunny = DollOutfit([her_hair_base, her_top_bunny1, her_stockings_bunny1, her_tattoo3_bunny1, her_hat_bunny1, her_gloves_bunny1, her_neckwear_bunny1], price=350, name="Sexy Bunny Costume", desc="What's up doc?") +default her_outfit_bunny = DollOutfit([her_hair_base, her_top_bunny2, her_stockings_bunny1, her_tattoo_bunny1, her_hat_bunny2, her_gloves_bunny1, her_neckwear_bunny1], addons=[her_top_bunny1, her_hat_bunny1], price=350, name="Sexy Bunny Costume", desc="What's up doc?") + +###################### +## Reindeer Costume ## #unlocked in genies_christmas_wish mirror story +###################### + +default her_hat_antlers2 = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "antlers_2", ["#994c30ff", "#ffffffff", "#c69f65ff"], level=12, tracking="?hair") +default her_neckwear_studded_choker = DollCloth("hermione", ("head", "neckwear"), "neckwear", "studded_choker", ["#2b2a32ff", "#d2cfe7ff"], level=16) +default her_top_bunny3 = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "bunny_top_3", ["#8a4b04ff"], blacklist=["panties", "bra"], zorder=183, level=19) +default her_accessory_mistletoe = DollCloth("hermione", ("misc", "accessory"), "accessory", "mistletoe", ["#c82000ff"], zorder=213, level=7) + +default her_outfit_reindeer = DollOutfit([her_hair_base, her_top_bunny3, her_accessory_mistletoe, her_stockings_bunny1, her_neckwear_studded_choker, her_hat_antlers2]) ################ ## Ball Dress ## ################ -default her_hair_updo = DollCloth("hermione", ("head", "hair"), "hair", "updo", [[152, 89, 48, 255], [195, 137, 89, 255]]) -default her_top_ball1 = DollCloth("hermione", ("upper body", "dresses"), "top", "ball_dress_1", [[255, 140, 174, 255], [242, 218, 255, 255]], blacklist=["bottom"]) -default her_earring_pearls1 = DollCloth("hermione", ("head", "earrings"), "earrings", "pearl_1", [[233, 166, 253, 255]], level=4) -default her_neckwear_pearls1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "ball_pearls_1", [[233, 166, 253, 255]], level=4) -default her_accessory_ball_sash1 = DollCloth("hermione", ("misc", "accessory"), "accessory4", "ball_sash", [[247, 222, 231, 255], [161, 82, 159, 255]], zorder=16, level=4) +default her_hair_updo = DollCloth("hermione", ("head", "hair"), "hair", "updo", ["#985930ff", "#c38959ff"]) +default her_top_ball1 = DollCloth("hermione", ("upper body", "dresses"), "top", "ball_dress_1", ["#ff8caeff", "#f2daffff"], blacklist=["bottom"]) +default her_earring_pearls1 = DollCloth("hermione", ("head", "earrings"), "earrings", "pearl_1", ["#e9a6fdff"], level=4) +default her_neckwear_pearls1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "ball_pearls_1", ["#e9a6fdff"], level=4) +default her_accessory_ball_sash1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "ball_sash", ["#f7dee7ff", "#a1529fff"], zorder=213, level=4) default her_outfit_ball = DollOutfit([her_hair_updo, her_neckwear_pearls1, her_top_ball1, her_earring_pearls1, her_accessory_ball_sash1, her_panties_base1], price=0, name="Classy Ball Dress", desc="A fancy dress for a fancy witch.") @@ -176,26 +153,26 @@ default her_outfit_ball = DollOutfit([her_hair_updo, her_neckwear_pearls1, her_t ## Yennefer Outfit ## ##################### -default her_top_yen1 = DollCloth("hermione", ("upper body", "sweaters"), "top", "yen_top", [[9, 32, 47, 255]], level=10) -default her_bottom_yen_skirt1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "yen_skirt", [[26, 26, 26, 255]], level=4) -default her_stockings_yen1 = DollCloth("hermione", ("legwear", "stockings"), "stockings", "yen_stockings", [[76, 76, 76, 255]], level=10) -default her_accessory_yen_sash1 = DollCloth("hermione", ("misc", "accessory"), "accessory4", "yen_sash", [[25, 25, 25, 255], [51, 51, 51, 255]], zorder=9, level=10) -default her_accessory_yen_belt1 = DollCloth("hermione", ("misc", "accessory"), "accessory3", "yen_belt", [[52, 37, 31, 255], [146, 142, 137, 255]], zorder=10, level=4) -default her_accessory_yen_feathers1 = DollCloth("hermione", ("misc", "accessory"), "accessory2", "yen_feathers", [[42, 190, 199, 255]], zorder=16, level=4) -default her_accessory_yen_scarf1 = DollCloth("hermione", ("misc", "accessory"), "accessory1", "yen_scarf", [[9, 32, 47, 255]], zorder=17, level=4) -default her_accessory_yen_corset1 = DollCloth("hermione", ("misc", "accessory"), "accessory0", "yen_corset", [[37, 27, 27, 255], [19, 14, 11, 255]], zorder=16, level=10) -default her_neckwear_yen_choker1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "yen_choker", [[30, 29, 28, 255]], level=4) -default her_gloves_yen1 = DollCloth("hermione", ("upper body", "gloves"), "gloves", "yen_gloves", [[52, 37, 31, 255]], zorder=16, level=4) +default her_top_yen1 = DollCloth("hermione", ("upper body", "sweaters"), "top", "yen_top", ["#09202fff"], level=10) +default her_bottom_yen_skirt1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "yen_skirt", ["#1a1a1aff"], level=4) +default her_stockings_yen1 = DollCloth("hermione", ("legwear", "stockings"), "stockings", "yen_stockings", ["#4c4c4cff"], level=10) +default her_accessory_yen_sash1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "yen_sash", ["#191919ff", "#333333ff"], zorder=213, level=10) +default her_accessory_yen_belt1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "yen_belt", ["#34251fff", "#928e89ff"], zorder=214, level=4) +default her_accessory_yen_feathers1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "yen_feathers", ["#2abec7ff"], zorder=215, level=4) +default her_accessory_yen_scarf1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "yen_scarf", ["#09202fff"], zorder=216, level=4) +default her_accessory_yen_corset1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "yen_corset", ["#251b1bff", "#130e0bff"], zorder=212, level=10) +default her_neckwear_yen_choker1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "yen_choker", ["#1e1d1cff"], level=4) +default her_gloves_yen1 = DollCloth("hermione", ("upper body", "gloves"), "gloves", "yen_gloves", ["#34251fff"], level=4) default her_outfit_yennefer = DollOutfit([her_hair_base, her_top_yen1, her_bottom_yen_skirt1, her_accessory_yen_sash1, her_stockings_yen1, her_accessory_yen_feathers1, her_accessory_yen_scarf1, her_neckwear_yen_choker1, her_gloves_yen1, her_accessory_yen_corset1, her_accessory_yen_belt1], price=400, name="Yennefer Costume", desc="An outfit that smells of lilac and gooseberries.") ####################### -## Pizza Slut Outfit ## +## Pizza Slut Outfit ## #Unlocked in eating_for_pleasure mirror story ####################### -default her_bottom_pizza = DollCloth("hermione", ("lower body", "skirts"), "bottom", "pizza_skirt", [[180, 50, 10, 255], [235, 199, 44, 255]], level=4) -default her_top_pizza = DollCloth("hermione", ("upper body", "other"), "top", "pizza_top", [[180, 50, 10, 255]], level=19) -default her_panties_pizza = DollCloth("hermione", ("lower undergarment", "other"), "panties", "pizza_panties", [[180, 50, 10, 255]], level=19) +default her_top_pizza = DollCloth("hermione", ("upper body", "other"), "top", "pizza_top", ["#b4320aff"], level=19) +default her_bottom_pizza = DollCloth("hermione", ("lower body", "skirts"), "bottom", "pizza_skirt", ["#b4320aff", "#ebc72cff"], level=4) +default her_panties_pizza = DollCloth("hermione", ("lower undergarment", "other"), "panties", "pizza_panties", ["#b4320aff"], level=19) default her_outfit_pizza = DollOutfit([her_hair_base, her_bottom_pizza, her_top_pizza, her_panties_pizza], price=0) @@ -203,11 +180,11 @@ default her_outfit_pizza = DollOutfit([her_hair_base, her_bottom_pizza, her_top_ ## Bioshock Outfit ## ##################### -default her_hair_bioshock = DollCloth("hermione", ("head", "hair"), "hair", "bio_hair", [[31, 29, 27, 255], [54, 50, 48, 255]], level=4) -default her_bottom_bioshock = DollCloth("hermione", ("lower body", "skirts"), "bottom", "bioshock_skirt", [[12, 1, 72, 255]], level=4) -default her_top_bioshock = DollCloth("hermione", ("upper body", "other"), "top", "bioshock_corset", [[225, 224, 232, 255], [46, 46, 48, 255], [232, 232, 232, 255]], level=4) -default her_neckwear_bioshock = DollCloth("hermione", ("head", "neckwear"), "neckwear", "bioshock_choker", [[12, 1, 72, 255]], level=4) -default her_robe_bioshock = DollCloth("hermione", ("upper body", "robes"), "robe", "bioshock_robe", [[12, 1, 72, 255], [232, 232, 232, 255]], level=4) +default her_hair_bioshock = DollCloth("hermione", ("head", "hair"), "hair", "bio_hair", ["#1f1d1bff", "#363230ff"], level=4) +default her_neckwear_bioshock = DollCloth("hermione", ("head", "neckwear"), "neckwear", "bioshock_choker", ["#0c0148ff"], level=4) +default her_top_bioshock = DollCloth("hermione", ("upper body", "other"), "top", "bioshock_corset", ["#e1e0e8ff", "#2e2e30ff", "#e8e8e8ff"], level=4) +default her_bottom_bioshock = DollCloth("hermione", ("lower body", "skirts"), "bottom", "bioshock_skirt", ["#0c0148ff"], level=4) +default her_robe_bioshock = DollCloth("hermione", ("upper body", "robes"), "robe", "bioshock_robe", ["#0c0148ff", "#e8e8e8ff"], level=4) default her_outfit_bioshock = DollOutfit([her_hair_bioshock, her_robe_bioshock, her_bottom_bioshock, her_top_bioshock, her_neckwear_bioshock, her_panties_base1], price=400, name="Elizabeth Costume", desc="Flick some coins for this shockingly inspirational outfit.") @@ -215,7 +192,7 @@ default her_outfit_bioshock = DollOutfit([her_hair_bioshock, her_robe_bioshock, ## Swimsuit ## ############## -default her_top_swimsuit_1 = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "swimsuit_top_1", [[22, 27, 48, 255], [224, 198, 16, 255]], blacklist=["panties", "bra"], zorder=7, level=13) +default her_top_swimsuit_1 = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "swimsuit_top_1", ["#161b30ff", "#e0c610ff"], blacklist=["panties", "bra"], zorder=183, level=13) default her_outfit_swimsuit = DollOutfit([her_hair_base, her_top_swimsuit_1], price=350, name="One-piece Swimsuit", desc="A swimsuit for witches whom love getting wet.") @@ -223,36 +200,36 @@ default her_outfit_swimsuit = DollOutfit([her_hair_base, her_top_swimsuit_1], pr ## Egyptian Outfit ## ##################### -default her_top_egypt = DollCloth("hermione", ("upper body", "other"), "top", "egypt_top", [[240, 237, 250, 255]], blacklist=["bra"], level=19) -default her_bottom_egypt = DollCloth("hermione", ("lower body", "other"), "bottom", "egypt_loincloth", [[240, 237, 250, 255], [227, 182, 101, 255], [47, 151, 255, 255]], blacklist=["panties"], level=13) -default her_gloves_egypt = DollCloth("hermione", ("upper body", "gloves"), "gloves", "egypt_armband", [[227, 182, 101, 255]], level=4) -default her_neckwear_egypt = DollCloth("hermione", ("head", "neckwear"), "neckwear", "egypt_neck", [[227, 182, 101, 255], [94, 209, 236, 255], [47, 151, 255, 255]], level=4) +default her_top_egypt = DollCloth("hermione", ("upper body", "other"), "top", "egypt_top", ["#f0edfaff"], blacklist=["bra"], level=19) +default her_bottom_egypt = DollCloth("hermione", ("lower body", "other"), "bottom", "egypt_loincloth", ["#f0edfaff", "#e3b665ff", "#2f97ffff"], blacklist=["panties"], level=13) +default her_gloves_egypt = DollCloth("hermione", ("upper body", "gloves"), "gloves", "egypt_armband", ["#e3b665ff"], level=4) +default her_neckwear_egypt = DollCloth("hermione", ("head", "neckwear"), "neckwear", "egypt_neck", ["#e3b665ff", "#5ed1ecff", "#2f97ffff"], level=4) default her_outfit_egypt = DollOutfit([her_hair_base, her_neckwear_egypt, her_top_egypt, her_bottom_egypt, her_gloves_egypt], price=400, name="Cleopatra Costume", desc="Become the Cleopatra of your times!") -####################### +######################## ## Latex dress Outfit ## -####################### +######################## -default her_top_latex_dress_1 = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "latex_dress_1", [[250, 139, 241, 255], [255, 173, 22, 255]], blacklist=["bra"], level=19) +default her_top_latex_dress_1 = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "latex_dress_1", ["#fa8bf1ff", "#ffad16ff"], blacklist=["bra"], level=19) default her_outfit_latex_dress = DollOutfit([her_hair_base, her_top_latex_dress_1], price=350, name="Latex Dress", desc="Something you wouldn't normally find in a regular clothing store.") ################### -## Pajama Outfit ## +## Pajama Outfit ## #Unlocked in Luna Intro ################### -default her_top_pajama = DollCloth("hermione", ("upper body", "shirts"), "top", "pajama_1", [[228, 216, 193, 255]]) -default her_bottom_pajama = DollCloth("hermione", ("lower body", "trousers"), "bottom", "pajama_1", [[156, 138, 116, 255], [228, 203, 153, 255], [228, 216, 193, 255]]) -default her_bottom_pajama2 = DollCloth("hermione", ("lower body", "trousers"), "bottom", "pajama_2", [[156, 138, 116, 255], [228, 203, 153, 255]]) +default her_top_pajama = DollCloth("hermione", ("upper body", "shirts"), "top", "pajama_1", ["#e4d8c1ff"]) +default her_bottom_pajama = DollCloth("hermione", ("lower body", "trousers"), "bottom", "pajama_1", ["#9c8a74ff", "#e4cb99ff", "#e4d8c1ff"]) +default her_bottom_pajama2 = DollCloth("hermione", ("lower body", "trousers"), "bottom", "pajama_2", ["#9c8a74ff", "#e4cb99ff"]) -default her_outfit_pajama = DollOutfit([her_hair_base, her_top_pajama, her_bottom_pajama], addons=[her_bottom_pajama2]) # Event Outfit +default her_outfit_pajama = DollOutfit([her_hair_base, her_top_pajama, her_bottom_pajama], addons=[her_bottom_pajama2]) #################### ## Nightie Outfit ## #################### -default her_top_nightie = DollCloth("hermione", ("upper body", "shirts"), "top", "nightie", [[255, 172, 184, 215]], level=13) +default her_top_nightie = DollCloth("hermione", ("upper body", "shirts"), "top", "nightie", ["#ffacb8d7"], level=13) default her_outfit_nightie = DollOutfit([her_hair_base, her_top_nightie], price=350, name="Nightie", desc="Comfortable alternative for a pyjamas.") @@ -260,7 +237,7 @@ default her_outfit_nightie = DollOutfit([her_hair_base, her_top_nightie], price= ## Teddy Outfit ## ################## -default her_top_teddy = DollCloth("hermione", ("upper body", "shirts"), "top", "teddy_top", [[20, 20, 20, 215], [148, 144, 163, 215], [148, 144, 163, 215]], level=16) +default her_top_teddy = DollCloth("hermione", ("upper body", "shirts"), "top", "teddy_top", ["#141414d7", "#9490a3d7", "#9490a3d7"], level=16) default her_outfit_teddy = DollOutfit([her_hair_base, her_top_teddy], price=350, name="Teddy Nightie", desc="A more airy nightdress leaving not much fabric between you and your bed.") @@ -268,11 +245,11 @@ default her_outfit_teddy = DollOutfit([her_hair_base, her_top_teddy], price=350, ## Tifa Outfit ## ################# -default her_top_tifa = DollCloth("hermione", ("upper body", "shirts"), "top", "tifa_top", [[232, 232, 232, 255]], level=10) -default her_accessory_tifa_belt = DollCloth("hermione", ("misc", "accessory"), "accessory3", "tifa_belt", [[50, 50, 50, 255], [154, 154, 154, 255]], level=4) -default her_accessory_tifa_suspenders = DollCloth("hermione", ("misc", "accessory"), "accessory4", "tifa_suspenders", [[86, 61, 67, 255], [154, 154, 154, 255]], zorder=16, level=4) -default her_gloves_tifa = DollCloth("hermione", ("upper body", "gloves"), "gloves", "tifa_gloves", [[72, 63, 70, 255], [228, 107, 98, 255], [125, 120, 127, 255], [189, 167, 158, 255]], level=4) -default her_bottom_tifa = DollCloth("hermione", ("lower body", "skirts"), "bottom", "tifa_skirt", [[72, 63, 70, 255]], level=10) +default her_top_tifa = DollCloth("hermione", ("upper body", "shirts"), "top", "tifa_top", ["#e8e8e8ff"], level=10) +default her_accessory_tifa_belt = DollCloth("hermione", ("misc", "accessory"), "accessory", "tifa_belt", ["#323232ff", "#9a9a9aff"], level=4) +default her_accessory_tifa_suspenders = DollCloth("hermione", ("misc", "accessory"), "accessory", "tifa_suspenders", ["#563d43ff", "#9a9a9aff"], zorder=213, level=4) +default her_gloves_tifa = DollCloth("hermione", ("upper body", "gloves"), "gloves", "tifa_gloves", ["#483f46ff", "#e46b62ff", "#7d787fff", "#bda79eff"], level=4) +default her_bottom_tifa = DollCloth("hermione", ("lower body", "skirts"), "bottom", "tifa_skirt", ["#483f46ff"], level=10) default her_outfit_tifa = DollOutfit([her_hair_base, her_top_tifa, her_accessory_tifa_belt, her_accessory_tifa_suspenders, her_gloves_tifa, her_bottom_tifa, her_panties_base1], price=400, name="Tifa Costume", desc="An outfit for when your sexual fantasies are just getting started.") @@ -280,10 +257,10 @@ default her_outfit_tifa = DollOutfit([her_hair_base, her_top_tifa, her_accessory ## Ms. Marvel Outfit ## ####################### -default her_top_msmarv = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "msmarv_suit", [[64, 70, 99, 255], [123, 136, 181, 255], [255, 236, 134, 255]], zorder=7, blacklist=["panties", "bra"], level=10) -default her_accessory_msmarv_ribbon = DollCloth("hermione", ("misc", "accessory"), "accessory3", "msmarv_ribbon", [[206, 41, 22, 255]], level=4) -default her_gloves_msmarv = DollCloth("hermione", ("upper body", "gloves"), "gloves", "msmarv_gloves", [[64, 70, 99, 255], [123, 136, 181, 255]], level=4) -default her_stockings_msmarv = DollCloth("hermione", ("legwear", "stockings"), "stockings", "msmarv_stockings", [[64, 70, 99, 255], [123, 136, 181, 255]], level=10) +default her_top_msmarv = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "msmarv_suit", ["#404663ff", "#7b88b5ff", "#ffec86ff"], zorder=183, blacklist=["panties", "bra"], level=10) +default her_accessory_msmarv_ribbon = DollCloth("hermione", ("misc", "accessory"), "accessory", "msmarv_ribbon", ["#ce2916ff"], level=4) +default her_gloves_msmarv = DollCloth("hermione", ("upper body", "gloves"), "gloves", "msmarv_gloves", ["#404663ff", "#7b88b5ff"], level=4) +default her_stockings_msmarv = DollCloth("hermione", ("legwear", "stockings"), "stockings", "msmarv_stockings", ["#404663ff", "#7b88b5ff"], level=10) default her_outfit_msmarv = DollOutfit([her_hair_base, her_top_msmarv, her_accessory_msmarv_ribbon, her_gloves_msmarv, her_stockings_msmarv], price=400, name="Miss Marvel Costume", desc="For the girl that likes the lightning bolt better on her chest than her forehead.") @@ -291,25 +268,26 @@ default her_outfit_msmarv = DollOutfit([her_hair_base, her_top_msmarv, her_acces ## Heart Slut Outfit ## ####################### -default her_top_hslut = DollCloth("hermione", ("upper body", "other"), "top", "hslut_top", [[226, 95, 95, 255], [242, 242, 242, 255]], level=19) -default her_gloves_hslut = DollCloth("hermione", ("upper body", "gloves"), "gloves", "hslut_gloves", [[242, 242, 242, 255]], level=10) -default her_stockings_hslut = DollCloth("hermione", ("legwear", "stockings"), "stockings", "hslut_socks", [[242, 242, 242, 255]], level=10) -default her_panties_hslut = DollCloth("hermione", ("lower undergarment", "other"), "panties", "hslut_panties", [[226, 95, 95, 255]], level=19) -default her_bra_hslut = DollCloth("hermione", ("upper undergarment", "other"), "bra", "hslut_pasties", [[226, 95, 95, 255], [226, 95, 95, 255]], level=19) -default her_earring_hslut = DollCloth("hermione", ("head", "earrings"), "earrings", "hslut_earring", [[226, 95, 95, 255]], level=4) -default her_neckwear_hslut = DollCloth("hermione", ("head", "neckwear"), "neckwear", "hslut_choker", [[242, 242, 242, 255], [226, 95, 95, 255]], level=10) -default her_garterbelt_hslut = DollCloth("hermione", ("legwear", "garterbelts"), "garterbelt", "hslut_garter", [[226, 95, 95, 255], [249, 148, 148, 255]], level=10) +default her_earring_hslut = DollCloth("hermione", ("head", "earrings"), "earrings", "hslut_earring", ["#e25f5fff"], level=4) +default her_neckwear_hslut = DollCloth("hermione", ("head", "neckwear"), "neckwear", "hslut_choker", ["#f2f2f2ff", "#e25f5fff"], level=10) +default her_top_hslut = DollCloth("hermione", ("upper body", "other"), "top", "hslut_top", ["#e25f5fff", "#f2f2f2ff"], level=19) +default her_gloves_hslut = DollCloth("hermione", ("upper body", "gloves"), "gloves", "hslut_gloves", ["#f2f2f2ff"], level=10) +default her_stockings_hslut = DollCloth("hermione", ("legwear", "stockings"), "stockings", "hslut_socks", ["#f2f2f2ff"], level=10) +default her_bra_hslut = DollCloth("hermione", ("upper undergarment", "other"), "bra", "hslut_pasties", ["#e25f5fff", "#e25f5fff"], level=19) +default her_panties_hslut = DollCloth("hermione", ("lower undergarment", "other"), "panties", "hslut_panties", ["#e25f5fff"], level=19) +default her_garterbelt_hslut = DollCloth("hermione", ("legwear", "garterbelts"), "garterbelt", "hslut_garter", ["#e25f5fff", "#f99494ff"], level=10) default her_outfit_hslut = DollOutfit([her_hair_base, her_top_hslut, her_gloves_hslut, her_stockings_hslut, her_panties_hslut, her_bra_hslut, her_earring_hslut, her_neckwear_hslut, her_garterbelt_hslut], price=450, name="Hearty Harlot", desc="A sexy dancers outfit with heart-shaped nipple tassels.") ####################### -## Lara Croft Outfit ## +## Lora Craft Outfit ## ####################### -default her_top_croft = DollCloth("hermione", ("upper body", "shirts"), "top", "croft_top", [[163, 201, 152, 255]], level=10) -default her_bottom_croft = DollCloth("hermione", ("lower body", "shorts"), "bottom", "croft_shorts", [[147, 114, 61, 255], [137, 136, 120, 255], [252, 192, 4, 255]],level=10) -default her_accessory_croft_belt = DollCloth("hermione", ("misc", "accessory"), "accessory3", "croft_belt", [[111, 86, 66, 255], [116, 123, 114, 255], [252, 192, 4, 255]], level=4) -default her_accessory_croft_suspenders = DollCloth("hermione", ("misc", "accessory"), "accessory4", "croft_suspenders", [[111, 86, 66, 255], [116, 123, 114, 255]], zorder=16, level=4) +default her_accessory_croft_belt = DollCloth("hermione", ("misc", "accessory"), "accessory", "croft_belt", ["#6f5642ff", "#747b72ff", "#fcc004ff"], level=4) +default her_accessory_croft_suspenders = DollCloth("hermione", ("misc", "accessory"), "accessory", "croft_suspenders", ["#6f5642ff", "#747b72ff"], zorder=213, level=4) + +default her_top_croft = DollCloth("hermione", ("upper body", "shirts"), "top", "croft_top", ["#a3c998ff"], level=10) +default her_bottom_croft = DollCloth("hermione", ("lower body", "shorts"), "bottom", "croft_shorts", ["#93723dff", "#898878ff", "#fcc004ff"],level=10) default her_outfit_croft = DollOutfit([her_hair_base, her_top_croft, her_bottom_croft, her_accessory_croft_belt, her_accessory_croft_suspenders, her_panties_base1], price=400, name="Lora Craft Costume", desc="An outfit perfectly suited for exploring deep, dark and moist caverns.\n{size=-4}Disclaimer: This outfit has no association with a character known as Lara Croft. Totally.{/size}") @@ -317,186 +295,207 @@ default her_outfit_croft = DollOutfit([her_hair_base, her_top_croft, her_bottom_ ## Witch Outfit ## ################## -default her_top_witch = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "witch_top", [[71, 51, 102, 255], [252, 180, 112, 255]], blacklist=["panties"], level=10) -default her_stockings_witch = DollCloth("hermione", ("legwear", "stockings"), "stockings", "witch_stockings", [[71, 51, 102, 255], [252, 180, 112, 255]], level=4) -default her_robe_witch = DollCloth("hermione", ("upper body", "robes"), "robe", "witch_cape", [[71, 51, 102, 255], [252, 180, 112, 255], [36, 112, 58, 255]], level=4) +default her_top_witch = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "witch_top", ["#473366ff", "#fcb470ff"], blacklist=["panties"], level=10) +default her_stockings_witch = DollCloth("hermione", ("legwear", "stockings"), "stockings", "witch_stockings", ["#473366ff", "#fcb470ff"], level=4) +default her_robe_witch = DollCloth("hermione", ("upper body", "robes"), "robe", "witch_cape", ["#473366ff", "#fcb470ff", "#24703aff"], level=4) default her_outfit_witch = DollOutfit([her_hair_base, her_top_witch, her_stockings_witch, her_robe_witch], price=400, name="16th Century Witch Costume", desc="An ancient witch costume coming straight from 16th century. Stay away from the burning stakes!") -####################### -## Slutty Schoolgirl ## -####################### - -default her_top_slutty1 = DollCloth("hermione", ("upper body", "sweaters"), "top", "open_top_1", [[183, 183, 184, 255], [109, 105, 121, 255], [167, 77, 42, 255], [237, 179, 14, 255]], level=19) -default her_bottom_slutty1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "open_skirt_1", [[103, 90, 108, 255]], level=19) -default her_stockings_slutty = DollCloth("hermione", ("legwear", "stockings"), "stockings", "stockings_2", [[170, 170, 170, 255]], level=4) - -default her_outfit_slutty_schoolgirl = DollOutfit([her_hair_base, her_top_slutty1, her_bottom_slutty1, her_stockings_slutty], price=500, name="Slutty Schoolgirl outfit", desc="An arguably better version of the regular school outfit.") - ################## ## Latex Outfit ## ################## -default her_top_latex = DollCloth("hermione", ("upper body", "shirts"), "top", "latex_top", [[55, 55, 55, 255]], level=19) -default her_gloves_latex = DollCloth("hermione", ("upper body", "gloves"), "gloves", "latex_gloves", [[55, 55, 55, 255]], level=13) -default her_stockings_latex = DollCloth("hermione", ("legwear", "stockings"), "stockings", "latex_stockings", [[55, 55, 55, 255]], level=13) -default her_panties_latex = DollCloth("hermione", ("lower undergarment", "bikini panties"), "panties", "latex_panties", [[55, 55, 55, 255]], level=19) -default her_neckwear_latex = DollCloth("hermione", ("head", "neckwear"), "neckwear", "latex_choker", [[55, 55, 55, 255]], level=13) +default her_top_latex = DollCloth("hermione", ("upper body", "shirts"), "top", "latex_top", ["#373737ff"], level=19) +default her_neckwear_latex = DollCloth("hermione", ("head", "neckwear"), "neckwear", "latex_choker", ["#373737ff"], level=13) +default her_gloves_latex = DollCloth("hermione", ("upper body", "gloves"), "gloves", "latex_gloves", ["#373737ff"], level=13) +default her_stockings_latex = DollCloth("hermione", ("legwear", "stockings"), "stockings", "latex_stockings", ["#373737ff"], level=13) +default her_panties_latex = DollCloth("hermione", ("lower undergarment", "bikini panties"), "panties", "latex_panties", ["#373737ff"], level=19) default her_outfit_latex = DollOutfit([her_hair_base, her_top_latex, her_gloves_latex, her_stockings_latex, her_panties_latex, her_neckwear_latex], price=350, name="Latex Set", desc="A tight fitting outfit that takes approximately twenty minutes to put on properly.") -################# -## Fishnet Outfit -################# +#################### +## Fishnet Outfit ## +#################### -default her_top_fishnet = DollCloth("hermione", ("upper body", "other"), "top", "fishnet_top", [[24, 24, 24, 255]], blacklist=["bra"], level=19) -default her_panties_fishnet = DollCloth("hermione", ("lower undergarment", "other"), "panties", "fishnet_panties", [[24, 24, 24, 255]], level=19) +default her_top_fishnet = DollCloth("hermione", ("upper body", "other"), "top", "fishnet_top", ["#181818ff"], blacklist=["bra"], level=19) +default her_panties_fishnet = DollCloth("hermione", ("lower undergarment", "other"), "panties", "fishnet_panties", ["#181818ff"], level=19) -default her_outfit_fishnet = DollOutfit([her_hair_base, her_top_fishnet, her_panties_fishnet], price=350, name="Fishnet set", desc="Disclaimer: Not suitable for actual fish catching.") +default her_outfit_fishnet = DollOutfit([her_hair_base, her_top_fishnet, her_panties_fishnet], price=350, name="Fishnet Set", desc="Disclaimer: Not suitable for actual fish catching.") +############################## +## Fishnet One-piece Outfit ## +############################## -########################### -## Fishnet One-piece Outfit -########################### +default her_top_fishnet_onepiece = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "fishnet_onepiece", ["#000000ff", "#000000ff"], blacklist=["panties", "bra"], zorder=183, level=19) +default her_stockings_short_meshed = DollCloth("hermione", ("legwear", "socks"), "stockings", "short_meshed", ["#000000ff", "#000000ff"], level=13) -default her_top_fishnet_onepiece = DollCloth("hermione", ("upper body", "one-piece suits"), "top", "fishnet_onepiece", [[0, 0, 0, 255], [0, 0, 0, 255]], blacklist=["panties", "bra"], zorder=7, level=19) -default her_stockings_short_meshed = DollCloth("hermione", ("legwear", "socks"), "stockings", "short_meshed", [[0, 0, 0, 255], [0, 0, 0, 255]], level=13) - -default her_outfit_fishnet_onepiece = DollOutfit([her_hair_base, her_top_fishnet_onepiece, her_stockings_short_meshed], price=350, name="Fishnet Onepiece", desc="Perfect for containing your daily catch.") +default her_outfit_fishnet_onepiece = DollOutfit([her_hair_base, her_top_fishnet_onepiece, her_stockings_short_meshed], price=350, name="Fishnet One-piece", desc="Perfect for containing your daily catch.") ################### -## Winter Outfit ## (Unfinished) # TODO: Add to clothing event once it's been finished. +## Winter Outfit ## ################### -default her_top_pullover_1 = DollCloth("hermione", ("upper body", "sweaters"), "top", "pullover_1", [[255, 123, 207, 255]], unlocked=True) -default her_top_pullover_2 = DollCloth("hermione", ("upper body", "sweaters"), "top", "pullover_2", [[255, 123, 207, 255]], unlocked=True, level=8) -default her_top_pullover_3 = DollCloth("hermione", ("upper body", "sweaters"), "top", "pullover_3", [[255, 123, 207, 255]], unlocked=True, level=16) -default her_bottom_winter_1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "winter_skirt_1", [[192, 31, 30, 255]]) -default her_stockings_pantyhose_1= DollCloth("hermione", ("legwear", "pantyhose"), "stockings", "pantyhose_1", [[177, 144, 131, 255]], unlocked=True, level=4) -default her_stockings_pantyhose_2= DollCloth("hermione", ("legwear", "pantyhose"), "stockings", "pantyhose_2", [[177, 144, 131, 255]], unlocked=True, level=10) -default her_stockings_pantyhose_3= DollCloth("hermione", ("legwear", "pantyhose"), "stockings", "pantyhose_3", [[177, 144, 131, 255]], unlocked=True, level=19) +default her_top_pullover_1 = DollCloth("hermione", ("upper body", "sweaters"), "top", "pullover_1", ["#ff7bcfff"], unlocked=True) +default her_top_pullover_2 = DollCloth("hermione", ("upper body", "sweaters"), "top", "pullover_2", ["#ff7bcfff"], unlocked=True, level=8) +default her_top_pullover_3 = DollCloth("hermione", ("upper body", "sweaters"), "top", "pullover_3", ["#ff7bcfff"], unlocked=True, level=16) +default her_stockings_pantyhose_1= DollCloth("hermione", ("legwear", "pantyhose"), "stockings", "pantyhose_1", ["#b19083ff"], unlocked=True, level=4) +default her_stockings_pantyhose_2= DollCloth("hermione", ("legwear", "pantyhose"), "stockings", "pantyhose_2", ["#b19083ff"], unlocked=True, level=10) +default her_stockings_pantyhose_3= DollCloth("hermione", ("legwear", "pantyhose"), "stockings", "pantyhose_3", ["#b19083ff"], unlocked=True, level=19) ################### ## Spring Outfit ## ################### -default her_top_ruffled = DollCloth("hermione", ("upper body", "shirts"), "top", "ruffled_top", [[235, 223, 163, 255]], unlocked=True, level=4) -default her_bottom_jeans = DollCloth("hermione", ("lower body", "trousers"), "bottom", "jeans_1", [[64, 87, 88, 255], [174, 93, 11, 255], [155, 142, 130, 255]], unlocked=True) +default her_top_ruffled = DollCloth("hermione", ("upper body", "shirts"), "top", "ruffled_top", ["#ebdfa3ff"], unlocked=True, level=4) +default her_bottom_jeans = DollCloth("hermione", ("lower body", "trousers"), "bottom", "jeans_1", ["#405758ff", "#ae5d0bff", "#9b8e82ff"], unlocked=True) ################### -## Casual Outfit ## TODO: Turn into clothing event once it's been finished. +## Casual Outfit ## ################### -default her_top_casual1 = DollCloth("hermione", ("upper body", "sweaters"), "top", "casual_top_1", [[116, 18, 48, 255], [60, 111, 66, 255]], unlocked=True) -default her_top_casual2 = DollCloth("hermione", ("upper body", "sweaters"), "top", "casual_top_2", [[116, 18, 48, 255]], unlocked=True, level=6) +default her_top_casual1 = DollCloth("hermione", ("upper body", "sweaters"), "top", "casual_top_1", ["#741230ff", "#3c6f42ff"], unlocked=True) +default her_top_casual2 = DollCloth("hermione", ("upper body", "sweaters"), "top", "casual_top_2", ["#741230ff"], unlocked=True, level=6) -######################## -## Cheerleader Outfit ## -######################## +######################### +## Cheerleader Outfits ## +######################### -default her_top_cheerleader1 = DollCloth("hermione", ("upper body", "shirts"), "top", "cheerleader_top_1", [[251, 251, 251, 255], [167, 77, 42, 255], [237, 179, 14, 255]], level=10) -default her_top_cheerleader2 = DollCloth("hermione", ("upper body", "other"), "top", "cheerleader_top_2", [[167, 77, 42, 255], [237, 179, 14, 255]], level=16) +default her_top_cheerleader1 = DollCloth("hermione", ("upper body", "shirts"), "top", "cheerleader_top_1", ["#fbfbfbff", "#a74d2aff", "#edb30eff"], level=10) +default her_top_cheerleader2 = DollCloth("hermione", ("upper body", "other"), "top", "cheerleader_top_2", ["#a74d2aff", "#edb30eff"], level=16) -default her_bottom_cheerleader1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "cheerleader_skirt_1", [[251, 251, 251, 255], [167, 77, 42, 255], [237, 179, 14, 255]], level=10) -default her_bottom_cheerleader2 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "cheerleader_skirt_2", [[232, 232, 232, 255], [167, 77, 42, 255], [237, 179, 14, 255]], level=14) +default her_bottom_cheerleader1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "cheerleader_skirt_1", ["#fbfbfbff", "#a74d2aff", "#edb30eff"], level=10) +default her_bottom_cheerleader2 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "cheerleader_skirt_2", ["#e8e8e8ff", "#a74d2aff", "#edb30eff"], level=14) -default her_gloves_cheerleader = DollCloth("hermione", ("upper body", "gloves"), "gloves", "cheerleader_armband", [[167, 77, 42, 255], [237, 179, 14, 255]]) +default her_gloves_cheerleader = DollCloth("hermione", ("upper body", "gloves"), "gloves", "cheerleader_armband", ["#a74d2aff", "#edb30eff"]) -default her_outfit_cheerleader_1 = DollOutfit([her_hair_base, her_top_cheerleader1, her_bottom_cheerleader1, her_gloves_cheerleader, her_panties_base1, her_bra_base1], price=450, name="Gryffindor Cheerleader uniform", desc="So daring and bold, sporting red and gold!") -default her_outfit_cheerleader_2 = DollOutfit([her_hair_base, her_top_cheerleader2, her_bottom_cheerleader2, her_panties_base1, her_bra_base1], price=650, name="Gryffindor Cheerleader Plus uniform", desc="For when your teammates need an extra push.") +default her_outfit_cheerleader_1 = DollOutfit([her_hair_base, her_top_cheerleader1, her_bottom_cheerleader1, her_gloves_cheerleader, her_panties_base1, her_bra_base1], price=450, name="Gryffindor Cheerleader Uniform", desc="So daring and bold, sporting red and gold!") +default her_outfit_cheerleader_2 = DollOutfit([her_hair_base, her_top_cheerleader2, her_bottom_cheerleader2, her_panties_base1, her_bra_base1], price=650, name="Gryffindor Cheerleader Plus Uniform", desc="For when your teammates need an extra push.") ################# ~*~Ä~*~*~*~*~ ################# ## Xmas Stuff ### /%\ ___&__ ### Ho Ho Ho ## ################# /% \ |=I~I=| ################# -default her_hat_antlers = DollCloth("hermione", ("head", "headgear"), "headgear", "antlers", [[234, 187, 170, 255]], level=8) -default her_hat_elf = DollCloth("hermione", ("head", "headgear"), "headgear", "elf", [[229, 0, 10, 255], [255, 239, 248, 255]], level=8) -default her_neckwear_choker1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "choker_1", [[229, 0, 10, 255]], level=4) -default her_neckwear_bell1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "bell_1", [[229, 0, 10, 255], [244, 181, 82, 255]], zorder=16, level=10) +default her_hat_antlers = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "antlers", ["#eabbaaff"], level=8, tracking="?hair") +default her_hat_elf = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "elf", ["#e5000aff", "#ffeff8ff"], level=8, tracking="?hair") +default her_neckwear_choker1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "choker_1", ["#e5000aff"], level=4) +default her_neckwear_bell1 = DollCloth("hermione", ("head", "neckwear"), "neckwear", "bell_1", ["#e5000aff", "#f4b552ff"], zorder=213, level=10) -default her_bra_ribbon = DollCloth("hermione", ("upper undergarment", "other"), "bra", "ribbon", [[229, 0, 10, 255]], blacklist=["top"], level=18) -default her_panties_ribbon = DollCloth("hermione", ("lower undergarment", "other"), "panties", "ribbon", [[229, 0, 10, 255]], blacklist=["bottom"], level=18) +default her_bra_ribbon = DollCloth("hermione", ("upper undergarment", "other"), "bra", "ribbon", ["#e5000aff"], blacklist=["top"], level=18) +default her_panties_ribbon = DollCloth("hermione", ("lower undergarment", "other"), "panties", "ribbon", ["#e5000aff"], blacklist=["bottom"], level=18) -default her_top_xmas = DollCloth("hermione", ("upper body", "other"), "top", "xmas",[[229, 0, 10, 255], [255, 239, 248, 255], [109, 194, 101, 255]], level=13) -default her_bottom_xmas = DollCloth("hermione", ("lower body", "other"), "bottom", "xmas",[[229, 0, 10, 255], [255, 239, 248, 255]], level=13) -default her_gloves_xmas = DollCloth("hermione", ("upper body", "gloves"), "gloves", "xmas", [[255, 239, 248, 255]]) -default her_stockings_xmas = DollCloth("hermione", ("legwear", "stockings"), "stockings", "xmas",[[255, 255, 255, 255], [255, 255, 255, 255]], level=10) +default her_top_xmas = DollCloth("hermione", ("upper body", "other"), "top", "xmas",["#e5000aff", "#ffeff8ff", "#6dc265ff"], level=13) +default her_bottom_xmas = DollCloth("hermione", ("lower body", "other"), "bottom", "xmas",["#e5000aff", "#ffeff8ff"], level=13) +default her_gloves_xmas = DollCloth("hermione", ("upper body", "gloves"), "gloves", "xmas", ["#ffeff8ff"]) +default her_stockings_xmas = DollCloth("hermione", ("legwear", "stockings"), "stockings", "xmas",["#ffffffff", "#ffffffff"], level=10) default her_outfit_ribbon = DollOutfit([her_hair_base, her_neckwear_choker1, her_bra_ribbon, her_panties_ribbon]) default her_outfit_xmas = DollOutfit([her_hair_base, her_hat_antlers, her_neckwear_bell1, her_top_xmas, her_bottom_xmas, her_gloves_xmas, her_stockings_xmas, her_panties_base1], addons=[her_hat_elf]) -##################### -## Wrestling Robes ## -##################### +############################ +## Wrestling Robes Outfit ## #Unlocked in a_white_christmas mirror story +############################ -default her_robe_wrestling = DollCloth("hermione", ("upper body", "robes"), "robe", "wrestling_robe", [[166, 63, 29, 255], [255, 253, 237, 255]], level=3) -default her_bra_sports = DollCloth("hermione", ("upper undergarment", "bras"), "bra", "sports_bra", [[66, 71, 100, 255], [242, 244, 255, 255]], level=3) -default her_panties_sports = DollCloth("hermione", ("lower undergarment", "panties"), "panties", "sports_panties", [[66, 71, 100, 255], [242, 244, 255, 255]], level=3) -default her_accessory_belt_wrestling = DollCloth("hermione", ("misc", "accessory"), "accessory0", "wrestling_belt", [[60, 71, 91, 255], [240, 251, 117, 255]], zorder=10, level=3) +default her_robe_wrestling = DollCloth("hermione", ("upper body", "robes"), "robe", "wrestling_robe", ["#a63f1dff", "#fffdedff"], level=3) +default her_bra_sports = DollCloth("hermione", ("upper undergarment", "bras"), "bra", "sports_bra", ["#424764ff", "#f2f4ffff"], level=3) +default her_panties_sports = DollCloth("hermione", ("lower undergarment", "panties"), "panties", "sports_panties", ["#424764ff", "#f2f4ffff"], level=3) +default her_accessory_belt_wrestling = DollCloth("hermione", ("misc", "accessory"), "accessory", "wrestling_belt", ["#3c475bff", "#f0fb75ff"], zorder=192, level=3) default her_outfit_wrestling = DollOutfit([her_hair_base, her_robe_wrestling, her_bra_sports, her_panties_sports, her_accessory_belt_wrestling]) -########## -## MISC ## -########## +############################ +## Blueballing Bad Outfit ## #Unlocked in blueballing_bad mirror story +############################ -default her_accessory_gift_wrap = DollCloth("hermione", ("misc", "accessory"), "accessory3", "leg_wrap", [[167, 77, 42, 255], [237, 179, 14, 255]], zorder=7, unlocked=True, level=5) -default her_bra_bandaids = DollCloth("hermione", ("upper undergarment", "other"), "bra", "bandaids", [[233, 187, 149, 255]], unlocked=True, level=19) +default her_accessory_bb_tie = DollCloth("hermione", ("misc", "accessory"), "accessory", "bb_tie", ["#b1339fff", "#f62800ff", "#fff700ff"], zorder=6) +default her_tattoo_bb_tattoo = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "bb_tattoo", ["#000000ff", "#fff700ff", "#f62800ff"]) + +default her_outfit_bb = DollOutfit([her_hair_base, her_accessory_bb_tie, her_tattoo_bb_tattoo]) + +################# +## Accessories ## +################# + +default her_accessory_house_emblem = DollCloth("hermione", ("misc", "accessory"), "accessory", "house_emblem", ["#a74d2aff", "#edb30eff"], zorder=193, unlocked=True) + +default her_accessory_reading_glasses = DollCloth("hermione", ("head", "glasses"), "glasses", "reading_glasses", ["#f0f0f1ff"], unlocked=True) +default her_accessory_vintage_glasses = DollCloth("hermione", ("head", "glasses"), "glasses", "vintage_glasses", ["#ffffff32", "#242424ff", "#747474ff"], unlocked=True) ############# ## Tattoos ## ############# # Pelvis/crotch (Slot 0) -default her_tattoo0_10g = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "10g_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_cockhole = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "cockhole_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_cumhere = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "cumhere_tattoo2", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_cumslut = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "cumslut_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_cunt = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "cunt_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_deatheater = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "deatheater_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_deposit = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "deposit_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_fuckme = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "fuckme_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_mudblood = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "mudblood_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_nocondom = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "nocondom_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_punkblood = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "punkblood_tattoo", [[192, 84, 58, 255], [68, 188, 64, 255]], unlocked=True) -default her_tattoo0_whore = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "whore_tattoo", [[0, 0, 0, 255]], unlocked=True) -default her_tattoo0_womb = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo0", "womb_tattoo", [[0, 0, 0, 255]], unlocked=True) +default her_tattoo_10g = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "10g_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_cockhole = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "cockhole_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_cumhere = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "cumhere_tattoo1", ["#000000ff"], unlocked=True) +default her_tattoo_cumslut = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "cumslut_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_cunt = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "cunt_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_deatheater = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "deatheater_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_deposit = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "deposit_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_fuckme = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "fuckme_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_mudblood = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "mudblood_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_nocondom = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "nocondom_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_punkblood = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "punkblood_tattoo", ["#c0543aff", "#44bc40ff"], unlocked=True) +default her_tattoo_whore = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "whore_tattoo", ["#000000ff"], unlocked=True) +default her_tattoo_womb = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "womb_tattoo", ["#000000ff"], unlocked=True) # Breasts/Nipples (Slot 1) -default her_tattoo1_twist = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo1", "twist_tattoo", [[0, 0, 0, 255]], unlocked=True) +default her_tattoo_twist = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "twist_tattoo", ["#000000ff"], unlocked=True) # Torso/chest (Slot 2) -default her_tattoo2_cumhere = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo2", "cumhere_tattoo1", [[0, 0, 0, 255]], unlocked=True) +default her_tattoo_cumhere2 = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "cumhere_tattoo2", ["#000000ff"], unlocked=True) # Legs/Thighs (Slot 3) -default her_tattoo3_lockhart = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo3", "lockhart_tattoo", [[70, 70, 70, 255]]) -default her_tattoo3_free = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo3", "free_tattoo", [[0, 0, 0, 255]], unlocked=True) +default her_tattoo_lockhart = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "lockhart_tattoo", ["#464646ff"]) +default her_tattoo_free = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo", "free_tattoo", ["#000000ff"], unlocked=True) ############ ## Makeup ## ############ # Face (Slot 0) -default her_makeup0_freckles = DollCloth("hermione", ("head", "makeup"), "makeup0", "freckles1", [[185, 124, 81, 255]], unlocked=True) -default her_makeup0_freckles_nonose = DollCloth("hermione", ("head", "makeup"), "makeup0", "freckles1_nonose", [[185, 124, 81, 255]], unlocked=True) +default her_makeup_freckles = DollCloth("hermione", ("head", "makeup"), "makeup", "freckles1", ["#b97c51ff"], unlocked=True) +default her_makeup_freckles_nonose = DollCloth("hermione", ("head", "makeup"), "makeup", "freckles1_nonose", ["#b97c51ff"], unlocked=True) # Breasts -default her_makeup1_freckles = DollCloth("hermione", ("head", "makeup"), "makeup1", "freckles2", [[185, 124, 81, 255]], unlocked=True) +default her_makeup_freckles2 = DollCloth("hermione", ("head", "makeup"), "makeup", "freckles2", ["#b97c51ff"], unlocked=True) # Torso -default her_makeup2_freckles = DollCloth("hermione", ("head", "makeup"), "makeup2", "freckles3", [[185, 124, 81, 255]], unlocked=True) +default her_makeup_freckles3 = DollCloth("hermione", ("head", "makeup"), "makeup", "freckles3", ["#b97c51ff"], unlocked=True) -# Lipstick (DollLipstick) -default her_makeup4_lipstick = DollLipstick("hermione", ("head", "makeup"), "makeup4", "lipstick", [[255, 70, 70, 255]], unlocked=True) +# Lipstick +default her_makeup_lipstick = DollMakeup("hermione", ("head", "makeup"), "makeup", "lipstick", ["#ff4646ff"], unlocked=True, tracking="mouth") ################ ## Pubic Hair ## ################ -default her_pubes_arrow = DollCloth("hermione", ("lower undergarment", "pubes"), "pubes", "arrow", [[152, 89, 48, 255]], unlocked=True) -default her_pubes_beaver = DollCloth("hermione", ("lower undergarment", "pubes"), "pubes", "beaver", [[152, 89, 48, 255]], unlocked=True) -default her_pubes_stuble = DollCloth("hermione", ("lower undergarment", "pubes"), "pubes", "stuble", [[92, 54, 29, 255]], unlocked=True) -default her_pubes_unshaved = DollCloth("hermione", ("lower undergarment", "pubes"), "pubes", "unshaved", [[92, 54, 29, 255]], unlocked=True) +default her_pubes_arrow = DollCloth("hermione", ("lower undergarment", "pubes"), "pubes", "arrow", ["#985930ff"], unlocked=True) +default her_pubes_beaver = DollCloth("hermione", ("lower undergarment", "pubes"), "pubes", "beaver", ["#985930ff"], unlocked=True) +default her_pubes_stuble = DollCloth("hermione", ("lower undergarment", "pubes"), "pubes", "stuble", ["#5c361dff"], unlocked=True) +default her_pubes_unshaved = DollCloth("hermione", ("lower undergarment", "pubes"), "pubes", "unshaved", ["#5c361dff"], unlocked=True) + +############### +## Piercings ## +############### + +default her_piercing_clit_stud = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "clit_stud", ["#a19f9fff"], unlocked=True) +default her_piercing_nipple_stud = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "nipple_stud", ["#a19f9fff"], unlocked=True) +default her_piercing_nipple_rings = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "nipple_rings", ["#a19f9fff"], unlocked=True) +default her_piercing_nipple_rings2 = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "nipple_rings2", ["#a19f9fff"], unlocked=True) +default her_piercing_nipple_rings3 = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "nipple_rings3", ["#a19f9fff"], unlocked=True) +default her_piercing_nipple_bells = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "nipple_bells", ["#f4b552ff"]) + +default her_piercing_belly_stud = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "belly_stud", ["#a19f9fff"], unlocked=True) +default her_piercing_belly_heart = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "belly_heart", ["#a19f9fff"], unlocked=True) +default her_piercing_belly_dick = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing", "belly_dick", ["#a19f9fff"], unlocked=True) + +########## +## MISC ## +########## + +default her_accessory_gift_wrap = DollCloth("hermione", ("misc", "accessory"), "accessory", "leg_wrap", ["#a74d2aff", "#edb30eff"], zorder=183, unlocked=True, level=5) +default her_bra_bandaids = DollCloth("hermione", ("upper undergarment", "other"), "bra", "bandaids", ["#e9bb95ff"], unlocked=True, level=19) ### Default Schedules ### @@ -506,68 +505,58 @@ default her_outfit_s_snow = DollOutfit([her_hair_base, her_top_pullover_1, her_b default her_outfit_s_overcast = DollOutfit([her_hair_base, her_top_pullover_1, her_bottom_school1, her_panties_base1, her_bra_base1, her_stockings_base1], True, schedule={"day": True, "night": True, "cloudy": True}) default her_outfit_s_rain = DollOutfit([her_hair_base, her_robe_school_1, her_top_school1, her_bottom_school1, her_panties_base1, her_bra_base1, her_stockings_base1], True, schedule={"day": True, "night": True, "rainy": True}) -############################ -## Cat-girl potion outfit ## -############################ +############ +## Events ## +############ -default her_cat_ears = DollCloth("hermione", ("head", "headgear"), "headgear", "cat_ears", [[209, 123, 67, 255], [232, 232, 232, 255]]) -default her_cat_legs = DollCloth("hermione", ("legwear", "stockings"), "stockings", "cat_legs",[[209, 123, 67, 255]]) -default her_cat_arms = DollCloth("hermione", ("upper body", "gloves"), "gloves", "cat_arms", [[209, 123, 67, 255], [214, 122, 122, 255], [37, 37, 37, 255]]) -default her_cat_tail = DollCloth("hermione", ("misc", "accessory"), "accessory0", "cat_tail", [[209, 123, 67, 255]], zorder=-1) -default her_cat_muzzle = DollCloth("hermione", ("head", "makeup"), "makeup0", "cat_muzzle", [[214, 122, 122, 255]]) +# Gryffindor Quidditch Match +default herq_panties_on_head = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "panties_on_head", ["#9cccf9ff"], tracking="?hair") + +# Vibrator +default her_panties_base_vibrators = DollCloth("hermione", ("lower undergarment", "panties"), "panties", "basic_panties_vibrators", ["#e8e8e8ff", "#ca3c01ff"]) +default her_bra_base_vibrators = DollCloth("hermione", ("upper undergarment", "bras"), "bra", "basic_bra_vibrators", ["#e8e8e8ff", "#ca3c01ff"]) +default her_nipple_vibrators = DollCloth("hermione", ("misc", "accessory"), "accessory", "nipple_vibrators", ["#ea8e61ff", "#fcd987ff", "#ff7660ff"], zorder=5) +default her_clit_vibrators = DollCloth("hermione", ("misc", "accessory"), "accessory", "clit_vibrators", ["#ea8e61ff", "#fcd987ff", "#ff7660ff"], zorder=5) + +default her_outfit_vibrators = DollOutfit([her_hair_base, her_panties_base_vibrators, her_bra_base_vibrators, her_nipple_vibrators, her_clit_vibrators], hidden=True) +default her_outfit_vibrators_nude = DollOutfit([her_hair_base, her_nipple_vibrators, her_clit_vibrators], hidden=True) + +# Magic Collars +default her_neckwear_basic_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "basic_collar", ["#b6725bff", "#ff0000ff"]) +default her_neckwear_good_girl_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "good_girl_collar", ["#ffb8c0ff", "#ffe0e6ff", "#ff66ccff"]) +default her_neckwear_whore_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "whore_collar", ["#3b3b3bff"]) +default her_neckwear_flasher_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "flasher_collar", ["#e940f0ff", "#f5db68ff"], blacklist=["top", "bra"]) +default her_neckwear_slut_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "slut_collar", ["#fb4252ff", "#282828ff"]) +default her_neckwear_slave_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "slave_collar", ["#aaa9adff"]) + +# Butt Plugs +default her_buttplug_small1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "buttplug_small_1", ["#fcc3dbff", "#544cd6ff"], zorder=-1, level=15) +default her_buttplug_medium1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "buttplug_medium_1", ["#ffff77ff", "#f38c09ff", "#ff4c2eff", "#544cd6ff"], zorder=-1, level=19) +default her_buttplug_large1 = DollCloth("hermione", ("misc", "accessory"), "accessory", "buttplug_large_1", ["#63d00eff", "#fe6cb5ff", "#544cd6ff"], zorder=-1, level=23) + +# Potions # + +default her_chest_breasts1 = DollBodypart("hermione", ("hidden", "chest"), "chest", "big1") +default her_chest_breasts2 = DollBodypart("hermione", ("hidden", "chest"), "chest", "big2") +default her_chest_breasts3 = DollBodypart("hermione", ("hidden", "chest"), "chest", "big3") + +default her_hips_ass1 = DollBodypart("hermione", ("hidden", "hips"), "hips", "big1") +default her_hips_ass2 = DollBodypart("hermione", ("hidden", "hips"), "hips", "big2") +default her_hips_ass3 = DollBodypart("hermione", ("hidden", "hips"), "hips", "big3") + +# Catgirl +default her_cat_ears = DollClothDynamic("hermione", ("head", "headgear"), "headgear", "cat_ears", ["#d17b43ff", "#e8e8e8ff"], tracking="?hair") +default her_cat_legs = DollCloth("hermione", ("legwear", "stockings"), "stockings", "cat_legs",["#d17b43ff"]) +default her_cat_arms = DollCloth("hermione", ("upper body", "gloves"), "gloves", "cat_arms", ["#d17b43ff", "#d67a7aff", "#252525ff"]) +default her_cat_tail = DollCloth("hermione", ("misc", "accessory"), "accessory", "cat_tail", ["#d17b43ff"], zorder=-1) +default her_cat_muzzle = DollCloth("hermione", ("head", "makeup"), "makeup", "cat_muzzle", ["#d67a7aff"]) default her_outfit_cat1 = DollOutfit([her_hair_base, her_cat_ears, her_cat_tail], hidden=True) default her_outfit_cat2 = DollOutfit([her_hair_base, her_cat_ears, her_cat_tail, her_cat_legs, her_cat_arms, her_pubes_beaver], hidden=True) default her_outfit_cat3 = DollOutfit([her_hair_base, her_cat_ears, her_cat_tail, her_cat_legs, her_cat_arms, her_pubes_beaver, her_cat_muzzle], hidden=True) -################### -## Magic Collars ## -################### - -default her_neckwear_basic_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "basic_collar", [[182, 114, 91, 255], [255, 0, 0, 255]]) -default her_neckwear_good_girl_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "good_girl_collar", [[255, 184, 192, 255], [255, 224, 230, 255], [255, 102, 204, 255]]) -default her_neckwear_whore_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "whore_collar", [[59, 59, 59, 255]]) -default her_neckwear_flasher_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "flasher_collar", [[233, 64, 240, 255], [245, 219, 104, 255]], blacklist=["top", "bra"]) -default her_neckwear_slut_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "slut_collar", [[251, 66, 82, 255], [40, 40, 40, 255]]) -default her_neckwear_slave_collar = DollCloth("hermione", ("head", "neckwear"), "neckwear", "slave_collar", [[170, 169, 173, 255]]) - ################ -## Butt Plugs ## +## Not In Use ## ################ -default her_buttplug_small1 = DollCloth("hermione", ("misc", "accessory"), "buttplug", "buttplug_small_1", [[252, 195, 219, 255], [84, 76, 214, 255]], zorder=-1, level=15) -default her_buttplug_medium1 = DollCloth("hermione", ("misc", "accessory"), "buttplug", "buttplug_medium_1", [[255, 255, 119, 255], [243, 140, 9, 255], [255, 76, 46, 255], [84, 76, 214, 255]], zorder=-1, level=19) -default her_buttplug_large1 = DollCloth("hermione", ("misc", "accessory"), "buttplug", "buttplug_large_1", [[99, 208, 14, 255], [254, 108, 181, 255], [84, 76, 214, 255]], zorder=-1, level=23) -############### -## Piercings ## -############### - -default her_piercing0_clit_stud = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing0", "clit_stud", [[161, 159, 159, 255]], unlocked=True) -default her_piercing1_nipple_stud = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing1", "nipple_stud", [[161, 159, 159, 255]], unlocked=True) -default her_piercing1_nipple_rings = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing1", "nipple_rings", [[161, 159, 159, 255]], unlocked=True) -default her_piercing1_nipple_rings2 = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing1", "nipple_rings2", [[161, 159, 159, 255]], unlocked=True) -default her_piercing1_nipple_rings3 = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing1", "nipple_rings3", [[161, 159, 159, 255]], unlocked=True) -default her_piercing1_nipple_bells = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing1", "nipple_bells", [[244, 181, 82, 255]]) - -default her_piercing2_belly_stud = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing2", "belly_stud", [[161, 159, 159, 255]], unlocked=True) -default her_piercing2_belly_heart = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing2", "belly_heart", [[161, 159, 159, 255]], unlocked=True) -default her_piercing2_belly_dick = DollCloth("hermione", ("piercings & tattoos", "piercings"), "piercing2", "belly_dick", [[161, 159, 159, 255]], unlocked=True) - -############ -## Events ## -############ - -default herq_panties_on_head = DollCloth("hermione", ("head", "headgear"), "headgear", "panties_on_head", [[156, 204, 249, 255]]) - -default her_panties_base_vibrators = DollCloth("hermione", ("lower undergarment", "panties"), "panties", "basic_panties_vibrators", [[232, 232, 232, 255], [202, 60, 1, 255]]) -default her_bra_base_vibrators = DollCloth("hermione", ("upper undergarment", "bras"), "bra", "basic_bra_vibrators", [[232, 232, 232, 255], [202, 60, 1, 255]]) -default her_nipple_vibrators = DollCloth("hermione", ("misc", "accessory"), "accessory0", "nipple_vibrators", [[234, 142, 97, 255], [252, 217, 135, 255], [255, 118, 96, 255]], zorder=1) -default her_clit_vibrators = DollCloth("hermione", ("misc", "accessory"), "accessory1", "clit_vibrators", [[234, 142, 97, 255], [252, 217, 135, 255], [255, 118, 96, 255]], zorder=1) - -default her_outfit_vibrators = DollOutfit([her_hair_base, her_panties_base_vibrators, her_bra_base_vibrators, her_nipple_vibrators, her_clit_vibrators], hidden=True) -default her_outfit_vibrators_nude = DollOutfit([her_hair_base, her_nipple_vibrators, her_clit_vibrators], hidden=True) - -default her_accessory_bb_tie = DollCloth("hermione", ("misc", "accessory"), "accessory4", "bb_tie", [[177, 51, 159, 255], [246, 40, 0, 255], [255, 247, 0, 255]], zorder=10) -default her_tattoo_bb_tattoo = DollCloth("hermione", ("piercings & tattoos", "tattoos"), "tattoo3", "bb_tattoo", [[0, 0, 0, 255], [255, 247, 0, 255], [246, 40, 0, 255]]) - -default her_outfit_bb = DollOutfit([her_hair_base, her_accessory_bb_tie, her_tattoo_bb_tattoo]) +#default her_bottom_winter_1 = DollCloth("hermione", ("lower body", "skirts"), "bottom", "winter_skirt_1", ["#c01f1eff"]) diff --git a/game/scripts/characters/hermione/wardrobe_reactions.rpy b/game/scripts/characters/hermione/wardrobe_reactions.rpy index 8c42a488..75508035 100644 --- a/game/scripts/characters/hermione/wardrobe_reactions.rpy +++ b/game/scripts/characters/hermione/wardrobe_reactions.rpy @@ -1079,6 +1079,20 @@ label her_reaction_equip_outfit(item): gen "Just put the thing on." ("base", xpos="far_left", ypos="head") her "Alright..." ("open", "narrow", "base", "down", cheeks="blush") + ###################### + ## Reindeer Costume ## + ###################### + elif item == her_outfit_reindeer: #Req 19 (top, stockings) + gen "I've got this reindeer costume for you to wear." ("base", xpos="far_left", ypos="head") + her "You want me to dress up like a reindeer?" ("soft", "base", "base", "mid") + gen "Of course, 'Tis the season after all." ("base", xpos="far_left", ypos="head") + her "I just thought that you'd want me to wear something... You know..." ("annoyed", "base", "base", "R") + gen "Here's the costume." ("base", xpos="far_left", ypos="head") + her "Oh, Now it makes sense..." ("open", "narrow", "base", "down", cheeks="blush") + gen "So you'll wear it?" ("base", xpos="far_left", ypos="head") + her "If wearing it is what you want me to do..." ("soft", "narrow", "base", "R", cheeks="blush") + gen "Yes please!" ("base", xpos="far_left", ypos="head") + ############################### ## Poker Outfit (token shop) ## ############################### @@ -1932,6 +1946,33 @@ label her_reaction_equip_outfit_fail(item): her "*Hmm*... I think I'll pass." ("angry", "closed", "base", "mid", cheeks="blush") her "" ("normal", "squint", "base", "R", cheeks="blush") + ###################### + ## Reindeer Costume ## + ###################### + elif item == her_outfit_reindeer: #Req 19 (top, stockings) + if her_whoring < 4: + gen "Ever considered dressing up like a reindeer?" ("base", xpos="far_left", ypos="head") + her "Why on earth would I consider doing something like that?" ("open", "base", "base", "mid") + gen "No reason..." ("base", xpos="far_left", ypos="head") + else: # < 13 + gen "Put on this reindeer costume for me will you?" ("base", xpos="far_left", ypos="head") + her "A reindeer costume?" ("soft", "base", "base", "mid") + gen "Yep, this one right here." ("base", xpos="far_left", ypos="head") + her "Looks-- Hold on, there's a hole in it!" ("angry", "narrow", "base", "down") + gen "Of course there is, how else would you be able to wear it?" ("base", xpos="far_left", ypos="head") + her "Not that kind of hole, there's a hole in the-- the--" ("angry", "narrow", "base", "mid") + gen "Let me see." ("base", xpos="far_left", ypos="head") + gen "Oh, would you look at that." ("base", xpos="far_left", ypos="head") + gen "Must be some kind of manufacturing error... Those darn elves, I tell you..." ("base", xpos="far_left", ypos="head") + her "House elves made this?!" ("open", "narrow", "angry", "mid") + gen "Santa's elves, house elves, is there a difference?" ("base", xpos="far_left", ypos="head") + her "..." ("annoyed", "narrow", "angry", "mid") + gen "*Err*... It was a joke, since it's a Christmas costume. Of course elves didn't make it!" ("angry", xpos="far_left", ypos="head") + her "..." ("disgust", "narrow", "angry", "mid") + gen "I mean, if elves had made it, I'm sure they wouldn't have missed this giant hole." ("base", xpos="far_left", ypos="head") + her "*Sigh*..." ("disgust", "narrow", "angry", "R") + gen "(Crisis averted)." ("base", xpos="far_left", ypos="head") + ############################### ## Poker Outfit (token shop) ## ############################### diff --git a/game/scripts/characters/hooch/wardrobe.rpy b/game/scripts/characters/hooch/wardrobe.rpy index 6d8812e7..ac05c39e 100644 --- a/game/scripts/characters/hooch/wardrobe.rpy +++ b/game/scripts/characters/hooch/wardrobe.rpy @@ -2,69 +2,25 @@ ## Character ## ############### -default hooch = Doll(name="hooch", - clothes={"headgear": [None, 15, True], - "hair": [None, 4, True], - "glasses": [None, 12, True], - "earrings": [None, 14, True], - "neckwear": [None, 16, True], - "robe": [None, 22, True], - "gloves": [None, 14, True], - "top": [None, 15, True], - "bra": [None, 9, True], - "bottom": [None, 8, True], - "garterbelt": [None, 7, True], - "panties": [None, 6, True], - "stockings": [None, 5, True], - "buttplug": [None, -1, True], - "pubes": [None, 3, True], - "footwear": [None, 6, True], - "tattoo0": [None, 1, True], - "tattoo1": [None, 1, True], - "tattoo2": [None, 1, True], - "tattoo3": [None, 1, True], - "tattoo4": [None, 1, True], - "piercing0": [None, 2, True], - "piercing1": [None, 2, True], - "piercing2": [None, 2, True], - "piercing3": [None, 2, True], - "piercing4": [None, 2, True], - "accessory0": [None, 12, True], - "accessory1": [None, 12, True], - "accessory2": [None, 12, True], - "accessory3": [None, 12, True], - "accessory4": [None, 12, True], - "makeup0": [None, 3, True], - "makeup1": [None, 3, True], - "makeup2": [None, 3, True], - "makeup3": [None, 3, True], - "makeup4": [None, 3, True]}, - face={"tears": [None, 12, True], - "cheeks": [None, 7, True], - "eyebrows": ["base", 11, True], - "eyes": ["base", 8, True], - "pupils": ["mid", 9, True], - "mouth": ["base", 13, True]}, - body={"base": ["front", 0], - "breasts": [None, 2], - "backside": [None, 1]} - ) +default hooch = Doll(name="hooch") + +default hoo_frame_default = DollBodypart("hooch", ("hidden", "frame"), "frame", "default") +default hoo_body_default = DollOutfit([hoo_frame_default], hidden=True) ############### ## Hair ## ############### -default hoo_footwear_shoes = DollClothDummy("hooch", type="footwear") -default hoo_hair_base = DollCloth("hooch", ("head", "hair"), "hair", "base", [[125, 72, 42, 255]], unlocked=True) -default hoo_panties_sport = DollCloth("hooch", ("lower undergarment", "panties"), "panties", "sport", [[192, 65, 54, 255], [237, 225, 255, 255]], unlocked=True) -default hoo_bra_sport = DollCloth("hooch", ("upper undergarment", "bras"), "bra", "sport", [[192, 65, 54, 255], [237, 225, 255, 255]], unlocked=True) -default hoo_top_sport = DollCloth("hooch", ("upper body", "shirts"), "top", "sport_shirt", [[237, 225, 255, 255], [139, 104, 192, 255]], unlocked=True) -default hoo_bottom_sport = DollCloth("hooch", ("lower body", "skirts"), "bottom", "sport_trousers", [[139, 104, 192, 255], [237, 225, 255, 255]], unlocked=True) -default hoo_gloves_sport = DollCloth("hooch", ("upper body", "gloves"), "gloves", "sport_gloves", [[78, 72, 115, 255]], unlocked=True) -default hoo_robe_sport = DollCloth("hooch", ("upper body", "robes"), "robe", "sport_robe", [[59, 63, 88, 255], [112, 34, 111, 255], [198, 118, 198, 255]], unlocked=True) -default hoo_headgear_sport = DollCloth("hooch", ("head", "headgear"), "headgear", "sport_goggles", [[96, 134, 145, 255], [154, 98, 50, 255], [49, 60, 91, 255]], unlocked=True) -default hoo_accessory_broom = DollCloth("hooch", ("misc", "accessory"), "accessory1", "broom", [[144, 83, 64, 255], [121, 87, 71, 255], [163, 159, 112, 255]], unlocked=True, zorder=22) -default hoo_accessory_broom_dildo = DollCloth("hooch", ("misc", "accessory"), "accessory1", "broom_dildo", [[144, 83, 64, 255], [121, 87, 71, 255], [163, 159, 112, 255]], unlocked=True, zorder=22) +default hoo_hair_base = DollCloth("hooch", ("head", "hair"), "hair", "base", ["#7d482aff"], unlocked=True) +default hoo_panties_sport = DollCloth("hooch", ("lower undergarment", "panties"), "panties", "sport", ["#c04136ff", "#ede1ffff"], unlocked=True) +default hoo_bra_sport = DollCloth("hooch", ("upper undergarment", "bras"), "bra", "sport", ["#c04136ff", "#ede1ffff"], unlocked=True) +default hoo_top_sport = DollCloth("hooch", ("upper body", "shirts"), "top", "sport_shirt", ["#ede1ffff", "#8b68c0ff"], unlocked=True) +default hoo_bottom_sport = DollCloth("hooch", ("lower body", "skirts"), "bottom", "sport_trousers", ["#8b68c0ff", "#ede1ffff"], unlocked=True) +default hoo_gloves_sport = DollCloth("hooch", ("upper body", "gloves"), "gloves", "sport_gloves", ["#4e4873ff"], unlocked=True) +default hoo_robe_sport = DollCloth("hooch", ("upper body", "robes"), "robe", "sport_robe", ["#3b3f58ff", "#70226fff", "#c676c6ff"], unlocked=True) +default hoo_headgear_sport = DollCloth("hooch", ("head", "headgear"), "headgear", "sport_goggles", ["#608691ff", "#9a6232ff", "#313c5bff"], unlocked=True) +default hoo_accessory_broom = DollCloth("hooch", ("misc", "accessory"), "accessory", "broom", ["#905340ff", "#795747ff", "#a39f70ff"], unlocked=True, zorder=300) +default hoo_accessory_broom_dildo = DollCloth("hooch", ("misc", "accessory"), "accessory", "broom_dildo", ["#905340ff", "#795747ff", "#a39f70ff"], unlocked=True, zorder=300) default hoo_outfit_default = DollOutfit([hoo_hair_base, hoo_panties_sport, hoo_bra_sport, hoo_top_sport, hoo_bottom_sport, hoo_gloves_sport, hoo_robe_sport, hoo_headgear_sport, hoo_accessory_broom], unlocked=True) default hoo_outfit_last = DollOutfit([hoo_hair_base, hoo_panties_sport, hoo_bra_sport, hoo_top_sport, hoo_bottom_sport, hoo_gloves_sport, hoo_robe_sport, hoo_headgear_sport, hoo_accessory_broom], hidden=True) diff --git a/game/scripts/characters/luna/chitchats.rpy b/game/scripts/characters/luna/chitchats.rpy index 34a6fc95..33065ae8 100644 --- a/game/scripts/characters/luna/chitchats.rpy +++ b/game/scripts/characters/luna/chitchats.rpy @@ -31,14 +31,14 @@ label luna_chitchat: $ random_number = renpy.random.randint(1, 10) if random_number == 1: - lun "During today's potions lesson I remembered reading an article in the quibbler about the Valerian root." ("soft", "base", "base", "mid") - lun "It was talking about its calming properties and how chewing on it would produce the same effect as a Draught of Peace." ("open", "base", "base", "mid") - lun "Since we were brewing a Draught of Peace potion I brought up the article with professor Snape but he just laughed and prompted me to try it." ("normal", "base", "base", "mid") - lun "So I did, and let me tell you... I've never felt so relaxed in my life." ("grin", "base", "base", "mid") + lun "We were brewing a Draught of Peace during today's potions lesson, which reminded me of an article in The Quibbler about Valerian root." ("soft", "base", "base", "mid") + lun "It described the roots calming properties and how when you chew on it, it will produce the same effect as the potion." ("open", "base", "base", "mid") + lun "I brought this fact up to professor Snape, but he just laughed and prompted me to have at it." ("normal", "base", "base", "mid") + lun "So I tried chewing on one... And let me tell you... I've never felt so relaxed in my life." ("grin", "base", "base", "mid") elif random_number == 2: lun "I had a strange dream last night..." ("soft", "base", "base", "mid") - lun "I was sitting by a tree when a rabbit carrying a pocket watch jumped by, prompting me to follow it..." ("open", "base", "base", "mid") + lun "I was alone, sitting by a tree when suddenly a rabbit carrying a pocket-watch jumped by..." ("open", "base", "base", "mid") lun "Must've been the cheese I ate before going to bed..." ("open", "base", "base", "down") elif random_number == 3: @@ -47,12 +47,12 @@ label luna_chitchat: lun "" ("base", "base", "base", "mid") elif random_number == 4: - lun "I was a bit disappointed when I found out the Thestrals live in the forbidden forest." ("annoyed", "base", "base", "R") + lun "I was a bit disappointed when I found out that the Thestrals live deep inside the forbidden forest." ("annoyed", "base", "base", "R") lun "I'm hoping I'll be able to ride one someday..." ("grin", "base", "base", "mid") elif random_number == 5: - lun "There something I've been meaning to ask you." ("open", "closed", "base", "mid") - lun "Could we not put up so many mistletoe's during the holiday celebrations?" ("soft", "base", "base", "mid") + lun "[lun_genie_name]...{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 mistletoe's during the holiday celebrations?" ("soft", "base", "base", "mid") lun "It would highly decrease the risk of a Nargle infestation." ("open", "base", "base", "mid") elif random_number == 6: @@ -60,7 +60,7 @@ label luna_chitchat: lun "I'd love to take one to Sweden and look for the Crumple-Horned Snorkack." ("grin", "base", "base", "mid") elif random_number == 7: - lun "Sir, you really need to do something about Peeves." ("annoyed", "base", "base", "R") + lun "[lun_genie_name], you really need to do something about Peeves." ("annoyed", "base", "base", "R") lun "He's been following me around chanting \"Loony Luna, Loony Luna, who would ever do yah\"..." ("open", "base", "base", "R") elif random_number == 8: @@ -70,10 +70,10 @@ label luna_chitchat: elif random_number == 9: lun "I hope we'll be able to contain this infestation within the school." ("open", "closed", "base", "mid") - lun "I'm a bit worried it might spread on one of our visits to Hogsmeade." ("annoyed", "base", "base", "R") + lun "I'm a bit worried it might spread to Hogsmeade during one of our student outings." ("annoyed", "base", "base", "R") elif random_number == 10: - lun "Sir, do you think wrackspurts could spread to animals?" ("open", "wide", "base", "mid") + lun "[lun_genie_name], do you think wrackspurts could spread to animals?" ("open", "wide", "base", "mid") lun "No, don't say anything... I can't bear the thought of it!" ("open", "happyCl", "base", "mid") elif lun_tier == 2: @@ -85,66 +85,66 @@ label luna_chitchat: lun "I found a sock completely filled with them once!" ("open", "wide", "base", "mid") elif random_number == 2: - lun "I feel like I could've nipped this infestation in the bud if only we had made spectrespecs mandatory years ago." ("open", "closed", "base", "mid") - lun "This school sure is lucky that you're here to help dealing with this, Sir." ("base", "narrow", "base", "mid") + lun "I feel like I could've nipped this infestation in the bud if only my proposal of mandatory spectrespecs had gone through." ("open", "closed", "base", "mid") + lun "At least we can count ourselves lucky to have such a great headmaster here to help deal with this unfortunate situation." ("base", "narrow", "base", "mid") elif random_number == 3: - lun "I used to think Wrackspurts could only fly small distances." ("open", "base", "base", "mid") + lun "I used to think that wrackspurts could only fly small distances." ("open", "base", "base", "mid") lun "But then I saw some on the ceiling in Tonks' classroom!" ("clench", "wide", "base", "mid") lun "I wonder if she was trying to fend them off with defensive magic..." ("open", "base", "base", "R") elif random_number == 4: - lun "I still can't believe you managed to channel the wrackspurts though your penis, sir." ("grin", "base", "base", "mid") + lun "I still can't believe you've managed to channel the wrackspurts though your penis, [lun_genie_name]." ("grin", "base", "base", "mid") lun "You've got to teach me how to do that!" ("base", "wink", "base", "mid") elif random_number == 5: - lun "Are you able to cast other magic through your penis, sir?" ("open", "base", "raised", "mid") + lun "Are you able to cast other magic through your penis, [lun_genie_name]?" ("open", "base", "raised", "mid") lun "We should try it sometime!" ("grin", "base", "base", "mid") elif random_number == 6: - lun "I can't help but imagine what it'd look like to have a patronus cast through a penis..." ("base", "closed", "base", "mid") - lun "Is that a weird thing to be imagining?" ("soft", "base", "base", "mid") + lun "I can't help but imagine what a patronus would look like when bursting through the tip of a penis..." ("base", "closed", "base", "mid") + lun "...{w=0.4} Is that a weird thing to be imagining?" ("soft", "base", "base", "mid") elif random_number == 7: lun "I'm still not so sure I'll ever be able to get rid of these spurts myself..." ("annoyed", "narrow", "base", "down") - lun "If it requires a lot of focus that is... I'm not very good at that." ("soft", "narrow", "base", "R") + lun "If it requires a lot of focus that is...{w=0.4} I'm not very good at that." ("soft", "narrow", "base", "R") elif random_number == 8: - lun "Are you sure we shouldn't clean your desk, sir?" ("soft", "base", "raised", "mid") - lun "Or are you worried they might spread elsewhere if we move them?" ("open", "base", "base", "mid") + lun "Are you sure we shouldn't clean your desk, [lun_genie_name]?" ("soft", "base", "raised", "mid") + lun "Or are you worried the wrackspurts might spread elsewhere if we move them?" ("open", "base", "base", "mid") elif random_number == 9: - lun "Can you inspect my body today, sir?" ("angry", "base", "raised", "mid") + lun "Can you inspect my body today, [lun_genie_name]?" ("angry", "base", "raised", "mid") lun "Can you?" ("angry", "wide", "base", "mid") lun "Please." ("angry", "wide", "base", "mid") elif random_number == 10: - lun "Sir, Is it supposed to feel really good when you rub your thighs together?" ("soft", "base", "raised", "mid") + lun "[lun_genie_name], Is it supposed to feel really good when you rub your thighs together?" ("soft", "base", "raised", "mid") elif lun_tier == 3: $ random_number = renpy.random.randint(1, 10) if random_number == 1: - lun "*Ehm*... Hypothetically... What would a person do if they got some wrackspurts stuck to their underwear?" ("open", "base", "base", "R") + lun "*Ehm*...{w=0.4} Hypothetically...{w=0.4} What would a person do if they got some wrackspurts stuck to their underwear?" ("open", "base", "base", "R") elif random_number == 2: - lun "I'm so glad the inspection was successful, I don't know what I'd do if we didn't get anywhere with it..." ("base", "narrow", "base", "R") + lun "I'm so glad that the inspection was successful...{w=0.4} I don't know what would've done if we didn't make any progress..." ("base", "narrow", "base", "R") elif random_number == 3: - lun "Is it possible to have magic fingers, sir?" ("soft", "base", "base", "mid", cheeks="blush") - lun "You know how some people are born with innate magic abilities." ("open", "closed", "base", "mid", cheeks="blush") - lun "I was just thinking about when you touched me down there..." ("soft", "narrow", "base", "R", cheeks="blush") + lun "Is it possible for someone to possess magical fingers, [lun_genie_name]?" ("soft", "base", "base", "mid", cheeks="blush") + lun "You know, like how some people are born with innate magical abilities." ("open", "closed", "base", "mid", cheeks="blush") + lun "It would explain a lot about what I felt when you touched me down there..." ("soft", "narrow", "base", "R", cheeks="blush") elif random_number == 4: lun "That thing I felt on my back when you helped me..." ("open", "base", "base", "R", cheeks="blush") lun "*Hmm*... Nevermind..." ("base", "narrow", "base", "down") elif random_number == 5: - lun "I've been trying to figure out if there's any more sensitive areas on my body." ("open", "base", "base", "down") - lun "But it's not easy when you're ticklish..." ("annoyed", "base", "base", "down") + lun "I've been trying to figure out if there's any other sensitive areas on my body." ("open", "base", "base", "down") + lun "But doing so isn't that simple when you're ticklish..." ("annoyed", "base", "base", "down") elif random_number == 6: - lun "I've been thinking... since my nipples get hard sometime... I wonder if it's possible to rub them to get the wrackspurts out like you do your penis." ("soft", "base", "raised", "mid") + lun "I've been thinking...{w=0.4} Since my nipples get hard sometime, perhaps I'd be able to expel the wrackspurts through them like you do through your penis." ("soft", "base", "raised", "mid") elif random_number == 7: lun "The wrackspurts appear to have been building up even faster than normal recently." ("soft", "narrow", "base", "R") @@ -155,12 +155,11 @@ label luna_chitchat: lun "You watch me!" ("base", "wink", "base", "mid") elif random_number == 9: - lun "You said that my naked body helped you release the spurts, what did you mean by that exactly?" ("soft", "base", "raised", "mid") - lun "They're not flocking over to me are they?!" ("angry", "wide", "base", "mid") + lun "You said that my naked body helped you release the spurts...{w=0.4} What did you mean by that exactly?" ("soft", "base", "raised", "mid") elif random_number == 10: - lun "How come you're so quick at unhooking a woman's bra, sir?" ("open", "base", "base", "down") - lun "Wait, what am I saying... Of course the great Dumbledore can do anything with ease..." ("angry", "wide", "base", "mid") + lun "How come you're so skilled at unhooking a woman's bra, [lun_genie_name]?" ("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") # elif lun_tier == 4: # $ random_number = renpy.random.randint(1, 10) diff --git a/game/scripts/characters/luna/common.rpy b/game/scripts/characters/luna/common.rpy index c3f1662d..1cf81c51 100644 --- a/game/scripts/characters/luna/common.rpy +++ b/game/scripts/characters/luna/common.rpy @@ -55,9 +55,6 @@ label end_luna_event: $ luna_busy = True $ luna.wear("all") - $ renpy.stop_predict(luna.get_image()) - $ renpy.stop_predict("characters/luna/face/*.webp") - call music_block jump main_room_menu 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 33e4a779..ae6e6ee3 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: label ll_pf_inspect_T2_E1_intro: gen "Ready for your physical, [luna_name]?" ("grin", xpos="far_left", ypos="head") - lun "My Physical, [lun_genie_name]?" ("open", "base", "raised", "mid") + lun "My physical, [lun_genie_name]?" ("open", "base", "raised", "mid") 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") @@ -86,16 +86,16 @@ label ll_pf_inspect_T2_E1_intro: else: gen "Let's see what we got here..." ("base", xpos="far_left", ypos="head") gen "*Hmm*..." ("base", xpos="far_left", ypos="head") - lun "Something wrong [lun_genie_name]?" ("soft", "base", "raised", "mid") + lun "Something wrong, [lun_genie_name]?" ("soft", "base", "raised", "mid") gen "Not at all, [luna_name]!" ("base", xpos="far_left", ypos="head") gen "I'm just inspecting those lovely breasts of yours!" ("base", xpos="far_left", ypos="head") lun "*Ehm*...{w=0.3} Lovely, [lun_genie_name]?" ("soft", "base", "raised", "mid") gen "*Err*...{w=0.4} Healthy! They look very healthy!" ("base", xpos="far_left", ypos="head") lun "I see...{w=0.4} Thank you [lun_genie_name]!" ("grin", "base", "base", "mid") - gen "But I still need a proper look so you're going to have to take your bra off as well." ("base", xpos="far_left", ypos="head") + gen "But I still need a proper look, so you're going to have to take your bra off as well." ("base", xpos="far_left", ypos="head") lun "Certainly [lun_genie_name]." ("base", "base", "base", "mid") - #Luna takes bra off (Not available in wardrobe until next tier) + #Luna takes bra off (Not possible in wardrobe until next tier) $ renpy.sound.play("sounds/cloth_sound3.ogg") $ luna.strip("bra") with d3 @@ -108,7 +108,7 @@ label ll_pf_inspect_T2_E1_intro: lun "So...{w=0.4} Do you think this should work, [lun_genie_name]?" ("open", "base", "raised", "mid") gen "Oh...{w=0.4} It's working alright." ("grin", xpos="far_left", ypos="head") - call nar(">Focusing your attention on the girls breasts you feel your cock harden more and more with each stroke...") + call nar(">Focusing your attention on the girls 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") gen "*Mmm*...{w=0.4} The what, sorry?" ("base", xpos="far_left", ypos="head") @@ -144,20 +144,20 @@ label ll_pf_inspect_T2_E1_intro: gen "I see..." ("base", xpos="far_left", ypos="head") gen "Well that wont do." ("base", xpos="far_left", ypos="head") gen "Fighting it is what's been holding you...{w=0.4} *Err*...{w=0.4} Them back, [luna_name]." ("base", xpos="far_left", ypos="head") - gen "You need to allow that feeling to build up or you--{w=0.2} *Ah*...{w=0.4} You won't be able to expel them." ("base", xpos="far_left", ypos="head") + gen "You need to allow that feeling to build up, or you--{w=0.2} *Ah*...{w=0.4} You won't be able to expel them." ("base", xpos="far_left", ypos="head") call nar(">You keep stroking your cock, thinking about what you'd do to those nipples...") lun "Wait...{w=0.4} So I've been doing it wrong the whole time!?" ("angry", "base", "base", "mid", cheeks="blush") - 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 "I can't believe I didn't think of that before!" ("angry", "base", "base", "down", cheeks="blush") - call nar(">Looking up at Luna's face, you notice her expression changed to that of excitement and lust...") - call nar(">After a moment of silence you finally speak up in fear of not being able to finish in time.") + call nar(">Looking up at Luna's face, you notice her expression has changed to that of excitement and lust...") + call nar(">After a moment of silence, you finally speak up in fear of not being able to finish in time.") - gen "*Ehm*...{w=0.4} So...{w=0.4} Any other areas that you've noticed being unusually sensitive [luna_name]?" ("base", xpos="far_left", ypos="head") + gen "*Ehm*...{w=0.4} So...{w=0.4} Any other areas that you've noticed being unusually sensitive, [luna_name]?" ("base", xpos="far_left", ypos="head") lun "Oh, yes [lun_genie_name]!" ("mad", "base", "base", "mid", cheeks="blush") lun "There's this area down here!" ("angry", "base", "base", "down", cheeks="blush") @@ -168,7 +168,7 @@ label ll_pf_inspect_T2_E1_intro: #Luna takes her Bottoms, panties and everything else off $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ luna.strip("all") + $ luna.strip("clothes") with d3 pause .5 @@ -191,13 +191,13 @@ label ll_pf_inspect_T2_E1_intro: lun "[lun_genie_name]?" gen "*Ahem*...{w=0.4} Yes, I'd say that area is definitely a contender." - call nar(">With a full view of the girls naked body, you feel your cock throbbing in your hand and you begin stroking it even faster...") + call nar(">With a full view of the girl's naked body, you feel your cock throbbing in your hand, and you begin stroking it even faster...") lun "I thought it might be...{w=0.4} It does get just as sensitive as my breasts...{w=0.4} Maybe more even!" call nar("*Fap* *Fap* *Fap*...") - gen "*Ah*, Yes...{w=0.4} both those areas appear to be very susceptible...{w=0.4} To spurts." + gen "*Ah*, Yes...{w=0.4} both of those areas do appear to be very susceptible...{w=0.4} To spurts." lun "I knew it!" @@ -207,7 +207,7 @@ label ll_pf_inspect_T2_E1_intro: with fade lun "" ("grin", "base", "base", "mid", cheeks="blush", flip=False, trans=dissolve) - call nar(">Luna turns back around and as you get a full view of her front, you feel yourself getting close to the edge.") + call nar(">Luna turns back around, and as you get a full view of her front, you feel yourself getting close to the edge.") lun "So that's how you came up with the idea of rubbing your penis, [lun_genie_name]!" ("grin", "wink", "base", "mid", cheeks="blush") lun "To bait the Wrackspurts to one spot!" ("crooked_smile", "base", "base", "mid", cheeks="blush") @@ -215,7 +215,7 @@ label ll_pf_inspect_T2_E1_intro: call nar("*Fap* *Fap* *Fap*...") - lun "So when you do it, they all start gathering in there until there's nowhere else for them to go and finally..." ("smile", "narrow", "base", "mid", cheeks="blush") + lun "So when you do it, they all start gathering in there until there's nowhere else for them to go, and finally..." ("smile", "narrow", "base", "mid", cheeks="blush") lun "You expel them right out!" ("grin", "base", "annoyed", "mid", cheeks="blush") gen "*Ah*...{w=0.4} Yes...{w=0.4} That's it girl, you've cracked it!" ("angry", xpos="far_left", ypos="head") lun "That's geni--" ("crooked_smile", "base", "base", "mid", cheeks="blush") @@ -280,7 +280,7 @@ label ll_pf_inspect_T2_E1_intro: lun "I know!" ("smile", "wide", "base", "mid", cheeks="blush") lun "[lun_genie_name]...{w=0.2} Why don't you teach me?" ("smile", "base", "base", "mid", cheeks="blush") gen "..." ("grin", xpos="far_left", ypos="head") - gen "Oh, well I don't know [luna_name]..." ("grin", xpos="far_left", ypos="head") + gen "Oh, well I don't know, [luna_name]..." ("grin", xpos="far_left", ypos="head") lun "[lun_genie_name], please!" ("mad", "narrow", "base", "mid", cheeks="blush") hide luna_main with d3 @@ -291,7 +291,7 @@ label ll_pf_inspect_T2_E1_intro: with flash gen "*Ghk*... How did you--" ("angry", xpos="far_left", ypos="head") - lun "[lun_genie_name], if I can't do it myself then you'll {size=+5}have{/size} to teach me!" ("clench", "wide", "base", "stare", cheeks="blush", xpos="mid", ypos="base", flip=True, trans=dissolve) + lun "[lun_genie_name], if I can't do it myself, then you'll {size=+5}have{/size} to teach me!" ("clench", "wide", "base", "stare", cheeks="blush", xpos="mid", ypos="base", flip=True, trans=dissolve) gen "Teach you how to masturbate..." ("base", xpos="far_left", ypos="head") call nar(">Luna stares into your eyes as she unconsciously begins grinding her pussy on the edge of your desk.") @@ -316,7 +316,7 @@ label ll_pf_inspect_T2_E1_intro: lun "Alright then!" ("soft", "base", "base", "mid", cheeks="blush") gen "I haven't even told you what it is yet." ("base", xpos="far_left", ypos="head") lun "Don't worry [lun_genie_name], I trust you!" ("grin", "narrow", "base", "mid", cheeks="blush") - gen "If we're to be able to have you expel these spurts successfully then you're going to have to venture into a completely new venue of magic..." ("base", xpos="far_left", ypos="head") + gen "If we're to be able to have you expel these spurts successfully, then you're going to have to venture into a completely new venue of magic..." ("base", xpos="far_left", ypos="head") lun "New venue of magic..." ("angry", "base", "raised", "mid", cheeks="blush") lun "I'm not sure I understand, [lun_genie_name]." ("soft", "narrow", "base", "mid", cheeks="blush") gen "As you know... These techniques are untested and go beyond normal boundaries of magical conventions." ("base", xpos="far_left", ypos="head") @@ -349,10 +349,10 @@ label ll_pf_inspect_T2_E1_intro: gen "Just make sure not to touch yourself." ("base", xpos="far_left", ypos="head") gen "That will have to wait until I can assist you." ("base", xpos="far_left", ypos="head") lun "Alright... I'll try..." ("mad", "narrow", "base", "downL") - gen "Trying won't be enough [luna_name]..." ("base", xpos="far_left", ypos="head") + gen "Trying won't be enough, [luna_name]..." ("base", xpos="far_left", ypos="head") gen "Don't...{w=0.4} Touch...{w=0.4} Yourself..." ("base", xpos="far_left", ypos="head") lun "Okay, I won't!" ("angry", "base", "base", "mid", cheeks="blush") - gen "Good...{w=0.3} Then I believe we're done here for now..." ("base", xpos="far_left", ypos="head") + gen "Good...{w=0.3} Then I believe we're done here... For now at least." ("base", xpos="far_left", ypos="head") lun "Oh...{w=0.2} Of course." ("soft", "base", "base", "downL", cheeks="blush") show screen blkfade @@ -379,7 +379,7 @@ label ll_pf_inspect_T2_E1_intro: gen "Now, you better head off to bed." ("base", xpos="far_left", ypos="head") lun "Okay." ("open", "base", "base", "mid") lun "Good night, [lun_genie_name]!" ("base", "base", "base", "mid") - gen "Good night [luna_name]." ("base", xpos="far_left", ypos="head") + gen "Good night, [luna_name]." ("base", xpos="far_left", ypos="head") call lun_walk(action="leave") @@ -409,7 +409,7 @@ label ll_pf_inspect_T2_E2_intro: pause .5 gen "Whoa!" ("angry", xpos="far_left", ypos="head") - #Luna takes off Bra (Not available in wardrobe until next tier) + #Luna takes off Bra (Not possible in wardrobe until next tier) $ renpy.sound.play("sounds/cloth_sound3.ogg") $ luna.strip("bra") with d3 @@ -428,9 +428,9 @@ label ll_pf_inspect_T2_E2_intro: gen "*Hmm*... Those panties though...{w=0.4} I'd love to smell them..." ("grin", xpos="far_left", ypos="head") - #Luna takes of Panties and everything else (Panty strip is not available in wardrobe until next tier) + #Luna takes of Panties and everything else (Panty strip is not possible in wardrobe until next tier) $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ luna.strip("all") + $ luna.strip("clothes") with d3 pause .5 @@ -439,13 +439,13 @@ label ll_pf_inspect_T2_E2_intro: gen "I mean I can't wait to--" ("angry", xpos="far_left", ypos="head") lun "Please [lun_genie_name], they've been bothering me constantly..." ("angry", "narrow", "worried", "mid", cheeks="blush") gen "(Oh good, she wasn't listening...)" ("base", xpos="far_left", ypos="head") - gen "Well, I hope you've followed my instructions and that you haven't touched yourself..." ("base", xpos="far_left", ypos="head") - lun "I... I haven't, [lun_genie_name]!" ("soft", "happyCl", "base", "mid", cheeks="blush") + gen "Well, I hope you've followed my instructions, and that you haven't touched yourself..." ("base", xpos="far_left", ypos="head") + lun "I...{w=0.4} I haven't, [lun_genie_name]!" ("soft", "happyCl", "base", "mid", cheeks="blush") call nar(">Luna grinds her legs together once more, and you notice a wet streak beginning to run down her leg.") gen "Good girl..." ("base", xpos="far_left", ypos="head") - gen "Then come up to me so we can deal with those spurts once and for all." ("base", xpos="far_left", ypos="head") + gen "Then come up to me so we can deal with those spurts, once and for all." ("base", xpos="far_left", ypos="head") lun "Thank you [lun_genie_name]..." ("angry", "narrow", "base", "mid", cheeks="blush") #Luna quickly walks up towards desk, fades to black @@ -453,7 +453,7 @@ label ll_pf_inspect_T2_E2_intro: show screen blkfade with d5 - call 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.") + call 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.") #Fades back to Luna in your lap call lun_chibi_scene("inspect_idle_naked") @@ -461,7 +461,7 @@ label ll_pf_inspect_T2_E2_intro: with d5 call 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.") - call nar(">You feel your cock harden slightly beneath your robes, almost at the verge of pressing up in between the girls cheeks.") + call 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 "*Mmm*..." ("soft", "closed", "low", "mid", cheeks="blush", xpos="mid", ypos="base", flip=True, trans=dissolve) gen "[luna_name]?" ("base", xpos="far_left", ypos="head") @@ -512,11 +512,11 @@ label ll_pf_inspect_T2_E2_intro: lun "*Ah*...{w=0.4} Yes, it definitely feels a lot more intense than...{w=0.4} *Mmm*..." ("open", "closed", "base", "mid", cheeks="blush") lun "But I'm not feeling that--{w=0.2} *Ah*...{w=0.4} Relief you mentioned..." ("mad", "closed", "base", "mid", cheeks="blush") - lun "My body still feels as if-- *Ah*...{w=0.4} As if on fire, [lun_genie_name]..." ("angry", "happyCl", "base", "mid", cheeks="blush") + lun "My body still feels as if--{w=0.2} *Ah*...{w=0.4} As if I'm on fire, [lun_genie_name]..." ("angry", "happyCl", "base", "mid", cheeks="blush") - call nar(">As Luna pleads to you, she starts rubbing her pussy against your legs... The tip of your cock sliding between her ass-cheeks each time.") + call 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 "(If she keeps this up then this bitch in heat will make me bust before she does...)" ("angry", xpos="far_left", ypos="head") + gen "(If this keeps going, then this bitch in heat will make me bust before she does...)" ("angry", xpos="far_left", ypos="head") lun "It think something is happening...{w=0.4} I feel woozy, [lun_genie_name]..." ("angry", "happyCl", "low", "mid", cheeks="blush") call lun_chibi_scene("inspect_lean_grope_breasts_naked") @@ -543,7 +543,7 @@ label ll_pf_inspect_T2_E2_intro: gen "*Ah*!!!" ("angry", xpos="far_left", ypos="head") call cum_block - call nar(">And with a soft groan you let out a final spurt, emptying your entire sack on the girl...") + call nar(">And with a soft groan, you let out a final spurt, emptying your entire sack on the girl...") call nar(">Your semen which reached all the way up onto her hair slowly begins sliding down her back.") gen "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("base", xpos="far_left", ypos="head") @@ -558,7 +558,7 @@ label ll_pf_inspect_T2_E2_intro: show screen blkfade with d5 - call 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.") + call 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.") call nar(">She begins dressing herself, keeping her eyes on the floor the entire time.") $ luna.wear("all") hide luna_main @@ -573,7 +573,7 @@ label ll_pf_inspect_T2_E2_intro: call 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 "(Good job me...{w=0.4} I have royally fucked it up this time.)" ("base", xpos="far_left", ypos="head") gen "Look, accidents happen to the best of--" ("base", xpos="far_left", ypos="head") lun "I'm sorry [lun_genie_name]!" ("angry", "narrow", "worried", "mid", xpos="base", ypos="base", flip=False, trans=dissolve) gen "..." ("angry", xpos="far_left", ypos="head") @@ -597,19 +597,19 @@ label ll_pf_inspect_T2_E2_intro: lun "" ("base", "narrow", "worried", "down") #Looks down smile call nar(">Luna gives off a hopeful smile whilst still staring at her feet.") - call nar(">After a couple of seconds she looks back up at you with a confused expression across her face.") + call nar(">After a couple of seconds, she looks back up at you with a confused expression across her face.") lun "[lun_genie_name]...{w=0.3} What was that cold feeling going down my spine?" ("upset", "narrow", "base", "mid") gen "Oh...{w=0.3} That." ("angry", xpos="far_left", ypos="head") gen "*Err*...{w=0.3} I wouldn't worry about that [luna_name], it happens sometimes... Your body can do all sorts of things when you're moments away from spurting." ("angry", xpos="far_left", ypos="head") lun "So we actually almost did it, [lun_genie_name]?" ("clench", "narrow", "base", "mid") gen "We almost did \"it\" alright..." ("base", xpos="far_left", ypos="head") - lun "Aww...{w=0.3} Blithering Humdinger..." ("upset", "narrow", "annoyed", "downL") + lun "*Aww*...{w=0.3} Blithering Humdinger..." ("upset", "narrow", "annoyed", "downL") gen "I'll give you some more pointers next time...{w=0.3} I'm sure we'll get there." ("base", xpos="far_left", ypos="head") lun "Okay...{w=0.3} Thank you [lun_genie_name]!" ("base", "narrow", "base", "mid") #looks at you smiling if game.daytime: - lun "If I may then I'll head back to class for today, [lun_genie_name]." ("soft", "base", "base", "R") + lun "If I may, then I'll head back to class for today, [lun_genie_name]." ("soft", "base", "base", "R") gen "Certainly, [luna_name]." ("base", xpos="far_left", ypos="head") else: gen "Now you best be off to bed." ("base", xpos="far_left", ypos="head") @@ -675,11 +675,11 @@ label ll_pf_inspect_T2_E3_intro: 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, [lun_genie_name]." ("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 do you know it will work, [lun_genie_name]?" ("mad", "narrow", "base", "mid") - lun "Maybe girls aren't able to expel the Wrackspurts like boys do." ("angry", "narrow", "base", "mid") - gen "I'm 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 how do you know, [lun_genie_name]?" ("angry", "narrow", "base", "mid") + 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, [lun_genie_name]?" ("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, [lun_genie_name]?" ("angry", "narrow", "base", "mid") gen "Just trust me on this one [luna_name]." ("base", xpos="far_left", ypos="head") lun "*Hmm*..." ("upset", "narrow", "base", "downL") gen "(She doesn't seem convinced.)" ("base", xpos="far_left", ypos="head") @@ -687,90 +687,89 @@ label ll_pf_inspect_T2_E3_intro: gen "*Ahem*...{w=0.3} [luna_name]?" ("base", xpos="far_left", ypos="head") lun "Yes [lun_genie_name]?" ("upset", "base", "base", "mid") - gen "Tell me...{w=0.3} How were those spratters described in your fathers paper again?" ("base", xpos="far_left", ypos="head") - lun "They're invisible creatures that go inside your ears and make your brain go all fuzzy." ("angry", "base", "base", "mid") - gen "And...{w=0.3} Wasn't there a description on how you were supposed to get rid of them?" ("base", xpos="far_left", ypos="head") - lun "By thinking positive thoughts..." ("soft", "narrow", "base", "mid") - lun "But that's not working [lun_genie_name]...{w=0.3} It's not my brain they're making all fuzzy..." ("clench", "narrow", "base", "mid") - gen "Then tell me...{w=0.3} What else have we learned about them so far?" ("base", xpos="far_left", ypos="head") + 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, [lun_genie_name]...{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 learned that you can bait them to a particularly sensitive area by thinking positive thoughts and rubbing it before finally expelling them..." ("angry", "narrow", "base", "down") - lun "But we tried that [lun_genie_name], and it didn't work!" ("annoyed", "narrow", "base", "R") - gen "I managed to do it...{w=0.3} So I must've done something different..." ("base", xpos="far_left", ypos="head") + 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 already have tried that [lun_genie_name], 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 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 is project positive thoughts onto the area itself!" ("smile", "narrow", "base", "down") + 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 is project positive thoughts onto the area itself!" ("smile", "narrow", "base", "down") gen "Exactly!" ("grin", xpos="far_left", ypos="head") - gen "Ignore every intrusive thought that may pop into your mind and just keep focusing on your body and 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 "The rest should happen by itself..." ("base", xpos="far_left", ypos="head") - lun "Yes [lun_genie_name]..." ("crooked_smile", "narrow", "base", "mid") + 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, [lun_genie_name], 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 [lun_genie_name]!" ("base", "base", "base", "mid") if luna.is_any_worn("robe", "top", "bottom", "accessory"): - gen "Then lets get you out of those clothes shall we..." ("base", xpos="far_left", ypos="head") + gen "Lets get you out of those clothes first, shall we..." ("base", xpos="far_left", ypos="head") else: - gen "Now, let me help you get you out of those pesky underwear..." ("base", xpos="far_left", ypos="head") + gen "Now, let me help you get you out of those pesky undergarments..." ("base", xpos="far_left", ypos="head") #Fade to black show screen blkfade with d5 if luna.is_any_worn("robe", "top", "bottom", "accessory"): - call nar(">Luna shuffles around for a bit as she attempts to get out of her clothing, the limited space between you and the desk making it somewhat difficult.") + call 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, [lun_genie_name] ...{w=0.4} Should I scoot out and--" ("base", "base", "base", "mid") - gen "No worries [luna_name]...{w=0.4} Let me handle it." + lun "It's a bit cramped in here, [lun_genie_name]...{w=0.4} Should I scoot out and--" ("base", "base", "base", "mid") + gen "No, that won't be necessary, [luna_name]...{w=0.4} Let me help you." if luna.is_worn("robe"): - call nar(">You unclasp Luna's robes and let them drop to the ground behind her.") + call nar(">You unclasp Luna's outerwear and let it drop to the ground behind her.") if luna.is_worn("top"): - call nar(">You swiftly pull Luna's top over her head...{w=0.4} Her breasts moves up along with it and then drops from the sudden motion as the fabric passes by.") + call 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.") $ renpy.sound.play("sounds/boing02.ogg") pause .4 lun "Whoa!" ("base", "base", "base", "mid") #Luna always wears underwear at this stage - call nar(">You unhook Luna's bra with ease and then let it drop to the floor in front of her.") - call nar(">She glances back at you, cheeks flushed and a look of surprise across her face caused by the unusual speed and dexterity displayed by her headmaster.") + call nar(">You unhook Luna's bra with ease, and let it drop to the floor, right in front of her.") + call 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, [lun_genie_name]?" ("base", "base", "base", "mid") + lun "Have you ever done this before, [lun_genie_name]?" ("base", "base", "base", "mid") + gen "Let's not make this about me, [luna_name]. Free your mind of intrusive thoughts." ("base", xpos="far_left", ypos="head") + lun "Okay, I'll try." ("soft", "base", "base", "mid") if luna.is_worn("bottom", "panties"): - call nar(">Noticing Luna's increasing excitement you put your thumbs on either side of her bottoms and pull both it and her panties down in one singular motion...") + call 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") - if luna.is_worn("bottom"): - call nar(">Noticing Luna's increasing excitement you put your thumbs on either side of her bottoms and pull them down...") - if luna.is_worn("panties"): - call nar(">You eye up Luna's Panties for a moment before swiftly pulling them down, letting them rest just underneath her ankles...") - + elif luna.is_worn("bottom"): + call 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"): + call nar(">You oggle Luna's choice of underwear, before swiftly pulling them down right to her ankles...") lun "" ("clench", "narrow", "base", "downR", cheeks="blush") - $ luna.strip("all") + $ luna.strip("clothes") pause .2 hide screen blkfade - #Fade back to Naked Luna in front of genie call lun_chibi_scene("inspect_idle_naked") with d5 - lun "[lun_genie_name]!" ("clench", "narrow", "base", "downR", cheeks="blush") gen "Yes, [luna_name]?" ("base", xpos="far_left", ypos="head") lun "*Ehm*...{w=0.4} Never mind..." ("soft", "narrow", "base", "down", cheeks="blush") - gen "Okay, let's begin then shall we?" ("base", xpos="far_left", ypos="head") + 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 "..." ("base", "narrow", "base", "down", cheeks="blush") #blush call lun_chibi_scene("inspect_grope_breasts_naked") - call nar(">Without hesitation, you reach forward and grab Luna's breasts.") - - call nar(">As you begin silently kneading them, any doubts in Luna's mind appears to slowly wash away as she lets the sensations of your touch overtake any previous feelings of doubt.") + call nar(">Without hesitation, you reach forward and grab and start fondling Luna's breasts.") + call nar(">As she feels your touch, any doubts in Luna's mind are washed away, letting the sensations overtake her.") lun "*Ah*...{w=0.4} [lun_genie_name]..." ("soft", "closed", "base", "mid", cheeks="blush") @@ -790,18 +789,20 @@ label ll_pf_inspect_T2_E3_intro: gen "(Nnnn-{w=0.2} Not today!)" ("angry", xpos="far_left", ypos="head") lun "" ("normal", "closed", "base", "mid", cheeks="blush") - call nar(">Determined to keep your composure this time you move your gaze down too see Luna rubbing her thighs together.") + call 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") call lun_chibi_scene("inspect_lean_idle_naked") lun "" ("soft", "narrow", "base", "R", cheeks="blush") - call nar(">As you remove your hands from Luna's breasts she opens her eyes, confused as to why you stopped. Without saying anything, you place your hand across her pussy and give it a gentle rub.") + call nar(">As you remove your hands from Luna's breasts, she opens her eyes, confused as to why you stopped.") + call nar(">Without saying anything, you place your hand across her pussy, and give it a gentle rub.") lun "Ooooh!" ("crooked_smile", "wide", "base", "stare", cheeks="blush") call lun_chibi_scene("inspect_lean_grope_vagina_naked") - call nar(">A shudder passes through Luna's body from your initial touch. You begin moving your forefinger up and down her slit with increasing ease as her pussy becomes wetter and wetter.") + call nar(">A shudder passes through Luna's body from your initial touch.") + call 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} [lun_genie_name]...{w=0.4}This feels a lot different to you--{w=0.2} *Ah*...{w=0.4} Touching my breasts..." ("open", "wink", "base", "R", cheeks="blush") gen "(You ain't seen nothing yet...)" ("base", xpos="far_left", ypos="head") @@ -838,7 +839,7 @@ label ll_pf_inspect_T2_E3_intro: gen "(*Hmm*...{w=0.4} Perhaps I shouldn't go so hard on her...)" ("base", xpos="far_left", ypos="head") stop bg_sounds fadeout 2 - call 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.") + call 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") @@ -862,15 +863,15 @@ label ll_pf_inspect_T2_E3_intro: lun "[lun_genie_name]...{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", cheeks="blush") gen "Then don't...{w=0.3} Focus on the feeling!" ("angry", xpos="far_left", ypos="head") lun "*Ah*...{w=0.3} Yes...{w=0.3} [lun_genie_name]." ("soft", "closed", "base", "stare", cheeks="blush") - lun "*N-n-ngh!!!*" ("grin", "closed", "base", "mid", cheeks="blush") + lun "*N-n-ngh*!!!" ("grin", "closed", "base", "mid", cheeks="blush") - call nar(">Not showing her any mercy you continue pumping your fingers in and out of her rapidly.") + call nar(">Not showing her any mercy, you continue pumping your fingers in and out of her rapidly.") lun "*Ah*...{w=0.5} [lun_genie_name]...{w=0.4} I think this is it!" ("mad", "narrow", "base", "stare", cheeks="blush") lun "I'm...{w=0.3} *Ah*...{w=0.3} I'm--" ("open_tongue", "narrow", "base", "up", cheeks="blush") gen "Yes girl, let all of it out!" ("angry", xpos="far_left", ypos="head") - call nar(">You insert your fingers one last time as Luna's body finally gives in, her entire weight dropping onto your hand as your fingers penetrates her down to the base.") + call 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 "I'm cumming!!" ("mad", "base", "base", "ahegao", cheeks="blush") lun "*Nngh*...{w=0.8}{nw}" ("clench", "base", "base", "ahegao", cheeks="blush") @@ -900,8 +901,8 @@ label ll_pf_inspect_T2_E3_intro: show screen blkfade with d5 - call nar(">Luna slumps forward onto your desk. Her grip around your fingers loosening enough for you to free yourself.") - call nar(">You swiftly pull them out of her which causes her to shudder once more before going completely limp on your desk.") + call nar(">Luna goes to stand up, but as she does, her legs give way and she slumps forward, completely limp onto your desk.") + call 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.") $ renpy.sound.play("sounds/slick_02.ogg") lun "*Ah*..." @@ -923,12 +924,12 @@ label ll_pf_inspect_T2_E3_intro: 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 fool proof way of expelling wrackspurts from other areas than your brain!" ("crooked_smile", "narrow", "base", "mid") + lun "Finally, a fool proof 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") + lun "So, what next? We've solved it now, right?" ("grin", "base", "raised", "mid") gen "Solved--" ("angry", xpos="far_left", ypos="head") - gen "Now I think you're getting a bit ahead of yourself Miss Lovegood." ("base", xpos="far_left", ypos="head") + gen "Now I think you're getting a bit ahead of yourself [luna_name]." ("base", xpos="far_left", ypos="head") lun "But--" ("angry", "base", "base", "mid") gen "Masturbation is only a temporary solution, so perfecting it is vital... Until I've come up with a more permanent solution that is..." ("base", xpos="far_left", ypos="head") lun "Then I'll practice as soon as I get to my dorm!" ("smile", "narrow", "base", "mid") @@ -944,7 +945,7 @@ label ll_pf_inspect_T2_E3_intro: gen "Off you go." ("base", xpos="far_left", ypos="head") lun "Yes [lun_genie_name], thank you [lun_genie_name]..." ("base", "wink", "base", "mid") else: - gen "Well then, it's getting late so you best head to your dorm Miss Lovegood." ("base", xpos="far_left", ypos="head") + gen "Well then, it's getting late so you best head to your dorm [luna_name]." ("base", xpos="far_left", ypos="head") gen "Off you go." ("base", xpos="far_left", ypos="head") lun "Yes [lun_genie_name]." ("base", "base", "base", "mid") lun "Good night, [lun_genie_name]." ("base", "wink", "base", "mid") @@ -971,12 +972,12 @@ label ll_pf_inspect_T2_E3_intro: label ll_pf_inspect_T2_E4_repeat: gen "How are you feeling, [luna_name]?" ("base", xpos="far_left", ypos="head") - gen "Have those spratters been bothering you any more?" ("base", xpos="far_left", ypos="head") - lun "A little bit better, [lun_genie_name]." ("soft", "narrow", "low", "down") - lun "Once I had gotten back to my dorm I got to thinking about our last session and some of them seemed to return though." ("upset", "narrow", "base", "downL") + gen "Have those spratters been bothering you any further?" ("base", xpos="far_left", ypos="head") + lun "I'm feeling a little bit better, [lun_genie_name]." ("soft", "narrow", "low", "down") + 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") - gen "Until we've found a fool proof way to deal with them I'm afraid this will have make do as a regular treatment." ("base", xpos="far_left", ypos="head") + gen "Until we've found a fool proof way to deal with them, I'm afraid this will have make do as a regular treatment." ("base", xpos="far_left", ypos="head") lun "Alright..." ("soft", "narrow", "base", "downL") lun "I suppose that's not too bad." ("base", "narrow", "base", "down") gen "Good to hear..." ("base", xpos="far_left", ypos="head") @@ -989,7 +990,7 @@ label ll_pf_inspect_T2_E4_repeat: show screen blkfade with d5 - $ luna.strip("all") + $ luna.strip("clothes") #Fades back to Luna in your lap call lun_chibi_scene("inspect_idle_naked") @@ -1016,7 +1017,7 @@ label ll_pf_inspect_T2_E4_repeat: call nar(">You begin moving your hands in a circular motion, squeezing her breasts together and pulling them apart over and over...") lun "*Mmm*..." ("soft", "closed", "base", "mid", cheeks="blush") - call 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 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 @@ -1051,9 +1052,9 @@ label ll_pf_inspect_T2_E4_repeat: lun "*Ah*!!!" ("clench", "base", "base", "stare", cheeks="blush") call nar(">Taken by surprise, Luna clenches her thighs, which only strengthens her grip around your fingers...") lun "*Ah*... [lun_genie_name]!" ("angry", "narrow", "base", "R", cheeks="blush") - gen "That's it [luna_name]...{w=0.4} Keep that grip steady and this will be over before you know it..." ("base", xpos="far_left", ypos="head") + gen "That's it [luna_name]...{w=0.4} Keep that grip steady, and this will be over before you know it..." ("base", xpos="far_left", ypos="head") lun "*Ah*...{w=0.3} *Ah*...{w=0.3} But [lun_genie_name]--" ("open", "happyCl", "base", "mid", cheeks="blush") - call nar(">As you keep pumping your fingers repeatedly inside of Luna you feel her grip loosen slightly...") + call nar(">As you keep pumping your fingers repeatedly inside of Luna, you feel her grip loosen slightly...") lun "I...{w=0.4} I..." ("upset", "happyCl", "base", "mid", cheeks="blush") lun "{size=+5}I don't want it to be over!{/size}" ("scream", "narrow", "worried", "stare", cheeks="blush") gen "Too bad!" ("base", xpos="far_left", ypos="head") @@ -1066,11 +1067,11 @@ label ll_pf_inspect_T2_E4_repeat: play bg_sounds "sounds/slickloopveryfast.ogg" - call nar(">Luna trying to keep that sensation going, tries to get a hold of herself as not to let herself cum.") + call nar(">Luna, trying to keep that sensation going, tries to get a hold of herself as not to let herself cum.") lun "*Ah*...{w=0.2} *Ah*...{w=0.2} *Ah*..." ("open", "happyCl", "base", "mid", cheeks="blush") - call nar(">Taking it as a challenge you insert your middle finger all the way in which proves to be enough for the girl.") + call 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") lun "*Ah*...{w=0.2} No...{w=0.3} I'm cumming!!" ("clench", "happyCl", "worried", "mid", cheeks="blush") @@ -1079,7 +1080,7 @@ label ll_pf_inspect_T2_E4_repeat: $ renpy.sound.play("sounds/slick_01.ogg") lun "*AAAAAH*!!!" ("clench", "narrow", "base", "up", cheeks="blush") - call nar(">Luna's thighs clenches around you as waves of pleasure hits her.") + call nar(">Luna's thighs clenches around you, as waves of pleasure washes over her.") lun "*Ah*...{w=0.2} I'm...{w=0.2} I'm--" ("mad", "narrow", "base", "stare", cheeks="blush") @@ -1109,7 +1110,7 @@ label ll_pf_inspect_T2_E4_repeat: with d5 gen "Well done, [luna_name]!" ("base", xpos="far_left", ypos="head") - gen "Looks like you managed to get even more out than last time!" ("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 "*Mmm*...{w=0.4} Thank you, [lun_genie_name]." ("base", "closed", "base", "mid", cheeks="blush") gen "Holding them in for as long as possible was very clever!" ("base", xpos="far_left", ypos="head") lun "Oh-- I...{w=0.3} Yes, thank you!" ("soft", "narrow", "base", "downR", cheeks="blush") @@ -1146,7 +1147,7 @@ label ll_pf_inspect_T3_E1_repeat: show screen blkfade with d5 - $ luna.strip("all") + $ luna.strip("clothes") #Fades back to Luna in your lap call lun_chibi_scene("inspect_idle_naked") @@ -1158,17 +1159,17 @@ label ll_pf_inspect_T3_E1_repeat: 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, [lun_genie_name]..." ("soft", "narrow", "worried", "downL") lun "I know your time is valuable." ("open", "narrow", "base", "downL") - gen "Assisting my students is part of my job [luna_name]." ("base", xpos="far_left", ypos="head") + gen "Assisting my students is part of my job, [luna_name]." ("base", xpos="far_left", ypos="head") 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..." ("base", xpos="far_left", ypos="head") 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..." ("base", xpos="far_left", ypos="head") 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 "(She's really considering it?)" ("base", xpos="far_left", ypos="head") + 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") @@ -1176,33 +1177,33 @@ label ll_pf_inspect_T3_E1_repeat: gen "So, are you ready to begin your treatment?" ("base", xpos="far_left", ypos="head") lun "Yes... Please go ahead [lun_genie_name]..." ("base", "base", "base", "mid") - 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." ("base", xpos="far_left", ypos="head") call lun_chibi_scene("inspect_grope_breasts_naked") - call nar(">Grabbing on to Luna's breasts, you begin massaging them gently.") + call nar(">Grabbing onto Luna's breasts, you begin massaging them gently.") lun "*Ah*..." ("open", "closed", "base", "mid") - call nar(">Luna immediately shudders and lets out a soft moan as a response to your touch.") + call 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") call 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") menu: "-Pinch her again-": - call nar(">You quickly pinch Luna's nipples again and she jumps slightly by surprise.") + call nar(">You quickly pinch Luna's nipples again, and she jumps slightly by surprise.") lun "Ow, Ow, Ow!!" ("clench", "happyCl", "base", "mid", cheeks="blush") lun "[lun_genie_name]!" ("mad", "narrow", "worried", "R", cheeks="blush") gen "Just give it a moment... It will feel better soon..." ("base", xpos="far_left", ypos="head") lun "Are you--" ("angry", "closed", "base", "down", cheeks="blush") - call nar(">You pinch her again, even harder this time and Luna suddenly jerks her body forward.") + call 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 "Stop it [lun_genie_name]...{w=0.4} I can't..." ("mad", "happyCl", "worried", "mid", cheeks="blush") - call nar(">As you let go of her tits Luna's words trail off slightly...") + call nar(">As you let go of her tits, Luna's words trail off slightly...") gen "Can't what, [luna_name]?" ("base", xpos="far_left", ypos="head") lun "That's odd..." ("mad", "narrow", "base", "down", cheeks="blush") - lun "It feels kind of nice after you let go of them." ("soft", "narrow", "base", "down", cheeks="blush") + lun "It feels kind of nice, after you let go of them." ("soft", "narrow", "base", "down", cheeks="blush") gen "More sensitive?" ("base", xpos="far_left", ypos="head") lun "Yes..." ("soft", "narrow", "base", "mid", cheeks="blush") lun "Do it again [lun_genie_name]!" ("angry", "base", "base", "mid", cheeks="blush") @@ -1211,18 +1212,18 @@ label ll_pf_inspect_T3_E1_repeat: gen "If you say so..." ("base", xpos="far_left", ypos="head") call lun_chibi_scene("inspect_lean_grope_breasts_naked") - call nar(">You pinch Luna's nipples again and being ready for it this time you only hear a short intake of breath.") + call nar(">You pinch Luna's nipples again, and being fully ready for it this time, you only hear a short intake of breath.") lun "" ("soft", "base", "base", "up", cheeks="blush") - call nar(">Releasing your grip of her nipples you begin brushing your fingertips along the sides of her breasts, sliding your fingers along the sides of her nipples as you do so.") + call nar(">Releasing your grip of her nipples, you begin brushing your fingertips along the sides of her breasts, up and around her nipples.") lun "*Ah*...{w=0.4} How...{w=0.4} How strange..." ("open", "closed", "base", "mid", cheeks="blush") - call nar(">Luna now enjoying the heightened sensitivity of her nipples begins to relax, her breathing slowing down more and more.") + call nar(">Luna, now enjoying the heightened sensitivity of her nipples, begins to relax, her breathing slowing down more and more.") lun "..." ("base", "closed", "base", "mid", cheeks="blush") gen "(Am I just giving her a massage now?)" ("base", xpos="far_left", ypos="head") "-Don't-": lun "Please be careful [lun_genie_name]..." ("angry", "narrow", "base", "mid", cheeks="blush") - call nar(">Trying not to give into the temptation you resume massaging Luna's breasts.") - call nar(">Luna's breathing slows down as she begins feeling more relaxed.") + call nar(">Trying not to give into the temptation, you resume massaging Luna's breasts.") + call nar(">Her breathing soon begins slowing down and you feel her previously tense grip around your legs starting to relaxe.") lun "..." ("base", "closed", "base", "mid", cheeks="blush") @@ -1230,7 +1231,7 @@ label ll_pf_inspect_T3_E1_repeat: gen "(Am I just giving her a massage now?)" ("base", xpos="far_left", ypos="head") lun "*Ah*....." ("base", "closed", "base", "mid", cheeks="blush") - call nar(">As you continue massaging her, she bends forward to lean on your desk.") + call 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 @@ -1241,7 +1242,7 @@ label ll_pf_inspect_T3_E1_repeat: gen "[luna_name]?" ("base", xpos="far_left", ypos="head") call lun_chibi_scene("inspect_lean_idle_naked") - call nar(">You let go of Luna's breasts and she opens her eyes in confusion.") + call nar(">You let go of Luna's breasts, and she goes stiff, opening her eyes in confusion.") lun "*Huh*?" ("soft", "narrow", "base", "stare", cheeks="blush") gen "I believe our purpose here isn't for me to massage you until you fall asleep..." ("base", xpos="far_left", ypos="head") @@ -1251,7 +1252,7 @@ label ll_pf_inspect_T3_E1_repeat: call nar(">You stick your hand down between Luna's legs and begin rubbing your fingers along her slit.") lun "*Ah*..." ("soft", "closed", "base", "mid", cheeks="blush") - call nar(">As you brush up against her you notice how wet she is already.") + call 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 "*Ah*...{w=0.4} *Ah*...{w=0.4} *Ah*..." ("open", "closed", "low", "mid", cheeks="blush") call 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.") @@ -1277,18 +1278,18 @@ label ll_pf_inspect_T3_E1_repeat: $ renpy.sound.play("sounds/slick_02.ogg") play bg_sounds "sounds/slickloopfast.ogg" - call nar(">You push another finger inside her and begin moving them around.") + call nar(">You push another finger inside her, and begin moving them around.") lun "*Ah*...{w=0.4} [lun_genie_name]..." ("soft", "narrow", "base", "up", cheeks="blush") gen "*Hmm*... Some lousy friends they are... I still can't find it..." ("base", xpos="far_left", ypos="head") lun "*Ah*...{w=0.3} *Ah*...{w=0.3} Are you...{w=0.3} Are you sure..." ("base", "narrow", "base", "up", cheeks="blush") - call nar(">You keep moving your fingers inside Luna, and as you do you feel her clench around them slightly.") + call 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 "*Ah*...{w=0.3} It...{w=0.3} What is--" ("soft", "narrow", "base", "up", cheeks="blush") gen "Better call in an expert..." ("base", xpos="far_left", ypos="head") - call nar(">Keeping your fingers moving inside Luna you move your thumb and press it up against her clit.") + call nar(">Keeping your fingers moving inside Luna, you move your thumb and press it up against her clit.") lun "*Oooooh*!!!" ("grin", "wide", "base", "up", cheeks="blush") gen "There it is!" ("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 42e5f03c..769cdbfa 100644 --- a/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy +++ b/game/scripts/characters/luna/events/favors/masturbate_for_me.rpy @@ -611,7 +611,7 @@ label ll_pf_masturbate_T3_E3_intro: $ luna.set_pose("masturbate") $ luna.set_cum(pussy="wet") - $ luna.strip("all") + $ luna.strip("clothes") $ renpy.music.stop(channel="weather", fadeout=4) @@ -893,7 +893,7 @@ label ll_pf_masturbate_T3_E4_repeat: lun "Yes, [lun_genie_name]..." ("base", "base", "base", "mid") $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ luna.strip("all") + $ luna.strip("clothes") with d3 lun "" ("base", "closed", "base", "mid", cheeks="blush") @@ -980,7 +980,7 @@ label ll_pf_masturbate_T3_E4_repeat: $ camera.set_image("CG luna") $ camera.set(zoom=0.5, pos=(-270, -150), t=1.5) $ luna.set_pose(None) - $ luna.strip("all") + $ luna.strip("clothes") #Luna normal doll pose lun "*Mmm*..." ("base", "closed", "base", "mid", cheeks="blush") @@ -1017,7 +1017,7 @@ label ll_pf_masturbate_T3_E4_repeat: # End of masturbate section $ luna.set_pose(None) - $ luna.strip("all") + $ luna.strip("clothes") hide screen blkfade with d5 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 80beddc4..8d473030 100644 --- a/game/scripts/characters/luna/events/favors/talk_to_me.rpy +++ b/game/scripts/characters/luna/events/favors/talk_to_me.rpy @@ -89,8 +89,8 @@ label ll_pf_talk_T1_E1_intro: lun "Oh!" ("soft", "wide", "base", "mid") lun "There was this one girl who was clearly getting bothered by them!" ("angry", "base", "base", "stare") lun "I was in the bathroom when I heard her!" ("soft", "base", "base", "mid") - gen "(In the bathroom, huh.)" ("grin", xpos="far_left", ypos="head") - lun "There were some weird noises coming from one of the stalls so I called out to her, asking if she was okay." ("angry", "base", "base", "mid") + gen "(In the bathroom, *huh*.)" ("grin", xpos="far_left", ypos="head") + lun "There were some weird noises coming from one of the stalls, so I called out to her, asking if she was okay." ("angry", "base", "base", "mid") gen "Weird noises you say?" ("grin", xpos="far_left", ypos="head") menu: @@ -110,10 +110,10 @@ label ll_pf_talk_T1_E1_intro: lun "Indeed." ("angry", "base", "base", "mid") lun "So of course I had to do my best to reassure her that what she was experiencing was nothing to be afraid of..." ("grin", "closed", "base", "mid") lun "I told her about my own experiences...." ("open", "base", "base", "down") - lun "But they must've really gotten to her, [lun_genie_name]... She barely paid me any attention..." ("angry", "closed", "base", "mid") + lun "But they must've really gotten to her, [lun_genie_name]...{w=0.4} She barely paid me any attention..." ("angry", "closed", "base", "mid") if genie_masturbating: - gen "You have my full attention, girl... Tell me more!" ("angry", xpos="far_left", ypos="head") + gen "You have my full attention, girl...{w=0.4} Tell me more!" ("angry", xpos="far_left", ypos="head") else: gen "(Sounds like the opposite to me...)" ("base", xpos="far_left", ypos="head") @@ -134,7 +134,7 @@ label ll_pf_talk_T1_E1_intro: if genie_masturbating: gen "Yes, yes... But what about the girl that made those weird noises? Tell me about her!" ("angry", xpos="far_left", ypos="head") - lun "Well, I never saw her, Professor." ("angry", "closed", "base", "mid") + lun "Well, I never saw her, [lun_genie_name]." ("angry", "closed", "base", "mid") lun "I just observed her aura. It was so fascinating!" ("soft", "closed", "base", "mid") lun "But... What ever they're doing to be making auras red..." ("normal", "narrow", "base", "downL") gen "(Come on, say something naughty already!)" ("angry", xpos="far_left", ypos="head") @@ -158,11 +158,11 @@ label ll_pf_talk_T1_E1_intro: gen "I have a theory... If it works then it should let us expel those spurty buggers." ("base", xpos="far_left", ypos="head") lun "You've found a way to expel them on command?" ("clench", "base", "base", "mid") gen "Well I wouldn't say on command... Now that is beyond even my own capabilities..." ("base", xpos="far_left", ypos="head") - gen "I need to conduct some more tests and once that's' done then I'll put it into practice." ("base", xpos="far_left", ypos="head") + gen "I need to conduct some more tests, and once that's done, I'll put it into practice." ("base", xpos="far_left", ypos="head") lun "Oh! I can't wait!" ("crooked_smile", "happyCl", "base", "mid") if game.daytime: - gen "So for now you better head back to class." ("base", xpos="far_left", ypos="head") + gen "So for now, you better head back to class." ("base", xpos="far_left", ypos="head") lun "Of course... Good luck [lun_genie_name]." ("grin", "base", "base", "mid") else: gen "So for now it'd be best for you to head off to bed." ("base", xpos="far_left", ypos="head") @@ -193,11 +193,11 @@ label ll_pf_talk_T1_E2_intro: lun "" ("soft", "wide", "base", "mid") #Wide eyed pause .8 - gen "If you don't do it correctly you could end up with some severe burns..." ("base", xpos="far_left", ypos="head") + gen "If you don't do it correctly, you could end up with some severe burns..." ("base", xpos="far_left", ypos="head") gen "(Or mild chafing at the very least.)" ("base", xpos="far_left", ypos="head") gen "Which is why we're going to start by conducting some of the initial testing on myself." ("base", xpos="far_left", ypos="head") lun "But [lun_genie_name]!" ("angry", "wide", "base", "mid") - lun "You didn't tell me this was going to be dangerous... If I knew you could potentially hurt yourself then I would've never asked you to--" ("angry", "base", "worried", "mid") + lun "You didn't tell me this was going to be dangerous... If I knew you could potentially hurt yourself, then I would've never asked you to--" ("angry", "base", "worried", "mid") gen "Don't worry... I'm sure It'll be worth it for the cause..." ("base", xpos="far_left", ypos="head") lun "But [lun_genie_name], why not let me do it--" ("angry", "narrow", "base", "mid") gen "Nonsense!" ("base", xpos="far_left", ypos="head") @@ -238,7 +238,7 @@ label ll_pf_talk_T1_E2_intro: gen "*Ah*...{w=0.3} Yes...{w=0.3} I'm waving my wand all right..." ("base", xpos="far_left", ypos="head") lun "I knew it!" ("grin", "closed", "base", "mid") - call nar (">As you continue stroking your cock you watch as Luna's moment of excitement turn into confusion once more.") + call nar (">As you continue stroking your cock, you watch as Luna's moment of excitement turn into confusion once more.") lun "Is it supposed to take this long?" ("soft", "narrow", "base", "mid") gen "*Ah*...{w=0.3} Yes...{w=0.3} Sometimes..." ("base", xpos="far_left", ypos="head") @@ -254,7 +254,7 @@ label ll_pf_talk_T1_E2_intro: gen "Now, be quiet and stand there for a bit will you?" ("base", xpos="far_left", ypos="head") lun "Yes [lun_genie_name]." ("base", "base", "base", "mid") - call nar(">With great difficulty you work your now softened shaft, staring at the girls heaving chest.") + call nar(">With great difficulty, you work your now softened shaft, staring at the girls heaving chest.") lun "" ("base", "base", "base", "downR") #looking away call ctc @@ -267,7 +267,7 @@ label ll_pf_talk_T1_E2_intro: call gen_chibi("sit_behind_desk") lun "What's your patronus?" ("open", "base", "base", "mid") - gen "W-- What?" ("angry", xpos="far_left", ypos="head") + gen "W--{w=0.2} What?" ("angry", xpos="far_left", ypos="head") lun "What's your spirit animal, [lun_genie_name]?" ("soft", "base", "base", "mid") lun "Surely you must've cast a patronus spell before..." ("grin", "base", "base", "mid") gen "*Err*..." ("base", xpos="far_left", ypos="head") @@ -301,7 +301,7 @@ label ll_pf_talk_T1_E2_intro: lun "Patronuses are supposed to represent a hidden inner self that gets awakened in the time of need... Only a wizard who is obsessed about a particular animal would have it as their Patronus..." ("open", "closed", "base", "mid") gen "(What on earth is all this drivel?)" ("base", xpos="far_left", ypos="head") lun "Or are you pulling my leg, [lun_genie_name]?" ("clench", "narrow", "base", "mid") - gen "Pulling-- Hey... You distracted me again!" ("base", xpos="far_left", ypos="head") + gen "Pulling--{w=0.2} Hey... You distracted me again!" ("base", xpos="far_left", ypos="head") lun "Oh... Sorry [lun_genie_name]!" ("soft", "wide", "base", "mid") lun "The other teachers do keep reminding me not to let my mind wander so much..." ("annoyed", "narrow", "base", "downR") gen "*Sigh*..." ("base", xpos="far_left", ypos="head") @@ -309,11 +309,11 @@ label ll_pf_talk_T1_E2_intro: lun "It's not?" ("mad", "narrow", "base", "mid") gen "No... We'll just have to try something different next time to keep you engaged..." ("base", xpos="far_left", ypos="head") lun "Oh... Okay!" ("angry", "base", "base", "mid") #Happy - lun "..." ("base", "base", "base", "down") #Pondering #Blush + lun "..." ("base", "base", "base", "down") #Pondering gen "What's with that face?" ("base", xpos="far_left", ypos="head") lun "Oh... It's nothing... I was just thinking..." ("base", "happyCl", "base", "mid") gen "..." ("base", xpos="far_left", ypos="head") - gen "Very well [luna_name]... All things considered I think we've at least done some progress today." ("base", xpos="far_left", ypos="head") + gen "Very well [luna_name]... All things considered, I think we've at least done some progress today." ("base", xpos="far_left", ypos="head") gen "Well done." ("base", xpos="far_left", ypos="head") lun "We have?" ("soft", "base", "base", "mid", cheeks="blush") lun "I mean...{w=0.3} Thank you [lun_genie_name]...{w=0.3} I didn't really do much..." ("open", "base", "base", "R", cheeks="blush") #blush #Looks away @@ -347,10 +347,10 @@ label ll_pf_talk_T1_E3_intro: gen "That's right [luna_name]." ("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") - lun "*Aw*... Why not?" ("annoyed", "base", "annoyed", "mid") + lun "*Aww*... Why not?" ("annoyed", "base", "annoyed", "mid") gen "Well... Let's find out if it works first..." ("base", xpos="far_left", ypos="head") lun "Okay!" ("base", "base", "base", "mid") - gen "I need to focus so just follow my instructions..." ("base", xpos="far_left", ypos="head") + gen "I need to focus, so just follow my instructions..." ("base", xpos="far_left", ypos="head") lun "Of course, [lun_genie_name]!" ("grin", "base", "base", "mid") gen "Excellent... Just need to take out my wand and then we can begin..." ("base", xpos="far_left", ypos="head") gen "(Let's see if we can produce some real magic this time...)" ("base", xpos="far_left", ypos="head") @@ -368,13 +368,13 @@ label ll_pf_talk_T1_E3_intro: gen "Are you questioning my methods [luna_name]?" ("base", xpos="far_left", ypos="head") lun "Oh! Of course not!" ("mad", "narrow", "base", "mid") gen "Then answer my question..." ("base", xpos="far_left", ypos="head") - lun "Right...{w=0.4} *Ehm*...{w=0.4} As I said before they bother me at the most inopportune moments..." ("open", "narrow", "base", "R") + lun "Right...{w=0.4} *Ehm*...{w=0.4} As I said before, they bother me at the most inopportune moments..." ("open", "narrow", "base", "R") - call nar(">As the girl starts talking you continue stroking your now hardening cock, taking in every word of her sexual experiences.") + call nar(">As the girl starts talking, you continue stroking your now hardening cock, taking in every word of her sexual experiences.") lun "And there was that time down at the lake... Now I'd never think they'd be down there, I thought they hated water..." ("soft", "wide", "base", "mid") - call nar(">As she goes on talking about wrackspurts and how they make her feel you notice that Luna has started grinding her legs together again.") + call nar(">As she goes on talking about wrackspurts and how they make her feel, you notice that Luna has started grinding her legs together again.") lun "*Ah*...{w=0.4} And the worst times are when I'm about to go to sleep...{w=0.4} It must be something with my pyjamas..." ("soft", "narrow", "base", "down", cheeks="blush") lun "[lun_genie_name]...{w=0.4} They're...{w=0.4} They're bothering me again..." ("base", "base", "base", "mid") @@ -396,11 +396,15 @@ label ll_pf_talk_T1_E3_intro: with d5 call nar(">You close your eyes, listening to the girl... Your cock pulsating in your grasp as you feel yourself getting close to bursting.") - lun "It's... *Ah*... It's like a tingly sensation spreading from between my legs... Almost as If I'm about to wet myself..." ("base", "base", "base", "mid") - lun "But it's... It's different... It feels really good..." ("base", "base", "base", "mid") + lun "It's--{w=0.2} *Ah*...{w=0.4} It's like a tingly sensation spreading from between my legs... Almost as If I'm about to wet myself..." ("base", "base", "base", "mid") + lun "But it's--{w=0.2} It's different...{w=0.4} It feels really good." ("base", "base", "base", "mid") + call nar(">An image of the girls wet panties runs across your mind and you feel your cock twitch slightly in your hand.") + lun "[lun_genie_name]... I don't know how long I can endure this... Please tell me it's working..." ("base", "base", "base", "mid") + call nar(">You rub your cock even faster, the sound of Luna's voice fading out of your mind...") + lun "I can't bear it, [lun_genie_name]!" ("base", "base", "base", "mid") lun "I need--" ("mad", "wide", "base", "L", xpos="mid", ypos="base", flip=True, trans=dissolve) @@ -409,8 +413,8 @@ label ll_pf_talk_T1_E3_intro: $ renpy.sound.play("sounds/gasp.ogg") - call nar(">Your cock pulsates in your hand and with a groan and a sudden rush of relief you unload a torrent of cum all over your desk...") - call nar(">As waves of pleasure spread across your body you slowly begin to feel your other senses return to you...") + call nar(">Your cock pulsates in your hand, and with a groan and a sudden rush of relief, you unload a torrent of cum all over your desk...") + call nar(">As waves of pleasure spread across your body, you slowly begin to feel your other senses return to you...") hide screen blkfade with d9 @@ -426,17 +430,17 @@ label ll_pf_talk_T1_E3_intro: 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") - gen "Well... *Err*... I suppose--" ("base", xpos="far_left", ypos="head") + gen "Well...{w=0.2} *Err*...{w=0.2} I suppose--" ("base", xpos="far_left", ypos="head") lun "You've got to teach me how you did it!" ("angry", "wide", "base", "mid") gen "What?" ("base", xpos="far_left", ypos="head") - gen "I mean... I'd love to!" ("grin", xpos="far_left", ypos="head") + gen "I mean...{w=0.4} I'd love to!" ("grin", xpos="far_left", ypos="head") lun "Yay!" ("base", "happyCl", "base", "mid") lun "So how did you do it? I thought you were using your wand..." ("grin", "narrow", "base", "mid") lun "Or is that what you call a penis, do you call that a wand too?!" ("open", "wide", "base", "mid") lun "Did you cast a spell through it?--" ("soft", "wide", "base", "mid") gen "Slow down [luna_name]..." ("base", xpos="far_left", ypos="head") lun "Sorry [lun_genie_name]..." ("mad", "base", "base", "mid") - gen "Well you could say it's similar to a spell... I stroke my penis along the shaft and then--" ("base", xpos="far_left", ypos="head") + gen "Well, you could say it's similar to a spell... I stroke my penis along the shaft and then--" ("base", xpos="far_left", ypos="head") lun "Can I do it now?" ("grin", "base", "base", "mid") gen "What? Right now?!" ("angry", xpos="far_left", ypos="head") lun "Yes!" ("smile", "wide", "base", "mid") @@ -493,7 +497,7 @@ label ll_pf_talk_T1_E3_intro: lun "An inspection?" ("soft", "base", "raised", "downL") lun "Is that what you did to figure out how to expel them from yourself?" ("open", "base", "raised", "mid") gen "Smart girl... That's exactly it!" ("base", xpos="far_left", ypos="head") - gen "I'm sure with a thorough inspection we'll figure out a way for you to expel them as well..." ("base", xpos="far_left", ypos="head") + gen "I'm sure with a thorough inspection, we'll figure out a way for you to expel them as well..." ("base", xpos="far_left", ypos="head") lun "You truly believe so?" ("grin", "base", "base", "mid") gen "Of course!" ("grin", xpos="far_left", ypos="head") gen "We'll have you spurting all over the place in no time, don't you worry!" ("base", xpos="far_left", ypos="head") @@ -506,7 +510,7 @@ label ll_pf_talk_T1_E3_intro: gen "Of course... Off you go!" ("base", xpos="far_left", ypos="head") else: gen "But you better get some rest before that..." ("base", xpos="far_left", ypos="head") - gen "(at least I do...)" ("base", xpos="far_left", ypos="head") + gen "(At least I do...)" ("base", xpos="far_left", ypos="head") lun "Oh... Of course, [lun_genie_name]!" ("mad", "base", "base", "stare") lun "Just let me know when you're ready to do the inspection." ("crooked_smile", "base", "base", "mid") @@ -518,7 +522,7 @@ label ll_pf_talk_T1_E3_intro: gen "..." ("base", xpos="far_left", ypos="head") gen "(And now I wake up...)" ("base", xpos="far_left", ypos="head") gen "..." ("base", xpos="far_left", ypos="head") - gen "(Okay I guess all that did just happen...)" ("base", xpos="far_left", ypos="head") + gen "(Okay, I guess all that did just happen...)" ("base", xpos="far_left", ypos="head") jump ll_pf_talk.end @@ -560,12 +564,12 @@ label ll_pf_talk_T1_E4_repeat: gen "That's what I thought!" ("angry", xpos="far_left", ypos="head") lun "Does it hurt [lun_genie_name]? Your penis looks as if it's about to burst!" ("angry", "base", "base", "downL") - gen "*Ah*...{w=0.4} It...{w=0.4} It's fine but you better keep a close eye on it as I deal with this." ("angry", xpos="far_left", ypos="head") + gen "*Ah*...{w=0.4} It...{w=0.4} It's fine, but you better keep a close eye on it as I deal with this." ("angry", xpos="far_left", ypos="head") lun "Yes, [lun_genie_name]!" ("mad", "base", "base", "mid") lun "" ("soft", "narrow", "base", "downL") call nar(">Luna fixes her gaze and stares intently at your cock as you continue stroking it.") - call nar(">Even in her worried state there's still quite a bit of excitement in her eyes.") + call nar(">Even in her worried state, there's still quite a bit of excitement in her eyes.") gen "Oh. I can't even look at it, tell me it still looks okay!" ("angry", xpos="far_left", ypos="head") lun "It's still intact [lun_genie_name]!" ("angry", "narrow", "base", "downL") @@ -573,8 +577,8 @@ label ll_pf_talk_T1_E4_repeat: gen "I feel it, just keep looking at it [luna_name]!" ("angry", xpos="far_left", ypos="head") lun "Yes, [lun_genie_name]!" ("clench", "base", "base", "downL", cheeks="blush") - call nar(">You keep stroking your shaft as Luna watches over your every move.") - call nar(">You start stroking it faster and faster, getting closer and closer to the edge by the second.") + call nar(">You keep stroking your shaft as Luna watches your every move.") + call nar(">Stroking it faster and faster, you feel yourself getting closer and closer to the edge by the second.") lun "It's pulsating! How many Wrackspurts do you have in there?" ("disgust", "base", "base", "downL", cheeks="blush") gen "It's...{w=0.4} Filled to the brim!" ("angry", xpos="far_left", ypos="head") @@ -583,7 +587,7 @@ label ll_pf_talk_T1_E4_repeat: lun "Oh my, they're making you go delirious!" ("angry", "happyCl", "base", "downL", cheeks="blush") lun "The Matron [lun_genie_name], should I fetch her?" ("angry", "narrow", "base", "mid", cheeks="blush") gen "Absolutely!" ("grin", xpos="far_left", ypos="head") - call nar(">As the thought of Luna bringing a hot nurse crosses your mind you feel yourself reaching climax.") + call nar(">As the thought of Luna bringing a hot nurse crosses your mind, you feel yourself reaching climax.") lun "I'll be back in just a moment!" ("angry", "happyCl", "base", "mid", cheeks="blush") #Luna walks to mid position @@ -630,7 +634,7 @@ label ll_pf_talk_T1_E4_repeat: lun "We'll have that inspection done soon right?" ("angry", "narrow", "base", "mid") lun "I'm worried what might happen if they attacked me like this." ("disgust", "narrow", "base", "down") - gen "Of course...{w=0.3} I'll check you out-- *Err*...{w=0.3} I mean I'll have you checked as soon as possible!" ("base", xpos="far_left", ypos="head") + gen "Of course...{w=0.3} I'll check you out-- *Err*...{w=0.3} I mean, I'll have you checked as soon as possible!" ("base", xpos="far_left", ypos="head") lun "Thank Merlin..." ("open", "closed", "low", "mid") lun "Then let me know as soon as you're ready [lun_genie_name]." ("angry", "base", "base", "mid") gen "Certainly..." ("base", xpos="far_left", ypos="head") @@ -669,7 +673,7 @@ label ll_pf_talk_T2_E1_repeat: gen "Yes?" ("base", xpos="far_left", ypos="head") lun "Could I...{w} Could I watch you do it?" ("open", "narrow", "base", "mid") gen "You want to...{w=0.4} Watch me?" ("base", xpos="far_left", ypos="head") - lun "Yes, If I'm supposed to learn about these things then wouldn't it be best if I watched you do it?" ("soft", "narrow", "base", "mid") + lun "Yes, If I'm supposed to learn about these things, then wouldn't it be best if I watched you do it?" ("soft", "narrow", "base", "mid") gen "*Hmm*..." ("base", xpos="far_left", ypos="head") lun "Please, [lun_genie_name]! Even if I'm not ready yet myself, I really want to be able to help you properly once I am!" ("mad", "base", "base", "mid") gen "Well...{w=0.4} *Ah*...{w=0.4} When you put it that way..." ("base", xpos="far_left", ypos="head") @@ -685,9 +689,13 @@ label ll_pf_talk_T2_E1_repeat: lun "Really?" ("mad", "base", "base", "mid") lun "How big is it going to get?" ("open", "base", "base", "downL", cheeks="blush") gen "Quite...{w=0.4} Quite a fair bit bigger..." ("base", xpos="far_left", ypos="head") + call nar(">You look up at the girl, who's now watching your every stroke with excitement.") - lun "Wow, it's so much bigger now! It's like unicorn horn!" ("open", "narrow", "base", "downL", cheeks="blush") + + lun "Wow, it's so much bigger now! It's like a unicorn horn!" ("open", "narrow", "base", "downL", cheeks="blush") + call nar(">With Luna so close to you, you can't help but notice her reddening cheeks and quickening breath.") + lun "Wait, surely it can't be as hard as a unicorn horn..." ("soft", "base", "raised", "downL", cheeks="blush") gen "(*Ngh*...{w=0.4} You'd be surprised...)" ("base", xpos="far_left", ypos="head") lun "It's more like...{w=0.4} like..." ("upset", "base", "base", "downL", cheeks="blush") @@ -702,7 +710,7 @@ label ll_pf_talk_T2_E1_repeat: call cum_block gen "*Argh*..." ("angry", xpos="far_left", ypos="head") lun "There's so much of it!" ("grin", "wide", "base", "stare") - gen "(Yes, watch me spurt you airheaded--)" ("angry", xpos="far_left", ypos="head") + gen "(Yes, watch me spurt, you airheaded--)" ("angry", xpos="far_left", ypos="head") call cum_block gen "*Argh*-- *heavy panting*" ("angry", xpos="far_left", ypos="head") call gen_chibi("cum_behind_desk_done") @@ -792,7 +800,7 @@ label ll_pf_talk_T3_E1_repeat: gen "If you compare it to an elephant trunk that is... Actually when it comes to penis size, mine is absolutely massive!" ("base", xpos="far_left", ypos="head") gen "That's why I'm such a powerful wizard." ("base", xpos="far_left", ypos="head") gen "The two are directly related." ("base", xpos="far_left", ypos="head") - "-Overexaggerate-": + "-Over-exaggerate-": gen "It's absolutely massive..." ("base", xpos="far_left", ypos="head") lun "I knew it!" ("grin", "base", "base", "downL", cheeks="blush") gen "Actually, I have to use magic to make it smaller than its true size." ("base", xpos="far_left", ypos="head") @@ -801,18 +809,20 @@ label ll_pf_talk_T3_E1_repeat: gen "Who do you think designed these robes?" ("base", xpos="far_left", ypos="head") lun "*Ehm*..." ("soft", "base", "base", "mid", cheeks="blush") gen "Me of course!" ("base", xpos="far_left", ypos="head") - gen "If everyone has to wear loose fitting clothes then they wouldn't question why I'm always wearing them." ("base", xpos="far_left", ypos="head") - gen "It is a curse... Sporting such a massive phallus..." ("base", xpos="far_left", ypos="head") - lun "I... I'm sorry [lun_genie_name]... I had no idea..." ("angry", "narrow", "base", "mid", cheeks="blush") - gen "That's the curse of being such a powerful wizard..." ("base", xpos="far_left", ypos="head") - gen "The more powerful you are the larger it is." ("base", xpos="far_left", ypos="head") + gen "Ever since I normalised wearing loose-fitting robes, nobody has ever questioned me about it." ("base", xpos="far_left", ypos="head") + gen "It is truly a curse... Sporting such a massive phallus..." ("base", xpos="far_left", ypos="head") + lun "I--{w=0.2} I'm sorry [lun_genie_name]... I had no idea..." ("angry", "narrow", "base", "mid", cheeks="blush") + gen "That's the downside of being such a powerful wizard..." ("base", xpos="far_left", ypos="head") + gen "The more powerful you become, the larger the member... Yep... All that power goes straight to the head." ("base", xpos="far_left", ypos="head") + lun "Oh, I think my dad told me something like that about the employees at the ministry." ("grin", "base", "base", "mid", cheeks="blush") + gen "That would be the head above your shoulders, I'm still talking about the one between my legs." "-Play it down-": gen "Nah, it's tiny..." ("base", xpos="far_left", ypos="head") lun "Really?" ("clench", "base", "base", "mid", cheeks="blush") gen "Yep..." ("base", xpos="far_left", ypos="head") lun "How do other people even hide theirs then?" ("disgust", "base", "base", "downL", cheeks="blush") - gen "Oh, you mean compared to other people?" ("base", xpos="far_left", ypos="head") - gen "You should've specified then... Size is quite relative you know..." ("base", xpos="far_left", ypos="head") + gen "Oh, you meant compared to other people?" ("base", xpos="far_left", ypos="head") + gen "You should've specified... Size is quite relative you know..." ("base", xpos="far_left", ypos="head") gen "This planet is tiny compared to the sun, which is tiny compared to the universe." ("base", xpos="far_left", ypos="head") lun "Then... How big is it compared to the average person?" ("open", "base", "base", "mid", cheeks="blush") gen "Absolutely massive!" ("grin", xpos="far_left", ypos="head") @@ -831,18 +841,18 @@ label ll_pf_talk_T3_E1_repeat: lun "I see..." ("grin", "base", "base", "mid", cheeks="blush") gen "Now if you excuse me, I need to concentrate on this..." ("base", xpos="far_left", ypos="head") lun "Of course [lun_genie_name]..." ("crooked_smile", "narrow", "base", "mid", cheeks="blush") - gen "Feel free to talk about how big it is by the way... It might help." ("base", xpos="far_left", ypos="head") + gen "Feel free to tell me more about how big it is by the way... It might help." ("base", xpos="far_left", ypos="head") lun "Oh... *Ehm*..." ("mad", "narrow", "base", "mid", cheeks="blush") call nar(">You continue stroking your cock in anticipation as Luna looks at you, pondering what to say.") - lun "Your penis is so big [lun_genie_name]..." ("soft", "narrow", "base", "downL", cheeks="blush") + lun "Your penis is so big, [lun_genie_name]..." ("soft", "narrow", "base", "downL", cheeks="blush") gen "Yes, that's it... Keep going, tell me how great I am." ("base", xpos="far_left", ypos="head") lun "And you're so powerful..." ("grin", "narrow", "base", "downL", cheeks="blush") gen "*Hmm*..." ("base", xpos="far_left", ypos="head") gen "That's it...{w=0.3} *Ah*...{w=0.3} How powerful am I?" ("base", xpos="far_left", ypos="head") - lun "More powerful than merlin!" ("smile", "base", "base", "mid", cheeks="blush") + lun "More powerful than Merlin!" ("smile", "base", "base", "mid", cheeks="blush") gen "*Ngh*...{w=0.3} Yeah...{w=0.3} That guy, he's so overrated!" ("base", xpos="far_left", ypos="head") call nar(">You feel yourself getting closer to the edge as Luna strokes your ego.") - gen "I'm... I'm close, girl keep going..." ("base", xpos="far_left", ypos="head") + gen "I'm... I'm close girl, keep going..." ("base", xpos="far_left", ypos="head") lun "Oh... *Ehm*... I'm not sure what to--" ("angry", "narrow", "base", "downL", cheeks="blush") gen "Tell me I'm better than Jafar!" ("base", xpos="far_left", ypos="head") lun "*Ehm*... I don't know who--" ("soft", "base", "base", "mid", cheeks="blush") @@ -866,11 +876,11 @@ label ll_pf_talk_T3_E1_repeat: with d3 lun "Wow... It went so far!" ("smile", "wide", "base", "L") - lun "Is that related to your wizard powers too?" ("angry", "base", "base", "mid") - gen "*Ah*...{w=0.3} *Ah*...{w=0.3} That's just sheer willpower..." ("base", xpos="far_left", ypos="head") + lun "Is that related to your wizarding powers too?" ("angry", "base", "base", "mid") + gen "*Ah*...{w=0.3} *Ah*...{w=0.3} That's just sheer willpower... And a couple of Kegel exercises every now and then." ("base", xpos="far_left", ypos="head") lun "Astonishing..." ("soft", "narrow", "base", "downL") gen "You can stop staring at it now..." ("base", xpos="far_left", ypos="head") - lun "Oh... Of course [lun_genie_name]." ("angry", "narrow", "base", "mid", cheeks="blush") + lun "Oh... Of course, [lun_genie_name]." ("angry", "narrow", "base", "mid", cheeks="blush") #Luna walks to mid position call lun_walk(path=[(230, 455),(230, 470),(440, 470),("mid", "base")]) diff --git a/game/scripts/characters/luna/wardrobe.rpy b/game/scripts/characters/luna/wardrobe.rpy index df67c3c5..34d9e497 100644 --- a/game/scripts/characters/luna/wardrobe.rpy +++ b/game/scripts/characters/luna/wardrobe.rpy @@ -2,251 +2,187 @@ ## Character ## ############### -default luna = Doll(name="luna", - clothes={"headgear": [None, 15, True], - "hair": [None, 4, True], - "glasses": [None, 12, True], - "earrings": [None, 14, True], - "neckwear": [None, 11, True], - "robe": [None, 28, True], - "gloves": [None, 21, True], - "top": [None, 15, True], - "bra": [None, 9, True], - "bottom": [None, 8, True], - "garterbelt": [None, 7, True], - "panties": [None, 6, True], - "stockings": [None, 5, True], - "buttplug": [None, -1, True], - "pubes": [None, 3, True], - "footwear": [None, 6, True], - "tattoo0": [None, 1, True], - "tattoo1": [None, 1, True], - "tattoo2": [None, 1, True], - "tattoo3": [None, 1, True], - "tattoo4": [None, 1, True], - "piercing0": [None, 2, True], - "piercing1": [None, 2, True], - "piercing2": [None, 2, True], - "piercing3": [None, 2, True], - "piercing4": [None, 2, True], - "accessory0": [None, 12, True], - "accessory1": [None, 12, True], - "accessory2": [None, 12, True], - "accessory3": [None, 12, True], - "accessory4": [None, 12, True], - "makeup0": [None, 3, True], - "makeup1": [None, 3, True], - "makeup2": [None, 3, True], - "makeup3": [None, 3, True], - "makeup4": [None, 3, True]}, - face={"tears": [None, 12, True], - "cheeks": [None, 7, True], - "eyebrows": ["base", 11, True], - "eyes": ["base", 8, True], - "pupils": ["mid", 9, True], - "mouth": ["base", 13, True]}, - body={"armleft": ["up", 3], - "armright":["up", 1], - "base": ["front", 0], - "breasts": ["normal", 2]}) +default luna = Doll(name="luna") + +default lun_frame_default = DollBodypart("luna", ("hidden", "frame"), "frame", "default") +default lun_body_default = DollOutfit([lun_frame_default], hidden=True) + +########## +## Hair ## +########## + +default lun_hair_base = DollCloth("luna", ("head", "hair"), "hair", "base", ["#ede0c3ff", "#bfa46bff", "#309087ff"], unlocked=True) ####################### ## Schoolgirl Outfit ## ####################### -default lun_hair_base = DollCloth("luna", ("head", "hair"), "hair", "base", [[237, 224, 195, 255], [191, 164, 107, 255], [48, 144, 135, 255]], unlocked=True) -default lun_hair_wand = DollCloth("luna", ("head", "hair"), "hair", "wand", [[237, 224, 195, 255], [191, 164, 107, 255], [48, 144, 135, 255]], unlocked=True) +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_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=213) -################ -## Schoolgirl ## -################ +default lun_top_school1 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_1", ["#b7b7b8ff", "#6d6979ff", "#5974c2ff", "#d8a30aff"], unlocked=True) +default lun_top_school2 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_2", ["#b7b7b8ff", "#6d6979ff", "#5974c2ff", "#d8a30aff"], unlocked=True) +default lun_top_school3 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_3", ["#b7b7b8ff", "#6d6979ff", "#5974c2ff", "#d8a30aff"], unlocked=True) +default lun_top_school4 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_4", ["#b7b7b8ff", "#5974c2ff", "#d8a30aff"], unlocked=True) +default lun_top_vest = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_vest", ["#6d6979ff", "#5974c2ff", "#d8a30aff"], unlocked=True, level=4) +default lun_top_school5 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_5", ["#b7b7b8ff", "#5974c2ff", "#d8a30aff"], unlocked=True, level=4) +default lun_top_school6 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_6", ["#b7b7b8ff", "#5974c2ff", "#d8a30aff"], unlocked=True, level=5) +default lun_top_crop = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_crop", ["#b7b7b8ff", "#5974c2ff", "#d8a30aff"], unlocked=True, level=7) -default lun_footwear_shoes = DollClothDummy("luna", type="footwear") -default lun_top_school1 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_1", [[183, 183, 184, 255], [109, 105, 121, 255], [89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True) -default lun_top_school2 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_2", [[183, 183, 184, 255], [109, 105, 121, 255], [89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True) -default lun_top_school3 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_3", [[183, 183, 184, 255], [109, 105, 121, 255], [89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True) -default lun_top_school4 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_4", [[183, 183, 184, 255], [89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True) -default lun_top_vest = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_vest", [[109, 105, 121, 255], [89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True, level=4) -default lun_top_school5 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_5", [[183, 183, 184, 255], [89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True, level=4) -default lun_top_school6 = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_6", [[183, 183, 184, 255], [89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True, level=5) -default lun_top_crop = DollCloth("luna", ("upper body", "shirts"), "top", "top_school_crop", [[183, 183, 184, 255], [89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True, level=7) -default lun_neckwear_tie = DollCloth("luna", ("head", "neckwear"), "neckwear", "tie", [[89, 116, 194, 255], [216, 163, 10, 255]], unlocked = True, zorder=16) # Tie Only +default lun_neckwear_tie = DollCloth("luna", ("head", "neckwear"), "neckwear", "tie", ["#5974c2ff", "#d8a30aff"], unlocked = True, zorder=213) # Tie Only -default lun_bottom_school1 = DollCloth("luna", ("lower body", "skirts"), "bottom", "school_skirt_1", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True) -default lun_bottom_school2 = DollCloth("luna", ("lower body", "skirts"), "bottom", "school_skirt_2", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True) -default lun_bottom_school3 = DollCloth("luna", ("lower body", "skirts"), "bottom", "school_skirt_3", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True, level=4) -default lun_bottom_school4 = DollCloth("luna", ("lower body", "skirts"), "bottom", "school_skirt_4", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True, level=6) +default lun_bottom_school1 = DollCloth("luna", ("lower body", "skirts"), "bottom", "school_skirt_1", ["#675a6cff", "#e8b10dff"], unlocked=True) +default lun_bottom_school2 = DollCloth("luna", ("lower body", "skirts"), "bottom", "school_skirt_2", ["#675a6cff", "#e8b10dff"], unlocked=True) +default lun_bottom_school3 = DollCloth("luna", ("lower body", "skirts"), "bottom", "school_skirt_3", ["#675a6cff", "#e8b10dff"], unlocked=True, level=4) +default lun_bottom_school4 = DollCloth("luna", ("lower body", "skirts"), "bottom", "school_skirt_4", ["#675a6cff", "#e8b10dff"], unlocked=True, level=6) -default lun_stockings_school = DollCloth("luna", ("legwear", "stockings"), "stockings", "short_school_1", [[89, 116, 194, 255], [216, 163, 10, 255]], unlocked=True) -default lun_stockings_school2 = DollCloth("luna", ("legwear", "stockings"), "stockings", "short_school_2", [[89, 116, 194, 255]], unlocked=True) +default lun_stockings_school = DollCloth("luna", ("legwear", "stockings"), "stockings", "short_school_1", ["#5974c2ff", "#d8a30aff"], unlocked=True) +default lun_stockings_school2 = DollCloth("luna", ("legwear", "stockings"), "stockings", "short_school_2", ["#5974c2ff"], unlocked=True) -default lun_robe_school_1 = DollCloth("luna", ("upper body", "robes"), "robe", "robe_school_1", [[96, 96, 96, 255], [89, 116, 194, 255]], unlocked=True, level=0) -default lun_robe_school_2 = DollCloth("luna", ("upper body", "robes"), "robe", "robe_school_2", [[96, 96, 96, 255], [89, 116, 194, 255]], unlocked=True, level=4) -default lun_robe_school_3 = DollCloth("luna", ("upper body", "robes"), "robe", "robe_school_3", [[96, 96, 96, 255], [89, 116, 194, 255]], unlocked=True, level=5) -default lun_robe_school_4 = DollCloth("luna", ("upper body", "robes"), "robe", "robe_school_4", [[96, 96, 96, 255], [89, 116, 194, 255]], unlocked=True, level=7) +default lun_bra_base1 = DollCloth("luna", ("upper undergarment", "bras"), "bra", "basic_bra_1", ["#525c6bff", "#003280ff", "#003280ff"], unlocked=True) +default lun_panties_base1 = DollCloth("luna", ("lower undergarment", "panties"), "panties", "basic_panties_1", ["#525c6bff", "#003280ff", "#003280ff"], unlocked=True) +default lun_panties_lace2 = DollCloth("luna", ("lower undergarment", "panties"), "panties", "lace_panties_2", ["#1f5bb0ff", "#fff1edff", "#fff1edff"], level=7, unlocked=True) -############### -## Underwear ## -############### +default lun_robe_school_1 = DollCloth("luna", ("upper body", "robes"), "robe", "robe_school_1", ["#606060ff", "#5974c2ff"], unlocked=True, level=0) +default lun_robe_school_2 = DollCloth("luna", ("upper body", "robes"), "robe", "robe_school_2", ["#606060ff", "#5974c2ff"], unlocked=True, level=4) +default lun_robe_school_3 = DollCloth("luna", ("upper body", "robes"), "robe", "robe_school_3", ["#606060ff", "#5974c2ff"], unlocked=True, level=5) +default lun_robe_school_4 = DollCloth("luna", ("upper body", "robes"), "robe", "robe_school_4", ["#606060ff", "#5974c2ff"], unlocked=True, level=7) -# Fancy Underwear -default lun_bra_base1 = DollCloth("luna", ("upper undergarment", "bras"), "bra", "basic_bra_1", [[82, 92, 107, 255], [0, 50, 128, 255], [0, 50, 128, 255]], unlocked=True) -default lun_panties_base1 = DollCloth("luna", ("lower undergarment", "panties"), "panties", "basic_panties_1", [[82, 92, 107, 255], [0, 50, 128, 255], [0, 50, 128, 255]], unlocked=True) - -# Plain Underwear -default lun_bra_base2 = DollCloth("luna", ("upper undergarment", "bras"), "bra", "basic_bra_2", [[216, 225, 230, 255], [89, 116, 194, 255]], unlocked=True) -default lun_panties_base2 = DollCloth("luna", ("lower undergarment", "panties"), "panties", "basic_panties_2", [[216, 225, 230, 255], [89, 116, 194, 255]], unlocked=True) - -# Lace Underwear -default lun_bra_lace1 = DollCloth("luna", ("upper undergarment", "bras"), "bra", "lace_bra_1", [[113, 113, 113, 255], [52, 52, 52, 255]], level=7) -default lun_panties_lace1 = DollCloth("luna", ("lower undergarment", "panties"), "panties", "lace_panties_1", [[113, 113, 113, 255], [52, 52, 52, 255]], level=7) - -default lun_panties_lace2 = DollCloth("luna", ("lower undergarment", "panties"), "panties", "lace_panties_2", [[31, 91, 176, 255], [255, 241, 237, 255], [255, 241, 237, 255]], level=7, unlocked=True) - -# Bikini Bra -default lun_bra_bikini3 = DollCloth("luna", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_3", [[0, 82, 198, 255], [173, 152, 126, 255]], level=7) -default lun_panties_bikini3 = DollCloth("luna", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_3", [[0, 82, 198, 255], [173, 152, 126, 255]], level=7) - -################ -## One-Pieces ## -################ - -default lun_top_swimsuit1 = DollCloth("luna", ("upper body", "one-piece suits"), "top", "swimsuit_1", [[255, 172, 184, 215], [238, 117, 114, 255]], blacklist=["panties", "bra"], zorder=7, level=6) - -############## -## Nighties ## -############## - -default lun_top_nightie1 = DollCloth("luna", ("upper body", "shirts"), "top", "nightie_1", [[255, 255, 255, 215]], level=5) -default lun_top_nightie2 = DollCloth("luna", ("upper body", "shirts"), "top", "nightie_2", [[255, 172, 184, 215]], level=6) +default lun_outfit_default = DollOutfit([lun_hair_base, lun_top_school1, lun_bottom_school2, lun_bra_base1, lun_panties_base1, lun_stockings_school], unlocked=True) +default lun_outfit_default_quirky = DollOutfit([lun_hair_wand, lun_accessory_hair_bug, lun_glasses_spectrespecs, lun_accessory_pin_radish, lun_neckwear_tie, lun_top_school3, lun_bottom_school2, lun_bra_base1, lun_panties_base1, lun_stockings_school], unlocked=True) +default lun_outfit_default_no_vest = DollOutfit([lun_hair_base, lun_top_school4, lun_bottom_school2, lun_bra_base1, lun_panties_base1, lun_stockings_school], hidden=True) +default lun_outfit_school_slut = DollOutfit([lun_hair_base, lun_glasses_hearts, lun_top_crop, lun_bottom_school4, lun_panties_lace2, lun_stockings_school])#, hidden=True) +default lun_outfit_last = DollOutfit([lun_hair_base], hidden=True) ################### -## Pajama Outfit ## +## Bikini Outfit ## ################### -default lun_top_pajama = DollCloth("luna", ("upper body", "shirts"), "top", "pajama_1", [[249, 126, 197, 255], [182, 23, 16, 255]]) -default lun_bottom_pajama = DollCloth("luna", ("lower body", "trousers"), "bottom", "pajama_1", [[255, 197, 211, 255], [182, 23, 16, 255]]) +default lun_bra_bikini3 = DollCloth("luna", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_3", ["#0052c6ff", "#ad987eff"], level=7) +default lun_panties_bikini3 = DollCloth("luna", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_3", ["#0052c6ff", "#ad987eff"], level=7) +default lun_outfit_bikini3 = DollOutfit([lun_hair_base, lun_bra_bikini3, lun_panties_bikini3], price=350, name="Rave Bikini Set", desc="Skilfully assembled from scrapped materials.") -default lun_glasses_spectrespecs = DollCloth("luna", ("head", "glasses"), "glasses", "spectrespecs", [[227, 102, 130, 255], [61, 110, 140, 255]], unlocked=True) -default lun_glasses_hearts = DollCloth("luna", ("head", "glasses"), "glasses", "sunglasses_2", [[240, 120, 255, 255], [0, 158, 255, 255]], unlocked=True) -default lun_accessory_pin_radish = DollCloth("luna", ("misc", "accessory"), "accessory0", "pin_radish", [[182, 23, 16, 255], [232, 190, 188, 255]], zorder=16, unlocked=True) +########################### +## Lace Underwear Outfit ## +########################### -default lun_stockings_pantyhose = DollCloth("luna", ("legwear", "pantyhose"), "stockings", "pantyhose_1", [[177, 144, 131, 255]], unlocked=True) -default lun_stockings_pantyhose_meshed = DollCloth("luna", ("legwear", "pantyhose"), "stockings", "pantyhose_meshed", [[0, 0, 0, 255]], unlocked=True) +default lun_bra_lace1 = DollCloth("luna", ("upper undergarment", "bras"), "bra", "lace_bra_1", ["#717171ff", "#343434ff"], level=7) +default lun_panties_lace1 = DollCloth("luna", ("lower undergarment", "panties"), "panties", "lace_panties_1", ["#717171ff", "#343434ff"], level=7) + +default lun_outfit_lace1 = DollOutfit([lun_hair_base, lun_bra_lace1, lun_panties_lace1], price=250, name="Lace Lingerie", desc="For a girl that's feeling a bit lacy.") + +##################### +## Swimsuit Outfit ## +##################### + +default lun_top_swimsuit1 = DollCloth("luna", ("upper body", "one-piece suits"), "top", "swimsuit_1", ["#ffacb8d7", "#ee7572ff"], blacklist=["panties", "bra"], zorder=183, level=6) + +default lun_outfit_swimsuit = DollOutfit([lun_hair_base, lun_top_swimsuit1], price=350, name="One-piece Swimsuit", desc="Buy this outfit and everything will work out swimmingly.") + +################### +## Pajama Outfit ## #Unlocked in Luna Intro +################### + +default lun_top_pajama = DollCloth("luna", ("upper body", "shirts"), "top", "pajama_1", ["#f97ec5ff", "#b61710ff"]) +default lun_bottom_pajama = DollCloth("luna", ("lower body", "trousers"), "bottom", "pajama_1", ["#ffc5d3ff", "#b61710ff"]) + +default lun_outfit_pajama = DollOutfit([lun_hair_base, lun_accessory_pin_radish, lun_top_pajama, lun_bottom_pajama, lun_bra_base1, lun_panties_base1], unlocked=True) ###################### ## Flight Attendant ## ###################### -default lun_top_flight_attendant_1 = DollCloth("luna", ("upper body", "dresses"), "top", "flight_attendant_1", [[82, 82, 130, 255], [225, 64, 16, 255]]) -default lun_top_flight_attendant_2 = DollCloth("luna", ("upper body", "dresses"), "top", "flight_attendant_2", [[82, 82, 130, 255], [225, 64, 16, 255]], level=6) -default lun_neckwear_neckerchief = DollCloth("luna", ("head", "neckwear"), "neckwear", "neckerchief", [[82, 82, 130, 255]]) -default lun_headgear_flight_attendant = DollCloth("luna", ("head", "headgear"), "headgear", "flight_attendant", [[225, 64, 16, 255]]) -default lun_panties_flight_attendant_1 = DollCloth("luna", ("lower undergarment", "bikini panties"), "panties", "flight_attendant_thongs_1", [[225, 64, 16, 255]], level=7) -default lun_panties_flight_attendant_2 = DollCloth("luna", ("lower undergarment", "bikini panties"), "panties", "flight_attendant_thongs_2", [[225, 64, 16, 255], [232, 183, 123, 255]], level=9) +default lun_top_flight_attendant_1 = DollCloth("luna", ("upper body", "dresses"), "top", "flight_attendant_1", ["#525282ff", "#e14010ff"]) +default lun_top_flight_attendant_2 = DollCloth("luna", ("upper body", "dresses"), "top", "flight_attendant_2", ["#525282ff", "#e14010ff"], level=6) +default lun_neckwear_neckerchief = DollCloth("luna", ("head", "neckwear"), "neckwear", "neckerchief", ["#525282ff"]) +default lun_headgear_flight_attendant = DollClothDynamic("luna", ("head", "headgear"), "headgear", "flight_attendant", ["#e14010ff"], tracking="?hair") +default lun_panties_flight_attendant_1 = DollCloth("luna", ("lower undergarment", "bikini panties"), "panties", "flight_attendant_thongs_1", ["#e14010ff"], level=7) +default lun_panties_flight_attendant_2 = DollCloth("luna", ("lower undergarment", "bikini panties"), "panties", "flight_attendant_thongs_2", ["#e14010ff", "#e8b77bff"], level=9) -############ -## Muggle ## -############ - -default lun_top_muggle_top = DollCloth("luna", ("upper body", "shirts"), "top", "muggle_top", [[127, 109, 140, 255], [231, 131, 186, 255]]) -default lun_robe_muggle_jacket = DollCloth("luna", ("upper body", "robes"), "robe", "muggle_jacket", [[247, 190, 196, 255], [134, 60, 74, 255]], level=4) -default lun_bottom_muggle_skirt = DollCloth("luna", ("lower body", "skirts"), "bottom", "muggle_skirt", [[43, 43, 43, 255], [61, 142, 194, 255], [83, 169, 150 , 255], [243, 243, 243, 255], [226, 148, 150, 255], [245, 210, 132, 255]]) -default lun_stockings_muggle_knee_socks = DollCloth("luna", ("legwear", "stockings"), "stockings", "muggle_knee_socks", [[2, 87, 146, 255], [0, 118, 127, 255], [0, 15, 43, 255]]) - -############ -## Summer ## -############ - -default lun_top_summer_top1 = DollCloth("luna", ("upper body", "shirts"), "top", "summer_top_1", [[255, 154, 205, 255]]) -default lun_top_summer_top2 = DollCloth("luna", ("upper body", "shirts"), "top", "summer_top_2", [[255, 154, 205, 255]], level=7) -default lun_bottom_summer_shorts = DollCloth("luna", ("lower body", "shorts"), "bottom", "summer_shorts", [[47, 150, 136, 255], [175, 220, 191, 255], [247, 152, 38 , 255]]) -default lun_accessory2_bracelets = DollCloth("luna", ("misc", "accessory"), "accessory2", "bracelets", [[36, 184, 45, 255], [58, 176, 212, 255], [194, 49, 15]], zorder=22) - -################# -## Accessories ## -################# - -default lun_neckwear_cork = DollCloth("luna", ("head", "neckwear"), "neckwear", "cork", [[255, 255, 255, 255]], unlocked = True, zorder=16) -default lun_accessory3_hair_bug = DollCloth("luna", ("misc", "accessory"), "accessory3", "hair_bug", [[255, 255, 255, 255]], unlocked = True, zorder=16) - -default lun_accessory4_wand_mouth = DollCloth("luna", ("misc", "accessory"), "accessory4", "wand_mouth", [[255, 255, 255, 255]], unlocked = True, zorder=16) -default lun_accessory4_wand_hand = DollCloth("luna", ("misc", "accessory"), "accessory4", "wand_hand", [[255, 255, 255, 255]], unlocked = True, zorder=16) -default lun_accessory4_wand_breasts = DollCloth("luna", ("misc", "accessory"), "accessory4", "wand_breasts", [[255, 255, 255, 255]], unlocked = True, zorder=16) -default lun_accessory4_wand_pussy = DollCloth("luna", ("misc", "accessory"), "accessory4", "wand_pussy", [[255, 255, 255, 255]], unlocked = True, zorder=7) - -################# -## Party Dress ## -################# - -default lun_top_party_dress = DollCloth("luna", ("upper body", "dresses"), "top", "party_dress", [[248, 168, 0, 255], [172, 94, 27, 255]]) - -############# -## Outfits ## -############# - -# School Uniforms -default lun_outfit_default = DollOutfit([lun_hair_base, lun_top_school1, lun_bottom_school2, lun_bra_base1, lun_panties_base1, lun_stockings_school], unlocked=True) -default lun_outfit_default_quirky = DollOutfit([lun_hair_wand, lun_accessory3_hair_bug, lun_glasses_spectrespecs, lun_accessory_pin_radish, lun_neckwear_tie, lun_top_school3, lun_bottom_school2, lun_bra_base1, lun_panties_base1, lun_stockings_school], unlocked=True) -default lun_outfit_default_no_vest = DollOutfit([lun_hair_base, lun_top_school4, lun_bottom_school2, lun_bra_base1, lun_panties_base1, lun_stockings_school], hidden=True) -default lun_outfit_school_slut = DollOutfit([lun_hair_base, lun_glasses_hearts, lun_top_crop, lun_bottom_school4, lun_panties_lace2, lun_stockings_school])#, hidden=True) - -# Pajamas -default lun_outfit_pajama = DollOutfit([lun_hair_base, lun_accessory_pin_radish, lun_top_pajama, lun_bottom_pajama, lun_bra_base1, lun_panties_base1], unlocked=True) - -# Nighties -default lun_outfit_nightie1 = DollOutfit([lun_hair_base, lun_top_nightie1], price=350, name="Loose-fitting Nightie", desc="The prefect nightie for a girl with her screws loose.") -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.") - -# Lingerie & Bikinis -default lun_outfit_lace1 = DollOutfit([lun_hair_base, lun_bra_lace1, lun_panties_lace1], price=250, name="Lace Lingerie", desc="For a girl that's feeling a bit lacy.") -default lun_outfit_bikini3 = DollOutfit([lun_hair_base, lun_bra_bikini3, lun_panties_bikini3], price=350, name="Rave Bikini Set", desc="Skilfully assembled from scrapped materials.") - -# One-Pieces & Swimsuits -default lun_outfit_swimsuit = DollOutfit([lun_hair_base, lun_top_swimsuit1], price=350, name="One-piece Swimsuit", desc="Buy this outfit and everything will work out swimmingly.") - -# Dresses default lun_outfit_flight_attendant = DollOutfit([lun_hair_base, lun_top_flight_attendant_1, lun_neckwear_neckerchief, lun_headgear_flight_attendant, lun_panties_flight_attendant_1], addons=[lun_top_flight_attendant_2, lun_panties_flight_attendant_2], price=350, name="Flight Attendant Costume", desc="An outfit attendants wear in those flying metal things.") -# Sets +################### +## Muggle Outfit ## +################### + +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_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"]) + default lun_outfit_muggle = DollOutfit([lun_hair_base, lun_top_muggle_top, lun_robe_muggle_jacket, lun_bottom_muggle_skirt, lun_stockings_muggle_knee_socks, lun_bra_base1, lun_panties_base1], price=300, name="Muggle Outfit", desc="An outfit that probably at least one muggle somewhere would wear.") + +################### +## Summer Outfit ## +################### + +default lun_top_summer_top1 = DollCloth("luna", ("upper body", "shirts"), "top", "summer_top_1", ["#ff9acdff"]) +default lun_top_summer_top2 = DollCloth("luna", ("upper body", "shirts"), "top", "summer_top_2", ["#ff9acdff"], level=7) +default lun_bottom_summer_shorts = DollCloth("luna", ("lower body", "shorts"), "bottom", "summer_shorts", ["#2f9688ff", "#afdcbfff", "#f79826ff"]) +default lun_accessory_bracelets = DollCloth("luna", ("misc", "accessory"), "accessory", "bracelets", ["#24b82dff", "#3ab0d4ff", "#c2310fff"], zorder=225) + +default lun_outfit_summer = DollOutfit([lun_hair_base, lun_top_summer_top1, lun_bottom_summer_shorts, lun_panties_base1, lun_accessory_bracelets], addons=[lun_top_summer_top2], price=350, name="Summer Set", desc="It's pretty hot.") + +###################### +## Reindeer Costume ## #unlocked in genies_christmas_wish mirror story +###################### + +default lun_top_bunny2 = DollCloth("luna", ("upper body", "one-piece suits"), "top", "bunny_top_2", ["#8e4a0aff"], blacklist=["panties", "bra"], zorder=183, level=7) +default lun_neckwear_chocolate_frog = DollCloth("luna", ("head", "neckwear"), "neckwear", "chocolate_frog", ["#ffffffff"]) +default lun_earring_bauble = DollCloth("luna", ("head", "earrings"), "earrings", "bauble_earring", ["#a30000ff"], level=4) +default lun_hat_antlers = DollClothDynamic("luna", ("head", "headgear"), "headgear", "antlers", ["#8e4a0aff", "#ffffffff", "#dbc095ff"], tracking="?hair") +default lun_accessory_mistletoe = DollCloth("luna", ("misc", "accessory"), "accessory", "mistletoe", ["#bfbf56ff"], zorder=213, level=7) +default lun_stockings_pantyhose_meshed = DollCloth("luna", ("legwear", "pantyhose"), "stockings", "pantyhose_meshed", ["#000000ff"], unlocked=True) + +default lun_outfit_reindeer = DollOutfit([lun_hair_base, lun_top_bunny2, lun_neckwear_chocolate_frog, lun_earring_bauble, lun_hat_antlers, lun_stockings_pantyhose_meshed, lun_accessory_mistletoe]) + +################## +## Bunny Outfit ## +################## + +default lun_hat_bunny1 = DollClothDynamic("luna", ("head", "headgear"), "headgear", "bunny_hat_1", ["#dba18cff", "#fde3abff"], tracking="?hair") +default lun_top_bunny1 = DollCloth("luna", ("upper body", "one-piece suits"), "top", "bunny_top_1", ["#000000ff"], blacklist=["panties", "bra"], zorder=183, level=7) + +default lun_outfit_bunny = DollOutfit([lun_hair_base, lun_top_bunny1, lun_stockings_pantyhose_meshed, lun_hat_bunny1], price=250, name="Sexy Bunny Costume", desc="A bunny costume for when you're hopping mad.") + +######################## +## Party Dress Outfit ## +######################## + +default lun_top_party_dress = DollCloth("luna", ("upper body", "dresses"), "top", "party_dress", ["#f8a800ff", "#ac5e1bff"]) + default lun_outfit_party = DollOutfit([lun_hair_base, lun_top_party_dress, lun_panties_base1], price=350, name="Party Dress", desc="A weird dress for a weird girl.") -default lun_outfit_summer = DollOutfit([lun_hair_base, lun_top_summer_top1, lun_bottom_summer_shorts, lun_panties_base1, lun_accessory2_bracelets], addons=[lun_top_summer_top2], price=350, name="Summer Set", desc="It's pretty hot.") -default lun_outfit_last = DollOutfit([lun_hair_base], hidden=True) -################ -## Pubic Hair ## -################ +#################### +## Nightie Outfit ## +#################### -default lun_pubes_arrow = DollCloth("luna", ("lower undergarment", "pubes"), "pubes", "arrow", [[228, 201, 145, 255]], unlocked=True) -default lun_pubes_beaver = DollCloth("luna", ("lower undergarment", "pubes"), "pubes", "beaver", [[228, 201, 145, 255]], unlocked=True) -default lun_pubes_stuble = DollCloth("luna", ("lower undergarment", "pubes"), "pubes", "stuble", [[155, 133, 88, 255]], unlocked=True) -default lin_pubes_unshaved = DollCloth("luna", ("lower undergarment", "pubes"), "pubes", "unshaved", [[155, 133, 88, 255]], unlocked=True) +default lun_top_nightie1 = DollCloth("luna", ("upper body", "shirts"), "top", "nightie_1", ["#ffffffd7"], level=5) -############# -## Tattoos ## -############# +default lun_outfit_nightie1 = DollOutfit([lun_hair_base, lun_top_nightie1], price=350, name="Loose-fitting Nightie", desc="The prefect nightie for a girl with her screws loose.") -default lun_tattoo0_measure = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo0", "measure", [[0, 0, 0, 255], [219, 73, 44, 255]], unlocked=True) -default lun_tattoo0_spurt_here = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo0", "spurt_here", [[0, 0, 0, 255]], unlocked=True) -default lun_tattoo0_loony = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo0", "loony", [[0, 0, 0, 255]], unlocked=True) -default lun_tattoo0_baby_oven = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo0", "baby_oven", [[0, 0, 0, 255], [219, 73, 44, 255]], unlocked=True) +########################## +## Loose Nightie Outfit ## +########################## -default lun_tattoo1_lab_rat = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo1", "lab_rat", [[0, 0, 0, 255]], unlocked=True) +default lun_top_nightie2 = DollCloth("luna", ("upper body", "shirts"), "top", "nightie_2", ["#ffacb8d7"], level=6) -default lun_tattoo3_cumdump = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo3", "cumdump", [[0, 0, 0, 255]], unlocked=True) +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.") ########################### -## Police Officer Outfit ## +## Police Officer Outfit ## #unlocked in not_so_great_escape mirror story ########################### -default lun_stockings_police = DollCloth("luna", ("legwear", "stockings"), "stockings", "police_thigh_highs", [[43, 43, 85, 255], [142, 142, 179, 255]]) -default lun_bottom_police_skirt = DollCloth("luna", ("lower body", "skirts"), "bottom", "police_skirt", [[46, 71, 171, 255]], level=5) -default lun_top_police_shirt = DollCloth("luna", ("upper body", "shirts"), "top", "police_shirt", [[46, 71, 171, 255], [187, 187, 210, 255]], level=5) -default lun_accessory_police_belt = DollCloth("luna", ("misc", "accessory"), "accessory2", "police_belt", [[38, 38, 91, 255], [187, 187, 210, 255]]) -default lun_accessory_police_badge = DollCloth("luna", ("misc", "accessory"), "accessory1", "police_badge", [[25, 38, 85, 255],[252, 241, 109, 255]], zorder=16) -default lun_accessory_police_cuffs = DollCloth("luna", ("misc", "accessory"), "accessory2", "police_cuffs", [[187, 187, 210, 255]], zorder=22) +default lun_stockings_police = DollCloth("luna", ("legwear", "stockings"), "stockings", "police_thigh_highs", ["#2b2b55ff", "#8e8eb3ff"]) +default lun_bottom_police_skirt = DollCloth("luna", ("lower body", "skirts"), "bottom", "police_skirt", ["#2e47abff"], level=5) +default lun_top_police_shirt = DollCloth("luna", ("upper body", "shirts"), "top", "police_shirt", ["#2e47abff", "#bbbbd2ff"], level=5) +default lun_accessory_police_belt = DollCloth("luna", ("misc", "accessory"), "accessory", "police_belt", ["#26265bff", "#bbbbd2ff"]) +default lun_accessory_police_badge = DollCloth("luna", ("misc", "accessory"), "accessory", "police_badge", ["#192655ff", "#fcf16dff"], zorder=213) +default lun_accessory_police_cuffs = DollCloth("luna", ("misc", "accessory"), "accessory", "police_cuffs", ["#bbbbd2ff"], zorder=225) default lun_outfit_police = DollOutfit([lun_hair_base, lun_stockings_police, lun_bottom_police_skirt, lun_top_police_shirt, lun_panties_base1, lun_accessory_police_badge, lun_accessory_police_belt], addons=[lun_accessory_police_cuffs]) @@ -254,22 +190,70 @@ default lun_outfit_police = DollOutfit([lun_hair_base, lun_stockings_police, lun ## Harley Quinn Outfit ## ######################### -default lun_hair_harley_quinn = DollCloth("luna", ("head", "hair"), "hair", "harley_quinn", [[237, 224, 195, 255], [191, 164, 107, 255], [228, 55, 19, 255], [19, 101, 228, 255], [255, 91, 248, 255]]) -default lun_pantyhose_harley_quinn = DollCloth("luna", ("legwear", "pantyhose"), "stockings", "harley_quinn", [[174, 53, 18, 255]]) -default lun_top_harley_quinn = DollCloth("luna", ("upper body", "one-piece suits"), "top", "harley_quinn", [[50, 98, 128, 255], [140, 159, 180, 255], [228, 54, 18, 255], [18, 100, 228, 255]]) -default lun_robe_harley_quinn = DollCloth("luna", ("upper body", "robes"), "robe", "harley_quinn", [[216, 252, 255, 255], [140, 159, 180, 255], [88, 213, 50, 255], [228, 78, 20, 255], [234, 72, 192, 255]]) -default lun_gloves_harley_quinn = DollCloth("luna", ("upper body", "gloves"), "gloves", "harley_quinn", [[31, 51, 73, 255]]) -default lun_accessory_harley_quinn_strap = DollCloth("luna", ("misc", "accessory"), "accessory1", "harley_quinn_strap", [[31, 51, 73, 255]], zorder=6) +default lun_hair_harley_quinn = DollCloth("luna", ("head", "hair"), "hair", "harley_quinn", ["#ede0c3ff", "#bfa46bff", "#e43713ff", "#1365e4ff", "#ff5bf8ff"]) +default lun_pantyhose_harley_quinn = DollCloth("luna", ("legwear", "pantyhose"), "stockings", "harley_quinn", ["#ae3512ff"]) +default lun_top_harley_quinn = DollCloth("luna", ("upper body", "one-piece suits"), "top", "harley_quinn", ["#326280ff", "#8c9fb4ff", "#e43612ff", "#1264e4ff"]) +default lun_robe_harley_quinn = DollCloth("luna", ("upper body", "robes"), "robe", "harley_quinn", ["#d8fcffff", "#8c9fb4ff", "#58d532ff", "#e44e14ff", "#ea48c0ff"]) +default lun_gloves_harley_quinn = DollCloth("luna", ("upper body", "gloves"), "gloves", "harley_quinn", ["#1f3349ff"]) +default lun_accessory_harley_quinn_strap = DollCloth("luna", ("misc", "accessory"), "accessory", "harley_quinn_strap", ["#1f3349ff"], zorder=183) default lun_outfit_harley_quinn = DollOutfit([lun_hair_harley_quinn, lun_pantyhose_harley_quinn, lun_top_harley_quinn, lun_robe_harley_quinn, lun_gloves_harley_quinn, lun_accessory_harley_quinn_strap], price=500, name="Harley Quinn Outfit", desc="Attractively crazy.") ################# -## Lion Outfit ## +## Lion Outfit ## (Event only) ################# -default lun_bottom_casual_jeans = DollCloth("luna", ("lower body", "skirts"), "bottom", "casual_jeans", [[128, 39, 191, 255]]) -default lun_top_casual_sweater = DollCloth("luna", ("upper body", "shirts"), "top", "casual_sweater", [[56, 32, 136, 255], [56, 32, 136, 255]]) -default lun_accessory_lionhead = DollCloth("luna", ("misc", "accessory"), "accessory1", "lionhead", [[0, 0, 0, 255]], zorder=29) +default lun_bottom_casual_jeans = DollCloth("luna", ("lower body", "skirts"), "bottom", "casual_jeans", ["#8027bfff"]) +default lun_top_casual_sweater = DollCloth("luna", ("upper body", "shirts"), "top", "casual_sweater", ["#382088ff", "#382088ff"]) +default lun_accessory_lionhead = DollCloth("luna", ("misc", "accessory"), "accessory", "lionhead", ["#000000ff"], zorder=300) default lun_outfit_casual= DollOutfit([lun_hair_base, lun_panties_base1, lun_bra_base1, lun_bottom_casual_jeans, lun_top_casual_sweater], unlocked=True) default lun_outfit_lion_event = DollOutfit([lun_panties_base1, lun_bra_base1, lun_accessory_lionhead, lun_bottom_casual_jeans, lun_top_casual_sweater], hidden=True) + +############### +## Underwear ## +############### + +# Plain Underwear +default lun_bra_base2 = DollCloth("luna", ("upper undergarment", "bras"), "bra", "basic_bra_2", ["#d8e1e6ff", "#5974c2ff"], unlocked=True) +default lun_panties_base2 = DollCloth("luna", ("lower undergarment", "panties"), "panties", "basic_panties_2", ["#d8e1e6ff", "#5974c2ff"], unlocked=True) + +################# +## Accessories ## +################# + +default lun_neckwear_cork = DollCloth("luna", ("head", "neckwear"), "neckwear", "cork", ["#E98E2AFF", "#CECECEFF"], unlocked = True, zorder=213) + +default lun_accessory_wand_mouth = DollCloth("luna", ("misc", "accessory"), "accessory", "wand_mouth", ["#ffffffff"], unlocked = True, zorder=213) +default lun_accessory_wand_hand = DollCloth("luna", ("misc", "accessory"), "accessory", "wand_hand", ["#ffffffff"], unlocked = True, zorder=213) +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) + +################ +## Pubic Hair ## +################ + +default lun_pubes_arrow = DollCloth("luna", ("lower undergarment", "pubes"), "pubes", "arrow", ["#e4c991ff"], unlocked=True) +default lun_pubes_beaver = DollCloth("luna", ("lower undergarment", "pubes"), "pubes", "beaver", ["#e4c991ff"], unlocked=True) +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) + +############# +## Tattoos ## +############# + +default lun_tattoo_measure = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo", "measure", ["#000000ff", "#db492cff"], unlocked=True) +default lun_tattoo_spurt_here = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo", "spurt_here", ["#000000ff"], unlocked=True) +default lun_tattoo_loony = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo", "loony", ["#000000ff"], unlocked=True) +default lun_tattoo_baby_oven = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo", "baby_oven", ["#000000ff", "#db492cff"], unlocked=True) + +default lun_tattoo_lab_rat = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo", "lab_rat", ["#000000ff"], unlocked=True) + +default lun_tattoo_cumdump = DollCloth("luna", ("piercings & tattoos", "tattoos"), "tattoo", "cumdump", ["#000000ff"], unlocked=True) + +########## +## Misc ## +########## + +default lun_stockings_pantyhose = DollCloth("luna", ("legwear", "pantyhose"), "stockings", "pantyhose_1", ["#b19083ff"], unlocked=True) + diff --git a/game/scripts/characters/luna/wardrobe_reactions.rpy b/game/scripts/characters/luna/wardrobe_reactions.rpy index 248797f5..6bba0856 100644 --- a/game/scripts/characters/luna/wardrobe_reactions.rpy +++ b/game/scripts/characters/luna/wardrobe_reactions.rpy @@ -525,6 +525,43 @@ label lun_reaction_equip_outfit(item): gen "Just put it on will you?" ("base", xpos="far_left", ypos="head") lun "Alright." ("base", "base", "base", "mid") + ################### + ## Bunny Costume ## + ################### + elif item == lun_outfit_bunny: #Req 7 (No underwear) + gen "Put on this bunny costume for me, will you?" ("base", xpos="far_left", ypos="head") + lun "A bunny!" ("smile", "base", "base", "stare") + lun "I love bunnies!" ("smile", "happyCl", "base", "mid") + gen "Great!" ("grin", xpos="far_left", ypos="head") + lun "They're so cute--" ("grin", "happyCl", "base", "mid") + gen "So you'll--" ("base", xpos="far_left", ypos="head") + lun "So fluffy--" ("grin", "happyCl", "base", "mid") + gen "I'm glad you--" ("base", xpos="far_left", ypos="head") + lun "And I love when they hug your leg!" ("smile", "base", "base", "mid") + gen "...{w=0.2} I don't think--" ("base", xpos="far_left", ypos="head") + lun "Even my patronus is shaped like a hare!" ("smile", "narrow", "base", "mid") + gen "Just put on the costume, will you?" ("base", xpos="far_left", ypos="head") + lun "Okay!" ("grin", "base", "base", "mid") + + ###################### + ## Reindeer Costume ## + ###################### + elif item ==lun_outfit_reindeer: #Req 7 (No underwear) + gen "Put on this reindeer costume for me, will you?" ("base", xpos="far_left", ypos="head") + lun "A Christmas reindeer costume!" ("grin", "base", "base", "mid") + gen "That's right!" ("base", xpos="far_left", ypos="head") + lun "Hold on!" ("angry", "base", "base", "mid") + lun "There's a hole with a mistletoe above it!" ("clench", "base", "base", "mid") + gen "So?" ("base", xpos="far_left", ypos="head") + lun "That's where the nargles likes to hide!" ("angry", "base", "worried", "mid") + lun "I can't wear this!" ("angry", "happyCl", "worried", "mid") + gen "Bloody--" ("base", xpos="far_left", ypos="head") + lun "Unless..." ("mad", "base", "base", "stare") + gen "Unless?" ("base", xpos="far_left", ypos="head") + lun "Are you implying that the hole will draw in the wrackspurts, just so the nargles could ambush them?" ("angry", "base", "base", "mid") + 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") # TODO: Blacklist fallbacks have to be added. return @@ -731,6 +768,47 @@ label lun_reaction_equip_outfit_fail(item): gen "(And here I thought she wanted some hands on experience.)" ("base", xpos="far_left", ypos="head") lun "(Can't let those wrackspurts get to me...)" ("disgust", "narrow", "base", "R") + ################### + ## Bunny Costume ## + ################### + elif item == lun_outfit_bunny: #Req 7 (No Underwear) + gen "I've got this bunny costume for you to wear." ("base", xpos="far_left", ypos="head") + lun "Oooooh! I love bunnies!" ("grin", "base", "base", "mid") + gen "Great, here you go!" ("grin", xpos="far_left", ypos="head") + lun "Hold on... Is this everything?" ("angry", "base", "base", "mid") + gen "*Err*... Yes?" ("base", xpos="far_left", ypos="head") + lun "But, there are no paws!" ("clench", "base", "base", "mid") + gen "Paws?" ("base", xpos="far_left", ypos="head") + lun "Yes! And no whiskers either!" ("angry", "base", "base", "mid") + gen "No--{w=0.2} It's not that kind of a costume!" ("base", xpos="far_left", ypos="head") + lun "Oh..." ("upset", "narrow", "worried", "down") + gen "So, will you--" ("base", xpos="far_left", ypos="head") + lun "*Sigh*..." ("upset", "narrow", "worried", "down") #Sad + gen "(I'll just ask again some other time...)" ("base", xpos="far_left", ypos="head") + + ###################### + ## Reindeer Costume ## + ###################### + elif item == lun_outfit_reindeer: #Req 7 (No Underwear) + gen "I've got this reindeer costume for you to wear." ("base", xpos="far_left", ypos="head") + lun "Oh! Like a Christmas reindeer!" ("grin", "base", "raised", "mid") + gen "Well, I don't think the existence of the animal relies on the holiday--" ("base", xpos="far_left", ypos="head") + lun "..." ("grin", "base", "base", "mid") + gen "Yes, like a Christmas reindeer..." ("base", xpos="far_left", ypos="head") + lun "Yay!" ("smile", "happyCl", "base", "mid") + lun "Let me see the costume!" ("smile", "base", "base", "mid") + gen "Here you go!" ("base", xpos="far_left", ypos="head") + lun "Ooh! This is so--" ("grin", "narrow", "base", "down") + lun "Hold on! There's a hole in it!" ("clench", "narrow", "base", "down") + gen "Yes, but it's meant to be--" ("base", xpos="far_left", ypos="head") + lun "I can't wear this." ("angry", "base", "base", "mid") + gen "What! Why not?" ("base", xpos="far_left", ypos="head") + lun "If your clothing's got a hole, you should make sure to return it for refund or replacement!" ("open", "closed", "base", "mid") + lun "That's what my dad always told me!" ("grin", "base", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + gen "(I am not going to attempt explaining this to her now...)" ("base", xpos="far_left", ypos="head") + gen "(Maybe she'll forget about it later...)" ("base", xpos="far_left", ypos="head") + else: lun "This outfit seems to have wrackspurts all over it!" ("mad", "base", "base", "down") gen "(I don't remember cumming on this piece of garment...)" ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/snape/events/intro.rpy b/game/scripts/characters/snape/events/intro.rpy index e9ae76bd..c67e0629 100644 --- a/game/scripts/characters/snape/events/intro.rpy +++ b/game/scripts/characters/snape/events/intro.rpy @@ -410,6 +410,7 @@ label snape_intro_E3: gen "!!!" ("angry", xpos="far_left", ypos="head") sna "Easy now... Just answer my question." ("snape_01", wand=True) gen "Alright, alright. Just calm down, would you?" ("base", xpos="far_left", ypos="head") + gen "You might poke someone's eye with that stick if you're not careful." ("base", xpos="far_left", ypos="head") sna "........" ("snape_01", wand=True) label no_wait: @@ -541,7 +542,7 @@ label snape_intro_E4: gen "He's Probably feeling just as surprised finding himself in my world as I am about finding myself here..." ("base", xpos="far_left", ypos="head") sna "...................................." ("snape_01") sna "When did this happen?" ("snape_01") - gen "Three days ago..." ("base", xpos="far_left", ypos="head") + gen "It happened few days ago..." ("base", xpos="far_left", ypos="head") sna "Can you go back?" ("snape_01") gen "I think so..." ("base", xpos="far_left", ypos="head") sna "Why didn't you?" ("snape_31") @@ -626,7 +627,7 @@ label snape_intro_E4: sna "Marvellous..." ("snape_35") sna "What does this mean? You're staying here for good?" ("snape_01") gen "Of course not..." ("base", xpos="far_left", ypos="head") - gen "Me being here at all is only possible because the spell is compensating for the unbalance caused by itself..." ("base", xpos="far_left", ypos="head") + gen "Me being here at all is only possible because the spell is compensating for the imbalance caused by itself..." ("base", xpos="far_left", ypos="head") gen "said spell will wear off eventually and I shall be pulled back into my world." ("base", xpos="far_left", ypos="head") gen "Likewise, your Dumb-le-dork friend shall be pulled back here." ("base", xpos="far_left", ypos="head") sna "I see..." ("snape_01") @@ -748,7 +749,7 @@ label snape_intro_E5: gen "Seriously though, I don't see how this whole affair benefits me at all." ("base", xpos="far_left", ypos="head") sna "Do you have any choice?" ("snape_01") gen "I do..." ("base", xpos="far_left", ypos="head") - gen "Instead of sitting here on my ass all day and being quiet I could explore your world..." ("base", xpos="far_left", ypos="head") + gen "Instead of sitting here on my ass all day and being quiet, I could explore your world..." ("base", xpos="far_left", ypos="head") sna "*Hmm*..." ("snape_03") sna "Well, alright, what do you want?" ("snape_01") @@ -781,7 +782,7 @@ label snape_intro_E5: gen "I don't want my guests to just stand." ("base", xpos="far_left", ypos="head") sna "Guests? You're not supposed to have g--" ("snape_10") sna "*sigh* It's pointless reasoning with you, isn't it?" ("snape_06") - gen "Yes." ("base", xpos="far_left", ypos="head") + gen "You're learning quick." ("base", xpos="far_left", ypos="head") sna "Alright, you'll have your chair." ("snape_03") gen "and lastly..." ("base", xpos="far_left", ypos="head") gen "Teach me your magic..." ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/snape/nicknames.rpy b/game/scripts/characters/snape/nicknames.rpy index e5991b19..6a62dcba 100644 --- a/game/scripts/characters/snape/nicknames.rpy +++ b/game/scripts/characters/snape/nicknames.rpy @@ -21,7 +21,7 @@ label snape_nicknames_genie: gen "(Why did I just say that?)" ("angry", xpos="far_left", ypos="head") menu: "-Say it again-": - gen "Err... Daddy?" ("base", xpos="far_left", ypos="head") + gen "*Err*... Daddy?" ("base", xpos="far_left", ypos="head") sna "Get the hell out of my office!" ("snape_33") gen "Okay!" ("angry", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/susan/common.rpy b/game/scripts/characters/susan/common.rpy index a0fa4a3e..dd68ed1f 100644 --- a/game/scripts/characters/susan/common.rpy +++ b/game/scripts/characters/susan/common.rpy @@ -53,9 +53,6 @@ label end_susan_event: $ susan_busy = True $ susan.wear("all") - $ renpy.stop_predict(susan.get_image()) - $ renpy.stop_predict("characters/susan/face/*.webp") - call music_block jump main_room_menu diff --git a/game/scripts/characters/susan/wardrobe.rpy b/game/scripts/characters/susan/wardrobe.rpy index acada148..bc1a2c67 100644 --- a/game/scripts/characters/susan/wardrobe.rpy +++ b/game/scripts/characters/susan/wardrobe.rpy @@ -2,133 +2,94 @@ ## Character ## ############### -default susan = Doll(name="susan", - clothes={"headgear": [None, 15, True], - "hair": [None, 4, True], - "glasses": [None, 12, True], - "earrings": [None, 14, True], - "neckwear": [None, 11, True], - "robe": [None, 28, True], - "gloves": [None, 21, True], - "top": [None, 15, True], - "bra": [None, 9, True], - "bottom": [None, 8, True], - "garterbelt": [None, 7, True], - "panties": [None, 6, True], - "stockings": [None, 5, True], - "buttplug": [None, -1, True], - "pubes": [None, 3, True], - "footwear": [None, 6, True], - "tattoo0": [None, 1, True], - "tattoo1": [None, 1, True], - "tattoo2": [None, 1, True], - "tattoo3": [None, 1, True], - "tattoo4": [None, 1, True], - "piercing0": [None, 2, True], - "piercing1": [None, 2, True], - "piercing2": [None, 2, True], - "piercing3": [None, 2, True], - "piercing4": [None, 2, True], - "accessory0": [None, 12, True], - "accessory1": [None, 12, True], - "accessory2": [None, 12, True], - "accessory3": [None, 12, True], - "accessory4": [None, 12, True], - "makeup0": [None, 3, True], - "makeup1": [None, 3, True], - "makeup2": [None, 3, True], - "makeup3": [None, 3, True], - "makeup4": [None, 3, True]}, - face={"tears": [None, 12, True], - "cheeks": [None, 7, True], - "eyebrows": ["base", 11, True], - "eyes": ["base", 8, True], - "pupils": ["mid", 9, True], - "mouth": ["base", 13, True]}, - body={"base": ["front", 0], - "breasts": [None, 2]}) +default susan = Doll(name="susan") + +default sus_frame_default = DollBodypart("susan", ("hidden", "frame"), "frame", "default") +default sus_body_default = DollOutfit([sus_frame_default], hidden=True) + +########## +## Hair ## +########## + +default sus_hair_base = DollCloth("susan", ("head", "hair"), "hair", "base", ["#d55523ff", "#e76d3dff"], unlocked=True) ####################### ## Schoolgirl Outfit ## ####################### -default sus_footwear_shoes = DollClothDummy("susan", type="footwear") -default sus_hair_base = DollCloth("susan", ("head", "hair"), "hair", "base", [[213, 85, 35, 255], [231, 109, 61, 255]], unlocked=True) +default sus_top_school1 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_1", ["#b9b8b8ff", "#726d7eff", "#332b36ff", "#d4a10eff"], unlocked=True) +default sus_top_school2 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_2", ["#b9b8b8ff", "#726d7eff", "#332b36ff", "#d4a10eff"], unlocked=True) +default sus_top_school3 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_3", ["#b9b8b8ff", "#e7dbdbff", "#726d7eff", "#332b36ff", "#d4a10eff"], unlocked=True) +default sus_top_school4 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_4", ["#b9b8b8ff", "#e7dbdbff", "#332b36ff", "#d4a10eff"], unlocked=True) +default sus_top_school5 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_5", ["#b9b8b8ff", "#332b36ff", "#d4a10eff", "#e7dbdbff"], unlocked=True) +#TODO open collar variant default sus_top_school6 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_6", ["#b9b8b8ff", "#726d7eff", "#332b36ff", "#d4a10eff"], unlocked=True) +default sus_top_school7 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_7", ["#726d7eff", "#332b36ff", "#d4a10eff"], unlocked=True) +default sus_bottom_school1 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_1", ["#675a6cff", "#e8b10dff"], unlocked=True) +default sus_bottom_school2 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_2", ["#675a6cff", "#e8b10dff"], unlocked=True) +default sus_bottom_school3 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_3", ["#675a6cff", "#e8b10dff"], unlocked=True) +default sus_bottom_school4 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_4", ["#675a6cff", "#e8b10dff"], unlocked=True) -#TBA -#Tops -default sus_top_school1 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_1", [[185,184,184,255], [114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True) -default sus_top_school2 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_2", [[185,184,184,255], [114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True) -default sus_top_school3 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_3", [[185,184,184,255], [231,219,219,255], [114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True) -default sus_top_school4 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_4", [[185,184,184,255], [231,219,219,255], [51,43,54,255], [212,161,14,255]], unlocked=True) -default sus_top_school5 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_5", [[185,184,184,255], [51,43,54,255], [212,161,14,255], [231,219,219,255]], unlocked=True) -#TODO open collar variant default sus_top_school6 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_6", [[185,184,184,255], [114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True) -default sus_top_school7 = DollCloth("susan", ("upper body", "shirts"), "top", "top_school_7", [[114,109,126,255], [51,43,54,255], [212,161,14,255]], unlocked=True) +default sus_bra_base1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "basic_bra_1", ["#ffeeedff", "#ecbfbfff", "#f98787ff"], unlocked=True) +default sus_panties_base1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "basic_panties_1", ["#ffeeedff", "#ecbfbfff", "#f98787ff"], unlocked=True) -#Bottoms -#orig file colours default sus_bottom_school1 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_1", [[86, 74, 91, 255], [219,165,13,255]], unlocked=True) -default sus_bottom_school1 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_1", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True) -default sus_bottom_school2 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_2", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True) -default sus_bottom_school3 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_3", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True) -default sus_bottom_school4 = DollCloth("susan", ("lower body", "skirts"), "bottom", "school_skirt_4", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True) +default sus_stockings_school1 = DollCloth("susan", ("legwear", "stockings"), "stockings", "short_school_1", ["#d4a10eff", "#332b36ff"], unlocked=True) +default sus_stockings_school2 = DollCloth("susan", ("legwear", "stockings"), "stockings", "short_school_2", ["#332b36ff"], unlocked=True) - -#Basic Underwear -default sus_bra_base1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "basic_bra_1", [[255, 238, 237, 255], [236, 191, 191, 255], [249, 135, 135, 255]], unlocked=True) -default sus_panties_base1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "basic_panties_1", [[255, 238, 237, 255], [236, 191, 191, 255], [249, 135, 135, 255]], unlocked=True) - -#Stockings -default sus_stockings_school1 = DollCloth("susan", ("legwear", "stockings"), "stockings", "short_school_1", [[212,161,14,255], [51,43,54,255]], unlocked=True) -default sus_stockings_school2 = DollCloth("susan", ("legwear", "stockings"), "stockings", "short_school_2", [[51,43,54,255]], unlocked=True) - -#Robes -#TODO +default sus_robe_school_1 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_1", ["#606060ff", "#d4a10eff"], unlocked=True, level=0) +default sus_robe_school_2 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_2", ["#606060ff", "#d4a10eff"], unlocked=True, level=4) +default sus_robe_school_3 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_3", ["#606060ff", "#d4a10eff"], unlocked=True, level=10) +default sus_robe_school_4 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_4", ["#606060ff", "#d4a10eff"], unlocked=True, level=13) default sus_outfit_default = DollOutfit([sus_hair_base, sus_top_school1, sus_bottom_school1, sus_bra_base1, sus_panties_base1, sus_stockings_school1], unlocked=True) default sus_outfit_last = DollOutfit([sus_hair_base], hidden=True) - ########################## ## Muggle Casual Outfit ## ########################## -default sus_top_muggle_casual1 = DollCloth("susan", ("upper body", "sweaters"), "top", "muggle_casual_top_1", [[157, 105, 68, 255]]) -default sus_bottom_jeans1 = DollCloth("susan", ("lower body", "trousers"), "bottom", "jeans_1", [[78, 65, 127, 255], [242, 114, 35, 255]]) -default sus_bra_muggle1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "muggle_bra_1", [[225, 201, 161, 255], [255, 251, 219, 255]]) -default sus_panties_muggle1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "muggle_panties_1", [[225, 201, 161, 255], [255, 251, 219, 255]]) +default sus_top_muggle_casual1 = DollCloth("susan", ("upper body", "sweaters"), "top", "muggle_casual_top_1", ["#9d6944ff"]) +default sus_bottom_jeans1 = DollCloth("susan", ("lower body", "trousers"), "bottom", "jeans_1", ["#4e417fff", "#f27223ff"]) +default sus_bra_muggle1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "muggle_bra_1", ["#e1c9a1ff", "#fffbdbff"]) +default sus_panties_muggle1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "muggle_panties_1", ["#e1c9a1ff", "#fffbdbff"]) default sus_outfit_muggle_casual1 = DollOutfit([sus_hair_base, sus_top_muggle_casual1, sus_bottom_jeans1, sus_bra_muggle1, sus_panties_muggle1], unlocked=True) +###################### +## Priestess Outfit ## +###################### + +default sus_headgear_priestess = DollClothDynamic("susan", ("head", "headgear"), "headgear", "priestess_headdress", ["#273843ff", "#e4ebf0ff"], tracking="?hair") +default sus_top_priestess = DollCloth("susan", ("upper body", "dresses"), "top", "priestess_dress", ["#273843ff", "#e4ebf0ff"]) +default sus_lace_stockings1 = DollCloth("susan", ("legwear", "stockings"), "stockings", "lace_stockings_1", ["#000000ff"]) +default sus_hat_necklace =DollCloth("susan", ("head", "neckwear"), "neckwear", "hat_necklace", ["#f0be78ff"], zorder=213) + +default sus_outfit_priestess = DollOutfit([sus_hair_base, sus_headgear_priestess, sus_top_priestess, sus_lace_stockings1, sus_hat_necklace, sus_bra_base1, sus_panties_base1,], price=400, name="Priestess Outfit", desc="This outfit radiates innocence.") + +################## +## Latex Outfit ## +################## + +default sus_bra_latex1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "latex_bra_1", ["#fa8bf1ff"]) +default sus_panties_latex1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "latex_panties_1", ["#fa8bf1ff"]) + +default sus_outfit_latex1 = DollOutfit([sus_hair_base, sus_bra_latex1, sus_panties_latex1], price=200, name="Latex Underwear", desc="Enchanted to prevent chafing.") + +########################### +## Lace Lingerie Outfit ## +########################### + +default sus_panties_lace1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "lace_panties_1", ["#f6f3d8ff", "#ce7be764", "#a3b4d8ff"]) +default sus_stockings_striped_1 = DollCloth("susan", ("legwear", "stockings"), "stockings", "striped_stockings_1", ["#f6f3d8ff", "#ce7be7aa"]) +default sus_garterbelt_1 = DollCloth("susan", ("legwear", "garterbelts"), "garterbelt", "garter_belt_1", ["#ce83e7ff"]) +default sus_bra_lace1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "lace_bra_1", ["#f6f3d8ff", "#ce7be764"]) + +default sus_outfit_lace1 = DollOutfit([sus_hair_base, sus_bra_lace1, sus_panties_lace1, sus_stockings_striped_1, sus_garterbelt_1], price=250, name="Lace Lingerie", desc="Perfect for making a girl look even more presentable.") ############### ## Underwear ## ############### - -# Lingerie - -default sus_bra_lace1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "lace_bra_1", [[246, 243, 216, 255], [206, 123, 231, 100]]) -default sus_panties_lace1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "lace_panties_1", [[246, 243, 216, 255], [206, 123, 231, 100], [163, 180, 216, 255]]) -default sus_stockings_striped_1 = DollCloth("susan", ("legwear", "stockings"), "stockings", "striped_stockings_1", [[246, 243, 216, 255], [206, 123, 231, 170]]) -default sus_garterbelt_1 = DollCloth("susan", ("legwear", "garterbelts"), "garterbelt", "garter_belt_1", [[206, 131, 231, 255]]) - -default sus_outfit_lace1 = DollOutfit([sus_hair_base, sus_bra_lace1, sus_panties_lace1, sus_stockings_striped_1, sus_garterbelt_1], price=250, name="Lace Lingerie", desc="Perfect for making a girl look even more presentable.") - # Sport -default sus_bra_sport1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "sport_bra_1", [[107, 107, 139, 255], [219, 205, 79, 255]], unlocked=True) -default sus_panties_sport1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "sport_panties_1", [[107, 107, 139, 255], [219, 205, 79, 255]], unlocked=True) - -# Latex - -default sus_bra_latex1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "latex_bra_1", [[250, 139, 241, 255]]) -default sus_panties_latex1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "latex_panties_1", [[250, 139, 241, 255]]) - -default sus_outfit_latex1 = DollOutfit([sus_hair_base, sus_bra_latex1, sus_panties_latex1], price=200, name="Latex Underwear", desc="Enchanted to prevent chafing.") - -# Robes - -default sus_robe_school_1 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_1", [[96, 96, 96, 255], [212, 161, 14, 255]], unlocked=True, level=0) -default sus_robe_school_2 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_2", [[96, 96, 96, 255], [212, 161, 14, 255]], unlocked=True, level=4) -default sus_robe_school_3 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_3", [[96, 96, 96, 255], [212, 161, 14, 255]], unlocked=True, level=10) -default sus_robe_school_4 = DollCloth("susan", ("upper body", "robes"), "robe", "robe_school_4", [[96, 96, 96, 255], [212, 161, 14, 255]], unlocked=True, level=13) +default sus_bra_sport1 = DollCloth("susan", ("upper undergarment", "bras"), "bra", "sport_bra_1", ["#6b6b8bff", "#dbcd4fff"], unlocked=True) +default sus_panties_sport1 = DollCloth("susan", ("lower undergarment", "panties"), "panties", "sport_panties_1", ["#6b6b8bff", "#dbcd4fff"], unlocked=True) diff --git a/game/scripts/characters/susan/wardrobe_reactions.rpy b/game/scripts/characters/susan/wardrobe_reactions.rpy index 70787487..46f7ffe6 100644 --- a/game/scripts/characters/susan/wardrobe_reactions.rpy +++ b/game/scripts/characters/susan/wardrobe_reactions.rpy @@ -181,12 +181,24 @@ label sus_reaction_equip_outfit(item): ## Latex Underwear Outfit 1 ## ############################## elif item ==sus_outfit_latex1: - gen "Put your latex underwear on for me." - sus "The-- The latex, but it's so tight..." ("soft", "narrow", "base", "down", cheeks="blush") - gen "I know! Perfectly enhances your greatest features!" - gen "Or squishes them, rather..." + gen "Put your latex underwear on for me." ("base", xpos="far_left", ypos="head") + sus "The--{w=0.2} The latex, but it's so tight..." ("soft", "narrow", "base", "down", cheeks="blush") + gen "I know! Perfectly enhances your greatest features!" ("base", xpos="far_left", ypos="head") + gen "Or squishes them, rather..." ("base", xpos="far_left", ypos="head") sus "Alright, if you say so..." ("base", "narrow", "base", "down", cheeks="blush") + ################ + ## Priestess Outfit ## + ################ + elif item ==sus_outfit_priestess: + gen "How about you put on this Priestess outfit for me?" ("base", xpos="far_left", ypos="head") + sus "A--{w=0.2} A Priestess outfit, [sus_genie_name]?" ("soft", "narrow", "base", "mid", cheeks="blush") + gen "Indeed." ("grin", xpos="far_left", ypos="head") + sus "Why would you-- I mean... Sorry but I'm a bit confused." ("open", "narrow", "base", "down", cheeks="blush") + gen "Luckily, you've got me here for guidance." ("grin", xpos="far_left", ypos="head") + gen "Now put the dress on." ("grin", xpos="far_left", ypos="head") + sus "Oh--{w=0.2} Okay then..." ("open", "narrow", "base", "mid", cheeks="blush") + else: gen "Could you put this on for me?" ("base", xpos="far_left", ypos="head") sus "Of course [sus_genie_name]..." ("base", "base", "base", "mid") @@ -218,10 +230,23 @@ label sus_reaction_equip_outfit_fail(item): gen "I mean, your size!" ("angry", xpos="far_left", ypos="head") sus "..." ("annoyed", "happy", "sad", "mid", cheeks="blush") gen "Oh, you meant can't as in won't." ("base", xpos="far_left", ypos="head") - gen "Alright..." ("base", xpos="far_left", ypos="head") + gen "Alright... Never mind then." ("base", xpos="far_left", ypos="head") + ###################### + ## Priestess Outfit ## + ###################### + elif item ==sus_outfit_priestess: + gen "Put on this Priestess outfit for me will you?" ("base", xpos="far_left", ypos="head") + sus "A what, sorry?" + gen "This dress, here." ("base", xpos="far_left", ypos="head") + sus "B-- But, [sus_genie_name]!" ("angry", "wide", "shocked", "mid", cheeks="blush") + sus "S-- Surely wearing that would be s--{w=0.2} sacrilegious!" ("open", "happyCl", "worried", "mid", cheeks="blush") + gen "Sacre-- what?" ("base", xpos="far_left", ypos="head") + gen "Sorry, I don't speak French." ("base", xpos="far_left", ypos="head") + sus "I-- I am not a Priestess, [sus_genie_name]." ("soft", "happy", "sad", "down", cheeks="blush") + gen "What does that have to do with wearing a dress?" ("base", xpos="far_left", ypos="head") + sus "S-- Sorry, [sus_genie_name]... I think I better not."("soft", "happy", "sad", "right", cheeks="blush") + gen "Sacrebleu..." ("base", xpos="far_left", ypos="head") - gen "Or squishes them, rather..." - sus "Alright, if you say so..." ("base", "narrow", "base", "down", cheeks="blush") else: sus "I--{w=0.2} I..." ("angry", "happy", "sad", "mid") gen "You don't like it?" ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/tonks/common.rpy b/game/scripts/characters/tonks/common.rpy index c5657019..b18a26a5 100644 --- a/game/scripts/characters/tonks/common.rpy +++ b/game/scripts/characters/tonks/common.rpy @@ -64,9 +64,6 @@ label end_tonks_event: $ tonks.wear("all") $ tonks.set_cum(None) - $ renpy.stop_predict(tonks.get_image()) - $ renpy.stop_predict("characters/tonks/face/*.webp") - call music_block jump main_room_menu @@ -94,32 +91,33 @@ init python: redraw = True tonks.set_emote(emote) + target_color = tonks_haircolor if hair: if isinstance(hair, list): target_color = hair elif hair in ("neutral", "basic", "reset"): - target_color = tonks_haircolor + pass elif hair in ("red", "angry", "furious"): - target_color = [[164, 34, 34, 255], [219, 83, 83, 255]] + target_color = [Color((164, 34, 34, 255)), Color((219, 83, 83, 255))] elif hair in ("orange", "upset", "annoyed"): - target_color = [[228, 93, 34, 255], [246, 193, 170, 255]] + target_color = [Color((228, 93, 34, 255)), Color((246, 193, 170, 255))] elif hair in ("yellow", "happy", "cheerful"): - target_color = [[255, 213, 23, 255], [255, 239, 167, 255]] + target_color = [Color((255, 213, 23, 255)), Color((255, 239, 167, 255))] elif hair in ("green", "disgusted"): - target_color = [[111, 205, 75, 255], [200, 237, 186, 255]] + target_color = [Color((111, 205, 75, 255)), Color((200, 237, 186, 255))] elif hair in ("blue", "sad"): - target_color = [[64, 75, 205, 255], [182, 186, 237, 255]] + target_color = [Color((64, 75, 205, 255)), Color((182, 186, 237, 255))] elif hair == "purple": - target_color = [[205, 75, 205, 255], [237, 186, 237, 255]] + target_color = [Color((205, 75, 205, 255)), Color((237, 186, 237, 255))] elif hair in ("white", "scared"): - target_color = [[238, 238, 241, 255], [249, 249, 250, 255]] + target_color = [Color((238, 238, 241, 255)), Color((249, 249, 250, 255))] elif hair in ("pink", "horny"): - target_color = [[255, 105, 180, 255], [251, 205, 222, 255]] + target_color = [Color((255, 105, 180, 255)), Color((251, 205, 222, 255))] - if target_color != tonks.get_equipped("hair").color: - tonks.get_equipped("hair").set_color(target_color) - redraw = True + if target_color != tonks.get_equipped("hair").color: + tonks.get_equipped("hair").set_color(target_color) + redraw = True if animation != False: tonks.animation = animation diff --git a/game/scripts/characters/tonks/events/clothing.rpy b/game/scripts/characters/tonks/events/clothing.rpy index 651995ae..d4025c15 100644 --- a/game/scripts/characters/tonks/events/clothing.rpy +++ b/game/scripts/characters/tonks/events/clothing.rpy @@ -8,7 +8,7 @@ label tonks_summon_setup: if not tonks_strip_happened and cc_pf_strip.is_event_complete(3, 3) and ton_friendship >= 20 and tonks.is_any_worn("top", "bottom", "bra", "panties"): $ tonks_strip_happened = True #TODO use to make event not repeat - $ tonks.strip("all") + $ tonks.strip("clothes") call ton_walk(action="enter", xpos="mid", ypos="base") call play_sound("scratch") diff --git a/game/scripts/characters/tonks/events/hangout.rpy b/game/scripts/characters/tonks/events/hangout.rpy index 38087e8d..e27a58be 100644 --- a/game/scripts/characters/tonks/events/hangout.rpy +++ b/game/scripts/characters/tonks/events/hangout.rpy @@ -313,7 +313,7 @@ label nt_he_story_intro_E2: gen "..." ("base", xpos="far_left", ypos="head") ton "You talking about Mad-eye?" ("upset", "base", "raised", "mid") gen "I can see perfectly fine, dear." ("base", xpos="far_left", ypos="head") - ton "Alastor Moody is the auror that taught me." ("open", "narrow", "annoyed", "mid") + ton "I'm talking about Alastor Moody, my mentor." ("open", "narrow", "annoyed", "mid") gen "Oh, of course." ("base", xpos="far_left", ypos="head") gen "(His parents must have hated him...)" ("base", xpos="far_left", ypos="head") #gen "(What's wrong with a normal name... like Will Smith, or Robin Williams?)" ("base", xpos="far_left", ypos="head") @@ -325,12 +325,12 @@ label nt_he_story_intro_E2: gen "So...{w=0.3} He's a racist?" ("base", xpos="far_left", ypos="head") ton "No, but he's old... I think he should just retire to be honest." ("open", "base", "base", "downR") ton "His methods have gotten progressively more nefarious..." ("open", "narrow", "annoyed", "R") - ton "Some would argue he should be locked up himself, for all the things that he did to catch his targets..." ("mad", "narrow", "base", "down") + ton "Some would argue he should lock up himself, for all the things that he did to catch his targets..." ("mad", "narrow", "base", "down") gen "And you?" ("grin", xpos="far_left", ypos="head") ton "Me? What about me?" ("upset", "narrow", "annoyed", "mid") gen "You wouldn't say what we do is unethical as well?" ("base", xpos="far_left", ypos="head") ton "Did you start drinking before I got here?" ("open", "narrow", "annoyed", "L") - gen "I never stop..." ("base", xpos="far_left", ypos="head") + gen "I never stopped..." ("base", xpos="far_left", ypos="head") ton "..." ("annoyed", "closed", "base", "up") jump end_tonks_hangout diff --git a/game/scripts/characters/tonks/events/intro.rpy b/game/scripts/characters/tonks/events/intro.rpy index d0882d60..65305535 100644 --- a/game/scripts/characters/tonks/events/intro.rpy +++ b/game/scripts/characters/tonks/events/intro.rpy @@ -231,6 +231,7 @@ label tonks_intro_E1: gen "This can't be good..." ("base", xpos="far_left", ypos="head") $ snape_busy = True + $ hermione_busy = True $ tonks_intro.E1_complete = True jump end_tonks_event @@ -330,6 +331,7 @@ label tonks_intro_E2: gen "Shit..." ("base", xpos="far_left", ypos="head") gen "I better talk to Snape about this..." ("base", xpos="far_left", ypos="head") + $ hermione_busy = True $ tonks_intro.E2_complete = True jump end_tonks_event @@ -454,6 +456,7 @@ label ss_he_tonks_E1: $ ss_he.tonks_E1 = True $ ss_event_pause += 1 + $ hg_event_pause += 1 $ chair_OBJ.hidden = False $ fireplace_OBJ.foreground = None @@ -527,9 +530,9 @@ label tonks_intro_E3: gen "No wait, it was {i}Albertus Dumblerdore{/i}! That's it!" ("angry", xpos="far_left", ypos="head") gen "(Yes, that was probably it...)" ("base", xpos="far_left", ypos="head") "\"You know who!\"": - ton "What?" ("open", "wide", "angry", "mid") + ton "What?!" ("open", "wide", "base", "mid", hair="scared") gen "You...{w=0.8} know...{w=0.8} who..." ("base", xpos="far_left", ypos="head") - ton "That can't be true!" ("open", "base", "annoyed", "mid") + ton "That can't be true, you're making it up!" ("open", "base", "annoyed", "mid") gen "You know who I am. You said it yourself earlier." ("base", xpos="far_left", ypos="head") gen "(If only I could remember what she called me...)" ("base", xpos="far_left", ypos="head") #"The danger!": @@ -711,6 +714,8 @@ label tonks_intro_E3: $ achievements.unlock("unlockton", True) call popup("{size=-4}You can now summon Tonks into your office.{/size}", "Character unlocked!", "interface/icons/head/tonks.webp") + gen "(Now that the matter is resolved, I guess I can get back to teaching Hermione...)" + $ tonks_busy = True $ tonks_intro.E3_complete = True @@ -788,11 +793,11 @@ label ss_he_tonks_E2: sna "Why would the Ministry have sent a full-fledged Auror, to deal with some eccentric insinuations made by some petty student..." ("snape_16") gen "Shouldn't they?" ("base", xpos="far_left", ypos="head") sna "Just because of some silly rumour about teachers having sexual intercourse with their students?" ("snape_34") - gen "And that's not a reasonable enough concern to send somebody to look into?" ("base", xpos="far_left", ypos="head") + gen "And that's not a reasonable enough concern to send somebody to look into it?" ("base", xpos="far_left", ypos="head") sna "It's the Ministry we're talking about...{w=0.8} They don't give a shit..." ("snape_30") sna "They wouldn't even believe it if \"you-know-who\" were to make a return..." ("snape_31") gen "Who?" ("base", xpos="far_left", ypos="head") - sna "That Tonks had to be the only Ministry personnel that saw some truth in Granger's letters..." ("snape_35") + sna "That Tonks had to be the only Ministry personnel seeing some truth in Granger's letters..." ("snape_35") sna "What if she specifically requested to be sent here to investigate?" ("snape_03") gen "She might have..." ("base", xpos="far_left", ypos="head") sna "So...{w=0.4} what does she want?" ("snape_04") @@ -805,13 +810,13 @@ label ss_he_tonks_E2: sna "How exactly did you end up in this situation with her?" ("snape_04") gen "I don't know... It just... happened." ("base", xpos="far_left", ypos="head") gen "She pretty much figured everything out by herself." ("base", xpos="far_left", ypos="head") - gen "Straight away even guessed that I'm a Genie..." ("base", xpos="far_left", ypos="head") + gen "Straight away. She even guessed that I'm a Genie..." ("base", xpos="far_left", ypos="head") sna "So she knows everything? How did she--" ("snape_03") gen "It appears the \"illusion charm\" wasn't perfect. She momentarily got a glimpse through it..." ("base", xpos="far_left", ypos="head") sna "That's impressive... perhaps I didn't give her enough credit..." ("snape_01") - sna "If what you're telling me about her intentions are true..." ("snape_03") - sna "Maybe she could even be persuaded to help with the Granger situation..." ("snape_05") + sna "If what you're telling me about her intentions is true..." ("snape_03") + sna "Maybe she could be persuaded to help with the Granger situation..." ("snape_05") #if nt_he.hermione_E1: # gen "Way ahead of you!" ("grin", xpos="far_left", ypos="head") @@ -823,7 +828,7 @@ label ss_he_tonks_E2: sna "What a wicked bitch!" ("snape_13") sna "If only we were selling favours back then..." ("snape_46") sna "You know what they say about students from Hufflepuff..." ("snape_20") - sna "They are quite the \"hard-working\" bunch!" ("snape_21") + sna "They always come last!" ("snape_21") gen "(...)" ("base", xpos="far_left", ypos="head") gen "I'm calling dibs on her!" ("base", xpos="far_left", ypos="head") sna "You do what?" ("snape_14") diff --git a/game/scripts/characters/tonks/summon.rpy b/game/scripts/characters/tonks/summon.rpy index 69118f34..bc5a3d7b 100644 --- a/game/scripts/characters/tonks/summon.rpy +++ b/game/scripts/characters/tonks/summon.rpy @@ -57,7 +57,7 @@ label summon_tonks: call wardrobe # Hair fix - $ tonks_haircolor = tonks.get_equipped("hair").color + $ tonks_haircolor = [c for c in tonks.get_equipped("hair").color] jump tonks_requests "-Hidden-" (style="disabled") if not tonks_wardrobe_unlocked: diff --git a/game/scripts/characters/tonks/talk.rpy b/game/scripts/characters/tonks/talk.rpy index 562575a4..2984746b 100644 --- a/game/scripts/characters/tonks/talk.rpy +++ b/game/scripts/characters/tonks/talk.rpy @@ -26,7 +26,7 @@ label tonks_talk: hide tonks_main with d3 - $ tonks.strip("all") + $ tonks.strip("clothes") pause.8 ton "Do you like it, [ton_genie_name]?" ("horny", "base", "raised", "mid") @@ -143,7 +143,7 @@ label tonks_talk: "-Lover-" (style="disabled") if ton_friendship < 60: label .lover_fail: ton "You mean that you \"love how well we work together\", right?" ("base", "narrow", "raised", "mid") - gen "Err..." ("base", xpos="far_left", ypos="head") + gen "*Err*..." ("base", xpos="far_left", ypos="head") gen "Sure." ("base", xpos="far_left", ypos="head") ton "Don't you lie to me young man, an Auror is trained to see right through that stuff." ("open", "narrow", "base", "mid") gen "\"Young man\"? I'm literally over ten thousands of years old." ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/characters/tonks/vars.rpy b/game/scripts/characters/tonks/vars.rpy index 603bb751..5e1ad9a4 100644 --- a/game/scripts/characters/tonks/vars.rpy +++ b/game/scripts/characters/tonks/vars.rpy @@ -19,7 +19,10 @@ default tonks_outfits_schedule = True default ton_level_up = None default gave_tonks_gift = False default tonks_mail_list = [] -default tonks_haircolor = [[255, 146, 185, 255], [254, 218, 238, 255]] + +init offset = 5 +default tonks_haircolor = [c for c in ton_hair_base.color] +init offset = 0 # Names default tonks_name = "Tonks" diff --git a/game/scripts/characters/tonks/wardrobe.rpy b/game/scripts/characters/tonks/wardrobe.rpy index bcf01662..b6a0b5e9 100644 --- a/game/scripts/characters/tonks/wardrobe.rpy +++ b/game/scripts/characters/tonks/wardrobe.rpy @@ -2,336 +2,325 @@ ## Character ## ############### -default tonks = Doll(name="tonks", - clothes={"headgear": [None, 15, True], - "hair": [None, 4, True], - "glasses": [None, 12, True], - "earrings": [None, 14, True], - "neckwear": [None, 11, True], - "robe": [None, 28, True], - "gloves": [None, 21, True], - "top": [None, 15, True], - "bra": [None, 9, True], - "bottom": [None, 8, True], - "garterbelt": [None, 7, True], - "panties": [None, 6, True], - "stockings": [None, 5, True], - "buttplug": [None, -1, True], - "pubes": [None, 3, True], - "footwear": [None, 6, True], - "tattoo0": [None, 1, True], - "tattoo1": [None, 1, True], - "tattoo2": [None, 1, True], - "tattoo3": [None, 1, True], - "tattoo4": [None, 1, True], - "piercing0": [None, 2, True], - "piercing1": [None, 2, True], - "piercing2": [None, 2, True], - "piercing3": [None, 2, True], - "piercing4": [None, 2, True], - "accessory0": [None, 12, True], - "accessory1": [None, 12, True], - "accessory2": [None, 12, True], - "accessory3": [None, 12, True], - "accessory4": [None, 12, True], - "makeup0": [None, 3, True], - "makeup1": [None, 3, True], - "makeup2": [None, 3, True], - "makeup3": [None, 3, True], - "makeup4": [None, 3, True]}, - face={"tears": [None, 12, True], - "cheeks": [None, 7, True], - "eyebrows": ["base", 11, True], - "eyes": ["base", 8, True], - "pupils": ["mid", 9, True], - "mouth": ["base", 13, True]}, - body={"armleft": ["on_hips", 3], - "armright":["on_hips", 1], - "base": ["front", 0], - "breasts": ["normal", 2]}) +default tonks = Doll(name="tonks") + +default ton_frame_default = DollBodypart("tonks", ("hidden", "frame"), "frame", "default") +default ton_body_default = DollOutfit([ton_frame_default], hidden=True) + +########## +## Hair ## +########## + +default ton_hair_short = DollCloth("tonks", ("head", "hair"), "hair", "base", ["#ff92b9ff", "#fedaeeff"], unlocked=True) +default ton_hair_base = DollCloth("tonks", ("head", "hair"), "hair", "new", ["#ff92b9ff", "#fedaeeff"], unlocked=True) ################## ## Auror Outfit ## ################## -default ton_footwear_shoes = DollClothDummy("tonks", type="footwear") -default ton_hair_base = DollCloth("tonks", ("head", "hair"), "hair", "base", [[255, 146, 185, 255], [254, 218, 238, 255]], unlocked=True) -default ton_hair_base_new = DollCloth("tonks", ("head", "hair"), "hair", "new", [[255, 146, 185, 255], [254, 218, 238, 255]], unlocked=True) -default ton_neckwear_beads = DollCloth("tonks", ("head", "neckwear"), "neckwear", "choker_beads",[[45, 45, 48, 255], [244, 230, 236, 255]], unlocked=True) -default ton_gloves_auror = DollCloth("tonks", ("upper body", "gloves"), "gloves", "auror_gloves",[[45, 45, 48, 255]], armfix=True, unlocked=True) -default ton_top_auror = DollCloth("tonks", ("upper body", "shirts"), "top", "auror",[[28, 27, 31, 255], [124, 42, 50, 255]], armfix=True, unlocked=True) -default ton_top_auror2 = DollCloth("tonks", ("upper body", "shirts"), "top", "auror2",[[124, 42, 50, 255]], armfix=True, unlocked=True) -default ton_robe_auror = DollCloth("tonks", ("upper body", "robes"), "robe", "auror_coat",[[40, 40, 41, 255], [244, 230, 236, 255]], armfix=True, unlocked=True) -default ton_bottoms_leggings = DollCloth("tonks", ("lower body", "leggings"), "bottom", "leggings",[[45, 45, 48, 255]], armfix=True, unlocked=True) -default ton_bottoms_leggings_hole = DollCloth("tonks", ("lower body", "leggings"), "bottom", "leggings_hole",[[45, 45, 48, 255]], level=60, armfix=True, unlocked=True) -default ton_stockings_auror = DollCloth("tonks", ("legwear", "stockings"), "stockings", "auror",[[45, 45, 48, 255], [177, 168, 172, 255]], armfix=True, unlocked=True) +default ton_neckwear_beads = DollCloth("tonks", ("head", "neckwear"), "neckwear", "choker_beads",["#2d2d30ff", "#f4e6ecff"], unlocked=True) +default ton_gloves_auror = DollCloth("tonks", ("upper body", "gloves"), "gloves", "auror_gloves",["#2d2d30ff"], unlocked=True) -default ton_outfit_default = DollOutfit([ton_hair_base_new, ton_neckwear_beads, ton_gloves_auror, ton_top_auror, ton_robe_auror, ton_bottoms_leggings, ton_stockings_auror], unlocked=True) -default ton_outfit_last = DollOutfit([ton_hair_base_new], hidden=True) +default ton_top_auror = DollCloth("tonks", ("upper body", "shirts"), "top", "auror",["#1c1b1fff", "#7c2a32ff"], unlocked=True) +default ton_top_auror2 = DollCloth("tonks", ("upper body", "shirts"), "top", "auror2",["#7c2a32ff"], unlocked=True) -################### -## School Outfit ## -################### +default ton_bottoms_leggings = DollCloth("tonks", ("lower body", "leggings"), "bottom", "leggings",["#2d2d30ff"], unlocked=True) +default ton_bottoms_leggings_hole = DollCloth("tonks", ("lower body", "leggings"), "bottom", "leggings_hole",["#2d2d30ff"], level=60, unlocked=True) -#default ton_bottom_school1 = DollCloth("tonks", ("lower body", "skirts"), "bottom", "school_skirt_1", [[103, 90, 108, 255], [232, 177, 13, 255]], unlocked=True) # Not implemented -default ton_top_tied = DollCloth("tonks", ("upper body", "other"), "top", "tied_top",[[183, 183, 184, 255]], blacklist=["bra"]) -default ton_bottom_school2 = DollCloth("tonks", ("lower body", "skirts"), "bottom", "school_skirt_2", [[103, 90, 108, 255], [232, 177, 13, 255]], armfix=True, level=20) -default ton_bottom_school3 = DollCloth("tonks", ("lower body", "skirts"), "bottom", "school_skirt_3", [[103, 90, 108, 255], [232, 177, 13, 255]], armfix=True, level=40) -default ton_bottom_school4 = DollCloth("tonks", ("lower body", "skirts"), "bottom", "school_skirt_4", [[103, 90, 108, 255], [232, 177, 13, 255]], armfix=True, level=60) +default ton_stockings_auror = DollCloth("tonks", ("legwear", "stockings"), "stockings", "auror",["#2d2d30ff", "#b1a8acff"], unlocked=True) -default ton_outfit_school = DollOutfit([ton_hair_base_new, ton_top_tied, ton_bottom_school2], price=350, name="Oldschool School Uniform", desc="A very tight school outfit back from 1995!") +default ton_robe_auror = DollCloth("tonks", ("upper body", "robes"), "robe", "auror_coat",["#282829ff", "#f4e6ecff"], unlocked=True) -############################# -## Stockings & Garterbelts ## -############################# +default ton_outfit_default = DollOutfit([ton_hair_base, ton_neckwear_beads, ton_gloves_auror, ton_top_auror, ton_robe_auror, ton_bottoms_leggings, ton_stockings_auror], unlocked=True) +default ton_outfit_last = DollOutfit([ton_hair_base], hidden=True) -default ton_stockings_long = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_basic_1",[[255, 255, 255, 255]], unlocked=True) -default ton_stockings_long2 = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_basic_2",[[0, 0, 0, 255], [16, 16, 16, 255]]) # Skimpy Outfit -default ton_stockings_long_meshed = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_meshed",[[0, 0, 0, 255], [0, 0, 0, 255]]) # Referee Outfit - SOON -default ton_stockings_long_sports = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_sports",[[255, 255, 255, 255], [23, 23, 23, 255]], unlocked=True) -default ton_stockings_long_striped = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_striped",[[255, 233, 246, 255], [180, 18, 36, 255]]) # Elf Outfit -default ton_garterbelt_long_basic = DollCloth("tonks", ("legwear", "garterbelts"), "garterbelt", "long_basic_1", [[255, 255, 255, 255]], armfix=True) +####################### +## Schoolgirl Outfit ## +####################### -################## -## Flag Bikinis ## -################## +#default ton_bottom_school1 = DollCloth("tonks", ("lower body", "skirts"), "bottom", "school_skirt_1", ["#675a6cff", "#e8b10dff"], unlocked=True) # Not implemented +default ton_top_tied = DollCloth("tonks", ("upper body", "other"), "top", "tied_top",["#b7b7b8ff"], blacklist=["bra"]) +default ton_bottom_school2 = DollCloth("tonks", ("lower body", "skirts"), "bottom", "school_skirt_2", ["#675a6cff", "#e8b10dff"], level=20) +default ton_bottom_school3 = DollCloth("tonks", ("lower body", "skirts"), "bottom", "school_skirt_3", ["#675a6cff", "#e8b10dff"], level=40) +default ton_bottom_school4 = DollCloth("tonks", ("lower body", "skirts"), "bottom", "school_skirt_4", ["#675a6cff", "#e8b10dff"], level=60) -default ton_bra_bikini_1 = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1", [[255, 255, 255, 255], [255, 255, 255, 255]]) -default ton_bra_bikini_1_striped = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1_striped", [[255, 255, 255, 255], [139, 0, 0, 255], [255, 255, 255, 255]]) -default ton_bra_bikini_1_UK = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1_UK", [[255, 255, 255, 255], [200, 16, 46, 255], [1, 33, 105, 255], [255, 255, 255, 255]]) -default ton_bra_bikini_1_USA = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1_USA", [[255, 255, 255, 255], [139, 0, 0, 255], [12, 99, 216, 255], [255, 255, 255, 255]]) - -default ton_panties_bikini_1 = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1", [[255, 255, 255, 255], [255, 255, 255, 255]]) -default ton_panties_bikini_1_jock = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1_jock", [[255, 255, 255, 255]]) -default ton_panties_bikini_1_striped = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1_striped", [[255, 255, 255, 255], [139, 0, 0, 255]]) -default ton_panties_bikini_1_UK = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1_UK", [[255, 255, 255, 255], [200, 16, 46, 255], [1, 33, 105, 255]]) - -default ton_outfit_bikini_1 = DollOutfit([ton_hair_base_new, ton_bra_bikini_1, ton_panties_bikini_1], price=250, name="Simple Bikini set", desc="It ain't much, but it at least covers the important bits.") -default ton_outfit_bikini_2 = DollOutfit([ton_hair_base_new, ton_bra_bikini_1_striped, ton_panties_bikini_1_striped], price=250, name="Striped Bikini set", desc="It ain't much, but it at least covers the important bits. Did I mention the stripes?") -default ton_outfit_bikini_3 = DollOutfit([ton_hair_base_new, ton_bra_bikini_1_UK, ton_panties_bikini_1_UK], price=250, name="\"For the queen!\" bikini set", desc="This is the way.") -default ton_outfit_bikini_4 = DollOutfit([ton_hair_base_new, ton_bra_bikini_1_USA, ton_panties_bikini_1_jock], price=250, name="American bikini set", desc="Fuck yeah!") - -##################### -## Skimpy Swimsuit ## -##################### - -default ton_swimsuit_1 = DollCloth("tonks", ("upper body", "one-piece suits"), "top", "swimsuit_1", [[197, 42, 110, 255]], zorder=7, level=40) -default ton_swimsuit_1_striped = DollCloth("tonks", ("upper body", "one-piece suits"), "top", "swimsuit_1_striped", [[255, 245, 231, 255], [168, 0, 0, 255]], zorder=7, level=40) -default ton_swimsuit_1_USA = DollCloth("tonks", ("upper body", "one-piece suits"), "top", "swimsuit_1_USA", [[255, 255, 255, 255], [168, 0, 0, 255], [12, 64, 216, 255], [255, 255, 255, 255]], zorder=7, level=40) - -default ton_outfit_swimsuit_1 = DollOutfit([ton_hair_base_new, ton_swimsuit_1], price=260, name="Skimpy Swimsuit", desc="Disclaimer: Translucent swimsuits should not be worn in merman inhabited waters under any circumstance.") -default ton_outfit_swimsuit_2 = DollOutfit([ton_hair_base_new, ton_swimsuit_1_striped], price=260, name="Striped Skimpy Swimsuit", desc="A Translucent swimsuit with vertical stripes to make you look even thinner! Or maybe it's the other way around...") -default ton_outfit_swimsuit_3 = DollOutfit([ton_hair_base_new, ton_swimsuit_1_USA], price=260, name="Freedom Swimsuit", desc="May attract eagles.") +default ton_outfit_school = DollOutfit([ton_hair_base, ton_top_tied, ton_bottom_school2], price=350, name="Oldschool School Uniform", desc="A very tight school outfit back from 1995!") ################### ## Casual Outfit ## ################### -default ton_top_crop_casual = DollCloth("tonks", ("upper body", "shirts"), "top", "crop_top",[[200, 8, 45, 255]]) -default ton_bottoms_leggings_casual = DollCloth("tonks", ("lower body", "leggings"), "bottom", "latex_leggings",[[32, 32, 32, 255], [25, 24, 24, 255]], armfix=True) +default ton_top_crop_casual = DollCloth("tonks", ("upper body", "shirts"), "top", "crop_top",["#c8082dff"]) +default ton_bottoms_leggings_casual = DollCloth("tonks", ("lower body", "leggings"), "bottom", "latex_leggings",["#202020ff", "#191818ff"]) -default ton_outfit_casual = DollOutfit([ton_hair_base_new, ton_top_crop_casual, ton_bottoms_leggings_casual], price=350, name="Sexy Casual Outfit", desc="Leggings make squeaky sounds when rubbed together.") +default ton_outfit_casual = DollOutfit([ton_hair_base, ton_top_crop_casual, ton_bottoms_leggings_casual], price=350, name="Sexy Casual Outfit", desc="Leggings make squeaky sounds when rubbed together.") -############# -## Nightie ## -############# +#################### +## Nightie Outfit ## +#################### -default ton_top_nightie_1 = DollCloth("tonks", ("upper body", "shirts"), "top", "nightie_1", [[153, 38, 96, 255]], armfix=True) +default ton_top_nightie_1 = DollCloth("tonks", ("upper body", "shirts"), "top", "nightie_1", ["#992660ff"]) -default ton_outfit_nightie = DollOutfit([ton_hair_base_new, ton_top_nightie_1], price=350, name="Nightie", desc="Doesn't leave much for the imagination.") +default ton_outfit_nightie = DollOutfit([ton_hair_base, ton_top_nightie_1], price=350, name="Nightie", desc="Doesn't leave much for the imagination.") ################## -## Bunny outfit ## +## Bunny Outfit ## ################## -default ton_top_bunny1 = DollCloth("tonks", ("upper body", "one-piece suits"), "top", "bunnysuit", [[48, 48, 48, 255]], blacklist=["panties", "bra"], zorder=7, level=40) -default ton_stockings_bunny1 = DollCloth("tonks", ("legwear", "pantyhose"), "stockings", "bunny_stockings_1", [[81, 81, 81, 255]], armfix=True, level=40) -default ton_hat_bunny1 = DollCloth("tonks", ("head", "headgear"), "headgear", "bunny", [[48, 48, 48, 255], [232, 232, 232, 255]], level=20) -default ton_neckwear_bunny1 = DollCloth("tonks", ("head", "neckwear"), "neckwear", "bunny_bowtie_1", [[232, 232, 232, 255], [48, 48, 48, 255]], level=10) +default ton_top_bunny1 = DollCloth("tonks", ("upper body", "one-piece suits"), "top", "bunnysuit", ["#303030ff"], blacklist=["panties", "bra"], zorder=183, level=40) +default ton_stockings_bunny1 = DollCloth("tonks", ("legwear", "pantyhose"), "stockings", "bunny_stockings_1", ["#515151ff"], level=40) +default ton_hat_bunny1 = DollClothDynamic("tonks", ("head", "headgear"), "headgear", "bunny", ["#303030ff", "#e8e8e8ff"], level=20, tracking="?hair") +default ton_neckwear_bunny1 = DollCloth("tonks", ("head", "neckwear"), "neckwear", "bunny_bowtie_1", ["#e8e8e8ff", "#303030ff"], level=10) -default ton_outfit_bunny = DollOutfit([ton_hair_base_new, ton_top_bunny1, ton_stockings_bunny1, ton_hat_bunny1, ton_neckwear_bunny1], price=350, name="Sexy bunny outfit", desc="Vewy sexy :3") +default ton_outfit_bunny = DollOutfit([ton_hair_base, ton_top_bunny1, ton_stockings_bunny1, ton_hat_bunny1, ton_neckwear_bunny1], price=350, name="Sexy Bunny Outfit", desc="Vewy sexy :3") -################### -## Dressing Gown ## -################### +########################## +## Dressing Gown Outfit ## +########################## -default ton_dressing_gown = DollCloth("tonks", ("upper body", "robes"), "robe", "dressing_gown", [[13, 0, 76, 255], [31, 41, 171, 255]], armfix=True) +default ton_robe_dressing_gown = DollCloth("tonks", ("upper body", "robes"), "robe", "dressing_gown", ["#0d004cff", "#1f29abff"]) -default ton_outfit_dressing_gown = DollOutfit([ton_hair_base_new, ton_dressing_gown]) +default ton_outfit_dressing_gown = DollOutfit([ton_hair_base, ton_robe_dressing_gown]) -################# -## Silky Dress ## -################# +######################## +## Silky Dress Outfit ## +######################## -default ton_top_silk_dress = DollCloth("tonks", ("upper body", "dresses"), "top", "silk_dress", [[240, 237, 250, 255], [234, 234, 234, 255]], blacklist=["bra", "bottom"], armfix=True) -default ton_robe_silk = DollCloth("tonks", ("upper body", "robes"), "robe", "silk_robe", [[240, 237, 250, 255]], armfix=True) +default ton_top_silk_dress = DollCloth("tonks", ("upper body", "dresses"), "top", "silk_dress", ["#f0edfaff", "#eaeaeaff"], blacklist=["bra", "bottom"]) +default ton_robe_silk = DollCloth("tonks", ("upper body", "robes"), "robe", "silk_robe", ["#f0edfaff"]) -default ton_outfit_silky = DollOutfit([ton_hair_base_new, ton_top_silk_dress, ton_robe_silk], price=350, name="Silky Dress", desc="{size=-4}Disclaimer: Madam Mafkin isn't responsible for damaged nipples.{/size}") +default ton_outfit_silky = DollOutfit([ton_hair_base, ton_top_silk_dress, ton_robe_silk], price=350, name="Silky Dress", desc="{size=-4}Disclaimer: Madam Mafkin isn't responsible for damaged nipples.{/size}") -############################## -## Skimpy Dress & Club Dress## -############################## +################################# +## Very Revealing Dress Outfit ## +################################# -default ton_top_skimpy_dress = DollCloth("tonks", ("upper body", "dresses"), "top", "skimpy_dress", [[147, 1, 1, 255]], blacklist=["bottom"], armfix=True, level=40) -default ton_top_skimpy_dress2 = DollCloth("tonks", ("upper body", "dresses"), "top", "skimpy_dress_2", [[108, 0, 105, 255]], blacklist=["bottom"], armfix=True, level=20) +default ton_top_skimpy_dress = DollCloth("tonks", ("upper body", "dresses"), "top", "skimpy_dress", ["#930101ff"], blacklist=["bottom"], level=40) +default ton_stockings_long2 = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_basic_2",["#000000ff", "#101010ff"]) -default ton_outfit_skimpy_dress = DollOutfit([ton_hair_base_new, ton_top_skimpy_dress, ton_stockings_long2], price=300, name="Very Revealing Dress", desc="This dress shows quite a bit of cleavage... All of it in fact.") -default ton_outfit_club_dress = DollOutfit([ton_hair_base_new, ton_top_skimpy_dress2, ton_stockings_long_meshed], price=300, name="Club Dress", desc="A sultry muggle dress like this will turn heads at any wizard pub.") +default ton_outfit_skimpy_dress = DollOutfit([ton_hair_base, ton_top_skimpy_dress, ton_stockings_long2], price=300, name="Very Revealing Dress", desc="This dress shows quite a bit of cleavage... All of it in fact.") + +####################### +## Club Dress Outfit ## +####################### + +default ton_top_skimpy_dress2 = DollCloth("tonks", ("upper body", "dresses"), "top", "skimpy_dress_2", ["#6c0069ff"], blacklist=["bottom"], level=20) +default ton_stockings_long_meshed = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_meshed",["#000000ff", "#000000ff"]) # Referee Outfit - SOON + +default ton_outfit_club_dress = DollOutfit([ton_hair_base, ton_top_skimpy_dress2, ton_stockings_long_meshed], price=300, name="Club Dress", desc="A sultry muggle dress like this will turn heads at any wizard pub.") ##################### ## Succubus Outfit ## ##################### -default ton_hat_succubus = DollCloth("tonks", ("head", "headgear"), "headgear", "horns", [[62, 51, 57, 255], [106, 63, 67, 255]]) -default ton_neckwear_succubus = DollCloth("tonks", ("head", "neckwear"), "neckwear", "succubus_colar", [[62, 51, 57, 255]]) +default ton_hat_succubus = DollClothDynamic("tonks", ("head", "headgear"), "headgear", "horns", ["#3e3339ff", "#6a3f43ff"], tracking="?hair") +default ton_neckwear_succubus = DollCloth("tonks", ("head", "neckwear"), "neckwear", "succubus_colar", ["#3e3339ff"]) -default ton_gloves_succubus = DollCloth("tonks", ("upper body", "gloves"), "gloves", "succubus_gloves", [[62, 51, 57, 255]]) -default ton_top_succubus = DollCloth("tonks", ("upper body", "other"), "top", "succubus_corset",[[62, 51, 57, 255], [181, 86, 84, 255], [136, 134, 134, 255]], blacklist=["bra"]) -default ton_top_succubus2 = DollCloth("tonks", ("upper body", "other"), "top", "succubus_corset_2",[[62, 51, 57, 255], [181, 86, 84, 255], [136, 134, 134, 255]]) -default ton_panties_succubus = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "succubus_panties", [[62, 51, 57, 255], [136, 134, 134, 255]], armfix=True) +default ton_gloves_succubus = DollCloth("tonks", ("upper body", "gloves"), "gloves", "succubus_gloves", ["#3e3339ff"]) +default ton_top_succubus = DollCloth("tonks", ("upper body", "other"), "top", "succubus_corset",["#3e3339ff", "#b55654ff", "#888686ff"], blacklist=["bra"]) +default ton_top_succubus2 = DollCloth("tonks", ("upper body", "other"), "top", "succubus_corset_2",["#3e3339ff", "#b55654ff", "#888686ff"]) +default ton_panties_succubus = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "succubus_panties", ["#3e3339ff", "#888686ff"]) -default ton_accessory0_succubus = DollCloth("tonks", ("misc", "accessory"), "accessory0", "succubus_wings", [[62, 51, 57, 255], [181, 86, 84, 255], [136, 134, 134, 255]], zorder=-160, blacklist=["robe"]) -default ton_accessory1_succubus = DollCloth("tonks", ("misc", "accessory"), "accessory1", "succubus_tail", [[62, 51, 57, 255], [181, 86, 84, 255]], zorder=-1) +default ton_accessory1_succubus = DollCloth("tonks", ("misc", "accessory"), "accessory", "succubus_wings", ["#3e3339ff", "#b55654ff", "#888686ff"], zorder=-500) +default ton_accessory2_succubus = DollCloth("tonks", ("misc", "accessory"), "accessory", "succubus_tail", ["#3e3339ff", "#b55654ff"], zorder=-11) -default ton_outfit_succubus = DollOutfit([ton_hair_base_new, ton_hat_succubus, ton_neckwear_succubus, ton_gloves_succubus, ton_top_succubus, ton_panties_succubus, ton_accessory0_succubus, ton_accessory1_succubus], addons=[ton_top_succubus2], name="Succubus Costume", desc="Hot as hell.") +default ton_outfit_succubus = DollOutfit([ton_hair_base, ton_hat_succubus, ton_neckwear_succubus, ton_gloves_succubus, ton_top_succubus, ton_panties_succubus, ton_accessory1_succubus, ton_accessory2_succubus], addons=[ton_top_succubus2], name="Succubus Costume", desc="Hot as hell.") ##################### ## Cavegirl Outfit ## ##################### -default ton_earring_pearls = DollCloth("tonks", ("head", "earrings"), "earrings", "pearls", [[223, 240, 255, 255]]) -default ton_neckwear_pearls = DollCloth("tonks", ("head", "neckwear"), "neckwear", "pearls_1", [[223, 240, 255, 255]], zorder=16) -default ton_top_cavegirl = DollCloth("tonks", ("upper body", "dresses"), "top", "cavegirl_dress", [[223, 240, 255, 255]], armfix=True) +default ton_earring_pearls = DollCloth("tonks", ("head", "earrings"), "earrings", "pearls", ["#dff0ffff"]) +default ton_neckwear_pearls = DollCloth("tonks", ("head", "neckwear"), "neckwear", "pearls_1", ["#dff0ffff"], zorder=213) +default ton_top_cavegirl = DollCloth("tonks", ("upper body", "dresses"), "top", "cavegirl_dress", ["#dff0ffff"]) -default ton_outfit_cavegirl = DollOutfit([ton_hair_base_new, ton_top_cavegirl, ton_earring_pearls, ton_neckwear_pearls], price=200, name="Cavegirl Dress", desc="A stone age inspired dress that brings you back to the age of rocking knockers.") +default ton_outfit_cavegirl = DollOutfit([ton_hair_base, ton_top_cavegirl, ton_earring_pearls, ton_neckwear_pearls], price=200, name="Cavegirl Dress", desc="A stone age inspired dress that brings you back to the age of rocking knockers.") + +##################### +## Pullover Outfit ## +##################### + +default ton_top_pullover = DollCloth("tonks", ("upper body", "shirts"), "top", "pullover",["#fdf0e6fa"]) +default ton_stockings_long_ribbed = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_ribbed",["#fdf0e6ff", "#ff4fbaff"]) + +default ton_outfit_pullover = DollOutfit([ton_hair_base, ton_top_pullover, ton_stockings_long_ribbed], price=200, name="Pullover Outfit", desc="An outfit so defined it will make anyone pull over when they spot it.") + +################### +## Lady D Outfit ## +################### + +default ton_hat_classy = DollClothDynamic("tonks", ("head", "headgear"), "headgear", "classy_hat", ["#52525eff"], tracking="?hair") +default ton_neckwear_pearls2 = DollCloth("tonks", ("head", "neckwear"), "neckwear", "pearls_2", ["#dcc88bff"]) +default ton_earring_pearls2 = DollCloth("tonks", ("head", "earrings"), "earrings", "pearls_2", ["#dcc88bff"]) + +default ton_accessory_flower = DollCloth("tonks", ("misc", "accessory"), "accessory", "flower", ["#5c5c5cff"], zorder=213) +default ton_gloves_leather = DollCloth("tonks", ("upper body", "gloves"), "gloves", "leather_gloves", ["#4f4940ff"]) +default ton_top_classy_dress = DollCloth("tonks", ("upper body", "dresses"), "top", "classy_dress",["#cbc9b8ff"], blacklist=["bra"]) + +default ton_outfit_lady_D = DollOutfit([ton_hair_base, ton_hat_classy, ton_neckwear_pearls2, ton_earring_pearls2, ton_accessory_flower, ton_gloves_leather, ton_top_classy_dress], price=400, name="Lady D Costume", desc="This outfit was once worn by a very tall and scary lady.") + +################## +## Police Woman ## #Unlocked in not_so_great_escape mirror story +################## + +default ton_headgear_police = DollClothDynamic("tonks", ("head", "headgear"), "headgear", "police", ["#7e7ec0ff", "#4865b7ff", "#ebd165ff"], tracking="?hair") +default ton_glasses_police = DollCloth("tonks", ("head", "glasses"), "glasses", "police", ["#b5c7d6ff", "#b14d74ff"]) + +default ton_top_police1 = DollCloth("tonks", ("upper body", "shirts"), "top", "police1", ["#7e7ec0ff", "#4865b7ff", "#ebd165ff"]) +default ton_top_police2 = DollCloth("tonks", ("upper body", "shirts"), "top", "police2", ["#4865b7ff", "#ebd165ff"]) +default ton_top_police3 = DollCloth("tonks", ("upper body", "shirts"), "top", "police3", ["#7e7ec0ff"]) +default ton_bottom_police = DollCloth("tonks", ("lower body", "shorts"), "bottom", "police",["#4865b7ff", "#7e7ec0ff"]) +default ton_accessory_police = DollCloth("tonks", ("misc", "accessory"), "accessory", "police_badge", ["#eed165ff"], zorder=213) + +default ton_outfit_police = DollOutfit([ton_hair_base, ton_headgear_police, ton_accessory_police, ton_glasses_police, ton_top_police1, ton_bottom_police], addons=[ton_top_police2, ton_top_police3]) + +############################ +## Wrestling Coach Outfit ## #Unlocked in a_white_christmas mirror story +############################ + +default ton_neckwear_whistle = DollCloth ("tonks", ("head", "neckwear"), "neckwear", "whistle", ["#6e4025ff", "#86a0a9ff"]) +default ton_top_sweatshirt = DollCloth("tonks", ("upper body", "shirts"), "top", "sweatshirt", ["#f3f0d8ff"]) +default ton_bottom_sweatpants = DollCloth("tonks", ("lower body", "trousers"), "bottom", "sweatpants", ["#a33530ff", "#f3f0d8ff"]) +default ton_accessory_neck_towel = DollCloth("tonks", ("misc", "accessory"), "accessory", "neck_towel", ["#fffcd8ff"], zorder=213) + +default ton_outfit_wrestling_coach = DollOutfit([ton_hair_base, ton_neckwear_whistle, ton_top_sweatshirt, ton_bottom_sweatpants, ton_accessory_neck_towel]) + +##################### +## Mechanic Outfit ## +##################### + +default ton_hair_mechanic = DollCloth("tonks", ("head", "hair"), "hair", "mechanic_hair", ["#ff92b9ff", "#fedaeeff"]) +default ton_top_vest_mechanic = DollCloth("tonks", ("upper body", "other"), "top", "mechanic_vest", ["#ff840bff", "#fff24aff", "#97a9abff"], blacklist=["bra", "piercing"]) +default ton_shorts_mechanic = DollCloth("tonks", ("lower body", "shorts"), "bottom", "mechanic_shorts", ["#6891ceff", "#7a4335ff", "#97a9abff", "#b6cbe9ff"]) +default ton_gloves_mechanic = DollCloth("tonks", ("upper body", "gloves"), "gloves", "mechanic_gloves", ["#303030ff"]) +default ton_headgear_cap_mechanic = DollClothDynamic("tonks", ("head", "headgear"), "headgear", "mechanic_cap", ["#ff840bff", "#fff24aff"], tracking="?hair") +default ton_panties_mechanic = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "mechanic_bikini", ["#ff840bff"]) +default ton_socks_mechanic = DollCloth("tonks", ("legwear", "socks"), "stockings", "mechanic_thigh_socks",["#303030ff"]) + +default ton_outfit_mechanic = DollOutfit([ton_hair_mechanic, ton_top_vest_mechanic, ton_shorts_mechanic, ton_gloves_mechanic, ton_headgear_cap_mechanic, ton_panties_mechanic, ton_socks_mechanic], price=450, name="Mechanic Outfit", desc="If your exhaust pipe needs cleaning, this is the perfect outfit for the occassion!") + +##################### +## Tuxedo (Office) ## +##################### + +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_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.") + +######################### +## Flag Bikini Outfits ## +######################### + +default ton_bra_bikini_1 = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1", ["#ffffffff", "#ffffffff"]) +default ton_bra_bikini_1_striped = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1_striped", ["#ffffffff", "#8b0000ff", "#ffffffff"]) +default ton_bra_bikini_1_UK = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1_UK", ["#ffffffff", "#c8102eff", "#012169ff", "#ffffffff"]) +default ton_bra_bikini_1_USA = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini_bra_1_USA", ["#ffffffff", "#8b0000ff", "#0c63d8ff", "#ffffffff"]) + +default ton_panties_bikini_1 = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1", ["#ffffffff", "#ffffffff"]) +default ton_panties_bikini_1_jock = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1_jock", ["#ffffffff"]) +default ton_panties_bikini_1_striped = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1_striped", ["#ffffffff", "#8b0000ff"]) +default ton_panties_bikini_1_UK = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "bikini_panties_1_UK", ["#ffffffff", "#c8102eff", "#012169ff"]) + +default ton_outfit_bikini_1 = DollOutfit([ton_hair_base, ton_bra_bikini_1, ton_panties_bikini_1], price=250, name="Simple Bikini Set", desc="It ain't much, but it at least covers the important bits.") +default ton_outfit_bikini_2 = DollOutfit([ton_hair_base, ton_bra_bikini_1_striped, ton_panties_bikini_1_striped], price=250, name="Striped Bikini Set", desc="It ain't much, but it at least covers the important bits. Did I mention the stripes?") +default ton_outfit_bikini_3 = DollOutfit([ton_hair_base, ton_bra_bikini_1_UK, ton_panties_bikini_1_UK], price=250, name="\"For The Queen!\" Bikini Set", desc="This is the way.") +default ton_outfit_bikini_4 = DollOutfit([ton_hair_base, ton_bra_bikini_1_USA, ton_panties_bikini_1_jock], price=250, name="American Bikini Set", desc="Fuck yeah!") + +############################# +## Skimpy Swimsuit Outfits ## +############################# + +default ton_swimsuit_1 = DollCloth("tonks", ("upper body", "one-piece suits"), "top", "swimsuit_1", ["#c52a6eff"], zorder=183, level=40) +default ton_swimsuit_1_striped = DollCloth("tonks", ("upper body", "one-piece suits"), "top", "swimsuit_1_striped", ["#fff5e7ff", "#a80000ff"], zorder=183, level=40) +default ton_swimsuit_1_USA = DollCloth("tonks", ("upper body", "one-piece suits"), "top", "swimsuit_1_USA", ["#ffffffff", "#a80000ff", "#0c40d8ff", "#ffffffff"], zorder=183, level=40) + +default ton_outfit_swimsuit_1 = DollOutfit([ton_hair_base, ton_swimsuit_1], price=260, name="Skimpy Swimsuit", desc="Disclaimer: Translucent swimsuits should not be worn in merman inhabited waters under any circumstance.") +default ton_outfit_swimsuit_2 = DollOutfit([ton_hair_base, ton_swimsuit_1_striped], price=260, name="Striped Skimpy Swimsuit", desc="A Translucent swimsuit with vertical stripes to make you look even thinner! Or maybe it's the other way around...") +default ton_outfit_swimsuit_3 = DollOutfit([ton_hair_base, ton_swimsuit_1_USA], price=260, name="Freedom Swimsuit", desc="May attract eagles.") + +################## +## Santa Outfit ## #unlocked in genies_christmas_wish mirror story +################## + +default ton_bra_santa = DollCloth("tonks", ("upper undergarment", "bras"), "bra", "santa_bra", ["#a13730ff"]) +default ton_top_santa = DollCloth("tonks", ("upper body", "shirts"), "top", "santa_top", ["#a13730ff", "#ffffffff"]) +default ton_panties_santa = DollCloth("tonks", ("lower undergarment", "panties"), "panties", "santa_panties", ["#a13730ff"]) + +default ton_outfit_santa = DollOutfit([ton_hair_base, ton_panties_santa, ton_top_santa, ton_bra_santa]) ################# ~*~Ä~*~*~*~*~ ################# ## Xmas Stuff ### /%\ ___$__ ### Elf Outfit ## ################# /% \ |=I~I=| ################# # Accessories -default ton_makeup3_elf_ears = DollCloth("tonks", ("head", "makeup"), "makeup3", "elf_ears", [[255, 255, 255, 255]], zorder=5) -default ton_hat_antlers = DollCloth("tonks", ("head", "headgear"), "headgear", "antlers", [[234, 187, 170, 255]]) -default ton_hat_elf = DollCloth("tonks", ("head", "headgear"), "headgear", "elf", [[2, 116, 71, 255], [255, 239, 248, 255]]) -default ton_neckwear_choker1 = DollCloth("tonks", ("head", "neckwear"), "neckwear", "choker_1", [[255, 43, 149, 255]]) -default ton_neckwear_bell1 = DollCloth("tonks", ("head", "neckwear"), "neckwear", "bell_1", [[2, 116, 71, 255], [244, 181, 82, 255]], zorder=16) -default ton_accessory4_bells = DollCloth("tonks", ("misc", "accessory"), "accessory4", "bells_1", [[244, 181, 82, 255]], zorder=16) -default ton_accessory3_belt1 = DollCloth("tonks", ("misc", "accessory"), "accessory3", "belt_1", [[42, 42, 42, 255], [185, 135, 73, 255]], zorder=16) -default ton_earring_bells = DollCloth("tonks", ("head", "earrings"), "earrings", "bells", [[244, 181, 82, 255]]) -default ton_piercing1_nipple_bells = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing1", "nipple_bells", [[244, 181, 82, 255]]) +default ton_makeup_elf_ears = DollCloth("tonks", ("head", "makeup"), "makeup", "elf_ears", None) +default ton_hat_antlers = DollClothDynamic("tonks", ("head", "headgear"), "headgear", "antlers", ["#eabbaaff"], tracking="?hair") +default ton_hat_elf = DollClothDynamic("tonks", ("head", "headgear"), "headgear", "elf", ["#027447ff", "#ffeff8ff"], tracking="?hair") +default ton_neckwear_choker1 = DollCloth("tonks", ("head", "neckwear"), "neckwear", "choker_1", ["#ff2b95ff"]) +default ton_neckwear_bell1 = DollCloth("tonks", ("head", "neckwear"), "neckwear", "bell_1", ["#027447ff", "#f4b552ff"], zorder=213) +default ton_accessory_bells = DollCloth("tonks", ("misc", "accessory"), "accessory", "bells_1", ["#f4b552ff"], zorder=213) +default ton_accessory_belt1 = DollCloth("tonks", ("misc", "accessory"), "accessory", "belt_1", ["#2a2a2aff", "#b98749ff"], zorder=213) +default ton_earring_bells = DollCloth("tonks", ("head", "earrings"), "earrings", "bells", ["#f4b552ff"]) +default ton_piercing_nipple_bells = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "nipple_bells", ["#f4b552ff"]) # Main Clothing -default ton_top_elf = DollCloth("tonks", ("upper body", "dresses"), "top", "elf_dress",[[2, 116, 71, 255]], armfix=True) -default ton_bra_ribbon = DollCloth("tonks", ("upper undergarment", "other"), "bra", "ribbon", [[255, 43, 149, 255]], blacklist=["top", "piercing1"]) -default ton_panties_ribbon = DollCloth("tonks", ("lower undergarment", "other"), "panties", "ribbon", [[255, 43, 149, 255]], blacklist=["bottom"], armfix=True) -default ton_bra_pasties = DollCloth("tonks", ("upper undergarment", "other"), "bra", "pasties_1",[[255, 43, 149, 255]], unlocked=True) -default ton_bra_pasties2 = DollCloth("tonks", ("upper undergarment", "other"), "bra", "pasties_2",[[2, 116, 71, 255], [244, 181, 82, 255]]) -default ton_bottom_xmas = DollCloth("tonks", ("lower body", "other"), "bottom", "xmas",[[2, 116, 71, 255], [255, 239, 248, 255]], armfix=True) -default ton_gloves_xmas = DollCloth("tonks", ("upper body", "gloves"), "gloves", "xmas", [[255, 239, 248, 255]]) -default ton_stockings_xmas = DollCloth("tonks", ("legwear", "stockings"), "stockings", "xmas",[[255, 255, 255, 255], [255, 255, 255, 255]], armfix=True) +default ton_top_elf = DollCloth("tonks", ("upper body", "dresses"), "top", "elf_dress",["#027447ff"]) +default ton_bra_ribbon = DollCloth("tonks", ("upper undergarment", "other"), "bra", "ribbon", ["#ff2b95ff"], blacklist=["top", "piercing"]) +default ton_panties_ribbon = DollCloth("tonks", ("lower undergarment", "other"), "panties", "ribbon", ["#ff2b95ff"], blacklist=["bottom"]) +default ton_bra_pasties = DollCloth("tonks", ("upper undergarment", "other"), "bra", "pasties_1",["#ff2b95ff"], unlocked=True) +default ton_bra_pasties2 = DollCloth("tonks", ("upper undergarment", "other"), "bra", "pasties_2",["#027447ff", "#f4b552ff"]) +default ton_bottom_xmas = DollCloth("tonks", ("lower body", "other"), "bottom", "xmas",["#027447ff", "#ffeff8ff"]) +default ton_gloves_xmas = DollCloth("tonks", ("upper body", "gloves"), "gloves", "xmas", ["#ffeff8ff"]) +default ton_stockings_xmas = DollCloth("tonks", ("legwear", "stockings"), "stockings", "xmas",["#ffffffff", "#ffffff78"]) -default ton_outfit_elf = DollOutfit([ton_hair_base_new, ton_makeup3_elf_ears, ton_earring_bells, ton_hat_elf, ton_neckwear_bell1, ton_top_elf, ton_accessory3_belt1, ton_accessory4_bells, ton_garterbelt_long_basic, ton_stockings_long_striped]) -default ton_outfit_ribbon = DollOutfit([ton_hair_base_new, ton_neckwear_choker1, ton_bra_ribbon, ton_panties_ribbon]) -default ton_outfit_xmas = DollOutfit([ton_hair_base_new, ton_hat_antlers, ton_earring_bells, ton_neckwear_bell1, ton_bra_pasties2, ton_bottom_xmas, ton_gloves_xmas, ton_stockings_xmas], addons=[ton_piercing1_nipple_bells, ton_bra_pasties2]) +default ton_stockings_long_striped = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_striped",["#ffe9f6ff", "#b41224ff"]) +default ton_garterbelt_long_basic = DollCloth("tonks", ("legwear", "garterbelts"), "garterbelt", "long_basic_1", ["#ffffffff"]) -################### -## Lady D Outfit ## -################### +default ton_outfit_elf = DollOutfit([ton_hair_base, ton_makeup_elf_ears, ton_earring_bells, ton_hat_elf, ton_neckwear_bell1, ton_top_elf, ton_accessory_belt1, ton_accessory_bells, ton_garterbelt_long_basic, ton_stockings_long_striped]) +default ton_outfit_ribbon = DollOutfit([ton_hair_base, ton_neckwear_choker1, ton_bra_ribbon, ton_panties_ribbon]) +default ton_outfit_xmas = DollOutfit([ton_hair_base, ton_hat_antlers, ton_earring_bells, ton_neckwear_bell1, ton_bra_pasties2, ton_bottom_xmas, ton_gloves_xmas, ton_stockings_xmas], addons=[ton_piercing_nipple_bells, ton_bra_pasties2]) -default ton_hat_classy = DollCloth("tonks", ("head", "headgear"), "headgear", "classy_hat", [[82, 82, 94, 255]], zorder=3) -default ton_neckwear_pearls2 = DollCloth("tonks", ("head", "neckwear"), "neckwear", "pearls_2", [[220, 200, 139, 255]]) -default ton_earring_pearls2 = DollCloth("tonks", ("head", "earrings"), "earrings", "pearls_2", [[220, 200, 139, 255]]) +############################# +## Stockings & Garterbelts ## +############################# -default ton_accessory2_flower = DollCloth("tonks", ("misc", "accessory"), "accessory2", "flower", [[92, 92, 92, 255]], zorder=16) -default ton_gloves_leather = DollCloth("tonks", ("upper body", "gloves"), "gloves", "leather_gloves", [[79, 73, 64, 255]], armfix=True) -default ton_top_classy_dress = DollCloth("tonks", ("upper body", "dresses"), "top", "classy_dress",[[203, 201, 184, 255]], armfix=True, blacklist=["bra"]) - -default ton_outfit_lady_D = DollOutfit([ton_hair_base_new, ton_hat_classy, ton_neckwear_pearls2, ton_earring_pearls2, ton_accessory2_flower, ton_gloves_leather, ton_top_classy_dress], price=400, name="Lady D Costume", desc="This outfit was once worn by a very tall and scary lady.") - -################## -## Police Woman ## #Unlocked in not_so_great_escape mirror story -################## - -default ton_headgear_police = DollCloth("tonks", ("head", "headgear"), "headgear", "police", [[126, 126, 192, 255], [72, 101, 183, 255], [235, 209, 101, 255]]) -default ton_glasses_police = DollCloth("tonks", ("head", "glasses"), "glasses", "police", [[181, 199, 214, 255], [177, 77, 116, 255]]) - -default ton_top_police1 = DollCloth("tonks", ("upper body", "shirts"), "top", "police1", [[126, 126, 192, 255], [72, 101, 183, 255], [235, 209, 101, 255]], armfix=True) -default ton_top_police2 = DollCloth("tonks", ("upper body", "shirts"), "top", "police2", [[72, 101, 183, 255], [235, 209, 101, 255]], armfix=True) -default ton_top_police3 = DollCloth("tonks", ("upper body", "shirts"), "top", "police3", [[126, 126, 192, 255]], armfix=True) -default ton_bottom_police = DollCloth("tonks", ("lower body", "shorts"), "bottom", "police",[[72, 101, 183, 255], [126, 126, 192, 255]], armfix=True) -default ton_accessory0_police = DollCloth("tonks", ("misc", "accessory"), "accessory3", "police_badge", [[238, 209, 101, 255]], zorder=16) - -default ton_outfit_police = DollOutfit([ton_hair_base_new, ton_headgear_police, ton_accessory0_police, ton_glasses_police, ton_top_police1, ton_bottom_police], addons=[ton_top_police2, ton_top_police3]) - -##################### -## Wrestling Coach ## #Unlocked in a_white_christmas mirror story -##################### -default ton_neckwear_whistle = DollCloth ("tonks", ("head", "neckwear"), "neckwear", "whistle", [[110, 64, 37, 255], [134, 160, 169, 255]]) -default ton_top_sweatshirt = DollCloth("tonks", ("upper body", "shirts"), "top", "sweatshirt", [[243, 240, 216, 255]]) -default ton_bottom_sweatpants = DollCloth("tonks", ("lower body", "trousers"), "bottom", "sweatpants", [[163, 53, 48, 255], [243, 240, 216, 255]], armfix=True) -default ton_accessory0_neck_towel = DollCloth("tonks", ("misc", "accessory"), "accessory0", "neck_towel", [[255, 252, 216, 255]], zorder=16) - -default ton_outfit_wrestling_coach = DollOutfit([ton_hair_base_new, ton_neckwear_whistle, ton_top_sweatshirt, ton_bottom_sweatpants, ton_accessory0_neck_towel]) - - -### Add badge! - -########## -## Misc ## -########## - -default ton_top_corset = DollCloth("tonks", ("upper body", "other"), "top", "corset",[[247, 206, 146, 255]], blacklist=["bra", "piercing1"], armfix=True, unlocked=True) -default ton_bottoms_jeans = DollCloth("tonks", ("lower body", "trousers"), "bottom", "jeans",[[51, 104, 105, 255]], armfix=True, unlocked=True) -default ton_panties_base = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "base",[[228, 250, 255, 255], [228, 55, 20, 255]], armfix=True, unlocked=True) -default ton_bra_base = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini",[[228, 250, 255, 255], [228, 55, 20, 255]], unlocked=True) -default ton_ruffled_top = DollCloth("tonks", ("upper body", "shirts"), "top", "ruffled_top",[[213, 173, 219, 255]], level=25, unlocked=True) - -default ton_earring_cartilege = DollCloth("tonks", ("head", "earrings"), "earrings", "cartilege", [[161, 159, 159, 255]], unlocked=True) -default ton_earring_hoops = DollCloth("tonks", ("head", "earrings"), "earrings", "hoops", [[161, 159, 159, 255]], unlocked=True) -default ton_earring_industrial = DollCloth("tonks", ("head", "earrings"), "earrings", "industrial", [[161, 159, 159, 255]], unlocked=True) - -default ton_piercing0_clit_stud = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing0", "clit_stud", [[161, 159, 159, 255]], unlocked=True) -default ton_piercing1_nipple_stud = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing1", "nipple_stud", [[161, 159, 159, 255]], unlocked=True) -default ton_piercing1_nipple_rings = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing1", "nipple_rings", [[161, 159, 159, 255]], unlocked=True) -default ton_piercing1_nipple_rings2 = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing1", "nipple_rings2", [[161, 159, 159, 255]], unlocked=True) -default ton_piercing1_nipple_rings3 = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing1", "nipple_rings3", [[161, 159, 159, 255]], unlocked=True) - -default ton_piercing2_belly_stud = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing2", "belly_stud", [[161, 159, 159, 255]], unlocked=True) -default ton_piercing2_belly_heart = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing2", "belly_heart", [[161, 159, 159, 255]], unlocked=True) -default ton_piercing2_belly_dick = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing2", "belly_dick", [[161, 159, 159, 255]], unlocked=True) +default ton_stockings_long = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_basic_1",["#ffffffff"], unlocked=True) +default ton_stockings_long_sports = DollCloth("tonks", ("legwear", "stockings"), "stockings", "long_sports",["#ffffffff", "#171717ff"], unlocked=True) ################ ## Pubic Hair ## ################ -default ton_pubes_arrow = DollCloth("tonks", ("lower undergarment", "pubes"), "pubes", "arrow", [[255, 146, 185, 255]], unlocked=True) -default ton_pubes_beaver = DollCloth("tonks", ("lower undergarment", "pubes"), "pubes", "beaver", [[255, 146, 185, 255]], unlocked=True) -default ton_pubes_stuble = DollCloth("tonks", ("lower undergarment", "pubes"), "pubes", "stuble", [[132, 64, 89, 255]], unlocked=True) -default ton_pubes_unshaved = DollCloth("tonks", ("lower undergarment", "pubes"), "pubes", "unshaved", [[132, 64, 89, 255]], unlocked=True) +default ton_pubes_arrow = DollCloth("tonks", ("lower undergarment", "pubes"), "pubes", "arrow", ["#ff92b9ff"], unlocked=True) +default ton_pubes_beaver = DollCloth("tonks", ("lower undergarment", "pubes"), "pubes", "beaver", ["#ff92b9ff"], unlocked=True) +default ton_pubes_stuble = DollCloth("tonks", ("lower undergarment", "pubes"), "pubes", "stuble", ["#844059ff"], unlocked=True) +default ton_pubes_unshaved = DollCloth("tonks", ("lower undergarment", "pubes"), "pubes", "unshaved", ["#844059ff"], unlocked=True) -# Lipstick (DollLipstick) -default ton_makeup4_lipstick = DollLipstick("tonks", ("head", "makeup"), "makeup4", "lipstick", [[255, 70, 70, 255]], unlocked=True) +# Lipstick +default ton_makeup_lipstick = DollMakeup("tonks", ("head", "makeup"), "makeup", "lipstick", ["#ff4646ff"], unlocked=True, tracking="mouth") -##################### -## Mechanic Outfit ## -##################### +########## +## Misc ## +########## -default ton_mechanic_hair = DollCloth("tonks", ("head", "hair"), "hair", "mechanic_hair", [[255, 146, 185, 255], [254, 218, 238, 255]]) -default ton_mechanic_vest = DollCloth("tonks", ("upper body", "other"), "top", "mechanic_vest", [[255, 132, 11, 255], [255, 242, 74, 255], [151, 169, 171, 255]], blacklist=["bra", "piercing1"]) -default ton_mechanic_shorts = DollCloth("tonks", ("lower body", "shorts"), "bottom", "mechanic_shorts", [[104, 145, 206, 255], [122, 67, 53, 255], [151, 169, 171, 255], [182, 203, 233, 255]], armfix=True) -default ton_mechanic_gloves = DollCloth("tonks", ("upper body", "gloves"), "gloves", "mechanic_gloves", [[48, 48, 48, 255]]) -default ton_mechanic_cap = DollCloth("tonks", ("head", "headgear"), "headgear", "mechanic_cap", [[255, 132, 11, 255], [255, 242, 74, 255]]) -default ton_mechanic_bikini = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "mechanic_bikini", [[255, 132, 11, 255]]) -default ton_mechanic_thigh_socks = DollCloth("tonks", ("legwear", "socks"), "stockings", "mechanic_thigh_socks",[[48, 48, 48, 255]]) +default ton_top_corset = DollCloth("tonks", ("upper body", "other"), "top", "corset",["#f7ce92ff"], blacklist=["bra", "piercing"], unlocked=True) +default ton_bottoms_jeans = DollCloth("tonks", ("lower body", "trousers"), "bottom", "jeans",["#336869ff"], unlocked=True) +default ton_panties_base = DollCloth("tonks", ("lower undergarment", "bikini panties"), "panties", "base",["#e4faffff", "#e43714ff"], unlocked=True) +default ton_bra_base = DollCloth("tonks", ("upper undergarment", "bikini bras"), "bra", "bikini",["#e4faffff", "#e43714ff"], unlocked=True) +default ton_ruffled_top = DollCloth("tonks", ("upper body", "shirts"), "top", "ruffled_top",["#d5addbff"], level=25, unlocked=True) -default ton_outfit_mechanic = DollOutfit([ton_mechanic_hair, ton_mechanic_vest, ton_mechanic_shorts, ton_mechanic_gloves, ton_mechanic_cap, ton_mechanic_bikini, ton_mechanic_thigh_socks], price=450, name="Mechanic Outfit", desc="If your exhaust pipe needs cleaning, this is the perfect outfit for the occassion!") +default ton_earring_cartilege = DollCloth("tonks", ("head", "earrings"), "earrings", "cartilege", ["#a19f9fff"], unlocked=True) +default ton_earring_hoops = DollCloth("tonks", ("head", "earrings"), "earrings", "hoops", ["#a19f9fff"], unlocked=True) +default ton_earring_industrial = DollCloth("tonks", ("head", "earrings"), "earrings", "industrial", ["#a19f9fff"], unlocked=True) -##################### -## Tuxedo (Office) ## -##################### +default ton_piercing_clit_stud = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "clit_stud", ["#a19f9fff"], unlocked=True) +default ton_piercing_nipple_stud = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "nipple_stud", ["#a19f9fff"], unlocked=True) +default ton_piercing_nipple_rings = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "nipple_rings", ["#a19f9fff"], unlocked=True) +default ton_piercing_nipple_rings2 = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "nipple_rings2", ["#a19f9fff"], unlocked=True) +default ton_piercing_nipple_rings3 = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "nipple_rings3", ["#a19f9fff"], unlocked=True) -default ton_robe_office = DollCloth("tonks", ("upper body", "robes"), "robe", "office",[[53, 56, 67, 255], [255, 242, 74, 255]], armfix=True) -default ton_top_office = DollCloth("tonks", ("upper body", "shirts"), "top", "office", [[231, 231, 231, 255], [209, 206, 187, 255]], armfix=True) -default ton_bottoms_office = DollCloth("tonks", ("lower body", "trousers"), "bottom", "office",[[53, 56, 67, 255]], armfix=True) -default ton_accessory_office = DollCloth("tonks", ("misc", "accessory"), "accessory0", "office_pin", [[231, 231, 231, 255], [255, 242, 74, 255], [216, 66, 44, 255]], zorder=29) - -default ton_outfit_office = DollOutfit([ton_hair_base_new, 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.") +default ton_piercing_belly_stud = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "belly_stud", ["#a19f9fff"], unlocked=True) +default ton_piercing_belly_heart = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "belly_heart", ["#a19f9fff"], unlocked=True) +default ton_piercing_belly_dick = DollCloth("tonks", ("piercings & tattoos", "piercings"), "piercing", "belly_dick", ["#a19f9fff"], unlocked=True) diff --git a/game/scripts/characters/tonks/wardrobe_reactions.rpy b/game/scripts/characters/tonks/wardrobe_reactions.rpy index c1e50ab5..a074d586 100644 --- a/game/scripts/characters/tonks/wardrobe_reactions.rpy +++ b/game/scripts/characters/tonks/wardrobe_reactions.rpy @@ -449,6 +449,19 @@ label ton_reaction_equip_outfit(item): gen "Pretty much..." ("base", xpos="far_left", ypos="head") ton "Alright then..." ("horny", "narrow", "base", "mid") + ##################### + ## Pullover Outfit ## + ##################### + elif item == ton_outfit_pullover: + gen "Could you put on your pullover outfit for me?" ("base", xpos="far_left", ypos="head") + ton "A pullover?" ("soft", "base", "raised", "mid") + ton "But what if some handsome vampire turned up?" ("annoyed", "narrow", "base", "R") + gen "What?" ("base", xpos="far_left", ypos="head") + ton "My neck would be totally covered!" ("disgust", "narrow", "base", "mid") + gen "..." ("base", xpos="far_left", ypos="head") + gen "Some of your thighs should still be visible if that's a concern..." ("base", xpos="far_left", ypos="head") + ton "*Hmm*... I suppose... It's not ideal, but I guess it will have to do." ("base", "narrow", "base", "mid") + ################# ### Elf Outfit ## ################# @@ -471,14 +484,14 @@ label ton_reaction_equip_outfit(item): ton "You sure you'd want that?" ("soft", "base", "raised", "mid") gen "Of course!" ("base", xpos="far_left", ypos="head") ton "But what if you've been to naughty this year for you to unwrap me?" ("soft", "narrow", "raised", "mid") - gen "I'll just have you unwrap yourself in thas case." ("base", xpos="far_left", ypos="head") + gen "I'll just have you unwrap yourself in that case." ("base", xpos="far_left", ypos="head") ton "*Hmph*... That's cheating..." ("soft", "base", "base", "R") ################## ### Xmas Outfit ## ################## elif item == ton_outfit_xmas: - gen "Miss Tonks, you know what the best thing about christmas is?" ("base", xpos="far_left", ypos="head") + gen "Miss Tonks, you know what the best thing about Christmas is?" ("base", xpos="far_left", ypos="head") ton "The presents?" ("base", "base", "raised", "mid") gen "After that." ("base", xpos="far_left", ypos="head") ton "The food?" ("soft", "base", "base", "mid") @@ -489,6 +502,17 @@ label ton_reaction_equip_outfit(item): gen "Yes, put this on for me will you?" ("base", xpos="far_left", ypos="head") ton "Very well..." ("base", "base", "base", "mid") + ################## + ## Santa Outfit ## + ################## + elif item == ton_outfit_santa: + gen "Ho-Ho-Ho!" ("grin", xpos="far_left", ypos="head") + ton "Yes?" ("soft", "base", "base", "mid") + gen "No, I'm doing a Santa laugh!" ("base", xpos="far_left", ypos="head") + ton "Oh, I see!" ("grin", "base", "raised", "mid") + gen "Anyway, I've got this sexy Santa costume for you to wear." ("grin", xpos="far_left", ypos="head") + ton "*Mmm*... Say no more..." ("horny", "narrow", "base", "mid") + ################### ## Lady D Outfit ## ################### @@ -638,6 +662,11 @@ label ton_reaction_equip_outfit_fail(item): ##################### # elif item == ton_outfit_cavegirl: + ##################### + ## Pullover Outfit ## + ##################### + #elif item == ton_outfit_pullover: + ################# ### Elf Outfit ## ################# @@ -653,6 +682,11 @@ label ton_reaction_equip_outfit_fail(item): ################## # elif item == ton_outfit_xmas: + ################## + ## Santa Outfit ## + ################## + # elif item == ton_outfit_santa: + ################### ## Lady D Outfit ## ################### diff --git a/game/scripts/doll/body.rpy b/game/scripts/doll/body.rpy index f9cf729a..b63de82e 100644 --- a/game/scripts/doll/body.rpy +++ b/game/scripts/doll/body.rpy @@ -1,83 +1,65 @@ init python: class DollBody(DollMethods): - zorder_skin = 5 + layer_types = { + # Body class has no use for layer types + } - def __init__(self, obj, body): + layer_modifiers = { + "zorder": None, + } + + def __init__(self, obj): self.char = obj - self.name = self.char.name - self.body = body - self.hue = 0 - self.imagepath = "characters/{}/body/".format(self.name) + self.hue = HueMatrix(0) + self.zorder = 0 + self._hash = None + + def set_hue(self, hue): + self.hue = HueMatrix(hue) + 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]) + return hash(salt) + + @functools.cache + def get_layers(self, hash): + layers = {} + + for object, zorder, is_worn in self.char.states.values(): + if istype(object, DollBodypart) and is_worn is True: + layers.update(object.get_layers(object._hash)) + + return layers + + @functools.cache + def build_image(self, hash, matrix=None): + if matrix is None: + matrix = self.hue + + processors = { + "default": lambda file: Transform(Image(file), matrixcolor=matrix), + } + + layers = self.get_layers(hash) - def build_image(self): sprites = [] - - # Add body parts and skin layers from clothes, face, cum - sprites.extend(("{}{}/{}.webp".format(self.imagepath, k, v[0]), v[1]) for k, v in self.body.items() if v[0]) # Body parts - sprites.extend((o[0].skin, self.zorder_skin) for o in self.char.clothes.values() if o[0] and o[0].skin and o[2]) # Clothes skin - sprites.extend((x, self.zorder_skin) for x in self.char.face.get_skin()) # Face skin - sprites.extend((x, self.zorder_skin) for x in self.char.cum.get_skin()) # Cum skin - - sprites.sort(key=itemgetter(1)) - - if self.hue: - sprites = tuple(Transform(x[0], matrixcolor=HueMatrix(self.hue)) for x in sprites) - else: - sprites = tuple(x[0] for x in sprites) + for identifier, (file, zorder) in layers.items(): + processor = processors.get(identifier, processors["default"]) + processed_file = processor(file) + sprites.append((identifier, processed_file, zorder)) return sprites - def build_mannequin(self, group=None): - sprites = [] + @property + def image(self): + if not renpy.is_skipping() and self.is_stale(): + hash = self._hash - # Add body parts and skin layers from clothes - sprites.extend(("{}{}/{}.webp".format(self.imagepath, k, v[0]), v[1]) for k, v in self.body.items() if v[0]) - if group: - sprites.extend((o.skin, self.zorder_skin) for o in group if o and o.skin) + sprites = self.build_image(hash, self.hue) + sprites.sort(key=itemgetter(2)) + sprites = [x[1] for x in sprites] - sprites.sort(key=itemgetter(1)) - sprites = tuple(gray_tint(x[0]) for x in sprites) - return sprites - - def get_mannequin(self, group=None): - mannequin = self.build_mannequin(group) - return Fixed(*mannequin, fit_first=True) - - def get_part(self, arg): - return self.body[arg][0] - - def set_body(self, **kwargs): - """Takes keyword argument(s) with the string name of body part file(s). Returns True if image is changed.""" - changed = False - - for arg, value in kwargs.items(): - if value != self.body[str(arg)][0]: - self.body[str(arg)][0] = value - changed = True - - if changed: - self.rebuild_image() - - return changed - - def set_pose(self, pose): - if pose is None: - self.imagepath = "characters/{}/body/".format(self.name) - else: - self.imagepath = "characters/{}/poses/{}/body/".format(self.name, pose) - self.rebuild_image() - return - - def set_zorder(self, **kwargs): - """Takes keyword argument(s) with the string name of body type(s) and int value(s). Returns True if image is changed.""" - changed = False - - for arg, value in kwargs.items(): - if value != self.body[str(arg)][1]: - self.body[str(arg)][1] = value - changed = True - - if changed: - self.rebuild_image() - - return changed + self._image = Fixed(*sprites, fit_first=True) + return self._image diff --git a/game/scripts/doll/bodypart.rpy b/game/scripts/doll/bodypart.rpy new file mode 100644 index 00000000..8fcacbdb --- /dev/null +++ b/game/scripts/doll/bodypart.rpy @@ -0,0 +1,71 @@ +init 1 python: + class DollBodypart(DollCloth): + layer_types = { + "mask": "-1", + } + + layer_modifiers = { + "zorder": None, + } + + 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) + + 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})" + + def generate_hash(self): + salt = str( [self.name, self.type, self.char.pose, self.id, str(self.char.body._hash)] ) + return hash(salt) + + @functools.cache + def get_layers(self, hash): + path = posixpath.join(self.modpath, "characters", self.name, self.char.pose, "bodyparts", self.type, self.id) + + extensions = self.extensions + types = self.layer_types + modifiers = self.layer_modifiers + + layers = {} + for f in renpy.list_files(): + fp, fn = os.path.split(f) + fn, ext = os.path.splitext(fn) + + if not fp == path or not ext in extensions: + continue + + ltype, *tails = fn.rsplit("_") + + # if not ltype in types: + # print("Invalid layer type for file: {}".format(f)) + # continue + + zorder = types.get(ltype) or self.zorder + + if isinstance(zorder, str): + # Note: Layer uses relative zorder if it's passed as a string + zorder = self.zorder + int(zorder) + + if tails: + lmodifier, *tails = tails + + if not lmodifier in modifiers: + print("Invalid modifier for file: {}".format(f)) + continue + + zorder_mod = modifiers.get(lmodifier) + zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) + layers.setdefault("_".join([ltype, lmodifier]), [f, zorder]) + else: + layers.setdefault(ltype, [f, zorder]) + + return layers + + def apply_color(self, img, n): + raise NotImplementedError + + def set_color(self, n): + raise NotImplementedError + + def reset_color(self, n=None): + raise NotImplementedError diff --git a/game/scripts/doll/clothes.rpy b/game/scripts/doll/clothes.rpy index f21dbef7..b4e2f5e4 100644 --- a/game/scripts/doll/clothes.rpy +++ b/game/scripts/doll/clothes.rpy @@ -1,126 +1,176 @@ init python: class DollCloth(DollMethods): - def __init__(self, name, categories, type, id, color, zorder=None, unlocked=False, level=0, blacklist=[], parent=None, armfix=False, modpath=None): + layer_types = { + "mask": "-1", + "skin": 10, + "armfix": "+1", + "outline": None, + "extra": None, + "overlay": None, + } + + layer_modifiers = { + "back": "-300", + "front": "+300", + "zorder": None, + } + + def __init__(self, name, categories, type, id, color, zorder=None, unlocked=False, level=0, blacklist=[], modpath=None, parent=None): self.name = name - self.char = eval(name) self.categories = categories self.type = type self.id = id - self.color = color - self.color_default = [x[:] for x in color] + self.color = [Color( (tuple(x) if isinstance(x, list) else x) ) for x in color] if color else None self.unlocked = unlocked - self.layers = len(color) - self.parent = parent - self.ico = Null() - self.blacklist = blacklist self.level = level - self.modpath = posixpath.normpath(modpath) if modpath else "" - self.armfix = armfix - self.back_outline = None - self.front_outline = None - - # Inherit zorder from character if needed - self.zorder = zorder or self.char.clothes[type][1] + self.blacklist = blacklist + self.modpath = "mods/" + posixpath.normpath(modpath) if modpath else "" + self.parent = parent + self.char = eval(name) + self.color_default = [x for x in self.color] if self.color else None + self.zorder = zorder or self.char.states[type][1] self.seen = self.unlocked - self.cached_icon = False - - self.set_imagepath() - self.set_layers() + self._hash = self.generate_hash() # Add to character wardrobe and unordered list if not parent: self.char.wardrobe.setdefault(self.categories[0], {}).setdefault(self.categories[1], []).append(self) self.char.wardrobe_list.append(self) - def set_imagepath(self): - if any(x in self.type for x in self.multislots): - subpath = self.type[:-1] - else: - subpath = self.type + # Define new item slot type if doesn't exist + self.char.states.setdefault(self.type, [None, (self.zorder or 1), True]) - path = "{}/characters/{}/clothes/{}/{}/".format(self.modpath, self.name, subpath, self.id) + def __repr__(self): + return f"DollCloth(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})" - if renpy.loadable(path + "0.webp"): - self.imagepath = path - return - raise IOError("Couldn't find file:\n\"{}0.webp\"".format(path)) + def __hash__(self): + return self._hash - def set_layers(self): - for x in self.layers_special: - path = "{}{}.webp".format(self.imagepath, x) - self.__dict__[x] = path if renpy.loadable(path) else None + def __eq__(self, obj): + if not isinstance(obj, DollCloth): + return NotImplemented + return self._hash == obj._hash - for x in self.layers_additional: - self.__dict__[x] = [] + def generate_hash(self): + salt = str( [self.name, self.char.pose, self.type, self.id, str(self.color), str(self.char.body._hash)] ) + return hash(salt) - for i in range(self.layers): - path = "{}{}_{}.webp".format(self.imagepath, i, x) - if renpy.loadable(path): - self.__dict__[x].append(path) - else: - self.__dict__[x].append(None) + @functools.cache + def get_layers(self, hash): + path = posixpath.join(self.modpath, "characters", self.name, self.char.pose, "clothes", self.type, self.id) - path = "{}outline_{}.webp".format(self.imagepath, x) - self.__dict__[x+"_outline"] = path if renpy.loadable(path) else None + extensions = self.extensions + types = self.layer_types + modifiers = self.layer_modifiers - def build_image(self): - sprites = [(self.apply_color("{}{}.webp".format(self.imagepath, x), x), x) for x in range(self.layers)] + layers = {} + for f in renpy.list_files(): + fp, fn = os.path.split(f) + fn, ext = os.path.splitext(fn) - # Add extra layers if exist - for n, x in enumerate(self.layers_extra): - path = "{}{}.webp".format(self.imagepath, x) - if renpy.loadable(path): - sprites.append((path, self.layers+n)) + if not fp == path or not ext in extensions: + continue - sprites.sort(key=itemgetter(1)) - sprites = tuple(x[0] for x in sprites) - return sprites + # For user's sake, simplicty, and compatibility reasons, + # we sort the layers in the code instead. + # + # Each file name part represents the following: + # layertype_subtype*_zorder*_INT* + # + # Parts marked with * are optional and can be inserted out of order, + # with the exception of zorder, which requires an integer appendix. + # + # Example valid file name combinations: + # + # 0.webp + # 0_zorder_15.webp + # 0_front.webp + # outline.webp + # outline_back.webp + # + # If multiple files exist but with different extension, + # only the first file will be added to the dictionary. - def build_mannequin(self): - sprites = [ - self.get_back(), - self.get_mannequin(), - self.get_front(), - (self.get_image(), self.zorder), - self.get_armfix(mannequin=True) - ] + ltype, *tails = fn.rsplit("_") - sprites.sort(key=itemgetter(1)) + if not ltype.isdigit() and not ltype in types: + print("Invalid layer type for file: {}".format(f)) + continue - # Apply Alpha mask - if self.mask: - mask_zorder = self.zorder-1 + zorder = z if (z := types.get(ltype)) is not None else self.zorder - for i, s in enumerate(sprites): - sprite, sprite_zorder = s + if isinstance(zorder, str): + # Note: Layer uses relative zorder if it's passed as a string + zorder = self.zorder + int(zorder) - if mask_zorder > sprite_zorder >= 0: + if tails: + lmodifier, *tails = tails + + if not lmodifier in modifiers: + print("Invalid modifier for file: {}".format(f)) continue - c = tuple(x[0] for x in sprites[:i] if not isinstance(x[0], Null)) - masked = AlphaMask(Fixed(*c, fit_first=True), self.mask) - sprites = sprites[i:] - sprites.insert(0, (masked, mask_zorder)) - break + zorder_mod = modifiers.get(lmodifier) + zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) + layers.setdefault("_".join([ltype, lmodifier]), [f, zorder]) + else: + layers.setdefault(ltype, [f, zorder]) + return layers - bounds = "{}outline.webp".format(self.imagepath) if renpy.loadable("{}outline.webp".format(self.imagepath)) else "{}0.webp".format(self.imagepath) + @functools.cache + def build_image(self, hash, matrix=None): + if matrix is None: + matrix = self.char.body.hue - sprites = tuple(x[0] for x in sprites) - return (sprites, bounds) + processors = { + "skin": lambda file, _: Transform(file, matrixcolor=matrix), + "armfix": lambda file, _: Transform(file, matrixcolor=matrix), + "colored": lambda file, n: self.apply_color(file, int(n)), + "default": lambda file, _: Image(file), + } - def make_icon(self): - thread = DollThread(target=self.build_icon) - thread.daemon = True - thread.start() + layers = self.get_layers(hash) - sprite = thread.join() + sprites = [] + for identifier, (file, zorder) in layers.items(): - self.ico = DollDisplayable(sprite) + if ((n := identifier.rsplit("_", 1)[0]).isdigit()): + processor = processors["colored"] + else: + processor = processors.get(identifier, processors["default"]) - def build_icon(self): - sprites, bounds = self.build_mannequin() + processed_file = processor(file, n) + sprites.append((identifier, processed_file, zorder)) + + return sprites + + @property + def image(self): + if not renpy.is_skipping() and self.is_stale(): + hash = self._hash + + sprites = self.build_image(hash) + sprites.sort(key=itemgetter(2)) + sprites = [x[1] for x in sprites] + + self._image = Fixed(*sprites, fit_first=True) + return self._image + + @functools.cache + def build_icon(self, hash): + matrix = SaturationMatrix(0.0) + sprites = [i for i in self.build_image(hash, matrix=matrix) if not i[0] == "mask"] + + try: + bounds = self.get_layers(hash).get("outline", [sprites[0][1]])[0] + except IndexError: + print(f"Missing textures:\n{self.__repr__()}") + return Text(f"TexErr\n{{color=#00ffff}}{{size=-6}}ID:{self.id}{{/size}}{{/color}}", color="#ff0000") + + sprites.extend(self.char.body.build_image(self.char.body._hash, matrix=matrix)) + sprites.sort(key=itemgetter(2)) wmax, hmax = self.sizes wmin = hmin = 96 @@ -140,66 +190,27 @@ init python: if y+h > hmax: y = hmax-h - return Transform(Fixed(*sprites, fit_first=True), crop=(x, y, w, h)) + return Transform(Fixed(*[i[1] for i in sprites], fit_first=True), crop=(x, y, w, h)) - def rebuild_icon(self): - # Defers rebuild until next time get_image is called - self.cached_icon = False - - def get_back(self): - """Returns a list of layers displayed in the back of object/character""" - back_outline = [self.back_outline] if self.back_outline else [] - sprites = [self.apply_color(x, n) for n, x in enumerate(self.back) if x] + back_outline - if sprites: - return (Fixed(*sprites, fit_first=True), -100+self.zorder) - - w, h = self.sizes - return (Null(width=w, height=h), -100+self.zorder) - - def get_front(self): - """Returns a list of layers displayed in the front of object/character""" - front_outline = [self.front_outline] if self.front_outline else [] - sprites = [self.apply_color(x, n) for n, x in enumerate(self.front) if x] + front_outline - if sprites: - return (Fixed(*sprites, fit_first=True), 100+self.zorder) - - w, h = self.sizes - return (Null(width=w, height=h), 100+self.zorder) - - def get_armfix(self, mannequin=False): - if self.armfix: - if mannequin: - armleft = gray_tint("{}armleft/{}_fix.webp".format(self.char.body.imagepath, self.char.body.get_part("armleft"))) - armright = gray_tint("{}armright/{}_fix.webp".format(self.char.body.imagepath, self.char.body.get_part("armright"))) - else: - armleft = Transform("{}armleft/{}_fix.webp".format(self.char.body.imagepath, self.char.body.get_part("armleft")), matrixcolor=HueMatrix(self.char.body.hue)) - armright = Transform("{}armright/{}_fix.webp".format(self.char.body.imagepath, self.char.body.get_part("armright")), matrixcolor=HueMatrix(self.char.body.hue)) - return (Fixed(armleft, armright, fit_first=True), 0.5+self.zorder) - - w, h = self.sizes - return (Null(width=w, height=h), 0.5+self.zorder) - - def get_mannequin(self): - return (self.char.body.get_mannequin(group=[self]), 0) - - def get_icon(self): - """Returns cropped Fixed displayable""" - if not renpy.is_skipping(): - if not self.cached_icon: - self.cached_icon = True - self.make_icon() - return self.ico + @property + def icon(self): + return self.build_icon(self._hash) def apply_color(self, img, n): """Takes image and int layer number. Used internally.""" - c = TintMatrix(tuple(self.color[n])) - return Transform(img, matrixcolor=c) + try: + c = TintMatrix(self.color[n]) + return Transform(img, matrixcolor=c) + except IndexError: + print(f"Mismatched number of textures and colors:\n{self.__repr__()}") + d = At(Frame(Text("IndxErr", color="#ff0000"), tile=True), blink_repeat) + return Transform(AlphaMask(d, img)) def set_color(self, n): """Takes int layer number for manual color picking or a list to replace the cloth color in its entirety.""" if isinstance(n, int): - col = Color(tuple(self.color[n])) - dcol = Color(tuple(self.color_default[n])) + col = self.color[n] + dcol = self.color_default[n] cp.live_replace(col) cp.start_replace(col) @@ -208,84 +219,50 @@ init python: renpy.show_screen("colorpickerscreen", self) while True: - action, value = ui.interact() + try: + action, value = ui.interact() + except: + print(f"{ui.interact()}") + break if action == "layer": n = value - col = Color(tuple(self.color[value])) - dcol = Color(tuple(self.color_default[n])) + col = self.color[value] + dcol = self.color_default[value] cp.live_replace(col) cp.start_replace(col) cp.default_replace(dcol) elif action == "released": - self.color[n] = [int(255*x) for x in value.rgba] - self.rebuild_image() - self.char.rebuild_image() + self.color[n] = value + self.is_stale() elif action == "replace": - self.color[n] = [int(255*x) for x in value.rgba] + self.color[n] = value cp.live_replace(value) - self.rebuild_image() - self.char.rebuild_image() + self.is_stale() elif action == "finish": break renpy.hide_screen("colorpickerscreen") elif isinstance(n, list): - self.color = [x[:] for x in n] - self.rebuild_image() - self.char.rebuild_image() - self.rebuild_icon() + self.color = [Color( (tuple(x) if isinstance(x, list) else x) ) for x in n] + self.is_stale() def reset_color(self, n=None): """Reset cloth color. Takes optional int layer number to reset only specific layer color.""" if n: - self.color[n] = [x for x in self.color_default] + self.color[n] = self.color_default[n] else: - self.color = [x[:] for x in self.color_default] - self.rebuild_image() - self.char.rebuild_image() - self.rebuild_icon() + self.color = [x for x in self.color_default] + self.is_stale() 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], self.zorder, self.unlocked, self.level, self.blacklist, self, self.armfix, self.modpath) - - def set_pose(self, pose): - compatible = False - - for x in (self.categories[0], self.categories[1], self.type): - if pose is None: - path = "{}/characters/{}/clothes/{}/{}/".format(self.modpath, self.name, x, self.id) - if renpy.loadable(path + "0.webp"): - self.imagepath = path - self.char.wear(self.type) - compatible = True - break - else: - path = "{}/characters/{}/poses/{}/clothes/{}/{}/".format(self.modpath, self.name, pose, x, self.id) - if renpy.loadable(path + "0.webp"): - self.imagepath = path - self.char.wear(self.type) - compatible = True - break - - if not compatible: - self.char.strip(self.type) - return - - self.set_layers() - self.rebuild_image() - return - - def is_compatible(self): - return + 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) def is_modded(self): """Returns True if item comes from a mod.""" - if self.modpath: - return True - return False + return bool(self.modpath) def get_modname(self): """Return the name of the mod directory if exists.""" @@ -295,35 +272,10 @@ init python: self.seen = True def is_multislot(self): - return any(x in self.type for x in self.multislots) + return self.type in self.multislots def unlock(self): self.unlocked = True if self.parent: self.parent.unlock() - - class DollClothDummy(DollCloth): - def __init__(self, name, type, *args, **kwargs): - super(DollClothDummy, self).__init__(name=name, categories=("dummy", "dummy"), type=type, id="dummy", color=[[0,0,0,0]], *args, **kwargs) - - self.cached = True - self.cached_icon = True - - def set_imagepath(self): - if any(x in self.type for x in self.multislots): - subpath = self.type[:-1] - else: - subpath = self.type - - virt_path = "{}/characters/{}/clothes/{}/{}/".format(self.modpath, self.name, subpath, self.id) - self.imagepath = virt_path - - def get_icon(self): - return self.ico - - def get_image(self): - return self.sprite - - def clone(self): - return DollClothDummy(self.name, self.type, parent=self) diff --git a/game/scripts/doll/clothes_dynamic.rpy b/game/scripts/doll/clothes_dynamic.rpy new file mode 100644 index 00000000..8c7d9536 --- /dev/null +++ b/game/scripts/doll/clothes_dynamic.rpy @@ -0,0 +1,186 @@ +init python: + class DollClothDynamic(DollCloth): + prefixes = ["!=", "?=", "+=", "!", "?", "+"] + + def __init__(self, name, categories, type, id, color, zorder=None, unlocked=False, level=0, blacklist=[], modpath=None, tracking=None, parent=None): + self._tracking = tracking + + super().__init__(name, categories, type, id, color, zorder, unlocked, level, blacklist, modpath, parent) + + def __repr__(self): + return f"DollClothDynamic(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}, modpath={self.modpath or None}, tracking='{self._tracking}', parent={self.parent})" + + @functools.cached_property + def prefix(self): + return next((p for p in self.prefixes if self._tracking.startswith(p)), None) + + @functools.cached_property + def tracking(self): + prefixes = "".join(self.prefixes) + return self._tracking.strip(self.prefix) + + @property + def tracking_object(self): + if self.prefix in ("!", "?", "+"): + return self.char.states.get(self.tracking)[0] + else: + return eval(self.tracking) + + def generate_hash(self): + tracking_object = self.tracking_object + tracking_hash = str(tracking_object._hash) if tracking_object else "default" + salt = str( [self.name, self.char.pose, self.type, self.id, str(self.color), str(self.char.body._hash)] ) + tracking_hash + return hash(salt) + + @functools.cache + def get_layers(self, hash, _ignore_equipped=False): + path = posixpath.join(self.modpath, "characters", self.name, self.char.pose, "clothes", self.type, self.id) + _tracking = self._tracking + + def _negative_lookahead(): + return None if self.tracking_object else "default" + + def _lookahead(path): + tracking_object = self.tracking_object + tracking_id = tracking_object.id if tracking_object else None + path = posixpath.join(path, tracking_id) + + if not any(fp.startswith(path) for fp in renpy.list_files()): + return "default" + return tracking_id + + def _chainload(): + + def __wrapper(obj): + + def ___chain(obj): + if isinstance(obj, DollClothDynamic): + return "+".join( (obj.id, ___chain(obj.tracking_object)) ) + return obj.id + + return ___chain(obj) + + tracking_object = self.tracking_object + + if tracking_object: + + chain = __wrapper(tracking_object) + tracking_id = chain + + return tracking_id + return None + + def _negative_lookahead_item(): + tracking_object = self.tracking_object + return None if self.char.is_equipped_item(tracking_object) else "default" + + def _lookahead_item(): + tracking_object = self.tracking_object + return tracking_object.id if self.char.is_equipped_item(tracking_object) else "default" + + def _default(): + tracking_object = self.tracking_object + return tracking_object.id if tracking_object else None + + if _ignore_equipped: + tracking_id = "default" + else: + processors = { + "!": lambda tracking, _: _negative_lookahead(), + "?": lambda tracking, path: _lookahead(path), + "+": lambda tracking, _: _chainload(), + "!=": lambda tracking, _: _negative_lookahead_item(), + "?=": lambda tracking, _: _lookahead_item(), + "+=": lambda tracking, _: _chainload(), + None: lambda tracking, _: _default() + } + + processor = processors[self.prefix] + tracking_id = processor(_tracking, path) + + if tracking_id is None: + print(f"Invalid tracker for object: {self}") + return {} + + path = posixpath.join(path, tracking_id) + + extensions = self.extensions + types = self.layer_types + modifiers = self.layer_modifiers + + layers = {} + for f in renpy.list_files(): + fp, fn = os.path.split(f) + fn, ext = os.path.splitext(fn) + + if not fp == path or not ext in extensions: + continue + + ltype, *tails = fn.rsplit("_") + + if not ltype.isdigit() and not ltype in types: + print(f"Invalid layer type for file: {f}") + continue + + zorder = z if (z := types.get(ltype)) is not None else self.zorder + + if isinstance(zorder, str): + zorder = self.zorder + int(zorder) + + if tails: + lmodifier, *tails = tails + + if not lmodifier in modifiers: + print("Invalid modifier for file: {}".format(f)) + continue + + zorder_mod = modifiers.get(lmodifier) + zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) + layers.setdefault("_".join([ltype, lmodifier]), [f, zorder]) + else: + layers.setdefault(ltype, [f, zorder]) + + return layers + + @functools.cache + def build_icon(self, hash): + if self.prefix in ("!", "!="): + self.layers = self.get_layers(hash, _ignore_equipped=True) + hash = self.generate_hash() + tracking_object = None + else: + tracking_object = self.tracking_object + + matrix = SaturationMatrix(0.0) + sprites = [i for i in self.build_image(hash, matrix=matrix) if not i[0] == "mask"] + + if not tracking_object is None: + sprites.extend([i for i in tracking_object.build_image(tracking_object._hash, matrix=matrix) if not i[0] == "mask"]) + + sprites.extend(self.char.body.build_image(self.char.body._hash, matrix=matrix)) + sprites.sort(key=itemgetter(2)) + bounds = self.get_layers(hash).get("outline", [sprites[0][1]])[0] + + wmax, hmax = self.sizes + wmin = hmin = 96 + + x, y, w, h = crop_whitespace(bounds) + xoffset, yoffset = w/2, h/2 + + w = h = max(w, h, wmin, hmin) + + w = max(wmin, w + w/2) + h = max(hmin, h + h/2) + + x = clamp( (x - w/2) + xoffset, 0, wmax) + y = clamp( (y - h/2) + yoffset, 0, hmax) + + # Forbid exceeding the image height. + if y+h > hmax: + y = hmax-h + + return Transform(Fixed(*[i[1] for i in sprites], fit_first=True), crop=(x, y, w, h)) + + 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) diff --git a/game/scripts/doll/common.rpy b/game/scripts/doll/common.rpy index d136a495..256dba11 100644 --- a/game/scripts/doll/common.rpy +++ b/game/scripts/doll/common.rpy @@ -1,26 +1,6 @@ init -1 python: - ### Global Functions ### - - def get_character_emote(char, emote): - return "characters/{}/emotes/{}.webp".format(char, emote) if emote else None - - def get_character_pos(char): - global sprite_pos - - flip = getattr(renpy.store, char+"_flip", None) - use_head = getattr(renpy.store, "use_"+char+"_head", None) - - # Resolve X position for head state - if use_head: - xpos = sprite_pos["x"]["far_right"] if flip == 1 else sprite_pos["x"]["far_left"] - else: - xpos = getattr(renpy.store, char+"_xpos", None) - ypos = getattr(renpy.store, char+"_ypos", None) - - return (xpos, ypos) - ### Classes ### class DollDisplayable(renpy.Displayable): @@ -70,38 +50,24 @@ init -1 python: class DollMethods(object): """Container class for commonly used methods and attributes""" - sprite = Null() - cached = False - threadlock = False - icon_threadlock = False - - layers_extra = ("extra", "outline", "overlay") - layers_special = ("skin", "mask", "wind_mask") - layers_additional = ("back", "front") - + _image = Null() + _image_cached = False blacklist_toggles = ("hair", "glasses", "pubes", "piercing", "makeup", "tattoo", "earrings") blacklist_unequip = ("hair",) multislots = ("makeup", "accessory", "piercing", "tattoo") - + extensions = {".webp", ".png", ".jxl", ".avif"} sizes = (1010, 1200) # Default sizes used for defining rare cases - def rebuild_image(self): - # Defers rebuild until next time get_image is called - self.cached = False - - def make_image(self): - thread = DollThread(target=self.build_image) - thread.daemon = True - thread.start() - - sprites = thread.join() - - self.sprite = DollDisplayable(Fixed(*sprites, fit_first=True)) - - def get_image(self): + @property + def image(self): if not renpy.is_skipping(): - if not self.cached: - self.cached = True + if not self._image_cached: + self._image_cached = True + self._image = self.build_image() + return self._image - self.make_image() - return self.sprite + def is_stale(self): + curr_hash = self.generate_hash() + stale = curr_hash != self._hash + self._hash = curr_hash + return stale diff --git a/game/scripts/doll/cum.rpy b/game/scripts/doll/cum.rpy index 7ff113d4..4e6b5eb2 100644 --- a/game/scripts/doll/cum.rpy +++ b/game/scripts/doll/cum.rpy @@ -1,45 +1,143 @@ init python: class DollCum(DollMethods): - zorder_cum = 100 + layer_types = { + "mask": "-1", + "skin": 1, + "cum": 100, + } + + layer_modifiers = { + "back": "-300", + "front": "+300", + "zorder": None, + } def __init__(self, obj): self.char = obj - self.name = self.char.name - self.imagepath = "characters/{}/cum/".format(self.name) + self._cum = {k: None for k in (self.char.clothing_layers | self.char.face_layers).keys()} + self._hash = None - self.cum = dict((k, None) for k in {"hair", "face", "breasts", "body", "crotch", "pussy", "legs"}) - - def build_image(self): - sprites = tuple("{}{}/{}.webp".format(self.imagepath, k, v) for k, v in self.cum.items() if v != None) - return sprites - - def get_skin(self): - return ["{}{}/{}_skin.webp".format(self.imagepath, k, v) for k, v in self.cum.items() if renpy.loadable("{}{}/{}_skin.webp".format(self.imagepath, k, v))] + def generate_hash(self): + salt = str( [self.char.name, self.char.pose, str(self.char.face._hash), str(self.char.face._hash), str([x[0]._hash for x in self.char.states.values() if x[0] and x[2]]), sorted(list(self._cum.items()))] ) + return hash(salt) def set_cum(self, *args, **kwargs): - """Takes keyword argument(s) containing string name(s) of cum layers to apply or None. Returns True if image is changed.""" - changed = False - if args: - for k, v in self.cum.items(): - if v != args[0]: - self.cum[k] = args[0] - changed = True + self._cum = {k: args[0] for k in self._cum} - for arg, value in kwargs.items(): - if str(arg) != value: - self.cum[str(arg)] = value - changed = True + self._cum.update(kwargs) + self.is_stale() - if changed: - self.rebuild_image() + @functools.cache + def get_layers(self, hash): - return changed + def _lookahead(path): + return any(fp.startswith(path) for fp in renpy.list_files()) - def set_pose(self, pose): - if pose is None: - self.imagepath = "characters/{}/cum/".format(self.name) - else: - self.imagepath = "characters/{}/poses/{}/cum/".format(self.name, pose) - self.rebuild_image() - return + cum = self._cum + + extensions = self.extensions + types = self.layer_types + modifiers = self.layer_modifiers + face_layers = self.char.face_layers + + active_faces = self.char.face._face + active_clothes = self.char.states + + layers = {} + for part, name in cum.items(): + + if name is None: + continue + + if part in face_layers: + zorder = face_layers.get(part) + identifier = active_faces.get(part, "default") + path = posixpath.join(self.char.modpath, "characters", self.char.name, self.char.pose, "cum", part, name, identifier) + else: + + cloth, zorder, is_worn = active_clothes.get(part, [None, None, None]) + + if is_worn is None: + # Backwards compatibility for old layering system + path = posixpath.join("characters", self.char.name, self.char.pose, "cum", part, name) + + if config.developer: + renpy.notify(f"Using old-type cum layer, consider updating the code; Layer: \"{part}\"") + else: + if cloth is None or is_worn is False: + identifier = "default" + modpath = "" + zorder = None + else: + identifier = cloth.id + modpath = cloth.modpath + zorder = cloth.zorder + 1 + + path = posixpath.join(modpath, "characters", self.char.name, self.char.pose, "cum", part, name, identifier) + path = path if _lookahead(path) else posixpath.join(os.path.split(path)[0], (identifier := "default")) + + for f in renpy.list_files(): + fp, fn = os.path.split(f) + fn, ext = os.path.splitext(fn) + + if not fp == path or not ext in extensions: + continue + + ltype, *tails = fn.rsplit("_") + + if not ltype in types: + print("Invalid layer type for file: {}".format(f)) + continue + + zorder = zorder or types.get(ltype) + + if tails: + lmodifier, *tails = tails + + if not lmodifier in modifiers: + print("Invalid modifier for file: {}".format(f)) + continue + + zorder_mod = modifiers.get(lmodifier) + zorder = (zorder + int(zorder_mod)) + layers.setdefault(" ".join([part, name, ltype, lmodifier]), [f, zorder]) + else: + layers.setdefault(" ".join([part, name, ltype]), [f, zorder]) + + return layers + + @functools.cache + def build_image(self, hash, matrix=None): + if matrix is None: + matrix = self.char.body.hue + + processors = { + "skin": lambda file: Transform(file, matrixcolor=matrix), + "default": lambda file: Image(file), + } + + layers = self.get_layers(hash) + + sprites = [] + for identifier, (file, zorder) in layers.items(): + + cum_type, name, ltype = identifier.rsplit(" ") + processor = processors.get(identifier, processors["default"]) + + processed_file = processor(file) + sprites.append((identifier, processed_file, zorder)) + + return sprites + + @property + def image(self): + if not renpy.is_skipping() and self.is_stale(): + hash = self._hash + + sprites = self.build_image(hash) + sprites.sort(key=itemgetter(2)) + sprites = [x[1] for x in sprites] + + self._image = Fixed(*sprites, fit_first=True) + return self._image diff --git a/game/scripts/doll/face.rpy b/game/scripts/doll/face.rpy index dabe4fc2..e41d622f 100644 --- a/game/scripts/doll/face.rpy +++ b/game/scripts/doll/face.rpy @@ -1,95 +1,117 @@ init python: class DollFace(DollMethods): + layer_types = { + "eyemask": -1, + "skin": 1, + "expression": None, + } - blacklist_blink = {None, "closed", "happyCl", "wink"} + layer_modifiers = { + "zorder": None, + } - def __init__(self, obj, face): + def __init__(self, obj): self.char = obj - self.name = self.char.name - self.face = face - self.imagepath = "characters/{}/face/".format(self.name) + self._face = {k: None for k in self.char.face_layers.keys()} + self._hash = None - def build_image(self): - sprites = [] - ### TODO: This piece of code needs to be simplified. + def set_face(self, *args, **kwargs): + if args: + self._face = {k: args[0] for k in self._face} - # Add facial expressions - for k, v in self.face.items(): - if v[0] and k not in ("eyes", "pupils"): - sprites.append(("{}{}/{}.webp".format(self.imagepath, k, v[0]), v[1])) + self._face.update(kwargs) + self.is_stale() - eyes = self.face["eyes"][0] - pupils = self.face["pupils"][0] + def generate_hash(self): + salt = str( [self.char.name, self.char.pose, str(self.char.body._hash), sorted(list(self._face.items()))] ) + return hash(salt) - if eyes not in self.blacklist_blink: - blink_path = "{}eyes/closed.webp".format(self.imagepath) - eyes_path = "{}eyes/{}.webp".format(self.imagepath, eyes) - mask_path = "{}eyes/{}_mask.webp".format(self.imagepath, eyes) - pupils_path = "{}pupils/{}.webp".format(self.imagepath, pupils) + @functools.cache + def get_layers(self, hash): + face = self._face - if pupils: - if renpy.loadable(blink_path): - normal = Fixed(eyes_path, AlphaMask(pupils_path, mask_path), fit_first=True) - sprites.append( (doll_blink(normal, blink_path), self.face["eyes"][1]) ) + extensions = self.extensions + types = self.layer_types + modifiers = self.layer_modifiers + face_layers = self.char.face_layers + + layers = {} + for part, name in face.items(): + + if name is None: + continue + + path = posixpath.join(self.char.modpath, "characters", self.char.name, self.char.pose, "face", part, name) + + for f in renpy.list_files(): + fp, fn = os.path.split(f) + fn, ext = os.path.splitext(fn) + + if not fp == path or not ext in extensions: + continue + + ltype, *tails = fn.rsplit("_") + + if not ltype in types: + print("Invalid layer type for file: {}".format(f)) + continue + + zorder = types.get(ltype) or face_layers.get(part) + + if tails: + lmodifier, *tails = tails + + if not lmodifier in modifiers: + print("Invalid modifier for file: {}".format(f)) + continue + + zorder_mod = modifiers.get(lmodifier) + zorder = (zorder + int(zorder_mod)) + layers.setdefault(" ".join([part, name, ltype, lmodifier]), [f, zorder]) else: - sprites.append((eyes_path, self.face["eyes"][1])) + layers.setdefault(" ".join([part, name, ltype]), [f, zorder]) - if renpy.loadable(mask_path): - sprites.append((AlphaMask(pupils_path, mask_path), self.face["pupils"][1])) - else: - if eyes: - eyes_path = "{}eyes/{}.webp".format(self.imagepath, eyes) - sprites.append((eyes_path, self.face["eyes"][1])) + return layers - mask_path = "{}eyes/{}_mask.webp".format(self.imagepath, eyes) - if renpy.loadable(mask_path): - pupils_path = "{}pupils/{}.webp".format(self.imagepath, pupils) - sprites.append((AlphaMask(pupils_path, mask_path), self.face["pupils"][1])) + @functools.cache + def build_image(self, hash, matrix=None): + layers = self.get_layers(hash) + 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 + + processors = { + "skin": lambda file: Transform(file, matrixcolor=matrix), + "pupils": lambda file: AlphaMask(file, eyemask), + "default": lambda file: Image(file), + } + + sprites = [] + for identifier, (file, zorder) in layers.items(): + + expr_type, name, ltype = identifier.rsplit(" ") + + if expr_type == "pupils": + if not eyemask: + continue + processor = processors["pupils"] + else: + processor = processors.get(identifier, processors["default"]) + + processed_file = processor(file) + sprites.append((identifier, processed_file, zorder)) - sprites.sort(key=itemgetter(1)) - sprites = tuple(x[0] for x in sprites) return sprites - def get_skin(self): - for k, v in self.face.items(): - skin_path = "{}{}/{}_skin.webp".format(self.imagepath, k, v[0]) - if renpy.loadable(skin_path): - yield skin_path + @property + def image(self): + if not renpy.is_skipping() and self.is_stale(): + hash = self._hash - def get_face(self): - return dict((k, v[0]) for k, v in self.face.items()) + sprites = self.build_image(hash) + sprites.sort(key=itemgetter(2)) + sprites = [x[1] for x in sprites] - def set_face(self, **kwargs): - """Takes keyword argument(s) with the string name of expression file(s). Returns True if image is changed.""" - changed = False - for arg, value in kwargs.items(): - if value not in (self.face[str(arg)][0], False): - self.face[str(arg)][0] = value - changed = True - - if changed: - self.rebuild_image() - - return changed - - def set_pose(self, pose): - if pose is None: - self.imagepath = "characters/{}/face/".format(self.name) - else: - self.imagepath = "characters/{}/poses/{}/face/".format(self.name, pose) - - self.rebuild_image() - return - - def set_zorder(self, **kwargs): - """Takes keyword argument(s) with the string name of face type(s) and int value(s). Returns True if image is changed.""" - changed = False - for arg, value in kwargs.items(): - if value != self.face[str(arg)][1]: - self.face[str(arg)][1] = value - changed = True - - if changed: - self.rebuild_image() - - return changed + self._image = Fixed(*sprites, fit_first=True) + return self._image diff --git a/game/scripts/doll/init.rpy b/game/scripts/doll/init.rpy index 51d69808..756e48d3 100644 --- a/game/scripts/doll/init.rpy +++ b/game/scripts/doll/init.rpy @@ -5,6 +5,9 @@ init python: for c in CHARACTERS: char = get_character_object(c) + body_default = get_character_body(c, type="default") + char.equip(body_default) + outfit_default = get_character_outfit(c, type="default") char.equip(outfit_default) diff --git a/game/scripts/doll/lipstick.rpy b/game/scripts/doll/lipstick.rpy deleted file mode 100644 index 8327ef49..00000000 --- a/game/scripts/doll/lipstick.rpy +++ /dev/null @@ -1,65 +0,0 @@ -init python: - class DollLipstick(DollCloth): - - def set_imagepath(self): - self.imagepath = "{}/characters/{}/clothes/makeup/lipstick/".format(self.modpath, self.name) - - def set_layers(self): - for x in self.layers_special: - self.__dict__[x] = None - - for x in self.layers_additional: - self.__dict__[x] = [] - for i in range(self.layers): - path = "{}{}_{}.webp".format(self.imagepath, i, x) - if renpy.loadable(path): - self.__dict__[x].append(path) - self.__dict__[x+"_outline"] = None - - return - - def build_image(self): - mouth = self.char.face.face["mouth"][0] - sprites = ((self.apply_color("{}{}.webp".format(self.imagepath, mouth), 0)), ) - return sprites - - def build_icon(self): - mouth = "base" #HARDCODED - sprites = (self.char.body.get_mannequin([self]), self.apply_color("{}{}.webp".format(self.imagepath, mouth), 0), ) - bounds = "{}{}.webp".format(self.imagepath, mouth) - - wmax, hmax = self.sizes - wmin = hmin = 96 - - x, y, w, h = crop_whitespace(bounds) - xoffset, yoffset = w/2, h/2 - - w = h = max(w, h, wmin, hmin) - - w = max(wmin, w + w/2) - h = max(hmin, h + h/2) - - x = clamp( (x - w/2) + xoffset, 0, wmax) - y = clamp( (y - h/2) + yoffset, 0, hmax) - - # Forbid exceeding the image height. - if y+h > hmax: - y = hmax-h - - return Transform(Fixed(*sprites, fit_first=True), crop=(x, y, w, h)) - - def set_pose(self, pose): - if pose is None: - path = "{}/characters/{}/clothes/makeup/lipstick/".format(self.modpath, self.name) - self.imagepath = path - else: - path = "{}/characters/{}/poses/{}/clothes/makeup/lipstick/".format(self.modpath, self.name, pose) - if renpy.loadable(path + "base.webp"): - self.imagepath = path - - self.rebuild_image() - return - - def clone(self): - """Creates a clone of this lipstick object. Since it requires a parent object it should be used internally only to avoid object depth issue.""" - return DollLipstick(self.name, self.categories, self.type, self.id, [x[:] for x in self.color], self.zorder, self.unlocked, self.level, self.blacklist, self, self.armfix, self.modpath) diff --git a/game/scripts/doll/main.rpy b/game/scripts/doll/main.rpy index f9e5d25a..23c922b6 100644 --- a/game/scripts/doll/main.rpy +++ b/game/scripts/doll/main.rpy @@ -2,18 +2,63 @@ init python: import asyncio class Doll(DollMethods): - def __init__(self, name, clothes, face, body): + # 0 - 50 = Skin/Body Layers + # 51 - 100 = Face Layers + # 101 - 300+ = Clothes Layers + + body_layers = { + "frame": 0, + "legs": 1, + "hips": 2, + "abdomen": 3, + "chest": 4, + "arms": 5, + "head": 6, + } + + face_layers = { + "tears": 75, + "eyebrows": 70, + "pupils": 65, + "eyes": 60, + "mouth": 55, + "cheeks": 51 + } + + clothing_layers = { + "makeup": 111, # multislot + "accessory": 121, # multislot + "piercing": 131, # multislot + "tattoo": 141, # multislot + "pubes": 151, + "stockings": 161, + "panties": 171, + "garterbelt": 181, + "bottom": 191, + "bra": 201, + "top": 211, + "gloves": 221, + "robe": 231, + "neckwear": 241, + "hair": 251, + "earrings": 261, + "glasses": 271, + "headgear": 281 + } + + def __init__(self, name, modpath=None): self.wardrobe = {} self.wardrobe_list = [] self.blacklist = [] self.outfits = [] self.name = name - self.clothes = clothes - self.face = DollFace(self, face) - self.body = DollBody(self, body) + self.states = {k: [None, v, True] for k, v in (self.clothing_layers | self.body_layers).items()} + self.face = DollFace(self) + self.body = DollBody(self) self.cum = DollCum(self) - self.pose = None + self.pose = "" self.emote = Null() + self._hash = None # Image properties self.zorder = 15 @@ -27,23 +72,12 @@ init python: self.xzoom = 1 self.align = (0.5, 1.0) - def rebuild(self): - """Rebuild character image cache.""" - self.body.rebuild_image() - self.face.rebuild_image() - self.cum.rebuild_image() - for o in self.wardrobe_list: - o.rebuild_image() - o.rebuild_icon() - for o in self.outfits: - o.rebuild_image() - self.rebuild_image() + self.modpath = "mods/" + posixpath.normpath(modpath) if modpath else "" - def rebuild_image(self): - self.cached = False - - if renpy.showing(get_character_tag(self.name), layer=self.layer): - self.show() + def generate_hash(self): + clothes_hash = str([x[0]._hash for x in self.states.values() if istype(x[0], (DollCloth, DollClothDynamic, DollMakeup)) and x[2]]) + 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): if renpy.get_screen(("wardrobe", "animatedCG", "studio")): @@ -57,157 +91,172 @@ init python: if animation: at_list.append(animation) - renpy.show(name=self.tag, at_list=at_list, layer=self.layer, what=self.get_image(), zorder=self.zorder) + renpy.show(name=self.tag, at_list=at_list, layer=self.layer, what=self.image, zorder=self.zorder) def hide(self): renpy.hide(name=self.tag, layer=self.layer) - def make_image(self): - asyncio.run(self.build_image()) + @functools.cache + def build_image(self, hash): + from itertools import chain - async def build_image(self): - # Add body, face, cum, clothes, masks + sprites = list(chain.from_iterable( + (self.body.build_image(self.body._hash), + self.face.build_image(self.face._hash), + self.cum.build_image(self.cum._hash), + *(x[0].build_image(x[0]._hash) for x in self.states.values() if x[0] and x[2])) + )) - async def build_clothes(clothes): - sprites = [] - masks = [] + masks = [sprites.pop(sprites.index(x)) for x in sprites if x[0] == "mask"] - for i in clothes.values(): - obj, _, is_worn = i + sprites.sort(key=itemgetter(2)) + masks.sort(key=itemgetter(2)) - if not obj is None and is_worn: - zorder = obj.zorder + back_sprites = [x[1] for x in sprites if x[2] < 0] - sprites.extend([ - (obj.get_image(), zorder), - obj.get_back(), - obj.get_front(), - obj.get_armfix(), - ]) - - if obj.mask: - masks.append((obj.mask, zorder-1)) - return (sprites, masks) - - async def build_face(): - return (self.face.get_image(), 1) - - async def build_body(): - return (self.body.get_image(), 0) - - async def build_cum(zorder): - return (self.face.get_image(), zorder) - - face, body, cum, (clothes, masks) = await asyncio.gather( - build_cum(self.cum.zorder_cum), - build_body(), - build_face(), - build_clothes(self.clothes), - ) - - sprites = [ - face, - body, - cum, - *clothes, - (self.emote, 1000) - ] - - # Filter out Nulls - sprites = [x for x in sprites if not isinstance(x[0], Null)] - - sprites.sort(key=itemgetter(1)) - masks.sort(key=itemgetter(1)) - - # Filter out sprites with zorder less than zero, there's no need to iterate over them. - back_sprites = [x[0] for x in sprites if x[1] < 0] - sprites = [x for x in sprites if x[1] > -1] - - # Apply alpha mask + #Apply alpha mask for m in masks: - mask, mask_zorder = m + _, mask, mask_zorder = m for i, s in enumerate(sprites): - sprite, sprite_zorder = s + _, sprite, sprite_zorder = s if i < 1 or mask_zorder > sprite_zorder: continue - c = tuple(x[0] for x in sprites[:i] if not isinstance(x[0], Null)) - masked = AlphaMask(Fixed(*c, fit_first=True), mask) + masked = AlphaMask(Fixed(*(x[1] for x in sprites[:i]), fit_first=True), mask) sprites = sprites[i:] - sprites.insert(0, (masked, mask_zorder)) + sprites.insert(0, (None, masked, mask_zorder)) break - sprites = back_sprites + [x[0] for x in sprites] - self.sprite = DollDisplayable(Fixed(*sprites, fit_first=True)) - return + sprites = back_sprites + [x[1] for x in sprites] + + return Fixed(*sprites, fit_first=True) + + @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() + + return self.build_image(self._hash) def equip(self, obj, remove_old=True): """Takes DollCloth or DollOutfit object to equip.""" - if isinstance(obj, DollCloth): - self.clothes[obj.type][0] = obj - self.clothes[obj.type][2] = True - if self.is_blacklisted(obj.type): - self.unequip(*self.get_blacklister(obj.type)) + def _equip_item(item, color=None): + if item.is_multislot(): + for i in range(100): + multislot = item.type + str(i) + if multislot not in self.states or self.states[multislot][0] is None: + zorder = self.states[item.type][1] + self.states[multislot] = [item, zorder, True] + break + else: + zorder = self.states[item.type][1] + self.states[item.type] = [item, zorder, True] - if obj.blacklist: - self.unequip(*obj.blacklist) + if self.is_blacklisted(item.type): + self.unequip(*self.get_blacklister(item.type)) - if self.pose: - obj.set_pose(self.pose) + if item.blacklist: + self.unequip(*item.blacklist) + + for tracking in self.get_trackers_list(item.type): + tracking.is_stale() + + if color: + item.set_color(color) + + item.is_stale() + + def _equip_bodypart(item): + _equip_item(item) + self.body.is_stale() + + if istype(obj, (DollCloth, DollClothDynamic, DollMakeup)): + _equip_item(obj) + elif istype(obj, DollBodypart): + _equip_bodypart(obj) elif isinstance(obj, DollOutfit): if remove_old: - self.unequip("all") - - for i in obj.group: - self.clothes[i.type][0] = i.parent - self.clothes[i.type][0].set_color(i.color) - if self.pose: - i.parent.set_pose(self.pose) + self.unequip("clothes", "makeup") + for item in obj.group: + _equip_item(item.parent, color=item.color) elif isinstance(obj, (list, tuple)): - for cloth in obj: - self.clothes[cloth.type][0] = cloth - self.clothes[cloth.type][2] = True + for item in obj: + _equip_item(item) - if self.is_blacklisted(cloth.type): - self.unequip(*self.get_blacklister(cloth.type)) - - if cloth.blacklist: - self.unequip(*cloth.blacklist) - - if self.pose: - cloth.set_pose(self.pose) - - self.body.rebuild_image() - self.rebuild_image() self.rebuild_blacklist() update_chibi(self.name) + self.cum.is_stale() + self.is_stale() + + if renpy.showing(get_character_tag(self.name), layer=self.layer): + self.show() def unequip(self, *args): """Takes argument(s) containing string cloth type(s) to unequip.""" - if "all" in args: - for k, v in self.clothes.items(): - if not k in self.blacklist_unequip: - if self.pose and v[0]: - v[0].set_pose(None) - v[0], v[2] = None, True - else: - for arg in args: - if not arg in self.blacklist_unequip: - if self.pose and self.clothes[arg][0]: - self.clothes[arg][0].set_pose(None) - self.clothes[arg][0] = None - self.body.rebuild_image() - self.rebuild_image() + def _unequip_all(): + for k, v in self.states.items(): + if not k in self.blacklist_unequip: + v[0], v[2] = None, True + + def _unequip_type(type): + for k, v in self.states.items(): + if not k in self.blacklist_unequip and istype(v[0], type): + v[0], v[2] = None, True + + def _unequip_slot(slot): + if slot in self.blacklist_unequip: + return + + if slot in self.multislots: + for k, v in self.states.items(): + if any((x in k) for x in self.multislots): + v[0], v[2] = None, True + else: + self.states[slot][0], self.states[slot][2] = None, True + + for arg in args: + if isinstance(arg, str): + if arg == "all": + _unequip_all() + elif arg == "clothes": + _unequip_type((DollCloth, DollClothDynamic)) + elif arg == "bodyparts": + _unequip_type(DollBodypart) + elif arg == "makeup": + _unequip_type(DollMakeup) + else: + _unequip_slot(arg) + + elif isinstance(arg, DollCloth): + if arg.is_multislot(): + slot = next((k for k, v in self.states.items() if v[0] == arg), None) + + if not slot: + continue + + _unequip_slot(slot) + else: + _unequip_slot(arg.type) + elif isinstance(arg, DollOutfit): + for item in arg.group: + _unequip_slot(item.type) + self.rebuild_blacklist() update_chibi(self.name) + self.cum.is_stale() + self.is_stale() - def get_equipped(self, type): + if renpy.showing(get_character_tag(self.name), layer=self.layer): + self.show() + + def get_equipped(self, slot): """Takes argument containing string cloth type. Returns equipped object for cloth type.""" - return self.clothes[type][0] + return self.states[slot][0] def get_equipped_item(self, items): """Returns first equipped item from a list or None.""" @@ -218,150 +267,219 @@ init python: def strip(self, *args): """Takes argument(s) containing string cloth type(s) to temporarily displace (hide).""" - if "all" in args: - for k, v in self.clothes.items(): - if not k.startswith(self.blacklist_toggles): + def _strip_all(): + for k, v in self.states.items(): + if not k.startswith(self.blacklist_unequip): v[2] = False - else: - for arg in args: - if arg in self.multislots: - for k, v in self.clothes.items(): - if k.startswith(arg): - v[2] = False - else: - self.clothes[arg][2] = False - self.body.rebuild_image() - self.rebuild_image() - update_chibi(self.name) - def wear(self, *args): - """Takes argument(s) containing string cloth type(s) to put on (unhide).""" - if "all" in args: - if self.is_worn("all"): + def _strip_type(type): + for k, v in self.states.items(): + if not k in self.blacklist_unequip and istype(v[0], type): + v[2] = False + + def _strip_slot(slot): + if slot in self.blacklist_unequip: return - for v in self.clothes.values(): - v[2] = True - else: - for arg in args: - if arg in self.multislots: - for k, v in self.clothes.items(): - if k.startswith(arg): - v[2] = True - else: - self.clothes[arg][2] = True - self.body.rebuild_image() - self.rebuild_image() + if slot in self.multislots: + for k, v in self.states.items(): + if k.startswith(slot): + v[2] = False + else: + self.states[slot][2] = False + + for arg in args: + + if arg == "all": + _strip_all() + elif arg == "clothes": + _strip_type((DollCloth, DollClothDynamic)) + elif arg == "makeup": + _strip_type(DollMakeup) + elif arg == "bodyparts": + _strip_type(DollBodypart) + else: + _strip_slot(arg) + update_chibi(self.name) + self.is_stale() + + if renpy.showing(get_character_tag(self.name), layer=self.layer): + self.show() + + def wear(self, *args): + """Takes argument(s) containing string cloth type(s) to temporarily displace (hide).""" + def _wear_all(): + for k, v in self.states.items(): + v[2] = True + + def _wear_type(type): + for k, v in self.states.items(): + if istype(v[0], type): + v[2] = True + + def _wear_slot(slot): + if slot in self.multislots: + for k, v in self.states.items(): + if k.startswith(slot): + v[2] = True + else: + self.states[slot][2] = True + + for arg in args: + + if arg == "all": + _wear_all() + elif arg == "clothes": + _wear_type((DollCloth, DollClothDynamic)) + elif arg == "makeup": + _wear_type(DollMakeup) + elif arg == "bodyparts": + _wear_type(DollBodypart) + else: + _wear_slot(arg) + + update_chibi(self.name) + self.is_stale() + + if renpy.showing(get_character_tag(self.name), layer=self.layer): + self.show() def is_equipped(self, *args): """Takes argument containing string cloth type. Returns True if slot is occupied, False otherwise.""" for arg in args: if arg in self.multislots: - return any(bool(v[0]) for k, v in self.clothes.items() if k.startswith(arg)) + return any(bool(v[0]) for k, v in self.states.items() if k.startswith(arg)) else: - if not self.clothes.get(arg, [None])[0]: + if not self.states[arg][0]: return False return True def is_any_equipped(self, *args): """Takes arguments containing string cloth types. Returns True if ANY of them is equipped, False otherwise.""" - if "clothes" in args: - for k, v in self.clothes.items(): - if not k.startswith(self.blacklist_toggles): + def _is_equipped_type(type): + for k, v in self.states.items(): + if not k in self.blacklist_toggles and istype(v[0], type): if self.is_equipped(k): return True - else: - for arg in args: - if self.is_equipped(arg): - return True - return False + return False + + state = False + + for arg in args: + + if arg == "clothes": + state = _is_equipped_type((DollCloth, DollClothDynamic)) + elif arg == "makeup": + state = _is_equipped_type(DollMakeup) + elif arg == "bodyparts": + state = _is_equipped_type(DollBodypart) + else: + state = self.is_equipped(arg) + + if state is True: + break + + return state def is_equipped_item(self, item): """Takes DollCloth object or list of objects. Returns True if item is equipped, False otherwise.""" + if item.is_multislot(): + return bool(next((k for k, v in self.states.items() if v[0] == item), False)) + return self.get_equipped(item.type) == item def is_worn(self, *args): """Takes argument(s) containing string cloth type(s). Returns True if worn, False otherwise.""" - if "all" in args: - for v in self.clothes.values(): - if not v[2]: + + for arg in args: + if arg in self.multislots: + return any( (v[0] and v[2]) for k, v in self.states.items() if k.startswith(arg)) + else: + if not self.states[arg][0] or not self.states[arg][2]: return False - else: - for arg in args: - if arg in self.multislots: - return any( (v[0] and v[2]) for k, v in self.clothes.items() if k.startswith(arg)) - else: - if not self.clothes[arg][0] or not self.clothes[arg][2]: - return False return True def is_any_worn(self, *args): """Takes arguments containing string cloth types. Returns True if ANY of them is worn, False otherwise.""" - if "clothes" in args: - for k, v in self.clothes.items(): - if not k.startswith(self.blacklist_toggles): + def _is_worn_type(type): + for k, v in self.states.items(): + if not k in self.blacklist_toggles and istype(v[0], type): if self.is_worn(k): return True - else: - for arg in args: - if self.is_worn(arg): - return True - return False + return False - def set_face(self, **kwargs): - """Takes keyword argument(s) with the string name of expression file(s).""" - if self.face.set_face(**kwargs): - self.body.rebuild_image() + state = False - # Rebuild lipstick - lipstick = self.clothes.get("makeup4", [None, 1, True])[0] - if isinstance(lipstick, DollLipstick): - lipstick.rebuild_image() - self.rebuild_image() + for arg in args: + + if arg == "clothes": + state = _is_worn_type((DollCloth, DollClothDynamic)) + elif arg == "makeup": + state = _is_worn_type(DollMakeup) + elif arg == "bodyparts": + state = _is_worn_type(DollBodypart) + else: + state = self.is_worn(arg) + + if state is True: + break + + return state + + def set_face(self, *args, **kwargs): + self.face.set_face(*args, **kwargs) + + [x[0].is_stale() for x in self.states.values() if istype(x[0], DollMakeup) and x[2]] + self.cum.is_stale() def get_face(self): """Returns a dictionary containing currently set facial expressions. Used in character studio.""" - return self.face.get_face() + return self.face._face - def set_body(self, **kwargs): - """Takes keyword argument(s) with the string name of body part file(s).""" - if self.body.set_body(**kwargs): - self.rebuild_image() + # def set_body(self, **kwargs): + # OBSOLETE! the code in scripts needs to be changed + # """Takes keyword argument(s) with the string name of body part file(s).""" + # if self.body.set_body(**kwargs): + # self.rebuild_image() def set_body_hue(self, arg): """Takes integer between 0 - 359, rotates the character body colour by given amount.""" - self.body.hue = arg - self.body.rebuild_image() - self.rebuild_image() + self.body.set_hue(arg) - def set_body_zorder(self, **kwargs): - """Takes keyword argument(s) with the name(s) of body part(s) and integer value(s)""" - if self.body.set_zorder(**kwargs): - self.rebuild_image() + [x[0].is_stale() for x in self.states.values() if x[0] and x[2]] + self.is_stale() + + if renpy.showing(get_character_tag(self.name), layer=self.layer): + self.show() + + # def set_body_zorder(self, **kwargs): + # OBSOLETE! the code in scripts needs to be changed + # """Takes keyword argument(s) with the name(s) of body part(s) and integer value(s)""" + # if self.body.set_zorder(**kwargs): + # self.rebuild_image() def set_cum(self, *args, **kwargs): """Takes keyword argument(s) containing string name(s) of cum layers to apply or None.""" - if self.cum.set_cum(*args, **kwargs): - self.body.rebuild_image() - self.rebuild_image() + self.cum.set_cum(*args, **kwargs) + + if renpy.showing(get_character_tag(self.name), layer=self.layer): + self.show() def set_pose(self, pose): - if pose is None or renpy.loadable("characters/{}/poses/{}/loadable.webp".format(self.name, pose)): - self.pose = pose - self.face.set_pose(pose) - self.body.set_pose(pose) - self.cum.set_pose(pose) - for v in self.clothes.values(): - if v[0]: - v[0].set_pose(pose) - self.rebuild_image() - else: - raise Exception("'{}' pose doesn't exist for character named '{}'.".format(pose, self.name)) + pose = "" if pose is None else posixpath.join("poses", pose) + self.pose = pose + self.body.is_stale() + self.face.is_stale() + self.cum.is_stale() + [x[0].is_stale() for x in self.states.values() if x[0] and x[2]] + + if renpy.showing(get_character_tag(self.name), layer=self.layer): + self.show() def rebuild_blacklist(self): blacklist = [] - for v in self.clothes.values(): + for v in self.states.values(): if v[0]: blacklist.extend(v[0].blacklist) self.blacklist = list(set(blacklist)) @@ -372,22 +490,26 @@ init python: def get_blacklister(self, type): """Takes string cloth type. Returns a list of clothing types that report incompatibility.""" - return [x[0].type for x in self.clothes.values() if x[0] and type in x[0].blacklist] + return [x[0].type for x in self.states.values() if x[0] and type in x[0].blacklist] + + def get_trackers_list(self, type): + """Takes string cloth type. Returns a list of clothing types that report incompatibility.""" + return [x[0] for x in self.states.values() if istype(x[0], DollClothDynamic) and type == x[0].tracking] def create_outfit(self, temp=False): """Creates a copy of the current character clothes and stores it.""" - return DollOutfit([x[0] for x in self.clothes.values() if x[0]], True, temp=temp) + return DollOutfit([x[0] for x in self.states.values() if x[0]], True, temp=temp) def import_outfit(self, path, fromfile=True): """Imports outfit from .png file or clipboard text.""" # Grab data if fromfile: try: - imported = image_payload.decode(path) - except: - if image_payload._file: - image_payload._file.close() + imported = ImagePayload().extract(path) + except Exception as e: renpy.notify("Import failed: Corrupted file.") + print(e) + renpy.block_rollback() return None else: imported = get_clipboard() @@ -396,8 +518,9 @@ init python: if imported: try: imported = make_revertable(evaluate(imported)) - except: + except Exception as e: renpy.notify("Import failed: Corrupted outfit data.") + print(e) renpy.block_rollback() return None @@ -458,4 +581,5 @@ init python: else: path = "characters/{}/emote/{}.webp".format(self.name, emote) - self.emote = DollDisplayable(Image(path)) + self.emote = Image(path) + self.is_stale() diff --git a/game/scripts/doll/makeup.rpy b/game/scripts/doll/makeup.rpy new file mode 100644 index 00000000..201a3f0c --- /dev/null +++ b/game/scripts/doll/makeup.rpy @@ -0,0 +1,61 @@ +init python: + class DollMakeup(DollCloth): + def __init__(self, name, categories, type, id, color, zorder=None, unlocked=False, level=0, blacklist=[], parent=None, modpath=None, tracking=None): + self.tracking = tracking + + super().__init__(name, categories, type, id, color, zorder, unlocked, level, blacklist, parent, modpath) + + def __repr__(self): + return f"DollMakeup(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}, tracking={self.tracking})" + + def generate_hash(self): + salt = str( [self.name, self.type, self.char.pose, self.id, str(self.color), str(self.char.face._hash), str(self.char.body._hash)] ) + return hash(salt) + + @functools.cache + def get_layers(self, hash): + tracking = self.char.face._face.get(self.tracking, None) + + if tracking is None: + print(f"Invalid tracker for object: {self}") + return [] + + path = posixpath.join(self.modpath, "characters", self.name, self.char.pose, "clothes", self.type, self.id, tracking) + + extensions = self.extensions + types = self.layer_types + modifiers = self.layer_modifiers + + layers = {} + for f in renpy.list_files(): + fp, fn = os.path.split(f) + fn, ext = os.path.splitext(fn) + + if not fp == path or not ext in extensions: + continue + + ltype, *tails = fn.rsplit("_") + + if not ltype.isdigit() and not ltype in types: + print(f"Invalid layer type for file: {f}") + continue + + zorder = z if (z := types.get(ltype)) is not None else self.zorder + + if isinstance(zorder, str): + zorder = self.zorder + int(zorder) + + if tails: + lmodifier, *tails = tails + + if not lmodifier in modifiers: + print("Invalid modifier for file: {}".format(f)) + continue + + zorder_mod = modifiers.get(lmodifier) + zorder = (zorder + int(zorder_mod)) if lmodifier != "zorder" else int(tails[-1]) + layers.setdefault("_".join([ltype, lmodifier]), [f, zorder]) + else: + layers.setdefault(ltype, [f, zorder]) + + return layers diff --git a/game/scripts/doll/outfits.rpy b/game/scripts/doll/outfits.rpy index 5086980a..a8f9d0ab 100644 --- a/game/scripts/doll/outfits.rpy +++ b/game/scripts/doll/outfits.rpy @@ -10,10 +10,10 @@ init python: self.char = self.group[0].char self.unlocked = unlocked self.schedule = dict(list(self.default_schedule.items()) + list(schedule.items())) - self.hash = self.generate_hash() self.temp = temp self.hidden = hidden self.addons = addons + self._hash = self.generate_hash() if not self.temp: @@ -23,93 +23,62 @@ init python: if not self.hidden and not self in self.char.outfits: self.char.outfits.append(self) - # if config.developer: - # def __del__(self): - # print("Outfit with hash: {} has been garbage collected.".format(self.hash)) - def __hash__(self): - return self.hash + return self._hash def __eq__(self, obj): if not isinstance(obj, DollOutfit): return NotImplemented - return self.hash == obj.hash + return self._hash == obj._hash def generate_hash(self): - salt = str( sorted( [sorted([x.name, x.type, x.id, str(x.color)] ) for x in self.group]) ) + salt = str( [self.name, str([x._hash for x in self.group]) ] ) return hash(salt) def delete(self): if self in self.char.outfits: self.char.outfits.remove(self) - def make_image(self): - asyncio.run(self.build_image()) + @functools.cache + def build_image(self, hash): + from itertools import chain - async def build_image(self): - # Add body, face, cum, clothes, masks + matrix = SaturationMatrix(0.0) - async def build_clothes(group): - sprites = [] - masks = [] + sprites = list(chain.from_iterable( + (self.char.body.build_image(self.char.body._hash, matrix), + *(x.build_image(x._hash, matrix) for x in self.group)) + )) - for i in group: - sprites.append([i.get_image(), i.zorder]) + masks = [sprites.pop(sprites.index(x)) for x in sprites if x[0] == "mask"] - sprites.extend([ - (i.get_image(), i.zorder), - i.get_back(), - i.get_front(), - i.get_armfix(mannequin=True), - ]) + sprites.sort(key=itemgetter(2)) + masks.sort(key=itemgetter(2)) - if i.mask: - masks.append((i.mask, i.zorder-1)) + back_sprites = [x[1] for x in sprites if x[2] < 0] - return (sprites, masks) - - async def build_mannequin(group): - return (self.char.body.get_mannequin(group), 0) - - mannequin, (clothes, masks) = await asyncio.gather( - build_mannequin(self.group), - build_clothes(self.group), - ) - - sprites = [ - mannequin, - *clothes, - ] - - # Filter out Nulls - sprites = [x for x in sprites if not isinstance(x[0], Null)] - - sprites.sort(key=itemgetter(1)) - masks.sort(key=itemgetter(1)) - - # Filter out sprites with zorder less than zero, there's no need to iterate over them. - back_sprites = [x[0] for x in sprites if x[1] < 0] - sprites = [x for x in sprites if x[1] > -1] - - # Apply alpha mask + #Apply alpha mask for m in masks: - mask, mask_zorder = m + _, mask, mask_zorder = m for i, s in enumerate(sprites): - sprite, sprite_zorder = s + _, sprite, sprite_zorder = s if i < 1 or mask_zorder > sprite_zorder: continue - c = tuple(x[0] for x in sprites[:i] if not isinstance(x[0], Null)) - masked = AlphaMask(Fixed(*c, fit_first=True), mask) + masked = AlphaMask(Fixed(*(x[1] for x in sprites[:i]), fit_first=True), mask) sprites = sprites[i:] - sprites.insert(0, (masked, mask_zorder)) + sprites.insert(0, (None, masked, mask_zorder)) break - sprites = back_sprites + [x[0] for x in sprites] - self.sprite = DollDisplayable(Fixed(*sprites, fit_first=True)) - return + sprites = back_sprites + [x[1] for x in sprites] + + return Fixed(*sprites, fit_first=True) + + @property + def image(self): + return self.build_image(self._hash) def exists(self): return (self in self.char.outfits) @@ -117,17 +86,22 @@ init python: def export_data(self, filename, tofile=True): """Exports outfit to .png file or clipboard text.""" exported = [self.group[0].name] - exported.extend([x.id, x.color] for x in self.group) + + for i in self.group: + if i.color: + color = [j.hexcode for j in i.color] + exported.append([i.id, color]) # Encode data if tofile: - path = "{}/game/outfits/".format(config.basedir) - fn = "{}.png".format(filename) + path = os.path.join(config.gamedir, "outfits") if not os.path.exists(path): os.makedirs(path) - d = Transform(self.get_image(), crop=(210, 200, 700, 1000), anchor=(0.5, 1.0), align=(0.5, 1.0), xsize=310, ysize=470, fit="contain") + path = os.path.join(path, "_temp.png") + + d = Transform(self.image, crop=(210, 200, 700, 1000), anchor=(0.5, 1.0), align=(0.5, 1.0), xsize=310, ysize=470, fit="contain") d = Fixed( "interface/wardrobe/export_background.webp", d, @@ -136,8 +110,9 @@ init python: Text("Ver. {}".format(config.version), size=10, align=(0.99, 0.99)) ) - displayable_to_file(d, path+fn, size=(310, 470) ) - image_payload.encode(filename, str(exported)) + displayable_to_file(d, path, size=(310, 470) ) + ImagePayload().inject("_temp.png", filename, str(exported)) + os.remove(path) else: set_clipboard(exported) renpy.notify("Export successful!") @@ -153,11 +128,7 @@ init python: def save(self): """Overwrites this outfit with clothes currently equipped by the character.""" - self.group = [] - for v in self.char.clothes.values(): - if v[0]: - self.group.append(v[0].clone()) - self.rebuild_image() + self.group = [x[0].clone() for x in self.char.states.values() if x[0]] return def is_modded(self): @@ -195,7 +166,7 @@ init python: def has_any_type(self, *args): """Takes arguments containing string cloth types. Returns True if ANY of them is worn, False otherwise.""" if "clothes" in args: - for k in self.char.clothes.keys(): + for k in self.char.states.keys(): if not k.startswith(self.blacklist_toggles): if self.has_type(k): return True diff --git a/game/scripts/events/DayNight.rpy b/game/scripts/events/DayNight.rpy index 64a05162..c8f0b6e1 100644 --- a/game/scripts/events/DayNight.rpy +++ b/game/scripts/events/DayNight.rpy @@ -58,7 +58,7 @@ label day_start: sb_summon_pause = max(sb_summon_pause-1, 0) # Reset busy flags (Based on current tick) - snape_busy = bool(ss_summon_pause) + snape_busy = True # bool(ss_summon_pause) tonks_busy = bool(nt_summon_pause) hermione_busy = bool(hg_summon_pause) luna_busy = bool(ll_summon_pause) diff --git a/game/scripts/events/Quests.rpy b/game/scripts/events/Quests.rpy index 95830b17..39818e70 100644 --- a/game/scripts/events/Quests.rpy +++ b/game/scripts/events/Quests.rpy @@ -424,6 +424,7 @@ default cho_quid = quest_class( E11_complete = False, # Ask Luna for help (Talk) E12_complete = False, # Acquire new broom E13_complete = False, # Notify the player that all preparations are complete + E14_complete = False, # Quidditch Outro hufflepuff_prepared = False, # Ready for practice match? (Requirements: tactic) hufflepuff_training = False, # Finished Hufflepuff practice match? diff --git a/game/scripts/events/final_events.rpy b/game/scripts/events/final_events.rpy index bfeabd1a..809016f4 100644 --- a/game/scripts/events/final_events.rpy +++ b/game/scripts/events/final_events.rpy @@ -52,7 +52,7 @@ label ball_quest_E1: gen "And take off those things you're wearing." ("base", xpos="far_left", ypos="head") her "Alright..." ("open", "squint", "base", "R") $ renpy.sound.play("sounds/cloth_sound3.ogg") - $ hermione.strip("all") + $ hermione.strip("clothes") else: her "Just stand right here?" ("base", "base", "base", "R") gen "Yes, just stand right there for me..." ("base", xpos="far_left", ypos="head") @@ -178,7 +178,7 @@ label ball_quest_E1: if d_flag_01 and d_flag_02: if hermione.is_any_worn("clothes"): gen "Now take off everything else you're wearing." ("base", xpos="far_left", ypos="head") - $ hermione.strip("all") + $ hermione.strip("clothes") jump ball_quest_E1.after_strip @@ -421,7 +421,7 @@ label ball_quest_E1: $ hermione.set_body_zorder(armright=0) $ hermione.set_body(armleft="down", armright="down") $ hermione.set_pose(None) - $ hermione.strip("all") + $ hermione.strip("clothes") her "As you wish, [genie_name]..." ("annoyed", "narrow", "angry", "R", cheeks="blush", tears="messy") diff --git a/game/scripts/interface/cheats.rpy b/game/scripts/interface/cheats.rpy index 549dc707..355ab861 100644 --- a/game/scripts/interface/cheats.rpy +++ b/game/scripts/interface/cheats.rpy @@ -302,6 +302,25 @@ label cheats: jump cheats menu: + "-Genie Outfits-": + label .genie: + menu: + "-Use Default Outfit": + show genie robes + hide genie + with None + + gen robes "Swag." ("grin", xpos="far_left", ypos="head") + "-Use Santa Outfit": + show genie santa + hide genie + with None + + gen santa "Cool." ("grin", xpos="far_left", ypos="head") + ">Disclaimer: Outfits will not be displayed during CG scenes and for chibi animations." + "-Back-": + jump cheats.characters + jump cheats.genie "{size=-4}-Wardrobe Transparency Slider- (Is enabled: [cheat_wardrobe_alpha]){/size}" (icon="interface/icons/small/wardrobe.webp"): $ cheat_wardrobe_alpha = not cheat_wardrobe_alpha diff --git a/game/scripts/interface/inventory.rpy b/game/scripts/interface/inventory.rpy index 753c34df..fde057ee 100644 --- a/game/scripts/interface/inventory.rpy +++ b/game/scripts/interface/inventory.rpy @@ -320,9 +320,9 @@ screen inventory_menuitem(xx, yy): action Return("dec") imagebutton: - idle Transform(gui.format("interface/frames/{}/arrow_up.webp"), xzoom=-1) + idle Transform(gui.format("interface/frames/{}/arrow_up.webp"), yzoom=-1) if current_page < math.ceil((menu_items_length-1)/items_shown): - hover Transform(image_hover(gui.format("interface/frames/{}/arrow_up.webp")), xzoom=-1) + hover Transform(image_hover(gui.format("interface/frames/{}/arrow_up.webp")), yzoom=-1) action Return("inc") # Add items diff --git a/game/scripts/interface/stats.rpy b/game/scripts/interface/stats.rpy index 65ab724e..c87dd5c3 100644 --- a/game/scripts/interface/stats.rpy +++ b/game/scripts/interface/stats.rpy @@ -248,32 +248,32 @@ screen stats_menuitem(xx, yy): add "interface/characters/snape_locked.webp" zoom 0.35 align (0.9, 1.0) xzoom 1 elif current_category == "Tonks": if current_item["flag"]: - add tonks.get_image() zoom 0.41 align (0.7, 1.0) xzoom 1 + 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"]: - add hermione.get_image() zoom 0.39 align (0.7, 1.0) xzoom 1 + 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"]: - add cho.get_image() zoom 0.42 align (0.65, 1.0) xzoom 1 + 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"]: - add luna.get_image() zoom 0.39 align (0.75, 1.0) xzoom 1 + 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"]: - add astoria.get_image() zoom 0.4 align (0.7, 1.0) xzoom 1 + 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"]: - add susan.get_image() zoom 0.4 align (0.65, 1.0) xzoom 1 + 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 diff --git a/game/scripts/interface/tutorials.rpy b/game/scripts/interface/tutorials.rpy index 4b1da488..912f0ed5 100644 --- a/game/scripts/interface/tutorials.rpy +++ b/game/scripts/interface/tutorials.rpy @@ -2,13 +2,13 @@ default tutorial_dict = { "hearts": ["Favours", "Hearts indicate your current status towards a personal favour.\n\n{color=#FFFFFF80}{b}Empty Heart{/b}{/color}{size=-2} indicates the event hasn't been seen yet.{/size}\n{color=#bf5649}{b}Red Heart{/b}{/color}{size=-2} indicates completion of the event.{/size}\n{color=#333333}{b}Black Heart{/b}{/color}{size=-2} indicates failure of the event and you should try it again at a higher character level.{/size}\n{b}{color=#FFFFFF80}Half{/color} {color=#bf5649}Heart{/color}{/b}{size=-2} indicates there's a hidden path inside the event you should follow, in order to progress further.{/size}", False], "moodngifts": ["Mood & Gifts", "Sometimes your choices may upset some characters, just like in life. You can try and avoid picking options that you think would upset them, but if you mess up, buy them some nice {color=#204997}{b}gift{/b}{/color} and they might forgive you. Keep in mind that every character has their own gift preferences.\n\nAlternatively, you can wait until they calm down but who knows how long that would take.", False], "hangouts": ["Hangouts", "Getting to know your accomplices is an important aspect of progressing through the game. Hanging out with Snape for example improves your friendship and support which has various benefits such as story and character related unlockables.\n\nYou can check your current relationship status in the {color=#204997}{b}characters menu{/b}{/color}.", False], - "workngold": ["Working & Gold", "Gold is a universal currency in the magical world. To earn gold you must complete at least one full report for the ministry. You can start working by clicking on the {color=#204997}{b}work button{/b}{/color} or clicking on the desk and papers.\n\nYou might find other work opportunities as you progress through the game.", False], + "workngold": ["Working & Gold", "Gold is a universal currency in the magical world. To earn gold you must complete at least one full report for the ministry. You can start working by clicking on the {color=#204997}{b}work button{/b}{/color} or clicking on the desk and papers.\n\nYou might find other work opportunities as you progress through the game. Please note that characters may not be available at all times.", False], "inventory": ["Inventory & Items", "The inventory screen allows you to examine items you possess. You can access it by clicking on the {color=#204997}{b}inventory button{/b}{/color} located on the top right part of the screen. The inventory is split into two main categories:\n{color=#204997}{b}Gifts{/b}{/color} - Items that can be given to other characters.\n{color=#204997}{b}Quest Items{/b}{/color} - Important items related to game progression. Some of them can be used by clicking on the {b}USE{/b} button next to the item name when it's selected.", False], "schedule": ["Outfits Schedule", "Outfits can be assigned into a set schedule, which will allow the girls to pick what they are going to wear next time you summon them, based on time of day and weather conditions.\n\nYou can assign schedules inside the Wardrobe's Outfits Manager section, by clicking on the icon represented above. \n\nThis feature can be disabled at any time in the wardrobe options menu.", False], "points": ["House Points", "House points are awarded to students for excelling in their assignments. You can manipulate the points system directly by awarding points to students for completing their tasks, or by befriending the teachers.\n\nSome characters may care about house points more than others so keep that in mind.", False], "map": ["Navigation", "The map allows you to traverse the castle by clicking on one of the icons. Highlighted areas indicate a new event on that location. You can access the map from within the desk menu.", False], - "time": ["Passing Time", "There's various things that you can spend your time doing at Hogwarts, but sometimes you may end up with not much to do.\nIf this is the case then you can pass time by clicking on the {color=#204997}{b}pass time button{/b}{/color} located in the top-right corner. \n\n{size=-2}Or you could always rub one out for old time's sake. The choice is yours.{/size}", False], - "mail": ["Mail", "Owls will occasionally bring you letters or parcels. Click on the owl or parcel to interact with it.\n\nUnlike mail pidgeons, owls are tidy creatures and won't shit all over your floor... Probably.", False], + "time": ["Passing Time", "There are many activities you may do at Hogwarts, but occasionally there might not be much to do.\nIf this is the case then you can pass time by clicking on the {color=#204997}{b}pass time button{/b}{/color} located in the top-right corner.\n\n{size=-2}Or you could always rub one out for old time's sake. The choice is yours.{/size}", False], + "mail": ["Mail", "Owls will occasionally bring you letters or parcels. Click on the owl or parcel to interact with it.\n\nUnlike mail pidgeons, owls are tidy creatures and won't shit all over your floors. Theorethically...", False], "brewing": ["Potions Brewing", "Brewing potions wasn't always an easy task, but thanks to Magic Cauldron incorporated (TM), the entire process became automated. Once you have the required ingredients in your inventory, simply click on the {color=#204997}{b}cauldron{/b}{/color} to make the desired potion.", False], } diff --git a/game/scripts/inventory/decorations.rpy b/game/scripts/inventory/decorations.rpy index 31966646..1876b5bd 100644 --- a/game/scripts/inventory/decorations.rpy +++ b/game/scripts/inventory/decorations.rpy @@ -11,6 +11,7 @@ default harlot_poster_ITEM = Decoration("harlot_poster", "decoration", "Hogwarts default stripper_poster_ITEM = Decoration("stripper_poster", "decoration", "Stripper Poster", poster_OBJ, 2, "Hermione showing off how to work the pole... illusion charm included...") default wanted_poster_ITEM = Decoration("wanted_poster", "decoration", "Wanted Poster", poster_OBJ, 2, "A Wild West styled Wanted poster depicting our dear headmaster...") default tonks_poster_ITEM = Decoration("tonks_poster", "decoration", "Tonks Poster", poster_OBJ, 2, "Professor Tonks in her early twenties.") +default naughty_list_ITEM = Decoration("santas_naughty_list", "decoration", "Santa's Naughty List", poster_OBJ, 2, "See who was a bad boy, or a bad girl this year!", replace_action=Jump("naughty_list")) default stag_trophy_ITEM = Decoration("stag_trophy", "decoration", "Stag Trophy", trophy_OBJ, 3, "A perfect decoration over your mantelpiece to add a sense of masculinity to the office.") default crest_trophy_ITEM = Decoration("crest_trophy", "decoration", "Hogwarts Crest", trophy_OBJ, 3, "A perfect decoration for the headmaster.") @@ -44,3 +45,5 @@ default small_owl_ITEM = Decoration("small_owl", "decoration", "Small Owl", owl_ default xmas_lights_ITEM = Decoration("xmas_lights", "decoration", "Christmas Lights", chandelier_OBJ, 5, "A programmable set of LED lights. Remote control batteries not included.", replaces=True, room_image="xmas_lights_alternate", replace_action=Jump("xmas_lights_settings"), replace_anchor=(0.0, 0.0), replace_pos=(0, 0)) default xmas_wreaths_ITEM = Decoration("xmas_wreaths", "decoration", "Christmas Wreaths", door_OBJ, 5, "Chrismtas Wreaths to spread the christmas cheer.", room_image="xmas_wreaths") default xmas_giftchair_ITEM = Decoration("xmas_giftchair", "decoration", "Christmas Wreaths", chair_OBJ, 5, "A baby-sized gift-wrapped box. I wonder what's inside?", room_image="xmas_giftchair") +default xmas_garland_ITEM = Decoration("xmas_garland", "decoration", "Christmas Garland", chandelier_OBJ, 5, "A ever-so-green enchanted garland to get you into christmas spirit!", replace_anchor=(0.0, 0.0), replace_pos=(0, 0)) +default xmas_window_santa_ITEM = Decoration("xmas_window_santa", "decoration", "Christmas Window Enchantement", window_OBJ, 5, "A window enchantment that will make you think twice before saying \"I don't believe in Santa\" ever again.", room_image="xmas_window_santa", replace_anchor=(0.0, 0.0), replace_pos=(0,0)) diff --git a/game/scripts/inventory/game.rpy b/game/scripts/inventory/game.rpy index 1e36c956..fd5edf62 100644 --- a/game/scripts/inventory/game.rpy +++ b/game/scripts/inventory/game.rpy @@ -59,7 +59,7 @@ init python: @weather.setter def weather(self, value): if value == "random": - value = random_choices(self.weather_types, weights=self.weather_weights)[0] + 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)) diff --git a/game/scripts/minigames/cardgame/__card_game_init__.rpy b/game/scripts/minigames/cardgame/__card_game_init__.rpy index a5abfdcf..2bc6d87f 100644 --- a/game/scripts/minigames/cardgame/__card_game_init__.rpy +++ b/game/scripts/minigames/cardgame/__card_game_init__.rpy @@ -12,8 +12,8 @@ default currentpage = 0 # Rules(Shown Cards, Sudden Death, Reverse, Dobelt_number) default standard_rules = [0, False, False, False] -default playercolor_rgb = (51, 92, 147, 255) -default enemycolor_rgb = (116, 0, 0, 255) +default playercolor_rgb = Color((51, 92, 147, 255)) +default enemycolor_rgb = Color((116, 0, 0, 255)) default geniecard_level = 1 default tokens = 0 diff --git a/game/scripts/minigames/cardgame/_deck_builder_.rpy b/game/scripts/minigames/cardgame/_deck_builder_.rpy index 56010b49..1fcca286 100644 --- a/game/scripts/minigames/cardgame/_deck_builder_.rpy +++ b/game/scripts/minigames/cardgame/_deck_builder_.rpy @@ -172,8 +172,8 @@ screen deck_builder_gallery(): label color_change: python: - playercolor_rgb = tuple(color_picker(list(playercolor_rgb), False, "Player border")) - enemycolor_rgb = tuple(color_picker(list(enemycolor_rgb), False, "Enemy border")) + playercolor_rgb = tuple(color_picker(playercolor_rgb), False, "Player border") + enemycolor_rgb = tuple(color_picker(enemycolor_rgb), False, "Enemy border") jump deck_builder 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 0e2b916e..d1f5c8aa 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 @@ -44,23 +44,23 @@ label a_bad_time_to_disrobe_part_1: gen "Well, for today's favour I have a prop for you to use." ("base", xpos="far_left", ypos="head") - her "A prop sir?" ("base", "base", "base", "mid") + her "A prop, sir?" ("base", "base", "base", "mid") gen "Yes, I'd like you to put this invisibility cloak on and sneak into one of the boy only areas of the school." ("base", xpos="far_left", ypos="head") her "Well, I guess that would be fine..." ("base", "base", "base", "mid") - her "Seems a bit different than your usual requests." ("soft", "base", "base", "R", cheeks="blush") + her "Although it's a bit different from your usual requests." ("soft", "base", "base", "R", cheeks="blush") gen "You'd be naked of course." ("base", xpos="far_left", ypos="head") - her "Naked!?! But what if someone saw me?" ("open", "wide", "base", "stare") + her "Naked!?! But what if someone sees me?" ("open", "wide", "base", "stare") - gen "You'll be wearing the cloak..." ("base", xpos="far_left", ypos="head") + gen "You'd be wearing the cloak..." ("base", xpos="far_left", ypos="head") gen "No one would even know you were there." ("base", xpos="far_left", ypos="head") her "{size=-7}Thirty-five points...{/size}" ("annoyed", "closed", "angry", "mid") - gen "Twenty-five points you said? sounds good to me." ("base", xpos="far_left", ypos="head") + gen "Twenty-five points, you said? sounds good to me." ("base", xpos="far_left", ypos="head") call her_chibi("stand","desk","base",flip=True) her "{size=-7}You heard what I said...{/size}" ("disgust", "closed", "base", "mid", flip=True, trans=dissolve) @@ -79,7 +79,7 @@ label a_bad_time_to_disrobe_part_1: call her_chibi("stand","desk","base") - nar "Later that evening, Hermione returns." + nar ">Later that evening, Hermione returns." with d3 hide screen blkfade @@ -93,23 +93,25 @@ label a_bad_time_to_disrobe_part_1: pause .8 gen "Now, spill the beans." ("base", xpos="far_left", ypos="head") - her "I.. I don't have any beans on me sir." ("soft", "slit", "low", "stare") + her "I--{w=0.2} I don't have any beans on me, sir." ("soft", "slit", "low", "stare") gen "(Is this girl for real?)" ("base", xpos="far_left", ypos="head") - gen "It's just an expression, tell me... did you complete your assignment?" ("base", xpos="far_left", ypos="head") - her "I did sir. I snuck into the boys dormitory using the cloak as you suggested." ("soft", "happyCl", "base", "mid") + gen "It's just an expression..." ("base", xpos="far_left", ypos="head") + gen "Now tell me...{w=0.4} Did you complete your assignment?" ("base", xpos="far_left", ypos="head") + her "I did, sir...{w=0.4} I snuck into the boys dormitory using the cloak, as you suggested." ("soft", "happyCl", "base", "mid") gen "Naked?" ("base", xpos="far_left", ypos="head") - her "Naked... --ish." ("disgust", "base", "base", "R") - gen "How can you be naked... -ish?" ("base", xpos="far_left", ypos="head") - her "Well, I had my underwear on, I'd be cold otherwise." ("base", "base", "base", "mid") - gen "Cold? You'd have the cloak on you..." ("base", xpos="far_left", ypos="head") - gen "What happened next then?" ("base", xpos="far_left", ypos="head") + her "Naked...{w=0.2} --ish." ("disgust", "base", "base", "R") + gen "How can you be naked...{w=0.2} --ish?" ("base", xpos="far_left", ypos="head") + her "Well, I had to keep my underwear on...{w=0.2} I'd get cold otherwise." ("soft", "narrow", "base", "R") + gen "Cold? How would you be cold with the cloak on?" ("base", xpos="far_left", ypos="head") + her "*Ehm*..." ("digust", "base", "base", "mid") + gen "*Sigh*... Just tell me what happened next." ("base", xpos="far_left", ypos="head") her "Well, a few of the boys were in there." ("base", "base", "base", "mid") her "They were playing wizards chess..." ("base", "base", "base", "mid") her "Pretty poorly in fact." ("disgust", "wink", "base", "mid") gen "..." ("base", xpos="far_left", ypos="head") - gen "I'm sorry miss Granger but you're going to have to do better than this." ("base", xpos="far_left", ypos="head") - gen "I expect better from you by now." ("base", xpos="far_left", ypos="head") + gen "I'm sorry miss Granger, but you're going to have to do better than this." ("base", xpos="far_left", ypos="head") + gen "I expect more from you by now." ("base", xpos="far_left", ypos="head") her "So, no points then?" ("angry", "narrow", "annoyed", "mid") gen "No, I know you can do better." ("base", xpos="far_left", ypos="head") her "Fine! I'll do better next time. Double points! I'll show you!" ("angry", "narrow", "angry", "R") @@ -120,7 +122,7 @@ label a_bad_time_to_disrobe_part_1: with d3 show screen quistion_pop_up("{color=#cbcbcb}Hermione will remember that{/color}") - nar "Hermione returns the next morning, looking nervous but more determined than yesterday." + nar ">Hermione returns the next morning, looking nervous but more determined than yesterday." $ game.daytime = True call update_interface_color @@ -132,9 +134,9 @@ label a_bad_time_to_disrobe_part_1: hide screen blkfade with d3 - her "I see that you have the cloak ready for me sir." ("base", "base", "base", "R",xpos="right",ypos="base") - gen "Indeed, I'm expecting better from you today, girl." ("base", xpos="far_left", ypos="head") - her "I won't disappoint you sir!" ("grin", "base", "base", "mid") + her "I see that you have the cloak ready for me, sir." ("base", "base", "base", "R",xpos="right",ypos="base") + gen "Indeed... And I'm expecting better from you today, girl." ("base", xpos="far_left", ypos="head") + her "I won't disappoint you, sir!" ("grin", "base", "base", "mid") gen "I'll be the judge of that..." ("base", xpos="far_left", ypos="head") hide hermione_main @@ -145,7 +147,7 @@ label a_bad_time_to_disrobe_part_1: call update_interface_color call music_block - nar "Later that evening a distraught-looking Hermione enters the office." + nar ">Later that evening a distraught-looking Hermione enters the office." call her_chibi("top_naked","desk","base") $ hermione.strip("robe", "accessory") @@ -155,41 +157,43 @@ label a_bad_time_to_disrobe_part_1: with d5 her "..." ("upset", "base", "base", "mid", tears="mascara_soft",xpos="right",ypos="base") - gen "What happened? Where's your shirt?" ("base", xpos="far_left", ypos="head") - her "What does it look like?" ("upset", "base", "base", "mid", tears="mascara_soft") - gen "Well, I know what it looks like..." ("base", xpos="far_left", ypos="head") + gen "What the-- What, happened? Where's your shirt?" ("base", xpos="far_left", ypos="head") + her "What do you think has happened?!" ("upset", "base", "base", "mid", tears="mascara_soft") + gen "Well, I know what I think... But I'd like to hear it from you." ("base", xpos="far_left", ypos="head") her "I didn't want to disappoint, sir, so I did what you asked..." ("soft", "base", "base", "mid", tears="mascara_soft") - her "I went into the girls changing room at the quidditch pitch and put my clothes in one of the lockers." ("base", "base", "base", "mid", tears="mascara_soft") + her "I went into the girls changing room at the Quidditch pitch, undressing and leaving my clothes in one of the lockers." ("base", "base", "base", "mid", tears="mascara_soft") gen "Well done. And then?" ("base", xpos="far_left", ypos="head") - her "I took the cloak and snuck into the boys changing room..." ("soft", "squint", "base", "R", tears="mascara") - her "I stood next to the doorway so that they wouldn't bump into me." ("open", "base", "base", "mid", tears="mascara") - gen "Great idea... and no one noticed?" ("base", xpos="far_left", ypos="head") - her "Well, at first... This damn cloak is too small." ("angry", "base", "base", "mid", tears="mascara") - her "I thought I would be short enough to fit under it..." ("disgust", "base", "base", "down", tears="mascara") - her "I didn't notice that my feet were visible..." ("upset", "base", "angry", "mid", tears="mascara") - gen "(Well, that's a shame.)" ("base", xpos="far_left", ypos="head") - her "One of the boys saw me shuffle and moved to see what it was so I tried to get away but I slipped... and... and." ("upset", "wide", "base", "shocked", tears="mascara") + her "I took the cloak and snuck into the boys changing room--" ("soft", "squint", "base", "R", tears="mascara") + her "I didn't want any of them to bump into me so I decided to stand just around the corner of the doorway." ("open", "base", "base", "mid", tears="mascara") + gen "Judging by your current state, I assume it didn't play out as you thought." ("base", xpos="far_left", ypos="head") + her "Well, it did at first... But I had made a miscalculation." ("angry", "base", "base", "mid", tears="mascara") + her "By thinking I was short enough to fit under the cloak..." ("disgust", "base", "base", "down", tears="mascara") + gen "Right, so your--" ("base", xpos="far_left", ypos="head") + her "My feet were completely visible the whole time!" ("upset", "base", "angry", "mid", tears="mascara") + gen "..." ("angry", xpos="far_left", ypos="head") + her "And before I knew it, one of the boys were moving closer to inspect them, so I tried to get away, but I slipped...{w=0.4} and...{w=0.4} and." ("upset", "wide", "base", "shocked", tears="mascara") gen "And what?" ("angry", xpos="far_left", ypos="head") - her "And I slipped and my butt fell out!" ("scream", "wide", "worried", "stare", tears="mascara") + her "My butt fell out!" ("scream", "wide", "worried", "stare", tears="mascara") - gen "{size=18}Thirty points to....{/size}" ("grin", xpos="far_left", ypos="head") + gen "{size=18}Thirty points to--{/size}" ("grin", xpos="far_left", ypos="head") - her "I'm not done!" ("open", "narrow", "worried", "down", tears="mascara") + her "I'm not finished!" ("open", "narrow", "worried", "down", tears="mascara") gen "Sorry, you carry on my dear!" ("base", xpos="far_left", ypos="head") - her "I ran out and grabbed what I could of my clothes... I think the boy may have seen me." ("soft", "narrow", "worried", "mid_soft", tears="mascara") - her "Professor.... I'm beginning to have second thoughts about this cloak idea." ("soft", "narrow", "worried", "mid_soft", tears="mascara") - gen "The boy didn't see your face, that's what matters." ("base", xpos="far_left", ypos="head") - gen "You could've draped the cloak around your head and it would be enough." ("base", xpos="far_left", ypos="head") + her "I sprinted out of there, grabbing as many of my clothes that I could... But even then, I think the boy may have seen me!" ("soft", "narrow", "worried", "mid_soft", tears="mascara") + her "Professor... I'm beginning to have second thoughts about this whole cloak idea." ("soft", "narrow", "worried", "mid_soft", tears="mascara") + gen "Don't be silly... The boy didn't even see your face, that's what matters." ("base", xpos="far_left", ypos="head") + her "But--" ("clench", "narrow", "worried", "mid_soft", tears="mascara") + gen "Even if the cloak was only big enough to cover that bushy head of yours, it would be enough to keep anyone from knowing--" ("base", xpos="far_left", ypos="head") her "Professor!" ("shock", "wide", "base", "mid", tears="mascara") gen "Just trying to lighten the mood." ("base", xpos="far_left", ypos="head") - gen "Here's an extra five points for a job well done, miss Granger." ("base", xpos="far_left", ypos="head") + gen "Although I'm sure an extra five points for a job well done should suffice..." ("base", xpos="far_left", ypos="head") gen "Thirty-five points to Gryffindor!" ("grin", xpos="far_left", ypos="head") her "Thank you professor..." ("grin", "base", "base", "mid", tears="mascara") call her_walk ("door", "base") - her "(He's right, they wouldn't recognise me if I didn't show my face...)" ("base", "base", "base", "mid", cheeks="blush", tears="mascara", ypos="head", flip=False) - her "(would they?)" ("base", "base", "base", "mid", cheeks="blush", tears="mascara") + her "(I suppose he's right... Surely nobody would recognize me based on the lower half of my body...)" ("soft", "base", "base", "R", cheeks="blush", tears="mascara", flip=True) + her "(Would they?)" ("annoyed", "narrow", "base", "mid", cheeks="blush", tears="mascara") call her_chibi("leave") @@ -212,54 +216,54 @@ label a_bad_time_to_disrobe_part_2: gen "Good afternoon miss Granger." ("base", xpos="far_left", ypos="head") her "Good afternoon professor, what can I do for you today?" ("base", "base", "base", "mid",xpos="right",ypos="base") gen "Glad you asked, I've got another task for you." ("base", xpos="far_left", ypos="head") - her "And what task may that be professor." ("soft", "base", "base", "R") - gen "Well miss Granger, I think somebody owes me a invisibility cloak." ("base", xpos="far_left", ypos="head") + her "Another task? And what task may that be professor?" ("soft", "base", "base", "R") + gen "Well, miss Granger... I think somebody owes me a invisibility cloak." ("base", xpos="far_left", ypos="head") her "Oh, do you want me to collect it from somebody?" ("open", "base", "base", "mid") - gen "That somebody is you miss Granger..." ("base", xpos="far_left", ypos="head") + gen "That somebody is you, miss Granger..." ("base", xpos="far_left", ypos="head") gen "You left my cloak at the scene of the crime." ("base", xpos="far_left", ypos="head") - her "What crime professor, what have you gotten me into?" ("upset", "narrow", "annoyed", "mid") - gen "I'm talking about when you went to visit the boys changing room." ("base", xpos="far_left", ypos="head") + her "Crime? Professor, what have you gotten me into?" ("upset", "narrow", "annoyed", "mid") + gen "I'm talking about when you went for a visit to the boys changing room." ("base", xpos="far_left", ypos="head") gen "Or have you forgotten already?" ("base", xpos="far_left", ypos="head") her "{size=-7}I've tried to.{/size}" ("upset", "base", "worried", "R") gen "Sorry?" ("base", xpos="far_left", ypos="head") her "I said, I do remember." ("normal", "base", "base", "R") - gen "Right, well. Good invisibility cloaks are pretty hard to come by..." ("base", xpos="far_left", ypos="head") - gen "(I think...)" ("base", xpos="far_left", ypos="head") - her "No they're not... they're mass produced as far as I know." ("annoyed", "base", "base", "mid") + gen "Right... Well, good invisibility cloaks are pretty hard to come by..." ("base", xpos="far_left", ypos="head") + gen "(I think.)" ("base", xpos="far_left", ypos="head") + her "Really? I thought they were mass-produced?" ("annoyed", "base", "base", "mid") her "By house elves I bet..." ("disgust", "closed", "angry", "mid") - gen "Hey now, I know they might be small but I wouldn't call them elves." ("base", xpos="far_left", ypos="head") + gen "Hey now... I know they might be small, but I wouldn't call them elves." ("base", xpos="far_left", ypos="head") gen "In any case, the cloak has more of a sentimental value to me... lots of memories." ("base", xpos="far_left", ypos="head") gen "(Like the time where your butt fell out of it.)" ("grin", xpos="far_left", ypos="head") gen "Oh, the memories... you must retrieve it for me." ("grin", xpos="far_left", ypos="head") her "Fine, I'll do it... even though I hold you partly responsible for the situation that lead to me dropping it." ("annoyed", "closed", "angry", "mid") - gen "Great, let's not dwell on the past then." ("base", xpos="far_left", ypos="head") + gen "Great! Let's not dwell on the past then." ("base", xpos="far_left", ypos="head") her "..." ("normal", "narrow", "annoyed", "mid") her "Do you happen to have any idea of where it is?" ("open", "base", "base", "mid") - gen "Well, it hasn't been reported as found so unless someone stole it there's only one place it could be." ("base", xpos="far_left", ypos="head") + gen "Well, it hasn't been reported as found, so unless it's been stolen, there's only one place it could be." ("base", xpos="far_left", ypos="head") her "The boys changing room?" ("base", "narrow", "worried", "down") gen "The boys changing room." ("grin", xpos="far_left", ypos="head") her "And how many house points?" ("base", "base", "base", "mid") gen "For what exactly?" ("base", xpos="far_left", ypos="head") her "Retrieving the cloak of course." ("annoyed", "base", "base", "mid") - gen "You're demanding house points, for your own mistakes miss Granger?" ("base", xpos="far_left", ypos="head") + gen "You're demanding house points, for your own mistakes, miss Granger?" ("base", xpos="far_left", ypos="head") her "But I thought..." ("upset", "base", "worried", "mid") gen "..." ("base", xpos="far_left", ypos="head") her "..." ("upset", "narrow", "worried", "down") gen "Fine, but only if we continue where we left of." ("base", xpos="far_left", ypos="head") her "With my butt out?!?" ("disgust", "wide", "worried", "stare") - gen "With your bu--" ("base", xpos="far_left", ypos="head") - gen "No, well... yes, but this time you'll be prepared." ("base", xpos="far_left", ypos="head") - her "But... what if they recognise me sir?" ("open", "base", "worried", "mid") - gen "You'd already know if they had recognised you..." ("base", xpos="far_left", ypos="head") + gen "With your butt--" ("base", xpos="far_left", ypos="head") + gen "No, well... Yes, but this time you'll be prepared." ("base", xpos="far_left", ypos="head") + her "But... What if they recognise me, sir?" ("open", "base", "worried", "mid") + gen "if they had recognized you, then I'm sure you'd already know..." ("base", xpos="far_left", ypos="head") her "(That's true...)" ("soft", "base", "base", "mid_soft", cheeks="blush") - her "And then what, you want me to just walk away?" ("base", "base", "base", "mid", cheeks="blush") - gen "You can figure it out yourself miss Granger. Once you have the cloak it shouldn't be an issue getting away." ("base", xpos="far_left", ypos="head") + her "And then what? You want me to be able to just walk out of there?" ("base", "base", "base", "mid", cheeks="blush") + gen "That's for you to figure out, miss Granger. Either way, once you have the cloak it shouldn't be an issue getting away." ("base", xpos="far_left", ypos="head") her "And I want--" ("open", "base", "base", "mid") gen "I'll give you forty house points for it." ("base", xpos="far_left", ypos="head") her "(I was going to ask for thirty.)" ("soft", "happy", "base", "R", cheeks="blush") her "I'll do it..." ("base", "base", "base", "mid") - gen "Great, you're doing a great service to your house and making an old man very happy." ("grin", xpos="far_left", ypos="head") - her "By getting your cloak back right?" ("base", "base", "worried", "mid") + gen "Great! You're doing an excellent service to your house, and you're making this old man very happy." ("grin", xpos="far_left", ypos="head") + her "By getting your cloak back, right?" ("base", "base", "worried", "mid") gen "Right..." ("base", xpos="far_left", ypos="head") call her_walk(action="leave") @@ -285,70 +289,77 @@ label a_bad_time_to_disrobe_part_2: gen "Mission success?" ("base", xpos="far_left", ypos="head") her "..." ("normal", "narrow", "base", "dead", cheeks="blush") gen "Miss Granger?" ("base", xpos="far_left", ypos="head") - her "Oh, hello professor, yes. Here's your cloak back." ("base", "narrow", "worried", "down") + her "Oh, hello professor... Here's your cloak back." ("base", "narrow", "worried", "down") gen "..." ("base", xpos="far_left", ypos="head") - gen "And?" ("base", xpos="far_left", ypos="head") - her "And what?" ("normal", "happyCl", "worried", "mid") - gen "And what about your assignment. How did it go?" ("base", xpos="far_left", ypos="head") - her "Oh... yes, it went very well thank you... no hurdles in any way." ("soft", "base", "worried", "R", cheeks="blush") - gen "Your face is glowing miss Granger, I can tell when you're being untruthful." ("base", xpos="far_left", ypos="head") + gen "So?" ("base", xpos="far_left", ypos="head") + her "So, what?" ("normal", "happyCl", "worried", "mid") + gen "So, what about your assignment? How did it go?" ("base", xpos="far_left", ypos="head") + her "Oh, the assignment... It went very well, thank you... no hurdles in any way." ("soft", "base", "worried", "R", cheeks="blush") + gen "Your face is glowing, miss Granger... It's not hard to tell when you're being untruthful." ("base", xpos="far_left", ypos="head") her "It is? I didn't even notice..." ("normal", "narrow", "base", "down", cheeks="blush") gen "You're going to have to elaborate if you'd like those house points." ("base", xpos="far_left", ypos="head") - her "Oh... okay, I'l just go ahead then..." ("mad", "base", "base", "mid") + her "Oh... okay... I'll just go ahead then." ("mad", "base", "base", "mid") gen "Let me get the popcorn." ("base", xpos="far_left", ypos="head") her "popcorn? Where would you get popcorn from in this office?" ("annoyed", "base", "base", "mid") gen "Magic cupboard." ("grin", xpos="far_left", ypos="head") - her "Right... well, I'll just start in that case shall I?" ("base", "narrow", "base", "R_soft") + her "Right... I'll just start from the beginning, shall I?" ("base", "narrow", "base", "R_soft") her "..." ("base", "base", "base", "mid", cheeks="blush") - her "So... I went to the boys changing room when they were in quidditch practice." ("open", "narrow", "worried", "down") - gen "*CRUNCH*" ("base", xpos="far_left", ypos="head") - her "It's very messy in there... I thought the girls changing room was bad..." ("base", "narrow", "base", "down") - gen "*CRUNCH* *Chew* *Chew*" ("base", xpos="far_left", ypos="head") - gen "*CRUNCH*" ("base", xpos="far_left", ypos="head") + her "So... I went to the boys changing room when they were busy with their Quidditch practice." ("open", "narrow", "worried", "down") + gen "{size=+2}*CRUNCH*{/size}" ("base", xpos="far_left", ypos="head") + her "It's very messy in there... And here I thought that the girls changing room was bad..." ("base", "narrow", "base", "down") + gen "{size=+3}*CRUNCH* *Chew* *Chew*{/size}" ("base", xpos="far_left", ypos="head") + gen "{size=+4}*CRUNCH*{/size}" ("base", xpos="far_left", ypos="head") her "Anyway... so I rummaged around in that mess..." ("annoyed", "base", "worried", "mid") - her "I knew it had to have been somewhere between the showers and the doorway..." ("base", "base", "base", "mid") - her "After looking around for a while I noticed that the cloak had been pushed under one of the benches lining the wall." ("open", "narrow", "worried", "down") - her "So I grabbed it and I thought I might as well disrobe and hide in the shower room with the cloak on." ("base", "narrow", "base", "down") - her "But as I was stuffing my clothes in one of the lockers a boy walked in." ("clench", "base", "worried", "mid") - gen "*CRUNCH*" ("base", xpos="far_left", ypos="head") + her "I knew it had to be somewhere between the showers and the doorway..." ("base", "base", "base", "mid") + her "And after looking around for a while, I noticed that the cloak had been pushed underneath one of the benches lining the wall." ("open", "narrow", "worried", "down") + her "So as I was grabbing for it, I thought to myself... Well, I've already managed to sneak in there so perhaps I could earn myself some points as well..." ("open", "narrow", "worried", "down") + her "So I took my clothes off again, and while draping the cloak over me, I began walking to the showers." ("base", "narrow", "base", "down") + her "But, just as I was about to enter, one of the Slytherin boys emerged in front of me!" ("clench", "base", "worried", "mid") + gen "{size=+6}*CRUNCH*{/size}" ("base", xpos="far_left", ypos="head") her "Professor!" ("scream", "base", "angry", "mid") - gen "*Cough* *Cough*... sorry." ("angry", xpos="far_left", ypos="head") - her "It is hard to talk about this as it is without your chewing distracting me." ("annoyed", "base", "angry", "mid") + gen "*Cough* *Cough*...{w=0.4} Sorry." ("angry", xpos="far_left", ypos="head") + her "It is hard enough to talk about this as it is, without your chewing distracting me." ("annoyed", "base", "angry", "mid") + + call play_sound("gulp") + gen "*Gulp*" ("base", xpos="far_left", ypos="head") + her "Anyhow..." ("base", "narrow", "angry", "R") - her "I expected the team to be going for at least another thirty minutes." ("open", "base", "base", "mid") + her "I was expecting that the team would be practising for at least another thirty minutes." ("open", "base", "base", "mid") her "But that's when the boy walked in..." ("normal", "closed", "base", "mid") - her "And I panicked and threw the cloak over myself and hid in one of the toilets." ("open", "base", "worried", "R") + her "And I panicked and rushed to hide in one of the toilets." ("open", "base", "worried", "R") gen "Smart." ("base", xpos="far_left", ypos="head") her "..." ("base", "base", "base", "mid", cheeks="blush") - her "Well, it would've been if I had remembered to lock it." ("base", "narrow", "base", "down") - gen "Not that smart..." ("grin", xpos="far_left", ypos="head") + her "If I had been smart, I would've taken into consideration why someone might go to the changing room before practice is finished..." ("base", "narrow", "base", "down") + gen "To drain the snake no doubt." ("grin", xpos="far_left", ypos="head") her "Do you want me to continue or not?" ("annoyed", "narrow", "annoyed", "mid") gen "You're the one receiving the points here, I'm just providing the means of earning them." ("base", xpos="far_left", ypos="head") - her "..." ("normal", "narrow", "worried", "down") + her "*Hmph*..." ("normal", "narrow", "worried", "down") her "As I was saying..." ("base", "narrow", "base", "down") - her "I went into one of the toilets and I heard the boy shuffling outside." ("base", "closed", "base", "mid") - her "The room was so small so I tried to back into a corner, but as he came in I knew it wasn't going to work..." ("base", "narrow", "base", "down", cheeks="blush") - her "So I prayed he wasn't about to sit down and instead I positioned myself above the toilet with my legs around the base." ("clench", "happyCl", "worried", "mid") - gen "And did he sit down or not?" ("base", xpos="far_left", ypos="head") - her "No, but he was close enough for me to feel his..." ("mad", "squint", "worried", "up") + her "At this point it was already too late... Just as I realised my mistake, he had already opened the door." ("base", "closed", "base", "mid") + her "Since the room was so small, I tried to back into a corner... But to no avail..." ("base", "narrow", "base", "down", cheeks="blush") + her "The only thing I could do was pray that he wasn't about to sit down, and to position myself right up against the back of the toilet... With my legs around the base." ("clench", "happyCl", "worried", "mid") + her "..." ("disgust", "narrow", "base", "down") + gen "And did he?" ("base", xpos="far_left", ypos="head") + her "No... But he was close enough for me to feel his..." ("mad", "squint", "worried", "up") her "His..." ("base", "slit", "worried", "ahegao") - gen "His what? miss Granger..." ("base", xpos="far_left", ypos="head") - her "Well... His Penis brushed up against my butt." ("annoyed", "closed", "base", "mid", cheeks="blush") + gen "His what, Miss Granger?" ("base", xpos="far_left", ypos="head") + her "His penis... It brushed up against the robes" ("annoyed", "closed", "base", "mid", cheeks="blush") gen "How did he manage that?" ("base", xpos="far_left", ypos="head") - her "The boy wasn't in there to relieve himself in the way I assumed..." ("open", "closed", "angry", "mid", cheeks="blush") - her "I guess he wasn't paying attention to what sensation he was feeling on the tip of his..." ("normal", "base", "worried", "mid", cheeks="blush") - her "Anyway..." ("open", "base", "worried", "R", cheeks="blush") + her "Well... The boy wasn't there for the purpose of relieving himself... Well, at least not how one would expect it..." ("open", "closed", "angry", "mid", cheeks="blush") + gen "He was jacking it!?" ("base", xpos="far_left", ypos="head") + her "*Ehm*... Yes... And I suppose he was too busy to notice that his tip was brushing up against--" ("normal", "base", "worried", "mid", cheeks="blush") + her "*Ahem*..." ("open", "base", "worried", "R", cheeks="blush") gen "..." ("base", xpos="far_left", ypos="head") her "I'd like my points now." ("base", "narrow", "worried", "down") - gen "Certainly miss Granger..." ("base", xpos="far_left", ypos="head") + gen "Certainly, miss Granger..." ("base", xpos="far_left", ypos="head") gen "Forty points to Gryffindor!" ("base", xpos="far_left", ypos="head") her "Thank you professor..." ("soft", "base", "base", "mid_soft") call her_walk("door", "base") - her "(I'm glad I had time to clean the cloak before walking in here...)" ("base", "narrow", "base", "dead", cheeks="blush", flip=True) - her "(That thing was massive...)" ("normal", "narrow", "worried", "down", cheeks="blush") - her "(What am I thinking? snap out of it...)" ("base", "happyCl", "worried", "mid", cheeks="blush") + her "(I probably shouldn't tell him about having to clean the cloak before bringing it back to him...)" ("base", "narrow", "base", "dead", cheeks="blush", flip=True) + her "(*Mmm*... I can still remember the smell of it...)" ("normal", "narrow", "worried", "down", cheeks="blush") + her "(Wait, what am I thinking? Snap out of it, Hermione...)" ("base", "happyCl", "worried", "mid", cheeks="blush") call her_chibi("leave") diff --git a/game/scripts/minigames/mirror/events/a_christmas_tale.rpy b/game/scripts/minigames/mirror/events/a_christmas_tale.rpy index 65ea68ff..36378bff 100644 --- a/game/scripts/minigames/mirror/events/a_christmas_tale.rpy +++ b/game/scripts/minigames/mirror/events/a_christmas_tale.rpy @@ -90,11 +90,11 @@ label a_christmas_tale: show screen bld1 with d3 - san1 "Oh hello there my friend." + gen santa "Oh hello there my friend." ("base", xpos="far_left", ypos="head") nar "Said the figure at last." - san1 "I thought you might be here, but where's that genie?" + gen "I thought you might be here, but where's that genie?" ("base", xpos="far_left", ypos="head") sna "..." (face="snape_25") - san1 "Blast..." + gen "Blast..." ("base", xpos="far_left", ypos="head") sna "Genie..." (face="snape_24") nar "Said the teacher." @@ -102,16 +102,16 @@ label a_christmas_tale: sna "Have you been drinking again?" (face="snape_25") sna "And I don't mean drinking tea." (face="snape_29") - san1 "I don't know what you mean." + gen "I don't know what you mean." ("base", xpos="far_left", ypos="head") nar "Said the large bearded man..." - san2 "I'm Santa of course." - san2 "I bring presents..." - san2 "That's the plan!" + gen "I'm Santa of course." ("grin", xpos="far_left", ypos="head") + gen "I bring presents..." ("grin", xpos="far_left", ypos="head") + gen "That's the plan!" ("grin", xpos="far_left", ypos="head") pause.8 nar "After silence and confusion then Severus said..." sna "Well, just get it over with so I can go back to bed." (face="snape_09") - san1 "Now boy where's your spirit, it's Christmas is it not?" + gen "Now boy where's your spirit, it's Christmas is it not?" ("base", xpos="far_left", ypos="head") sna "Now genie, look here..." (face="snape_24") nar "But then he froze on the spot." @@ -177,7 +177,7 @@ label a_christmas_tale: with d5 pause.8 - san4 "Happy Holidays." + gen "Happy Holidays." ("grin", xpos="far_left", ypos="head") show screen blkfade with d9 diff --git a/game/scripts/minigames/mirror/events/a_christmas_tale2.rpy b/game/scripts/minigames/mirror/events/a_christmas_tale2.rpy index 335a0b55..6a125a8c 100644 --- a/game/scripts/minigames/mirror/events/a_christmas_tale2.rpy +++ b/game/scripts/minigames/mirror/events/a_christmas_tale2.rpy @@ -85,23 +85,23 @@ label a_christmas_tale2(): with d3 sna "Genie of course... You think I'd fall for that fake beard?" ("snape_05", trans=d3) - san1 "I think you must be mistaken." + gen santa "I think you must be mistaken." ("base", xpos="far_left", ypos="head") hide snape_main hide screen bld1 with d3 nar "Said Santa to the man." show screen bld1 with d3 - san1 "I'm not Genie, I'm Santa!" - san1 "I deliver presents!" - san2 "That's the plan!" + gen "I'm not Genie, I'm Santa!" ("base", xpos="far_left", ypos="head") + gen "I deliver presents!" ("base", xpos="far_left", ypos="head") + gen "That's the plan!" ("grin", xpos="far_left", ypos="head") - san1 "I bring cheers and presents, to all across the land." + gen "I bring cheers and presents, to all across the land." ("base", xpos="far_left", ypos="head") sna "Are you sure about that? I don't see a sack in your hand..." ("snape_01", trans=d3) hide snape_main with d3 - san1 "Be patient dear boy... Don't you give me that face." - san1 "Your gift will get here soon through this office fireplace." + gen "Be patient dear boy... Don't you give me that face." ("base", xpos="far_left", ypos="head") + gen "Your gift will get here soon through this office fireplace." ("base", xpos="far_left", ypos="head") hide screen bld1 with d3 @@ -113,20 +113,20 @@ label a_christmas_tale2(): show screen bld1 with d3 - san2 "Now check out this girl!" + gen "Now check out this girl!" ("grin", xpos="far_left", ypos="head") - ton "" ("horny", "narrow", "base", "mid", hair="happy", xpos="mid", trans=d3) + ton "" ("horny", "narrow", "base", "mid", hair="happy", xpos="mid", ypos="base", trans=d3) call ctc hide tonks_main sna "Now that is a present!" ("snape_13", trans=d3) sna "You've outdone yourself." ("snape_20") hide snape_main - san1 "That's not your present, that's my sexy helper elf..." + gen "That's not your present, that's my sexy helper elf..." ("base", xpos="far_left", ypos="head") ton "Eye's up here boy..." ("base", "base", "base", "mid", hair="happy", trans=dissolve) ton "Your present is in this sack..." ("soft", "narrow", "base", "down", hair="happy") ton "These milkers belong to Santa!" ("horny", "narrow", "base", "L", hair="horny") - san2 "They're my after-work Christmas snack!" + gen "They're my after-work Christmas snack!" ("grin", xpos="far_left", ypos="head") hide tonks_main hide screen bld1 @@ -146,7 +146,7 @@ label a_christmas_tale2(): show ch_ton elf zorder tonks_chibi.zorder at Transform(pos=(750, 430), xzoom=1) with d3 - her "" ("soft", "base", "base", "mid", cheeks="blush", trans=dissolve) + her "" ("soft", "base", "base", "mid", cheeks="blush", xpos="base", ypos="base", trans=d3) nar "In front of him a girl, no longer concealed." nar "With a bow around her pussy and ribbons around her tits." @@ -156,20 +156,20 @@ label a_christmas_tale2(): sna "Now that's a proper present!" ("snape_13", trans=d3) hide snape_main with d3 - san2 "Now unwrap those naughty bits!" + gen "Now unwrap those naughty bits!" ("grin", xpos="far_left", ypos="head") ton "Wait, I just remembered, don't unwrap the present yet!" ("mad", "shocked", "base", "L", hair="happy", trans=dissolve) ton "If he's not been good this year then a gift he cannot get." ("open", "closed", "shocked", "mid", hair="happy") hide tonks_main with d3 - san2 "I'm certain he's been good... Now unwrap her I insist!" + gen "I'm certain he's been good... Now unwrap her I insist!" ("grin", xpos="far_left", ypos="head") ton "I'm not so sure myself... His offences fill this list." ("upset", "narrow", "base", "down", hair="happy", trans=dissolve) hide tonks_main with d3 - san1 "Then read it for me elf... I'm sure it will be quick..." + gen "Then read it for me elf... I'm sure it will be quick..." ("base", xpos="far_left", ypos="head") hide screen bld1 with d3 nar "The elf then unrolled it... A scroll six inches thick." @@ -182,7 +182,7 @@ label a_christmas_tale2(): hide hermione_main with d3 - san1 "That can't be true!" + gen "That can't be true!" ("base", xpos="far_left", ypos="head") sna "Mere fabrications that, indeed..." ("snape_35", trans=d3) hide snape_main with d3 @@ -198,25 +198,25 @@ label a_christmas_tale2(): with d3 ton "So is slapping their ass..." ("disgust", "narrow", "base", "mid", hair="happy") - san1 "Well I'm sure they're all right... It was only a slap..." + gen "Well I'm sure they're all right... It was only a slap..." ("base", xpos="far_left", ypos="head") ton "I'm not done yet santa, there's more..." ("annoyed", "narrow", "base", "L", hair="happy") - san1 "What the crap..." + gen "What the crap..." ("base", xpos="far_left", ypos="head") ton "Stealing mounds of sweets and sniffing girls hair..." ("normal", "base", "raised", "down", hair="happy") sna "Now let's be reasonable for a minute, this list isn't fair!" ("snape_18", trans=d3) hide snape_main with d3 - san1 "I think he's got a point, at least he didn't curse..." + gen "I think he's got a point, at least he didn't curse..." ("base", xpos="far_left", ypos="head") ton "You say that but now, is when the list is getting worse..." ("disgust", "base", "base", "mid", hair="happy") ton "He's bought blowjobs with house points... Now that doesn't sound great..." ("open", "narrow", "base", "down", hair="happy") - san2 "A misprint I'm sure!" + gen "A misprint I'm sure!" ("grin", xpos="far_left", ypos="head") ton "The list says thirty-eight..." ("mad", "wide", "base", "down", hair="happy") ton "Wrapped around his finger... This is making me sick..." ("upset", "base", "base", "down", hair="upset") ton "This list is massive!" ("clench", "wide", "annoyed", "down", hair="angry") - san1 "Then just skim it real quick..." + gen "Then just skim it real quick..." ("base", xpos="far_left", ypos="head") ton "Taking girls books and replacing it with smut..." ("disgust", "narrow", "base", "down", hair="happy") ton "Then punishing them for it by spanking their butt..." ("annoyed", "narrow", "annoyed", "mid", hair="happy") @@ -232,26 +232,26 @@ label a_christmas_tale2(): ton "Spying in the toilets..." ("disgust", "narrow", "base", "down", hair="disgusted") ton "Never knocks on any doors..." ("open", "closed", "base", "mid", hair="happy") - san1 "Never knocks on any doors?!" + gen "Never knocks on any doors?!" ("base", xpos="far_left", ypos="head") nar "Said Santa at last." - san1 "Now that's a big offence!" + gen "Now that's a big offence!" ("base", xpos="far_left", ypos="head") ton "You really think so Santa?" ("annoyed", "wide", "raised", "mid", hair="happy") sna "Blast..." ("snape_11", trans=d3) hide snape_main with d3 - san1 "Sexual acts is one thing... But not knocking on doors!" - san1 "A man without manners is what Santa Claus abhors." - san1 "I can't give you a gift but I offer this advice." - san1 "Most things I will ignore but good manners deem you nice." + gen "Sexual acts is one thing... But not knocking on doors!" ("base", xpos="far_left", ypos="head") + gen "A man without manners is what Santa Claus abhors." ("base", xpos="far_left", ypos="head") + gen "I can't give you a gift but I offer this advice." ("base", xpos="far_left", ypos="head") + gen "Most things I will ignore but good manners deem you nice." ("base", xpos="far_left", ypos="head") - san1 "Now ladies it's time to leave, it is a busy time of year..." - san1 "Let us empty this sack and spread my Christmas cheer." + gen "Now ladies it's time to leave, it is a busy time of year..." ("base", xpos="far_left", ypos="head") + gen "Let us empty this sack and spread my Christmas cheer." ("base", xpos="far_left", ypos="head") ton "This meeting took way too long so we better spread it quick..." ("mad", "base", "base", "L", hair="happy") ton "I hope I get overtime for this..." ("annoyed", "base", "base", "R", hair="happy") hide tonks_main with d3 - san2 "I'll let you ride my magic di--" + gen "I'll let you ride my magic di--" ("grin", xpos="far_left", ypos="head") call gen_chibi("hide") #call ton_chibi("hide") diff --git a/game/scripts/minigames/mirror/events/a_white_christmas.rpy b/game/scripts/minigames/mirror/events/a_white_christmas.rpy index a04f08ea..c12d2c09 100644 --- a/game/scripts/minigames/mirror/events/a_white_christmas.rpy +++ b/game/scripts/minigames/mirror/events/a_white_christmas.rpy @@ -172,7 +172,7 @@ label a_white_christmas: call ton_chibi("stand", xpos="far_right", ypos="base") with d3 - ton "I want a clean match... No trickery!" ("open", "base", "annoyed", "L", ypos="base", trans=d3) + ton "I want a clean match... No trickery!" ("open", "base", "annoyed", "L", xpos="base", ypos="base", trans=d3) ton "Don't you dare to even grope!" ("soft", "narrow", "annoyed", "L") $ renpy.sound.play("sounds/crowd_stomping.ogg") @@ -207,7 +207,7 @@ label a_white_christmas: her "This is a test of will...{w=0.4} Fingers against staff..." ("smile", "narrow", "base", "L", cheeks="blush") - $ hermione.strip("all") + $ hermione.strip("clothes") call ctc $ hermione.set_pose("masturbate") $ hermione.set_body(armleft="on_pussy") @@ -369,6 +369,6 @@ label a_white_christmas: gen "Aaaah!" nar "Ball disintegration." - san4 "Happy Holidays." + gen santa "Happy Holidays." ("grin", xpos="far_left", ypos="head") $ renpy.end_replay() diff --git a/game/scripts/minigames/mirror/events/anal_pirate_event.rpy b/game/scripts/minigames/mirror/events/anal_pirate_event.rpy index c283d2a6..025e2ffc 100644 --- a/game/scripts/minigames/mirror/events/anal_pirate_event.rpy +++ b/game/scripts/minigames/mirror/events/anal_pirate_event.rpy @@ -57,7 +57,7 @@ label anal_pirate_event: call gen_chibi("sit_behind_desk") call hide_blkfade - her "Thank you, captain..." ("grin", "base", "base", "mid",xpos="right",ypos="base", cheeks="blush") + her "Thank you, captain..." ("grin", "base", "base", "mid",xpos="right",ypos="base", cheeks="blush", flip=False) call her_walk(action="leave") call blkfade @@ -68,7 +68,7 @@ label anal_pirate_event: label anal_pirate_event_1: gen "lass... I'd like you to role-play with me." ("base", xpos="far_left", ypos="head") - her "captain...?" ("annoyed", "squint", "base", "mid") + her "captain...?" ("annoyed", "squint", "base", "mid", xpos="right", ypos="base") gen "How familiar ye be wit' th' term \"Swabbing ye poop deck\"?" ("base", xpos="far_left", ypos="head") her "Ninety galleon points..." ("annoyed", "narrow", "annoyed", "mid") @@ -82,7 +82,7 @@ label anal_pirate_event_1: label anal_pirate_event_2: gen "lass?" ("base", xpos="far_left", ypos="head") - her "captain?" ("soft", "base", "base", "mid") + her "captain?" ("soft", "base", "base", "mid", xpos="right", ypos="base") gen "I shall be takin' ye on another voyage today..." ("base", xpos="far_left", ypos="head") her "............." ("open", "squint", "base", "mid") gen "Care t' guess wha' th' destination will be?" ("base", xpos="far_left", ypos="head") @@ -110,7 +110,7 @@ label anal_pirate_event_common_1_2: pause 2 gen "*Hmm*..." ("base", xpos="far_left", ypos="head") $ renpy.play('sounds/boing02.ogg') - her "!!!" ("angry", "wide", "base", "stare", ypos="head", flip=False) + her "!!!" ("angry", "wide", "base", "stare", ypos="head", flip=True) call play_sound("slap") gen "Blistering barnacles!" ("angry", xpos="far_left", ypos="head") her "Ouch!" ("mad", "happyCl", "worried", "mid",tears="soft_blink") @@ -128,7 +128,7 @@ label anal_pirate_event_common_1_2: play music "music/pirate.ogg" fadein 1 fadeout 1 play bg_sounds "sounds/CreakingShip.ogg" - her "Just set sail, captain?!" ("angry", "wide", "base", "stare", ypos="head", flip=False) + her "Just set sail, captain?!" ("angry", "wide", "base", "stare", ypos="head", flip=True) $ renpy.play('sounds/spit.ogg') gen "*SPIT!*" ("angry", xpos="far_left", ypos="head") her "What are ye doing you Seadog!" ("scream", "happyCl", "worried", "mid") @@ -183,7 +183,7 @@ label anal_pirate_event_common_1_2: gen "ARGH!" ("angry", xpos="far_left", ypos="head") "{size=-3}\"Lather me cannon balls first. Lubricate me pegleg!\"{/size}": - her "Oh... Alright..." ("open", "base", "base", "mid", ypos="head", flip=False) + her "Oh... Alright..." ("open", "base", "base", "mid", ypos="head", flip=True) play music "music/pirate.ogg" fadein 1 fadeout 1 play bg_sounds "sounds/CreakingShip.ogg" @@ -371,7 +371,7 @@ label anal_pirate_event_common_1_2: "-Sink her vessel, fill her up-": gen "Argh!" ("angry", xpos="far_left", ypos="head") $ renpy.play('sounds/fuse.ogg') - her "No! AH!" ("scream", "wide", "base", "stare", ypos="head", flip=False) + her "No! AH!" ("scream", "wide", "base", "stare", ypos="head", flip=True) $ renpy.play('sounds/cannon.ogg') call cum_block gen "{size=+15}ARGH!!!!!!!!!!!!!!!!{/size}" ("angry", xpos="far_left", ypos="head") @@ -428,9 +428,8 @@ label anal_pirate_event_common_1_2: pause.8 $ hermione.zorder = 15 # Reset zorder - $ hermione.set_cum(pussy="light") - her "I apologise for saying that I hate you, captain..." ("base", "base", "base", "R",cheeks="blush",tears="mascara", ypos="head", flip=False) + her "I apologise for saying that I hate you, captain..." ("base", "base", "base", "R",cheeks="blush",tears="mascara", ypos="head", flip=True) her "And your cannon is not rusty..." (cheeks="blush",tears="mascara") her "I don't know what's gotten into me..." ("grin", "narrow", "worried", "mid_soft",cheeks="blush",tears="mascara") gen "My cannonfire!" ("grin", xpos="far_left", ypos="head") @@ -459,10 +458,9 @@ label anal_pirate_event_common_1_2: call her_chibi_scene("sex_cum_out", trans=d5) call cum_block - $ hermione.set_cum(crotch="light") call ctc - her "*Ah*...{heart}{heart}{heart}" ("silly", "narrow", "base", "dead", ypos="head", flip=False) + her "*Ah*...{heart}{heart}{heart}" ("silly", "narrow", "base", "dead", ypos="head", flip=True) gen "Aye!!! All over yer hold!" ("angry", xpos="far_left", ypos="head") her "*Ah*... No, me hull!" ("silly", "narrow", "annoyed", "up") hide screen bld1 @@ -476,7 +474,7 @@ label anal_pirate_event_common_1_2: pause.8 gen "Well, I'm done... You can get off my ship now." ("base", xpos="far_left", ypos="head") - her "Yes, captain..." ("silly", "base", "worried", "mid", cheeks="blush",tears="soft", ypos="head", flip=False) + her "Yes, captain..." ("silly", "base", "worried", "mid", cheeks="blush",tears="soft", ypos="head", flip=True) gen "You feeling alright?" ("base", xpos="far_left", ypos="head") her "Yes, captain. It still hurts a little, but..." ("shock", "base", "base", "R",cheeks="blush",tears="soft") gen "But what?" ("base", xpos="far_left", ypos="head") @@ -490,7 +488,7 @@ label anal_pirate_event_common_1_2: label anal_pirate_event_3: gen "How about another booty plunderin, lass?" ("base", xpos="far_left", ypos="head") - her "Of course, captain." ("base", "narrow", "base", "up") + her "Of course, captain." ("base", "narrow", "base", "up", xpos="right", ypos="base") gen "Raise anchor, you little tart!" ("grin", xpos="far_left", ypos="head") stop music fadeout 1.0 @@ -498,7 +496,7 @@ label anal_pirate_event_3: call blkfade $ desk_OBJ.hidden = True - her "........" ("annoyed", "base", "worried", "R", ypos="head", flip=False) + her "........" ("annoyed", "base", "worried", "R", ypos="head", flip=True) gen "*Hmm*..." ("base", xpos="far_left", ypos="head") her "..........." ("open", "base", "base", "mid") $ renpy.play('sounds/gltch.ogg') @@ -543,7 +541,7 @@ label anal_pirate_event_3: menu: gen "..." ("base", xpos="far_left", ypos="head") "{size=-3}\"I would leave me ship in a heartbeat!\"{/size}": - her "What?" ("open", "base", "base", "mid", ypos="head", flip=False) + her "What?" ("open", "base", "base", "mid", ypos="head", flip=True) gen "Aye, if only a lass like ye would board me ship..." ("base", xpos="far_left", ypos="head") her "... Aye...{heart}" ("base", "base", "base", "R") her ".............." ("base", "happy", "base", "mid") @@ -562,7 +560,7 @@ label anal_pirate_event_3: gen "Ye helm be leakin." ("base", xpos="far_left", ypos="head") "{size=-3}\"A pirate not plunderin t' be wit' ye be o' th' picture\"{/size}": - her "I be thinkin that..." ("shock", "narrow", "base", "down",cheeks="blush",tears="crying", ypos="head", flip=False) + her "I be thinkin that..." ("shock", "narrow", "base", "down",cheeks="blush",tears="crying", ypos="head", flip=True) gen "Oh... I jus' love that wee cavern o' yers!" ("base", xpos="far_left", ypos="head") her "....................." ("angry", "narrow", "base", "dead",cheeks="blush",tears="crying") her "Aye... Aft all th' thin's I had t' do fer me crew..." @@ -606,10 +604,9 @@ label anal_pirate_event_3: $ renpy.play('sounds/cannon.ogg') call cum_block with hpunch - $ hermione.set_cum(pussy="light") call ctc - her "!!!" ("scream", "wide", "base", "stare", ypos="head", flip=False) + her "!!!" ("scream", "wide", "base", "stare", ypos="head", flip=True) gen "Shiver me timbers! Argh!" ("base", xpos="far_left", ypos="head") her "*Ah*!{heart} 'tis fillin' me up!{heart} me bilge is takin in water!{heart}" ("silly", "narrow", "annoyed", "up") gen "'tis nah water, wench!" ("base", xpos="far_left", ypos="head") @@ -635,12 +632,10 @@ label anal_pirate_event_3: call cum_block with hpunch - $ hermione.set_cum(crotch="light") call ctc - her "*Ah-aha*! Ye're cummin'! {heart}{heart}{heart}" ("silly", "narrow", "base", "dead", ypos="head", flip=False) + her "*Ah-aha*! Ye're cummin'! {heart}{heart}{heart}" ("silly", "narrow", "base", "dead", ypos="head", flip=True) gen "{size=+7}Aye I do, wench{/size}" ("angry", xpos="far_left", ypos="head") - $ hermione.set_cum(crotch="heavy") her "Blisterin' Barnacles, me too! Me too!" ("scream", "happyCl", "worried", "mid",cheeks="blush",tears="messy") gen "{size=+7}FARRRGIN' WENCH!{/size}" ("angry", xpos="far_left", ypos="head") $ renpy.play('sounds/cannon.ogg') @@ -651,7 +646,6 @@ label anal_pirate_event_3: gen "Aye!!! All o'er yer hull!" ("angry", xpos="far_left", ypos="head") $ renpy.play('sounds/cannon.ogg') with hpunch - $ hermione.set_cum(body="heavy") her "Shiver me timbers... 'tis so hot!" ("silly", "narrow", "annoyed", "up") #Ending @@ -662,7 +656,7 @@ label anal_pirate_event_3: call her_chibi_scene("sex_pause", trans=fade) gen "Well, tis been intense..." ("base", xpos="far_left", ypos="head") - her "*Ah-ha*...{heart} *Ah*...{heart}" ("grin", "narrow", "base", "dead",cheeks="blush",tears="messy", ypos="head", flip=False) + her "*Ah-ha*...{heart} *Ah*...{heart}" ("grin", "narrow", "base", "dead",cheeks="blush",tears="messy", ypos="head", flip=True) gen "Ye be fine lass?" ("base", xpos="far_left", ypos="head") her "I reckon so... I be nah sure..." ("grin", "narrow", "base", "dead",cheeks="blush",tears="messy") her "I reckon I may still be leakin', captain." ("grin", "narrow", "base", "dead",cheeks="blush",tears="messy") diff --git a/game/scripts/minigames/mirror/events/eating_for_pleasure.rpy b/game/scripts/minigames/mirror/events/eating_for_pleasure.rpy index 99e855ff..c4954c94 100644 --- a/game/scripts/minigames/mirror/events/eating_for_pleasure.rpy +++ b/game/scripts/minigames/mirror/events/eating_for_pleasure.rpy @@ -236,7 +236,7 @@ label eating_for_pleasure: gen "{size=+4}Come in!{/size}" ("open", xpos="far_left", ypos="head") pause 0.5 call her_walk(action="enter", xpos="desk", ypos="base") - her "Your order, sir!" ("smile", "happyCl", "base", "mid", trans=d3) + her "Your order, sir!" ("smile", "happyCl", "base", "mid", xpos="right", ypos="base", trans=d3) gen "What...{w=0.3} the hell...{w=0.3} is this!" ("open", xpos="far_left", ypos="head") her "What do you mean... Did we get the wrong toppings?" ("annoyed", "base", "worried", "mid") gen "Toppings?!" ("angry", xpos="far_left", ypos="head") @@ -260,7 +260,7 @@ label eating_for_pleasure: gen ".........." ("base", xpos="far_left", ypos="head") gen "Give me the pizza..." ("base", xpos="far_left", ypos="head") her "Of course!" - $ hermione.strip("all") + $ hermione.strip("clothes") pause 1.0 her "Now, what else would you like to--" ("smile", "wink", "base", "mid") gen "Get out..." ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/minigames/mirror/events/genies_christmas_wish.rpy b/game/scripts/minigames/mirror/events/genies_christmas_wish.rpy new file mode 100644 index 00000000..38b89d07 --- /dev/null +++ b/game/scripts/minigames/mirror/events/genies_christmas_wish.rpy @@ -0,0 +1,258 @@ +label genies_christmas_wish_rewards: + + if not her_outfit_reindeer.unlocked: + call unlock_clothing(text=">New clothing items for Hermione have been unlocked!", item=her_outfit_reindeer) + call unlock_clothing(text=">New clothing items for Cho have been unlocked!", item=cho_outfit_reindeer) + call unlock_clothing(text=">New clothing items for Luna have been unlocked!", item=lun_outfit_reindeer) + call unlock_clothing(text=">New clothing items for Tonks have been unlocked!", item=ton_outfit_santa) + + python: + naughty_list_ITEM.owned = 1 + xmas_garland_ITEM.owned = 1 + xmas_window_santa_ITEM.owned = 1 + + call give_reward(text=">You have received a bunch of new room decorations!", gift="interface/icons/santas_naughty_list.webp") + + return + +label genies_christmas_wish: + + # Setup + + #TODO Add decorations + + $ fireplace_OBJ.foreground = "fireplace_fire" + $ window_OBJ.decoration = xmas_window_santa_ITEM + $ chandelier_OBJ.decoration = xmas_garland_ITEM + $ poster_OBJ.decoration = naughty_list_ITEM + $ hermione.equip(her_outfit_reindeer) + $ cho.equip(cho_outfit_reindeer) + $ luna.equip(lun_outfit_reindeer) + $ tonks.equip(ton_outfit_santa) + + stop weather + $ game.daytime = False + $ game.weather = "snow" + call room("main_room") + call play_music("stop") + show screen blkfade + with d5 + + centered "{size=+7}{color=#cbcbcb}Genie's Christmas Wish{/color}{/size}" + + hide screen blkfade + with d5 + + play weather "sounds/wind_long_loop.ogg" fadein 2 fadeout 2 + call play_music("anguish") + + nar "It was the season of giving, in the world of sluts and magic." + nar "But the genie was alone." + nar "It sure was sad and tragic." + + nar "Everyone was gone, as they had left for the holidays." + nar "No one left to see him wank, and to receive his cum on their face." + + nar "No one left to drink with, not a single hole to fuck." + nar "Not even a sex doll, no hoovers to provide some suck." + + nar "No teachers, no students, not even an elf." + gen "I wish I had that talent... Where you can suck off oneself." ("base", xpos="far_left", ypos="head") + + nar "Sure, why not! A voice said." + nar "That's easy enough to do! It's Christmas after all, I'll make your wish come true." + + gen "What?! My wish?!" ("angry", xpos="far_left", ypos="head") + gen "No, that's not what I want!" ("angry", xpos="far_left", ypos="head") + nar "Yelled the genie, and the wish spell came to a sudden halt." + + nar "So the voice then asked him if they had understood him wrong." + nar "Is this not what you wished for... To suck your own mighty schlong?" + + gen "Of course not, don't be stupid." ("base", xpos="far_left", ypos="head") + gen "I was merely following the rhyme." ("base", xpos="far_left", ypos="head") + gen "If what I truly wanted came true, this world would be cut in twine." ("base", xpos="far_left", ypos="head") + + gen "Such as all men being gone! And for the women to be by my side!" ("base", xpos="far_left", ypos="head") + nar "Is this what you want?" + gen "No, just let me think..." ("base", xpos="far_left", ypos="head") + nar "I guess I'll wait until you decide..." + + gen "Make all women into sluts!" ("grin", xpos="far_left", ypos="head") + nar "Your wish will now be real!" + gen "No, wait!" ("angry", xpos="far_left", ypos="head") + nar "Not again..." + gen "I didn't consider, how that would make me feel..." ("base", xpos="far_left", ypos="head") + + gen "If they were already slutty... Then what left is there for me to do?" ("base", xpos="far_left", ypos="head") + gen "The journey is just as important, as the act of woo-hoo!" ("base", xpos="far_left", ypos="head") + + nar "Are all genies this indecisive?" + gen "Just give me a moment to think..." ("base", xpos="far_left", ypos="head") + nar "I've got places to be, you know." + gen "Quit stirring up a stink." ("base", xpos="far_left", ypos="head") + + gen "You know what... I yield." ("base", xpos="far_left", ypos="head") + nar "What?" + gen "You heard what I said." ("base", xpos="far_left", ypos="head") + nar "You don't want a wish?" + gen "Knowing me, it would surely end up with me dead." ("base", xpos="far_left", ypos="head") + + nar "But I have to grant you something. Or I have to stay here forever." + gen "Someone immortal to keep me company!" ("base", xpos="far_left", ypos="head") + nar "Now aren't you clever..." + + nar "Is there nothing else that you want?" + gen "I wish for you to pick." ("base", xpos="far_left", ypos="head") + nar "Yeah, yeah, very funny... Don't be such a dick." + + gen "Did I stutter, go on then. Pick the wish for me." ("base", xpos="far_left", ypos="head") + nar "Wait, you're serious?" + gen "As serious as I'll ever be." ("base", xpos="far_left", ypos="head") + + nar "Alright then, let me think..." + gen "Not so easy now, is it?" ("base", xpos="far_left", ypos="head") + gen "Just pick whatever, I don't care. At least I had someone visit." ("base", xpos="far_left", ypos="head") + + nar "I know what you need!" + nar "Just close your eyes for a bit." + gen "I ain't falling for that." ("base", xpos="far_left", ypos="head") + nar "Close your eyes, you little shit." + + gen "You're not my dad." ("base", xpos="far_left", ypos="head") + nar "Genie said, but he still followed the command." + gen "No I'm not!" ("base", xpos="far_left", ypos="head") + + show screen blkfade + with d3 + play sound "sounds/woosh.ogg" + + nar "His eyes now shut, as they had been sprayed by magic sand." + + gen "My eyes!" ("open", xpos="far_left", ypos="head") + nar "He yelled loudly... His vision now impaired." + gen "This better not be permanent!" ("angry", xpos="far_left", ypos="head") + nar "He said, his tone sounding a bit scared." + + + $ luna_chibi.zorder = 1 + $ hermione_chibi.zorder = 2 + $ cho_chibi.zorder = 3 + call lun_chibi("stand", 490, 420) + call her_chibi("stand", 510, 440) + call cho_chibi("stand", 530, 460) + + hide screen blkfade + with d3 + + nar "But his vision then returned, and he was greeted by some new outlines." + nar "Three women in his office, and they were looking mighty fine." + + cho "How did I get here?" ("angry", "wide", "base", "stare", xpos="mid", ypos="base", trans=d5) + nar "Said one." + cho "" ("annoyed", "base", "base", "R") + her "I was just with my mum and dad." ("mad", "base", "base", "stare", xpos=500, ypos="base", trans=d5) + nar "Said the second, sounding confused, and a bit sad." + + her "" ("annoyed", "base", "base", "R") + lun "Now what is this outfit?" ("soft", "base", "base", "down", xpos="base", ypos="base", trans=d5) + nar "Said the third... While checking out the fit." + her "" ("angry", "base", "base", "down") + cho "" ("clench", "base", "base", "down") + lun "" ("soft", "base", "base", "mid") + nar "Then she looked up at genie, who was finding it hard... to admit." + + nar "Should he lie, or be truthful?" + nar "What on earth should he say?" + nar "When the truth sounds so unlike him." + nar "That he felt alone this Christmas day." + + her "" ("annoyed", "base", "base", "mid") + cho "" ("normal", "base", "base", "mid") + gen "I can explain!" ("open", xpos="far_left", ypos="head") + nar "Said the genie, in a stuttering voice." + gen "There was this magic thing... Like a ghost!" ("angry", xpos="far_left", ypos="head") + + gen "I swear I didn't have a choice!" ("angry", xpos="far_left", ypos="head") + + her "" ("disgust", "narrow", "base", "mid") + lun "" ("annoyed", "base", "base", "mid") + cho "" ("angry", "narrow", "angry", "mid") + nar "The expressions on the women changed to angry and displeased." + nar "As they were in the middle of celebrations, the middle of their Christmas feast!" + + her "" ("open", "narrow", "angry", "mid") + lun "" ("open", "base", "worried", "mid") + cho "" ("open", "narrow", "angry", "mid") + nar "They then opened their mouths to give him a piece of their mind." + nar "But then the voice showed their presence, and answered their concerns in kind." + + her "" ("angry", "base", "base", "R") + lun "" ("soft", "base", "base", "L") + cho "" ("clench", "narrow", "base", "L") + nar "You see your headmaster was lonely... it is Christmas after all." + nar "And I felt his heart aching, so I answered his call." + + her "" ("soft", "base", "base", "mid") + lun "" ("soft", "base", "base", "mid") + cho "" ("open", "narrow", "base", "mid") + nar "A wish I then bestowed, so he would not have to feel so grim." + nar "But he could not clear his mind, and had me choose for him." + + nar "As it's the season to celebrate, with the ones you love the most--" + gen "Love is a strong word." ("base", xpos="far_left", ypos="head") + cho "Don't mind him... Now, tell us the wish, ghost." ("smile", "base", "base", "mid") + + nar "I brought you three to him, well, a copy of you all at least." + nar "The other one is still at home, enjoying a Christmas feast." + + nar "The gift I give to you, is not having to choose." + her "" ("open", "base", "base", "stare") + lun "" ("grin", "base", "base", "mid") + nar "Once Christmas is finally over, no memories you will lose." + + nar "The ones you make at home, the ones you make at school." + nar "Both will be intact..." + nar "Now, isn't that cool?" + + cho "A copy of us at home, while we can have sex over here?" ("grin", "narrow", "base", "mid") + her "For how long will it last?" ("grin", "narrow", "base", "mid") + nar "Let's make it the end of the year." + + lun "Are you crying, sir?" ("open", "base", "worried", "mid") + nar "One of them asked, as a tear escaped genie's eye." + gen "A Christmas filled with sex... Now that is enough, to make a grown man cry." ("base", xpos="far_left", ypos="head") + + gen santa "The End!" ("grin", xpos="far_left", ypos="head") + + show screen blkfade + with d4 + + pause .8 + call hide_characters + + hide screen blkfade + + $ renpy.play("sounds/door_down.ogg") + with hpunch + + call play_music("stop") + + call ton_chibi("stand", 810, 440) + + ton "I've detected some foreign magic--" ("clench", "wide", "base", "mid", xpos="base", ypos="base", trans=d5) + ton "Oh, hello girls! Back already?" ("grin", "wide", "base", "L", hair="horny") + + gen "Wait, you were here the whole time?!" ("angry", xpos="far_left", ypos="head") + + show screen blkfade + with d4 + + nar "The end." + + cho "Why was I even in this story? We don't even celebrate Christmas at my home." ("open", "base", "base", "mid") + gen "*Err*..." ("open", xpos="far_left", ypos="head") + + gen "Happy Holidays!" ("smile", xpos="far_left", ypos="head") + + $ renpy.end_replay() diff --git a/game/scripts/minigames/mirror/events/panty_raid.rpy b/game/scripts/minigames/mirror/events/panty_raid.rpy index 92488a2f..b218af70 100644 --- a/game/scripts/minigames/mirror/events/panty_raid.rpy +++ b/game/scripts/minigames/mirror/events/panty_raid.rpy @@ -37,7 +37,7 @@ label panty_raid: call her_chibi("stand","mid","base") call hide_blkfade - her "Hello [genie_name]." ("open", "base", "base", "mid", flip=False) + her "Hello [genie_name]." ("open", "base", "base", "mid", xpos="right", ypos="base", trans=d3, flip=False) her "" ("base") gen "Good day [hermione_name]." ("base", xpos="far_left", ypos="head") gen "How would you feel about going out and earning thirty-five points for your house today?" ("base", xpos="far_left", ypos="head") @@ -244,7 +244,7 @@ label panty_raid: call her_walk(action="enter", xpos="mid", ypos="base") - her "Hello [genie_name], you called?" ("open", "base", "base", "mid", flip=False) + her "Hello [genie_name], you called?" ("open", "base", "base", "mid", xpos="right", ypos="base", trans=d3, flip=False) her "" ("base") gen "Hello to you too, [hermione_name]." ("base", xpos="far_left", ypos="head") gen "Say...{w=0.3} would you like to earn some points today girl?" ("grin", xpos="far_left", ypos="head") @@ -401,7 +401,7 @@ label panty_raid: call her_walk(action="enter", xpos="mid", ypos="base") gen "Well, well, well... if it isn't my favourite minx!" ("grin", xpos="far_left", ypos="head") - her "Good morning to you too, [genie_name]." ("open", "closed", "base", "mid", flip=False) + her "Good morning to you too, [genie_name]." ("open", "closed", "base", "mid", xpos="right", ypos="base", trans=d3, flip=False) her "" ("base", "base", "base", "mid") gen "What brings you here this time?" ("base", xpos="far_left", ypos="head") her "Well... I..." ("open", "base", "base", "R", cheeks="blush") @@ -639,7 +639,7 @@ label panty_raid: call her_walk(action="enter", xpos="mid", ypos="base") - her "Hello, [genie_name].{heart}" ("smile", "wink", "base", "mid", flip=False) + her "Hello, [genie_name].{heart}" ("smile", "wink", "base", "mid", xpos="right", ypos="base", trans=d3, flip=False) her "" ("smile", "base", "base", "mid") gen "[hermione_name]! My favourite slut." ("grin", xpos="far_left", ypos="head") gen "I have another riddle for you." ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/minigames/mirror/events/suck_and_run.rpy b/game/scripts/minigames/mirror/events/suck_and_run.rpy index 70837721..18b29972 100644 --- a/game/scripts/minigames/mirror/events/suck_and_run.rpy +++ b/game/scripts/minigames/mirror/events/suck_and_run.rpy @@ -101,7 +101,7 @@ label suck_and_run: call bld gen "Getting into the Halloween spirit?" ("base", xpos="far_left", ypos="head") - ton "Of course!" ("grin", "wide", "base", "mid", ypos="head", flip=False) + ton "Of course!" ("grin", "wide", "base", "mid", xpos="base", ypos="head", flip=False) ton "I've been looking forward to the Halloween feast ever since I got here." ("crooked_smile", "closed", "base", "mid") ton "Brings back memories." ("base", "base", "base", "downR") gen "*Ha-hah*, yeah... That food thing that I do all the time. Love it!" ("base", xpos="far_left", ypos="head") diff --git a/game/scripts/minigames/mirror/init.rpy b/game/scripts/minigames/mirror/init.rpy index c0f27e6e..56547e33 100644 --- a/game/scripts/minigames/mirror/init.rpy +++ b/game/scripts/minigames/mirror/init.rpy @@ -192,3 +192,15 @@ default mr_ev_BBB = MirrorEvent( tags=["Humorous", "Flashing"], unlocked=True, ) + +default mr_ev_GCW = MirrorEvent( + id="mr_ev_GCW", + name="Genie's Christmas Wish", + cast=["genie"], + desc="", + label="genies_christmas_wish", + label_rewards="genies_christmas_wish_rewards", + authors=["SilverStudioGames"], + tags=["Seasonal", "Noir"], + unlocked=True, +) diff --git a/game/scripts/options.rpy b/game/scripts/options.rpy index 9bd03fcf..88e0b651 100644 --- a/game/scripts/options.rpy +++ b/game/scripts/options.rpy @@ -30,7 +30,7 @@ define config.developer = "auto" define config.console = True # Game version and naming -define config.version = "1.44.1" +define config.version = "1.44.4" define compatible_version = 1.43 define config.name = "Witch Trainer Silver" diff --git a/game/scripts/rooms/main_room/images.rpy b/game/scripts/rooms/main_room/images.rpy index ddcf6817..8b719696 100644 --- a/game/scripts/rooms/main_room/images.rpy +++ b/game/scripts/rooms/main_room/images.rpy @@ -1,5 +1,6 @@ image fireplace_fire: + animation offset (-24, -6) "images/rooms/objects/fireplace/fireplace_fire_01.webp" pause.1 @@ -20,6 +21,7 @@ image fireplace_fire: repeat image glow_effect: + animation "images/animation/glow_effect/glow_1.webp" pause.1 "images/animation/glow_effect/glow_2.webp" @@ -51,6 +53,7 @@ image glow_effect_fireplace: "glow_effect" image candle_fire_01: + animation "images/rooms/objects/candles/fire_01.webp" pause.1 "images/rooms/objects/candles/fire_02.webp" @@ -79,6 +82,7 @@ image candle_fire_01: repeat image candle_fire_02: + animation "images/rooms/objects/candles/fire_01.webp" pause.1 "images/rooms/objects/candles/fire_04.webp" @@ -107,6 +111,7 @@ image candle_fire_02: repeat image phoenix_idle: + animation zoom 0.5 "images/rooms/objects/phoenix/phoenix_01.webp" @@ -135,6 +140,7 @@ image phoenix_hover: "images/rooms/objects/phoenix/phoenix_hover.webp" image phoenix_feather: + animation zoom 0.5 pause 10 alpha 1.0 @@ -208,6 +214,7 @@ image fireplace_hover: "images/rooms/objects/fireplace/fireplace_hover.webp" image owl_idle: + animation zoom 0.5 "images/rooms/objects/mail/owl_idle_01.webp" @@ -223,6 +230,7 @@ image owl_idle: repeat image owl_letter: + animation zoom 0.5 "images/rooms/objects/mail/owl_01.webp" @@ -272,6 +280,7 @@ image candle_right: "images/rooms/objects/candles/candle.webp" image candle_fire: #Candle fire. + animation "images/rooms/objects/candles/fire_01.webp" pause.1 "images/rooms/objects/candles/fire_04.webp" @@ -337,6 +346,7 @@ image desk_dumbledore: "images/rooms/main_room/dum.webp" image halloween_chandelier: + animation contains: anchor (0.5, 0.0) @@ -364,6 +374,7 @@ image halloween_fireplace_jackolanterns: "images/rooms/objects/decorations/halloween_fireplace2.webp" image halloween_window_monster: + animation "images/rooms/objects/decorations/halloween_monster/0.webp" pause 3 "images/rooms/objects/decorations/halloween_monster/1.webp" @@ -409,6 +420,7 @@ image halloween_lamp_left_glow: offset (-111, -81) contains: + animation alpha 0.9 "images/rooms/objects/decorations/halloween_lamp/glow.webp" @@ -431,6 +443,7 @@ image halloween_lamp_right_glow: offset (-111, -81) contains: + animation alpha 0.9 "images/rooms/objects/decorations/halloween_lamp/glow.webp" @@ -553,6 +566,7 @@ image xmas_lights_alternate: "images/rooms/objects/decorations/xmas_lights/underlay.webp" contains: + animation alpha 1.0 "xmas_lights_set1_bulbs" linear 0.5 alpha 0.5 @@ -560,6 +574,7 @@ image xmas_lights_alternate: repeat contains: + animation alpha 0.5 "xmas_lights_set2_bulbs" linear 0.5 alpha 1.0 @@ -570,6 +585,7 @@ image xmas_lights_alternate: "images/rooms/objects/decorations/xmas_lights/base.webp" contains: + animation alpha 1.0 "xmas_lights_set1_glow" linear 0.5 alpha 0.0 @@ -577,6 +593,7 @@ image xmas_lights_alternate: repeat contains: + animation alpha 0.0 "xmas_lights_set2_glow" linear 0.5 alpha 1.0 @@ -589,12 +606,14 @@ image xmas_lights_cycle: "images/rooms/objects/decorations/xmas_lights/underlay.webp" contains: + animation matrixcolor HueMatrix(0) "xmas_lights_set1_bulbs" linear 18.0 matrixcolor HueMatrix(360) repeat contains: + animation matrixcolor HueMatrix(0) "xmas_lights_set2_bulbs" linear 18.0 matrixcolor HueMatrix(360) @@ -604,12 +623,14 @@ image xmas_lights_cycle: "images/rooms/objects/decorations/xmas_lights/base.webp" contains: + animation matrixcolor HueMatrix(0) "xmas_lights_set1_glow" linear 18.0 matrixcolor HueMatrix(360) repeat contains: + animation matrixcolor HueMatrix(0) "xmas_lights_set2_glow" linear 18.0 matrixcolor HueMatrix(360) @@ -621,6 +642,7 @@ image xmas_lights_pulse: "images/rooms/objects/decorations/xmas_lights/underlay.webp" contains: + animation alpha 1.0 "xmas_lights_set1_bulbs" easeout 3.5 alpha 0.0 @@ -630,6 +652,7 @@ image xmas_lights_pulse: repeat contains: + animation alpha 1.0 "xmas_lights_set2_bulbs" easeout 3.5 alpha 0.0 @@ -642,6 +665,7 @@ image xmas_lights_pulse: "images/rooms/objects/decorations/xmas_lights/base.webp" contains: + animation alpha 1.0 "xmas_lights_set1_glow" easeout 3.5 alpha 0.0 @@ -651,6 +675,7 @@ image xmas_lights_pulse: repeat contains: + animation alpha 1.0 "xmas_lights_set2_glow" easeout 3.5 alpha 0.0 @@ -668,3 +693,29 @@ image xmas_giftchair: pos (35, 108) "images/rooms/objects/decorations/xmas_giftchair.webp" + +image xmas_window_santa_doodle: + size (2160, 1200) + contains: + animation + size (240, 108) + subpixel True + offset (640, 460) + + contains: + fit "fill" + "xmas_window_santa_base" + contains: + animation + fit "fill" + "xmas_window_santa_light" + + linear 0.5 alpha 0.1 + linear 0.5 alpha 1.0 + repeat + + linear 10.0 xoffset 1000 + pause 10.0 + repeat + +image xmas_window_santa = AlphaMask("xmas_window_santa_doodle", "xmas_window_santa_mask") diff --git a/game/scripts/rooms/main_room/objects/poster.rpy b/game/scripts/rooms/main_room/objects/poster.rpy index 16b80350..b4af2a1c 100644 --- a/game/scripts/rooms/main_room/objects/poster.rpy +++ b/game/scripts/rooms/main_room/objects/poster.rpy @@ -1,18 +1,84 @@ label enlarge_poster: - show screen blktone - show screen poster - with d3 + show image "#00000080" as underlay + $ renpy.show(name="poster", what=Image(poster_OBJ.decoration.image), zorder=25, at_list=[truecenter]) call ctc - hide screen blktone - hide screen poster + hide poster + hide underlay with d3 jump main_room_menu -screen poster(): - zorder 25 - tag poster +# Xmas 2022 - Decoration - add poster_OBJ.decoration.image align (0.5, 0.5) +default naughty_list_commentary = False + +label naughty_list: + + python: + # This code retrieves user name and displays it on a leaderboard-like + # list for funsies, the variable is discarded afterwards. + _username = None + _d = [(i, get_character_progression(i)) for i in CHARACTERS if get_character_unlock(i)] + _d.append(["Snape", sna_friendship]) + + try: + _username = os.getenv("USERNAME") + + if not _username: + _username = os.getlogin() + + # Windows returns an empty string when it encounters an error, + # in ucrtbase.dll, and we need to catch that. + if not _username: + raise Exception("Cannot retrieve user name, using the fallback.") + + _username = _username.split(" ")[0].capitalize() + _d.append([_username, 999]) + + except: + _d.append(["Genie", 999]) + + _d.sort(key=lambda x: x[1], reverse=True) + + show screen naughty_list(_d) + with d3 + + if not naughty_list_commentary: + $ naughty_list_commentary = True + + pause 1.0 + + if _username is None: + gen "I'm on the first place, nice!" ("base", xpos="far_left", ypos="head") + else: + gen "List checks out... But who the fuck is [_username]?" ("base", xpos="far_left", ypos="head") + + call ctc + + hide screen naughty_list + with d3 + + python: + del _username + + jump main_room_menu + +screen naughty_list(d): + zorder 25 + + add "#00000080" + add "naughty_list scroll" fit "cover" at truecenter + + vbox: + align (0.51, 0.66) + spacing 2 + + for i, (name, _) in enumerate(d, start=1): + + fixed: + fit_first True + add "naughty_list spacer" size (156, 21) + text "[i]" pos (6, 3) + text "[name]" xalign 0.5 yoffset 3 diff --git a/game/scripts/rooms/main_room/objects/weather.rpy b/game/scripts/rooms/main_room/objects/weather.rpy index ac342830..487e9f9c 100644 --- a/game/scripts/rooms/main_room/objects/weather.rpy +++ b/game/scripts/rooms/main_room/objects/weather.rpy @@ -59,6 +59,7 @@ image weather_cloudy_clouds = ConditionSwitch( ) image weather_cloudy_fx: + animation "weather_cloudy_clouds" choice: pos (-100, 0) @@ -74,6 +75,7 @@ image weather_cloudy_fx: image weather_cloudy = Fixed("weather_clear", "weather_cloudy_fx", fit_first=True) image weather_rain_fx: + animation "images/rooms/_weather_/rain_01.webp" pause.1 "images/rooms/_weather_/rain_02.webp" @@ -85,6 +87,7 @@ image weather_rain_fx: image weather_rain = Fixed("weather_overcast", "weather_rain_fx", fit_first=True) image weather_snow_fx: + animation "images/rooms/_weather_/snow_01.webp" pause.07 "images/rooms/_weather_/snow_02.webp" @@ -110,6 +113,7 @@ image weather_snow_fx: image weather_snow = Fixed("weather_overcast", "weather_snow_fx", fit_first=True) image weather_blizzard_fx: + animation "images/rooms/_weather_/blizzard_01.webp" pause.05 "images/rooms/_weather_/blizzard_02.webp" @@ -135,8 +139,10 @@ image weather_blizzard_fx: image weather_blizzard= Fixed("weather_overcast", "weather_blizzard_fx", fit_first=True) image weather_storm_fx: + animation parallel: + animation pause 20 "images/rooms/_weather_/lightning_01.webp" pause.1 @@ -159,6 +165,7 @@ image weather_storm_fx: repeat parallel: + animation "images/rooms/_weather_/rain_01.webp" pause.1 "images/rooms/_weather_/rain_02.webp" @@ -167,4 +174,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) diff --git a/game/scripts/rooms/room_of_requirement/init.rpy b/game/scripts/rooms/room_of_requirement/init.rpy index e195c25c..a2a01b4d 100644 --- a/game/scripts/rooms/room_of_requirement/init.rpy +++ b/game/scripts/rooms/room_of_requirement/init.rpy @@ -134,12 +134,16 @@ label room_of_requirement: $ mirror_image = Null() - call gen_chibi("stand", flip=True) + call gen_chibi("stand_shocked", flip=True) gen "A what?!" ("open", xpos="far_left", ypos="head") + sna "A porn creator. Well, technically it's used to let you live out your fantasies, be they impure or not. So not necessarily porn." ("snape_01") gen "And you didn't tell me a thing like this existed?" ("open", xpos="far_left", ypos="head") sna "Well, it didn't exist until I made it... and I thought it was moved or destroyed." ("snape_26") + + call gen_chibi("stand", flip=False) gen "Get out." ("angry", xpos="far_left", ypos="head") + sna "What?" ("snape_05") gen "I said get out, I found it so I get to keep it." ("grin", xpos="far_left", ypos="head") sna "But, I thought maybe I could move..." ("snape_06") diff --git a/game/scripts/shops/dress/chitchats.rpy b/game/scripts/shops/dress/chitchats.rpy index 6b595e18..92fc8dcb 100644 --- a/game/scripts/shops/dress/chitchats.rpy +++ b/game/scripts/shops/dress/chitchats.rpy @@ -400,6 +400,25 @@ label purchase_outfit(item): maf "Nothing... So you want an outfit made from this game?" gen "I... Yes, something Chun-Li inspired if you please..." ("base", xpos="far_left", ypos="head") maf "Alright then, I'll ask my grandson to give me some reference material." + elif item == cho_outfit_bunny: + gen "I need a bunny costume." ("base", xpos="far_left", ypos="head") + maf "Don't tell me you're trying to prove the existence of the were-rabbit again." + gen "The what?" ("base", xpos="far_left", ypos="head") + maf "May I remind you about the time you almost got shot by one of the centaurs, when they mistook you for a giant rabbit?" + gen "(Did this really happen?)" ("base", xpos="far_left", ypos="head") + gen "I don't want an actual bunny costume..." ("base", xpos="far_left", ypos="head") + gen "I want one of those sexy bunny outfits, the one you might see in a magazine." ("base", xpos="far_left", ypos="head") + maf "I see." + maf "Alright then, I'll see what I can do." + + elif item == cho_outfit_virgin_killer: + gen "Virgin killer?" ("base", xpos="far_left", ypos="head") + maf "Not so much these days, but you should've seen me in my--" + maf "Oh, you're referring to the jumper." + gen "Of course, although now I'm more intrigued about--" ("base", xpos="far_left", ypos="head") + maf "I doubt that would be a good idea... You pay me by the hour, after all." + gen "... Alright then." ("base", xpos="far_left", ypos="head") + maf "I shall have your jumper ready as soon as possible." # # Astoria Greengrass @@ -556,6 +575,13 @@ label purchase_outfit(item): maf "In any case, I'm sure that my grandson has a comic with her. I'll just have to wrestle it out of his grubby little hands." gen "Thank you very much." ("base", xpos="far_left", ypos="head") maf "You're quite welcome." + elif item == lun_outfit_bunny: + gen "I'm looking to acquire a bunny costume." ("base", xpos="far_left", ypos="head") + maf "Certainly sir, how big is the bunny?" + gen "How big is the-- I'm talking about--" ("base", xpos="far_left", ypos="head") + 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." # 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") @@ -821,6 +847,13 @@ label purchase_outfit(item): maf "Well, I suppose, with a couple adjustments... Something like that should be doable." gen "Great!" ("base", xpos="far_left", ypos="head") maf "I'll have it ready for you as soon as possible." + elif item == ton_outfit_pullover: + gen "I'm looking to get something warm and snug for a lady friend to wear during cold weather." ("base", xpos="far_left", ypos="head") + gen "Could you make me a pullover?" ("base", xpos="far_left", ypos="head") + maf "Of course, I can make anything you'd like." + gen "In that case, how about condoms that doesn't diminish sexual stimuli?" ("base", xpos="far_left", ypos="head") + maf "I'm sorry, but I believe dark arts are forbidden within these halls, so you'd have to go to Knockturn Alley for that." + gen "Then a pullover outfit it is." ("base", xpos="far_left", ypos="head") # # Susan Bones @@ -848,6 +881,22 @@ label purchase_outfit(item): maf "Very well then, I'll have your latex underwear ready for you shortly." gen "Tight." ("base", xpos="far_left", ypos="head") + elif item == sus_outfit_priestess: + gen "Would you be able to provide me with a priestess outfit?" ("base", xpos="far_left", ypos="head") + maf "A priestess outfit, sir?" + gen "That's right! And make it sexy!" ("base", xpos="far_left", ypos="head") + maf "Sexy, sir?" + maf "Surely that would hardly be appropriate for a priestess." + gen "Why wouldn't it?" ("base", xpos="far_left", ypos="head") + maf "As far as I'm aware, priestesses are known for practising celibacy." + gen "Truly?" ("base", xpos="far_left", ypos="head") + maf "I believe so, sir." + gen "*Hmm*... That doesn't sound like any priestess I've ever met." ("base", xpos="far_left", ypos="head") + gen "..." ("base", xpos="far_left", ypos="head") + maf "..." + maf "I can still make it though, if you'd like." + gen "Great!" ("base", xpos="far_left", ypos="head") + # # Universal diff --git a/game/scripts/shops/dress/menu.rpy b/game/scripts/shops/dress/menu.rpy index 7b5cc99a..bd06771e 100644 --- a/game/scripts/shops/dress/menu.rpy +++ b/game/scripts/shops/dress/menu.rpy @@ -237,7 +237,7 @@ screen shop_dress_menuitem(): mesh True for item in menu_items: - $ icon = Transform(item.get_image(), crop=(215, 0, 680, 1200), mesh=True, gl_pixel_perfect=True) + $ icon = Transform(item.image, crop=(215, 0, 680, 1200), mesh=True, gl_pixel_perfect=True) $ is_modded = item.is_modded() $ is_affordable = bool(game.gold >= item.price) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index f5a82f0b..308feea8 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -94,7 +94,11 @@ init -1 python: return None def evaluate(txt): - return __import__('ast').literal_eval(txt) + try: + return __import__('ast').literal_eval(txt) + except Exception as e: + print("Error evaluating data:") + print(e) def reset_variables(*args): """Resets the given variables to their default values.""" @@ -145,45 +149,6 @@ init -1 python: """Mutates the original list.""" l[val1], l[val2] = l[val2], l[val1] - def random_choices(population, weights=None, cum_weights=None, k=1): - """Backported from python 3.6 - - Return a k sized list of population elements chosen with replacement. - If the relative weights or cumulative weights are not specified, - the selections are made with equal probability. - """ - - def accumulate(iterable, func=_add, initial=None): - it = iter(iterable) - total = initial - if initial is None: - try: - total = next(it) - except StopIteration: - return - yield total - for element in it: - total = func(total, element) - yield total - - random = renpy.random.random - if cum_weights is None: - if weights is None: - _int = int - total = len(population) - return [population[_int(random() * total)] for i in range(k)] - cum_weights = list(accumulate(weights)) - elif weights is not None: - raise TypeError('Cannot specify both weights and cumulative weights') - - if len(cum_weights) != len(population): - raise ValueError('The number of weights does not match the population') - - #bisect = _bisect.bisect - total = cum_weights[-1] - hi = len(cum_weights) - 1 - return [population[bisect(cum_weights, random() * total, 0, hi)] for i in range(k)] - def natsort_key(s, pattern=re.compile("([0-9]+)")): return [int(t) if t.isdigit() else t.lower() for t in pattern.split(str(s))] @@ -219,6 +184,11 @@ init -1 python: def matches(s1, s2, filter=" "): 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 + class IntLike(python_object): # Does not support rollback diff --git a/game/scripts/utility/common_screens.rpy b/game/scripts/utility/common_screens.rpy index 19cf00c1..2b1ac2c2 100644 --- a/game/scripts/utility/common_screens.rpy +++ b/game/scripts/utility/common_screens.rpy @@ -39,7 +39,7 @@ screen clothing_unlock(item): on "show" action Play("sound", "sounds/win2.ogg") if isinstance(item, DollCloth): - add item.get_icon() align (0.5, 0.5) zoom 0.5 + add item.icon align (0.5, 0.5) zoom 0.5 elif isinstance(item, DollOutfit): add item.get_image() align (0.5, 0.0) yoffset -50 zoom 0.4 diff --git a/game/scripts/utility/devtools.rpy b/game/scripts/utility/devtools.rpy index 8a5efd17..4cb4b696 100644 --- a/game/scripts/utility/devtools.rpy +++ b/game/scripts/utility/devtools.rpy @@ -1,6 +1,6 @@ -init python early: - if renpy.version_tuple < (7,5,0,22061501): - raise RuntimeWarning("Your Ren'Py launcher is outdated, the current minimal requirement is 7.5.0.22061501+\nPlease perform an update and try launching the game again.") +init -1000 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 renpy.uguu import glGetString, GL_VENDOR, GL_RENDERER, GL_VERSION @@ -14,6 +14,26 @@ init python early: def get_renderer(): return "DirectX" if preferences.renderer == "angle2" else "OpenGL" + if config.developer: + # Debug + + def detect_orphaned_rpyc_files(): + excluded = ["tl/"] + + files = renpy.list_files(common=True) + compiled = [x for x in files if x.endswith(".rpyc") if not any(x.startswith(i) for i in excluded)] + scripts = [x for x in files if x.endswith(".rpy")] + orphaned = [] + + for i in compiled: + if not i[:-1] in scripts: + orphaned.append(i) + + if orphaned: + raise Exception("Orphaned compiled scripts detected, please delete them before continuing:\n{}".format(orphaned)) + + detect_orphaned_rpyc_files() + init python: config.missing_image_callback = missing_image_func diff --git a/game/scripts/utility/engine.rpy b/game/scripts/utility/engine.rpy index 9cd83601..f341421e 100644 --- a/game/scripts/utility/engine.rpy +++ b/game/scripts/utility/engine.rpy @@ -60,7 +60,8 @@ init python: config.statement_callbacks.append(crashdefender) -init -10 python: +init python early: + import functools if renpy.windows: # On windows, Renpy does not support backslashes in some of its functions, @@ -75,3 +76,13 @@ init -10 python: return renpy.loader.loadable(filename) renpy.loadable = _loadable + + # renpy.list_files does not use cached results, let's fix that. + + @functools.cache + def _list_files(common=False): + rv = [fn for dir, fn in renpy.loader.listdirfiles(common) if not fn.startswith("saves/")] + rv.sort() + return rv + + renpy.list_files = _list_files diff --git a/game/scripts/utility/image_crop.rpy b/game/scripts/utility/image_crop.rpy index d8d1816a..571dbb9e 100644 --- a/game/scripts/utility/image_crop.rpy +++ b/game/scripts/utility/image_crop.rpy @@ -12,7 +12,12 @@ init python: if path in whitespace_dict: box = whitespace_dict[path] else: - surf = Image(path).load() + if isinstance(path, str): + surf = Image(path).load() + elif isinstance(path, im.Image): + surf = path.load() + elif isinstance(path, Transform): + surf = path.child.load() box = tuple(surf.get_bounding_rect()) whitespace_dict[path] = box return box diff --git a/game/scripts/utility/punk.rpy b/game/scripts/utility/punk.rpy index 356fc802..d510f9a6 100644 --- a/game/scripts/utility/punk.rpy +++ b/game/scripts/utility/punk.rpy @@ -7,131 +7,136 @@ init python: import binascii import struct + import zlib - class ImagePayload(object): + class ImagePayload(NoRollback): - _END_CHUNK_TYPE = 'IEND' - _PUNK_CHUNK_TYPE = 'wtSi' - _MAX_BYTES = 2147483647 - _chunks = dict() + CHUNK_TYPE_END = "IEND" + CHUNK_TYPE_PUNK = "wtSi" + MAX_BYTES = 2147483647 + SIGNATURE_BYTES = 8 + BYTES_IN_KB = 2014 def __init__(self): - self._mode = None - self._file = None - self._output = None - self._bytes_to_hide = None + pass - self._bytes_read = 0 + def bytes_to_hex(self, b): + return b.hex() - def decode(self, input_file): - self.__init__() - self._mode = 'decode' - self._file = open("{}/outfits/{}".format(config.gamedir, input_file), 'rb+') - #self._output = open(config.basedir+'/game/'+output_file+'.txt', 'wb+') + def bytes_to_utf(self, b): + return b.decode() - # First move cursor past the signature - self._read_bytes(8) + def bytes_to_int(self, b): + return int(self.bytes_to_hex(b), 16) - # Start reading chunks - self._read_next_chunk() - return self._output + def read_bytes(self, f, byte_count: int): + return f.read(byte_count) - def encode(self, input_file, bytes_to_hide): - self.__init__() - self._mode = 'encode' - self._file = open("{}/outfits/{}.png".format(config.gamedir, input_file), 'rb+') - self._bytes_to_hide = bytes_to_hide.encode('utf-8') + def rewind_bytes(self, f, byte_count): + f.seek(f.tell() - byte_count) - # First move cursor past the signature - self._read_bytes(8) + def get_file_length(self, f): + f.seek(0, os.SEEK_END) + file_length = f.tell() + f.seek(0) - # Start reading chunks - self._read_next_chunk() + return file_length - def _read_bytes_as_hex(self, position): - return self._read_bytes(position).encode('hex') + 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 _read_bytes_as_ascii(self, position): - return self._read_bytes(position).encode('ascii') + return [chunk_size, chunk_type, chunk_content, chunk_crc] - def _read_bytes_as_int(self, position): - return int(self._read_bytes_as_hex(position), 16) + def inject_punk_chunk(self, f, content): + chunk_size = len(content) - def _read_bytes(self, byte_count): - self._bytes_read += byte_count - return self._file.read(byte_count) + if chunk_size > self.MAX_BYTES: + raise ValueError(f"Cannot inject more than {self.MAX_BYTES} bytes") - def _rewind_bytes(self, byte_count): - self._bytes_read -= byte_count - self._file.seek(self._bytes_read) + print(f"Injecting {self.CHUNK_TYPE_PUNK} chunk {chunk_size / self.BYTES_IN_KB} kb") - def _inject_punk_chunk(self): - # Move back 8 bytes. - self._rewind_bytes(8) - - chunk_size = len(self._bytes_to_hide) - print('Hiding', (chunk_size / 1024), 'kB (', chunk_size, 'bytes)') - - # Create a temporary byte array for the CRC check. + # Create a byte array to store our chunk data in. tmp_bytes = bytearray() - # First write the chunk type - tmp_bytes.extend(bytearray(self._PUNK_CHUNK_TYPE)) - + tmp_bytes.extend(self.CHUNK_TYPE_PUNK.encode()) # Now write the bytes of whatever we're trying to hide - tmp_bytes.extend(self._bytes_to_hide) - - #print 'Injecting punk chunk' + tmp_bytes.extend(content) # Write the chunk size - self._file.write(bytearray(struct.pack('!i', chunk_size))) + f.write(bytearray(struct.pack("!i", chunk_size))) - # And the type - self._file.write(bytearray(self._PUNK_CHUNK_TYPE)) - - self._file.write(self._bytes_to_hide) + # And the content + f.write(tmp_bytes) crc = binascii.crc32(tmp_bytes) - self._file.write(bytearray(struct.pack('!i', crc))) + crc_bytes = crc.to_bytes(4, "big") + print("Chunk CRC", self.bytes_to_hex(crc_bytes)) + f.write(crc_bytes) - # Write the end chunk. Start with the size. - self._file.write(bytearray(struct.pack('!i', 0))) - # Then the chunk type. - self._file.write(bytearray(self._END_CHUNK_TYPE)) + print("Chunk injected!") - crc = binascii.crc32(bytearray(self._END_CHUNK_TYPE)) - self._file.write(bytearray(struct.pack('!i', crc))) + def list(self, input): + path = os.path.join(config.gamedir, "outfits", input) - #print 'Punk chunk injected' + with open(path, "rb") as input_file: - def _read_next_chunk(self): - chunk_size = self._read_bytes_as_int(4) - print('Chunk size:', chunk_size) + input_file_length = self.get_file_length(input_file) + input_file.read(self.SIGNATURE_BYTES) - chunk_type = self._read_bytes_as_ascii(4) - print('Chunk type:', chunk_type) + 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") - if self._mode == 'encode' and chunk_type == self._END_CHUNK_TYPE: - self._inject_punk_chunk() + if input_file.tell() >= input_file_length: + return - #print 'Reached EOF' - self._file.close() - return + 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()) - content = self._read_bytes(chunk_size) + with open(input_path, "rb") as input_file, open(output_path, "wb") as output_file: - crc = self._read_bytes_as_hex(4) - print('CRC:', crc) + input_file_length = self.get_file_length(input_file) + output_file.write(input_file.read(self.SIGNATURE_BYTES)) - if self._mode == 'decode' and chunk_type == self._PUNK_CHUNK_TYPE: - print("Found a chunk data", len(content), "bytes. Importing..") - #self._output.write(bytearray(content)) - #self._output.close() - self._output = content.decode('utf-8') - self._file.close() - print("Done.") - return True + 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") - self._read_next_chunk() + if chunk_type_str == self.CHUNK_TYPE_END: + self.inject_punk_chunk(output_file, content) - image_payload = ImagePayload() + output_file.write(chunk_size) + output_file.write(chunk_type) + output_file.write(chunk_content) + output_file.write(chunk_crc) + + if input_file.tell() >= input_file_length: + return + + def extract(self, input): + print("Attempting to extract punked data from", input) + path = os.path.join(config.gamedir, "outfits", input) + + with open(path, "rb") as input_file: + + input_file_length = self.get_file_length(input_file) + input_file.read(self.SIGNATURE_BYTES) + + 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 diff --git a/game/scripts/utility/skipping.rpy b/game/scripts/utility/skipping.rpy index f10dfc02..035bea46 100644 --- a/game/scripts/utility/skipping.rpy +++ b/game/scripts/utility/skipping.rpy @@ -22,15 +22,7 @@ init -1 python: for c in end_skip_callbacks: c() - def rebuild_dolls(): - if renpy.in_rollback(): - return - - for c in renpy.store.CHARACTERS: - c = get_character_object(c) - c.rebuild_image() - config.interact_callbacks.append(SkipCallbacksHandler()) - end_skip_callbacks.append(rebuild_dolls) + #end_skip_callbacks.append(rebuild_dolls) diff --git a/game/scripts/utility/translation.rpy b/game/scripts/utility/translation.rpy new file mode 100644 index 00000000..e2eba6f8 --- /dev/null +++ b/game/scripts/utility/translation.rpy @@ -0,0 +1,211 @@ +rpy python 3 + +init python in cli: + import os + import collections + import itertools + from renpy.translation import quote_unicode + from renpy.parser import elide_filename + + tl_file_cache = {} + + def open_tl_file(fn, mode): + + if fn in tl_file_cache: + f = tl_file_cache[fn] + + if f.mode == mode: + return f + + # elif not f.closed: + # # PY 2 only + # f.close() + + if not os.path.exists(fn): + dn = os.path.dirname(fn) + + try: + os.makedirs(dn) + except Exception: + pass + + f = open(fn, mode, encoding="utf-8") + f.write(u"\ufeff") + + else: + f = open(fn, mode, encoding="utf-8") + + tl_file_cache[fn] = f + + return f + + def scan_strings(strings, min_priority=0, max_priority=299, common_only=False): + + strings.sort(key=lambda s : s.sort_key) + + rv = [ ] + seen = set() + + for s in strings: + + if s.priority < min_priority: + continue + + if s.priority > max_priority: + continue + + if common_only and not s.common: + continue + + if s.text in seen: + continue + + seen.add(s.text) + rv.append(s) + + return rv + + def write_strings(language, strings): + + stl = renpy.game.script.translator.strings[language] + stringfiles = collections.defaultdict(list) + seen = set() + + nstrings = len(strings)-1 + + 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="") + + tlfn = renpy.translation.generation.translation_filename(s) + + if tlfn is None: + continue + + if s.text in seen: + continue + + seen.add(s.text) + + if language == "None" and tlfn == "common.rpy": + tlfn = "common.rpym" + + stringfiles[tlfn].append(s) + + for tlfn, sl in list(stringfiles.items()): + 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") + + 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") + + def retranslate(): + translator = renpy.game.script.translator + generation = renpy.translation.generation + scanstrings = renpy.translation.scanstrings + + parser = renpy.arguments.ArgumentParser() + parser.add_argument("--rebuild", action="store_true", help="Rebuilds the translation pointers and adds missing entries.") + parser.add_argument("--empty", action="store_true", help="When combined with rebuild parameter, it will insert an empty string into added entires. Does nothing on its own.") + parser.add_argument("--clean", action="store_true", help="Removes translation files that are no longer present within the game files.") + parser.add_argument("--dry", action="store_true", help="Simulates the removal of translation files that are no longer present within the game files.") + parser.add_argument("--include-mods", action="store_true", help="Include mod files when generating translations.") + args = parser.parse_args() + + scripts = generation.translate_list_files() + + if not args.include_mods: + mods_dir = os.path.join(renpy.config.gamedir, "mods") + scripts = [f for f in scripts if not f.startswith(mods_dir)] + + strings = [] + nscripts = len(scripts)-1 + + for i, filepath in enumerate(scripts): + n = round(float(i)/(nscripts)*100) + + for language in translator.languages: + + print("\rGenerating dialogues for {} ... Total progress:{} % ... Stage 1/2".format(language, n), end="") + + for _, trans in translator.file_translates[filepath]: + + trans_new = translator.language_translates.get((trans.identifier, language)) + filter = generation.null_filter + + if trans_new is None: + if not args.rebuild: + continue + + trans_new = trans + + if args.empty: + filter = generation.empty_filter + + if hasattr(trans, "alternate") and (trans.alternate, language) in translator.language_translates: + continue + + fp = os.path.relpath(filepath, renpy.config.gamedir) + fp = os.path.join(renpy.config.gamedir, renpy.config.tl_directory, language, fp) + + 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") + + for n in trans.block: + f.write(u" # " + n.get_code() + "\n") + + for n in trans_new.block: + f.write(u" " + n.get_code(filter) + "\n") + + f.write(u"\n") + + strings.extend(scanstrings.scan_strings(filepath)) + + strings = scan_strings(strings) + + for language in translator.languages: + + write_strings(language, strings) + + if args.clean: + translations = [f for f in renpy.list_files() if f.startswith(renpy.config.tl_directory) and f.endswith((".rpy", ".rpym"))] + + for filepath in translations: + fn = os.path.basename(filepath) + fp = os.path.relpath(filepath, os.path.join(renpy.config.tl_directory, language)) + fp = os.path.join(renpy.config.gamedir, fp) + + if fp not in scripts: + if fn == "common.rpy": + continue + + if fp in tl_file_cache: + f = tl_file_cache.pop(tl_file_cache) + f.close() + + if args.dry: + print("Removal required: {}".format(filepath)) + else: + os.unlink(filepath) + os.unlink(filepath + "c") + + for f in list(tl_file_cache.values()): + f.close() + + tl_file_cache.clear() + + return False + + renpy.arguments.register_command("retranslate", retranslate) diff --git a/game/scripts/utility/updater.rpy b/game/scripts/utility/updater.rpy index 5e8aa8be..6b97348c 100644 --- a/game/scripts/utility/updater.rpy +++ b/game/scripts/utility/updater.rpy @@ -123,6 +123,24 @@ init python: char.rebuild() + if current <= 1.441: + pass + + if current <= 1.442: + for i in CHARACTERS: + char = get_character_object(i) + + for j in char.wardrobe_list: + j.zlayers = [] + + for j in char.outfits: + for k in j.group: + k.zlayers = [] + + char.rebuild() + + if current <= 1.443: + fix_return_stack() if current > latest: diff --git a/game/scripts/wardrobe/color_picker.rpy b/game/scripts/wardrobe/color_picker.rpy index 57d358aa..5063d038 100644 --- a/game/scripts/wardrobe/color_picker.rpy +++ b/game/scripts/wardrobe/color_picker.rpy @@ -324,16 +324,13 @@ init python: class ColorPicker(NoRollback): - def __init__(self, start_color=(255, 255, 0, 255), default_color=(255, 0, 0, 255)): - col = Color(tuple(start_color)) - self.live_color = col - self.start_color = col - - default_color = Color(tuple(default_color)) + def __init__(self, start_color=Color("#fff"), default_color=Color("#fff")): + self.live_color = start_color + self.start_color = start_color self.default_color = default_color - self.hue, self.saturation, self.value = col.hsv - self.alpha = col.alpha + self.hue, self.saturation, self.value = start_color.hsv + self.alpha = start_color.alpha self.cph = ColorPickerHue(self) self.cpsv = ColorPickerSatVal(self) @@ -341,8 +338,8 @@ init python: self.cpa = ColorPickerAlpha(self) self.focus = None - h, s, v = col.hsv - a = col.alpha + h, s, v = start_color.hsv + a = start_color.alpha self.cph.pos = (0, 255 * h) self.cpsv.pos = (255 * s, 255 * (1- v)) self.cpa.pos = (255 * (1 - a), 0) @@ -418,7 +415,7 @@ screen colorpickerscreen(item=None): has vbox if item: - $ layers = [Color(tuple(i)) for i in item.color] + $ layers = item.color label "Layers" xalign 0.0 @@ -523,9 +520,10 @@ screen colorpickerscreen(item=None): text "Alpha:[cp.alpha]" if item: - textbutton "Colour code: [item.color]": - action Function(set_clipboard, str(item.color)) - #alternate [Function(item.set_color, evaluate(get_clipboard()))] + $ colorcode = [i.hexcode for i in item.color] + textbutton "Colour code: [colorcode]": + action [Function(set_clipboard, json.dumps(colorcode)), Notify("Colorcode copied to clipboard.")] + #alternate [Function(item.set_color, evaluate(str(get_clipboard())))] keysym ["ctrl_K_c"] #alternate_keysym ["ctrl_K_v"] diff --git a/game/scripts/wardrobe/functions.rpy b/game/scripts/wardrobe/functions.rpy index 80ebcc45..c4504d52 100644 --- a/game/scripts/wardrobe/functions.rpy +++ b/game/scripts/wardrobe/functions.rpy @@ -26,6 +26,11 @@ init python: raise KeyError("'{}' character is undefined.".format(key)) return getattr(store, "{}_outfit_{}".format(key[:3], type)) + def get_character_body(key, type="default"): + if not key in CHARACTERS: + raise KeyError("'{}' character is undefined.".format(key)) + return getattr(store, "{}_body_{}".format(key[:3], type)) + def get_character_outfit_req(key, item): if not key in CHARACTERS: raise KeyError("'{}' character is undefined.".format(key)) @@ -44,13 +49,6 @@ init python: req += ["NO PANTIES: {}".format(get_character_requirement(key, "unequip panties"))] print("\n".join(req)) - def get_character_outfit_hash(key): - ### Untested ### - char = get_character_object(key) - clothes = [x[0] for x in char.clothes.values() if x[0]] - salt = str( sorted([ sorted([x.name, x.type, x.id, x.color]) for x in clothes ]) ) - return hash(salt) - def get_character_tag(key): if not key in CHARACTERS: raise KeyError("'{}' character is undefined.".format(key)) @@ -112,8 +110,8 @@ init python: if not outfit.has_type("bottom"): score += 4 - if outfit.has_type("buttplug"): - score += 9 + # if outfit.has_type("buttplug"): + # score += 9 if outfit.has_type("makeup"): score += 1 diff --git a/game/scripts/wardrobe/studio.rpy b/game/scripts/wardrobe/studio.rpy index a2c72810..566240ca 100644 --- a/game/scripts/wardrobe/studio.rpy +++ b/game/scripts/wardrobe/studio.rpy @@ -5,25 +5,40 @@ default studio.choices = None default studio.drags = None init python in studio: + import os + import functools + import posixpath + Transform = renpy.store.Transform Flatten = renpy.store.Flatten Drag = renpy.store.Drag CHARACTERS = renpy.store.CHARACTERS + get_character_object = renpy.store.get_character_object + @functools.cache def get_faces(): - filters = ("_mask", "_skin") - d = {} + d = _dict() - for i in CHARACTERS: - d[i] = {} - for j in ("eyebrows", "eyes", "mouth", "pupils", "cheeks", "tears"): - path = "characters/{}/face/{}/".format(i, j) - d[i][j] = [x.split(path)[1].split(".webp")[0] for x in renpy.list_files() if x.startswith(path) and x.endswith(".webp") and not any(f in x for f in filters)] + for charname in CHARACTERS: + charobj = get_character_object(charname) + extensions = charobj.extensions - if j in ("cheeks", "tears"): - d[i][j].insert(0, None) - elif renpy.config.developer: - d[i][j].insert(0, None) + for part in charobj.face._face.keys(): + + path = posixpath.join("characters", charname, charobj.pose, "face", part) + + 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 not fp.startswith(path) or not ext in extensions: + continue + + expressions = d.setdefault(charname, _dict()).setdefault(part, _list((None,))) + + if not expression in expressions: + expressions.append(expression) return d def get_choices(): @@ -31,12 +46,12 @@ init python in studio: for i in CHARACTERS: d[i] = {} - d[i]["eyebrows"] = faces[i]["eyebrows"].index("base") - d[i]["eyes"] = faces[i]["eyes"].index("base") - d[i]["mouth"] = faces[i]["mouth"].index("base") - d[i]["pupils"] = faces[i]["pupils"].index("mid") - d[i]["cheeks"] = faces[i]["cheeks"].index(None) - d[i]["tears"] = faces[i]["tears"].index(None) + 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", [None]).index(None) + d[i]["tears"] = faces[i].get("tears", [None]).index(None) d[i]["zoom"] = 0.5 d[i]["flip"] = 1 d[i]["alpha"] = 1.0 @@ -92,7 +107,7 @@ init python in studio: char_obj = obj char_name = char_obj.name - d = Transform(Flatten(char_obj.get_image()), zoom=choices[char_name]["zoom"], xzoom=choices[char_name]["flip"], alpha=choices[char_name]["alpha"]) + d = Transform(Flatten(char_obj.image), zoom=choices[char_name]["zoom"], xzoom=choices[char_name]["flip"], alpha=choices[char_name]["alpha"]) pos = (250, 0) drag = Drag(d, activated=drag_activated, drag_offscreen=True, focus_mask=True) @@ -120,7 +135,7 @@ init python in studio: flip = choices[drag.char_name]["flip"] alpha = choices[drag.char_name]["alpha"] - d = Flatten(drag.char_obj.get_image()) + d = Flatten(drag.char_obj.image) d = Transform(d, zoom=zoom, xzoom=flip, alpha=alpha) drag.set_child(d) return diff --git a/game/scripts/wardrobe/wardrobe.rpy b/game/scripts/wardrobe/wardrobe.rpy index fb638556..f4a139f2 100644 --- a/game/scripts/wardrobe/wardrobe.rpy +++ b/game/scripts/wardrobe/wardrobe.rpy @@ -133,7 +133,7 @@ label wardrobe_menu(): # UNEQUIP if wardrobe_check_unequip(_choice[1]): $ wardrobe_react("unequip", _choice[1]) - $ char_active.unequip(_choice[1].type) + $ char_active.unequip(_choice[1]) $ current_item = None else: $ wardrobe_react("unequip_fail", _choice[1]) @@ -152,10 +152,6 @@ label wardrobe_menu(): if wardrobe_fallback_required(_choice[1]): # Has to be called regardless of player preference. $ renpy.call(get_character_response(active_girl, "fallback"), _choice[1]) - - # Lipstick Fix - Synchronize image with the current mouth after equipping. - if isinstance(_choice[1], DollLipstick): - $ _choice[1].rebuild_image() else: $ wardrobe_react("equip_fail", _choice[1]) @@ -197,10 +193,11 @@ label wardrobe_menu(): continue i.set_color(current_item.color) + i.is_stale() rebuild = True if rebuild: - outfit.rebuild_image() + outfit.is_stale() elif _choice[0] == "resetcolor": python: @@ -215,10 +212,11 @@ label wardrobe_menu(): continue i.set_color(current_item.color) + i.is_stale() rebuild = True if rebuild: - outfit.rebuild_image() + outfit.is_stale() elif _choice[0] == "touch": if wardrobe_check_touch(_choice[1]): @@ -268,7 +266,12 @@ label wardrobe_menu(): elif _choice[0] == "export": python: - _choice[1].export_data(datetime.datetime.now().strftime("%d %b %Y-%H%M%S")) + 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) achievements.unlock("export") elif _choice[0] == "import": @@ -303,8 +306,21 @@ label wardrobe_menu(): progress = get_character_progression(active_girl) - for k in char_active.clothes.keys(): - valid_choices = [x for x in char_active.wardrobe_list if (x.type == k and x.unlocked and progress >= x.level)] + if wardrobe_randomise_color: + + tetriadic_colors = [Color("%06x" % random.randint(0, 0xFFFFFF))] + triadic_colors = [tetriadic_colors[0].rotate_hue(0.25)] + double_colors = [tetriadic_colors[0], tetriadic_colors[0].rotate_hue(0.5)] + + for i in range(1, 3): + col = tetriadic_colors[0].rotate_hue((i * 90.0) / 360.0) + tetriadic_colors.append(col) + + col = triadic_colors[i-1].rotate_hue((i * 75.0) / 360.0) + triadic_colors.append(col) + + for k in dict(char_active.states).keys(): + valid_choices = [x for x in char_active.wardrobe_list if (istype(x, (DollCloth, DollClothDynamic, DollMakeup)) and x.type == k and x.unlocked and progress >= x.level)] if k == "panties": if not progress >= get_character_requirement(active_girl, "category lower undergarment"): @@ -339,11 +355,22 @@ label wardrobe_menu(): if not cloth is None: - if wardrobe_randomise_color: + if wardrobe_randomise_color and cloth.color: + col_len = len(cloth.color) col = [] - for i in range(cloth.layers): - col.append([random.randint(0, 255), random.randint(0, 255), random.randint(0, 255), 255]) + for i in range(col_len): + if col_len == 1: + col.append(tetriadic_colors[0]) + elif col_len == 2: + col.append(double_colors[i-1]) + elif col_len == 3: + col.append(triadic_colors[i-1]) + else: + try: + col.append(tetriadic_colors[i-1]) + except: + col.append(col[-1].rotate_hue(0.33)) cloth.set_color(col) @@ -352,17 +379,20 @@ label wardrobe_menu(): rebuild = False for i in outfit.group: - if not i.id == cloth.id: + if not (i.id, i.type) == (cloth.id, cloth.type): + continue + + if len(cloth.color) != len(i.color): + print(f"Mismatched color lens:\n{cloth}\n{i}") + renpy.notify("Error!") continue i.set_color(cloth.color) + i.is_stale() rebuild = True if rebuild: - outfit.rebuild_image() - - if isinstance(cloth, DollLipstick): - cloth.rebuild_image() + outfit.is_stale() char_active.equip(cloth) else: @@ -393,14 +423,15 @@ label wardrobe_menu(): rebuild = False for i in outfit.group: - if not i.id == cloth.id: + if not (i.id, i.type) == (cloth.id, cloth.type): continue i.set_color(cloth.color) + i.is_stale() rebuild = True if rebuild: - outfit.rebuild_image() + outfit.is_stale() renpy.hide_screen("wardrobe") char_active.wear("all") @@ -483,7 +514,7 @@ screen wardrobe_menu(xx, yy): add panel # Character image cut to the size of the wardrobe - add char_active.get_image(): + add char_active.image: yoffset -6 corner1 (184, 218) corner2 (924, 1200) @@ -562,7 +593,7 @@ screen wardrobe_menuitem(xx, yy): text "[current_category]" size 22 xalign 0.5 ypos 65 # Colours - if current_item: + if current_item and current_item.color: hbox: spacing 2 xanchor 1.0 @@ -596,16 +627,6 @@ screen wardrobe_menuitem(xx, yy): # Item icons if not menu_items: text "Nothing here yet" size 24 align (0.5, 0.6) - # elif not wardrobe_loaded: - # text "Loading..." size 24 align (0.5, 0.6) - - # for i in menu_items: - # $ i.rebuild_image() - # $ i.rebuild_icon() - # #$ renpy.invoke_in_thread(i.rebuild_icon) - - # $ wardrobe_loaded = True - # $ renpy.restart_interaction() else: vpgrid: cols 5 @@ -620,7 +641,7 @@ screen wardrobe_menuitem(xx, yy): gl_pixel_perfect True for item in menu_items: - $ icon = item.get_icon() + $ icon = item.icon $ is_seen = item.seen $ is_equipped = char_active.is_equipped_item(item) $ is_inadequate = bool(get_character_progression(active_girl) < item.level) @@ -641,9 +662,9 @@ screen wardrobe_menuitem(xx, yy): if is_modded: $ warnings.append("Item belongs to a mod:\n{size=-4}{color=#35aae2}" + item.get_modname() + "{/color}{/size}") - if is_multislot: - $ slot = str(int(item.type[-1])+1) - $ warnings.append("Occupies " + item.type[:-1] + " slot number " + slot) + # if is_multislot: + # $ slot = str(int(item.type[-1])+1) + # $ warnings.append("Occupies " + item.type[:-1] + " slot number " + slot) button: focus_mask None @@ -679,9 +700,9 @@ screen wardrobe_menuitem(xx, yy): if not is_seen: text "NEW" style "wardrobe_item_caption" anchor (1.0, 1.0) align (1.0, 1.0) offset (-5, -5) - # Bottom-Left - if is_multislot: - text "[slot]" style "wardrobe_item_caption" anchor (0.0, 1.0) align (0.0, 1.0) offset (5, -5) + # # Bottom-Left + # if is_multislot: + # text "[slot]" style "wardrobe_item_caption" anchor (0.0, 1.0) align (0.0, 1.0) offset (5, -5) screen wardrobe_outfit_menuitem(xx, yy): tag wardrobe_menuitem @@ -764,7 +785,7 @@ screen wardrobe_outfit_menuitem(xx, yy): $ is_modded = False $ is_equipped = False else: - $ icon = Transform(item.get_image(), crop=(220, 0, 680, 1200)) + $ icon = Transform(item.image, crop=(220, 0, 680, 1200)) $ is_modded = item.is_modded() $ is_equipped = bool(current_item == item) $ is_inadequate = (current_subcategory in {"save", "load", "schedule"} and not wardrobe_check_equip_outfit(item)) diff --git a/game/sounds/spill.ogg b/game/sounds/spill.ogg new file mode 100644 index 00000000..24136c1b --- /dev/null +++ b/game/sounds/spill.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64c7e50b547b4f12c4d26754ae8e80092112936fda06d3cb0c97205b6cb82c3e +size 12078