Compare commits

..

No commits in common. "8b6627f588fc4a3049c77f5bf9bb0d18f2ec9d6e" and "78230893a8de70ea443e4e6730c0516fb651d4fb" have entirely different histories.

25 changed files with 164 additions and 129 deletions

BIN
game/characters/genie/outfits/robes_beard.webp (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,3 +1,4 @@
init 5 python:
def her_cg_doll(st, at):
return hermione.image, None
@ -24,21 +25,35 @@ image CG cho_doll = DynamicDisplayable(cho_cg_doll)
image CG ast_doll = DynamicDisplayable(ast_cg_doll)
image CG sus_doll = DynamicDisplayable(sus_cg_doll)
transform CG_masker(child):
contains:
"images/CG/common/bg.webp"
contains:
AlphaMask(
Fixed(Transform(child, zoom=1.2, pos=(880, -180)), xfit=True, yfit=True),
"images/CG/common/mask.webp",
)
image CG luna = Fixed(
"images/CG/common/bg.webp",
AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG lun_doll", zoom=1.2)), "images/CG/common/mask.webp"),
)
image CG luna = At("CG lun_doll", CG_masker)
image CG hermione = At("CG her_doll", CG_masker)
image CG tonks = At("CG ton_doll", CG_masker)
image CG cho = At("CG cho_doll", CG_masker)
image CG astoria = At("CG ast_doll", CG_masker)
image CG susan = At("CG sus_doll", CG_masker)
image CG hermione = Fixed(
"images/CG/common/bg.webp",
AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG her_doll", zoom=1.2)), "images/CG/common/mask.webp"),
)
image CG tonks = Fixed(
"images/CG/common/bg.webp",
AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG ton_doll", zoom=1.2)), "images/CG/common/mask.webp"),
)
image CG cho = Fixed(
"images/CG/common/bg.webp",
AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG cho_doll", zoom=1.2)), "images/CG/common/mask.webp"),
)
image CG astoria = Fixed(
"images/CG/common/bg.webp",
AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG ast_doll", zoom=1.2)), "images/CG/common/mask.webp"),
)
image CG susan = Fixed(
"images/CG/common/bg.webp",
AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG sus_doll", zoom=1.2)), "images/CG/common/mask.webp"),
)
# Snape CG
screen snape_groping():

View File

@ -10,9 +10,9 @@ init python:
layeredimage genie_stats:
anchor (0.0, 1.0)
always "genie_bbase"
always "genie_outfit_robes"
always "genie_robes"
always "characters/genie/base.webp"
always "characters/genie/outfits/robes.webp"
always "characters/genie/outfits/robes_beard.webp"
# TODO: Add outfit support; Low priority
@ -20,28 +20,31 @@ layeredimage genie:
anchor (0.0, 1.0)
group outfit:
attribute nude
attribute robes default null
attribute nude "characters/genie/hair.webp"
attribute bbase default
always "characters/genie/base.webp"
group face:
attribute base default null
attribute grin
attribute angry
attribute smile
attribute open
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 robes default
attribute santa
attribute robes default "characters/genie/outfits/robes.webp"
attribute nude null
attribute santa "characters/genie/outfits/santa.webp"
attribute goatee default if_any ("robes", "nude")
group _ multiple variant "santa_beard" if_any "santa":
attribute base
attribute grin
attribute angry
attribute smile
attribute open
group face multiple:
attribute robes default "characters/genie/outfits/robes_beard.webp" if_all ["robes"]
attribute nude "characters/genie/beard.webp" if_all ["nude"]
attribute base "characters/genie/outfits/santa_beard_base.webp" if_all ["santa", "base"]
attribute grin "characters/genie/outfits/santa_beard_grin.webp" if_all ["santa", "grin"]
attribute angry "characters/genie/outfits/santa_beard_angry.webp" if_all ["santa", "angry"]
attribute smile "characters/genie/outfits/santa_beard_smile.webp" if_all ["santa", "smile"]
attribute open "characters/genie/outfits/santa_beard_open.webp" if_all ["santa", "open"]
at Transform(function=genie_transform)

View File

@ -536,7 +536,6 @@ label hg_sex_1:
show her_sex_personal lean_back as cg:
transform_anchor True
subpixel True
anchor (0.0, 0.0)
offset (0, 0)
zoom 1.0
@ -820,8 +819,8 @@ label hg_sex_1:
gen "You need to be punished for being such a slut!"
show her_sex_personal bent_over grab as cg:
offset (-65, -240)
zoom 0.45
offset (-65, -240)
zoom 0.45
rotate -4
easein 1.0 offset (0, -480) rotate 0
with vpunch
@ -830,7 +829,7 @@ label hg_sex_1:
#Could add some sound effect here
show her_sex_personal mouth_open eyebrows_base eyes_wide_r cheeks_blush as cg:
offset (0, -480)
offset (0, -480)
rotate 0
ease_quad 3.0 offset (-60, -620) zoom 0.55
nar "You push Hermione down onto the desk and start fucking her fiercely!"
@ -1954,7 +1953,7 @@ label hg_sex_3:
rotate 1
xoffset -70
pause 1.0
offset (-60, -620)
offset (-60, -620)
zoom 0.55
ease_quad 1.0 offset (-60, -635)
with hpunch

View File

@ -71,21 +71,24 @@ label luna_intro_E1:
$ luna.set_face(mouth="soft", eyes="closed", eyebrows="low", pupils="mid")
show CG luna as cg zorder 17:
xycenter (-520, -300)
align (0.5, 0.5)
pos (-520, -300)
with fade
gen "Who is--"
show CG luna as cg zorder 17:
subpixel True
align (0.5, 0.5)
pos (-520, -300)
easein_quad 5.0 pos (-520, 150)
gen "... A girl?"
lun "*Mmh*"
show CG luna as cg zorder 17:
subpixel True
zoom 1.0
easein_quad 3.0 align (.0, .0) pos (0, 0) zoom 0.5 # pos (0, 0) not necessary in next renpy version
align (0.5, 0.5)
pos (-520, 150)
easein_quad 3.0 align (0.0, 0.0) pos (0, 0) zoom 0.5
gen "What are you doing in my office?"
gen "Did Snape send you here? Surely--"

View File

@ -42,10 +42,10 @@ init python:
def use(self):
if not self.usable:
raise Exception("Item {!r} is not usable as it does not have any function or a label.".format(self.name))
raise Exception("Item '{}' is not usable as it does not have any function or a label.".format(self.name))
if self.owned == 0:
raise Exception("Item {!r} owned count is equal to zero.".format(self.name))
raise Exception("Item '{}' owned count is equal to zero.".format(self.name))
if not self.type == "quest":
# Quest items require manual triggers, it's more convenient.
@ -62,10 +62,10 @@ init python:
def give(self, who):
if not self.givable:
raise Exception("Item {!r} is not marked as givable.".format(self.name))
raise Exception("Item '{}' is not marked as givable.".format(self.name))
if self.owned == 0:
raise Exception("Item {!r} owned count is equal to zero.".format(self.name))
raise Exception("Item '{}' owned count is equal to zero.".format(self.name))
if not self.type == "quest":
# Quest items require manual triggers, it's more convenient.
@ -119,7 +119,7 @@ init python:
def use(self):
if self.owned == 0:
raise Exception("Decoration {!r} owned count is equal to zero.".format(self.name))
raise Exception("Decoration '{}' owned count is equal to zero.".format(self.name))
achievements.unlock("decorator")
@ -155,7 +155,7 @@ init python:
self.usable = bool( renpy.has_label("{}_use".format(self.label)) )
if self.recipe is None:
raise Exception("Potion {!r} recipe is empty!".format(self.name))
raise Exception("Potion '{}' recipe is empty!".format(self.name))
def has_ingredients(self):
return all(x.owned > 0 for x in self.recipe)
@ -163,7 +163,7 @@ init python:
def set_active(self, who):
"""Marks the event as 'in progress' and will trigger a return event in the morning/evening."""
if not who in list(self.in_progress.keys()):
raise Exception("Potion {!r} is not marked as usable on {!r}.".format(self.name, who))
raise Exception("Potion '{}' is not marked as usable on '{}'.".format(self.name, who))
self.in_progress[who] = True
@ -195,13 +195,13 @@ init python:
check_label = "{}_potion_check".format(who[:3])
if not renpy.has_label(give_label):
raise Exception("Potion {!r} give label doesn't exist.".format(self.name))
raise Exception("Potion '{}' give label doesn't exist.".format(self.name))
if not renpy.has_label(check_label):
raise Exception("Potion {!r} check label doesn't exist for {!r}.".format(self.name, who))
raise Exception("Potion '{}' check label doesn't exist for '{}'.".format(self.name, who))
if self.owned == 0:
raise Exception("Potion {!r} owned count is equal to zero.".format(self.name))
raise Exception("Potion '{}' owned count is equal to zero.".format(self.name))
if not self.check_progression(who):
self.jump(check_label)
@ -215,10 +215,10 @@ init python:
label = "{}_use".format(self.label)
if not renpy.has_label(label):
raise Exception("Potion {!r} has no use label.".format(self.name))
raise Exception("Potion '{}' has no use label.".format(self.name))
if self.owned == 0:
raise Exception("Potion {!r} owned count is equal to zero.".format(self.name))
raise Exception("Potion '{}' owned count is equal to zero.".format(self.name))
self.owned -= 1
self.jump(label)
@ -227,12 +227,12 @@ init python:
"""Play the return event for <girl>"""
if not self.in_progress[who]:
raise Exception("Potion {!r} is not marked as in progress.".format(self.name))
raise Exception("Potion '{}' is not marked as in progress.".format(self.name))
label = "{}_{}_return".format(who[:3], self.label)
if not renpy.has_label(label):
raise Exception("Potion {!r} has no return label.".format(self.name))
raise Exception("Potion '{}' has no return label.".format(self.name))
self.in_progress[who] = False
self.jump(label)

Some files were not shown because too many files have changed in this diff Show More