Compare commits
10 Commits
78230893a8
...
8b6627f588
Author | SHA1 | Date | |
---|---|---|---|
8b6627f588 | |||
40ddb29185 | |||
aa95f701dc | |||
641893217e | |||
3a429070fc | |||
15e3e240fc | |||
9c274bee6f | |||
eeb68cb6c6 | |||
5460ec2572 | |||
2e17dd2582 |
BIN
game/characters/genie/outfits/robes_beard.webp
(Stored with Git LFS)
BIN
game/characters/genie/outfits/robes_beard.webp
(Stored with Git LFS)
Binary file not shown.
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
init 5 python:
|
init 5 python:
|
||||||
def her_cg_doll(st, at):
|
def her_cg_doll(st, at):
|
||||||
return hermione.image, None
|
return hermione.image, None
|
||||||
@ -25,35 +24,21 @@ image CG cho_doll = DynamicDisplayable(cho_cg_doll)
|
|||||||
image CG ast_doll = DynamicDisplayable(ast_cg_doll)
|
image CG ast_doll = DynamicDisplayable(ast_cg_doll)
|
||||||
image CG sus_doll = DynamicDisplayable(sus_cg_doll)
|
image CG sus_doll = DynamicDisplayable(sus_cg_doll)
|
||||||
|
|
||||||
image CG luna = Fixed(
|
transform CG_masker(child):
|
||||||
"images/CG/common/bg.webp",
|
contains:
|
||||||
AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG lun_doll", zoom=1.2)), "images/CG/common/mask.webp"),
|
"images/CG/common/bg.webp"
|
||||||
)
|
contains:
|
||||||
|
AlphaMask(
|
||||||
|
Fixed(Transform(child, zoom=1.2, pos=(880, -180)), xfit=True, yfit=True),
|
||||||
|
"images/CG/common/mask.webp",
|
||||||
|
)
|
||||||
|
|
||||||
image CG hermione = Fixed(
|
image CG luna = At("CG lun_doll", CG_masker)
|
||||||
"images/CG/common/bg.webp",
|
image CG hermione = At("CG her_doll", CG_masker)
|
||||||
AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG her_doll", zoom=1.2)), "images/CG/common/mask.webp"),
|
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 tonks = Fixed(
|
image CG susan = At("CG sus_doll", CG_masker)
|
||||||
"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
|
# Snape CG
|
||||||
screen snape_groping():
|
screen snape_groping():
|
||||||
|
@ -10,9 +10,9 @@ init python:
|
|||||||
layeredimage genie_stats:
|
layeredimage genie_stats:
|
||||||
anchor (0.0, 1.0)
|
anchor (0.0, 1.0)
|
||||||
|
|
||||||
always "characters/genie/base.webp"
|
always "genie_bbase"
|
||||||
always "characters/genie/outfits/robes.webp"
|
always "genie_outfit_robes"
|
||||||
always "characters/genie/outfits/robes_beard.webp"
|
always "genie_robes"
|
||||||
|
|
||||||
# TODO: Add outfit support; Low priority
|
# TODO: Add outfit support; Low priority
|
||||||
|
|
||||||
@ -20,31 +20,28 @@ layeredimage genie:
|
|||||||
anchor (0.0, 1.0)
|
anchor (0.0, 1.0)
|
||||||
|
|
||||||
group outfit:
|
group outfit:
|
||||||
attribute robes default null
|
attribute nude
|
||||||
attribute nude "characters/genie/hair.webp"
|
|
||||||
|
|
||||||
always "characters/genie/base.webp"
|
attribute bbase default
|
||||||
|
|
||||||
group face:
|
group face:
|
||||||
attribute base default null
|
attribute base default null
|
||||||
attribute grin "characters/genie/grin.webp"
|
attribute grin
|
||||||
attribute angry "characters/genie/angry.webp"
|
attribute angry
|
||||||
attribute smile "characters/genie/smile.webp"
|
attribute smile
|
||||||
attribute open "characters/genie/open.webp"
|
attribute open
|
||||||
|
|
||||||
group outfit:
|
group outfit:
|
||||||
attribute robes default "characters/genie/outfits/robes.webp"
|
attribute robes default
|
||||||
attribute nude null
|
attribute santa
|
||||||
attribute santa "characters/genie/outfits/santa.webp"
|
|
||||||
|
|
||||||
group face multiple:
|
attribute goatee default if_any ("robes", "nude")
|
||||||
attribute robes default "characters/genie/outfits/robes_beard.webp" if_all ["robes"]
|
group _ multiple variant "santa_beard" if_any "santa":
|
||||||
attribute nude "characters/genie/beard.webp" if_all ["nude"]
|
attribute base
|
||||||
attribute base "characters/genie/outfits/santa_beard_base.webp" if_all ["santa", "base"]
|
attribute grin
|
||||||
attribute grin "characters/genie/outfits/santa_beard_grin.webp" if_all ["santa", "grin"]
|
attribute angry
|
||||||
attribute angry "characters/genie/outfits/santa_beard_angry.webp" if_all ["santa", "angry"]
|
attribute smile
|
||||||
attribute smile "characters/genie/outfits/santa_beard_smile.webp" if_all ["santa", "smile"]
|
attribute open
|
||||||
attribute open "characters/genie/outfits/santa_beard_open.webp" if_all ["santa", "open"]
|
|
||||||
|
|
||||||
at Transform(function=genie_transform)
|
at Transform(function=genie_transform)
|
||||||
|
|
||||||
|
@ -536,6 +536,7 @@ label hg_sex_1:
|
|||||||
|
|
||||||
show her_sex_personal lean_back as cg:
|
show her_sex_personal lean_back as cg:
|
||||||
transform_anchor True
|
transform_anchor True
|
||||||
|
subpixel True
|
||||||
anchor (0.0, 0.0)
|
anchor (0.0, 0.0)
|
||||||
offset (0, 0)
|
offset (0, 0)
|
||||||
zoom 1.0
|
zoom 1.0
|
||||||
@ -819,8 +820,8 @@ label hg_sex_1:
|
|||||||
gen "You need to be punished for being such a slut!"
|
gen "You need to be punished for being such a slut!"
|
||||||
|
|
||||||
show her_sex_personal bent_over grab as cg:
|
show her_sex_personal bent_over grab as cg:
|
||||||
offset (-65, -240)
|
offset (-65, -240)
|
||||||
zoom 0.45
|
zoom 0.45
|
||||||
rotate -4
|
rotate -4
|
||||||
easein 1.0 offset (0, -480) rotate 0
|
easein 1.0 offset (0, -480) rotate 0
|
||||||
with vpunch
|
with vpunch
|
||||||
@ -829,7 +830,7 @@ label hg_sex_1:
|
|||||||
|
|
||||||
#Could add some sound effect here
|
#Could add some sound effect here
|
||||||
show her_sex_personal mouth_open eyebrows_base eyes_wide_r cheeks_blush as cg:
|
show her_sex_personal mouth_open eyebrows_base eyes_wide_r cheeks_blush as cg:
|
||||||
offset (0, -480)
|
offset (0, -480)
|
||||||
rotate 0
|
rotate 0
|
||||||
ease_quad 3.0 offset (-60, -620) zoom 0.55
|
ease_quad 3.0 offset (-60, -620) zoom 0.55
|
||||||
nar "You push Hermione down onto the desk and start fucking her fiercely!"
|
nar "You push Hermione down onto the desk and start fucking her fiercely!"
|
||||||
@ -1953,7 +1954,7 @@ label hg_sex_3:
|
|||||||
rotate 1
|
rotate 1
|
||||||
xoffset -70
|
xoffset -70
|
||||||
pause 1.0
|
pause 1.0
|
||||||
offset (-60, -620)
|
offset (-60, -620)
|
||||||
zoom 0.55
|
zoom 0.55
|
||||||
ease_quad 1.0 offset (-60, -635)
|
ease_quad 1.0 offset (-60, -635)
|
||||||
with hpunch
|
with hpunch
|
||||||
|
@ -71,24 +71,21 @@ label luna_intro_E1:
|
|||||||
|
|
||||||
$ luna.set_face(mouth="soft", eyes="closed", eyebrows="low", pupils="mid")
|
$ luna.set_face(mouth="soft", eyes="closed", eyebrows="low", pupils="mid")
|
||||||
show CG luna as cg zorder 17:
|
show CG luna as cg zorder 17:
|
||||||
align (0.5, 0.5)
|
xycenter (-520, -300)
|
||||||
pos (-520, -300)
|
|
||||||
with fade
|
with fade
|
||||||
|
|
||||||
gen "Who is--"
|
gen "Who is--"
|
||||||
show CG luna as cg zorder 17:
|
show CG luna as cg zorder 17:
|
||||||
align (0.5, 0.5)
|
subpixel True
|
||||||
pos (-520, -300)
|
|
||||||
easein_quad 5.0 pos (-520, 150)
|
easein_quad 5.0 pos (-520, 150)
|
||||||
|
|
||||||
gen "... A girl?"
|
gen "... A girl?"
|
||||||
lun "*Mmh*"
|
lun "*Mmh*"
|
||||||
|
|
||||||
show CG luna as cg zorder 17:
|
show CG luna as cg zorder 17:
|
||||||
|
subpixel True
|
||||||
zoom 1.0
|
zoom 1.0
|
||||||
align (0.5, 0.5)
|
easein_quad 3.0 align (.0, .0) pos (0, 0) zoom 0.5 # pos (0, 0) not necessary in next renpy version
|
||||||
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 "What are you doing in my office?"
|
||||||
gen "Did Snape send you here? Surely--"
|
gen "Did Snape send you here? Surely--"
|
||||||
|
@ -42,10 +42,10 @@ init python:
|
|||||||
|
|
||||||
def use(self):
|
def use(self):
|
||||||
if not self.usable:
|
if not self.usable:
|
||||||
raise Exception("Item '{}' is not usable as it does not have any function or a label.".format(self.name))
|
raise Exception("Item {!r} is not usable as it does not have any function or a label.".format(self.name))
|
||||||
|
|
||||||
if self.owned == 0:
|
if self.owned == 0:
|
||||||
raise Exception("Item '{}' owned count is equal to zero.".format(self.name))
|
raise Exception("Item {!r} owned count is equal to zero.".format(self.name))
|
||||||
|
|
||||||
if not self.type == "quest":
|
if not self.type == "quest":
|
||||||
# Quest items require manual triggers, it's more convenient.
|
# Quest items require manual triggers, it's more convenient.
|
||||||
@ -62,10 +62,10 @@ init python:
|
|||||||
|
|
||||||
def give(self, who):
|
def give(self, who):
|
||||||
if not self.givable:
|
if not self.givable:
|
||||||
raise Exception("Item '{}' is not marked as givable.".format(self.name))
|
raise Exception("Item {!r} is not marked as givable.".format(self.name))
|
||||||
|
|
||||||
if self.owned == 0:
|
if self.owned == 0:
|
||||||
raise Exception("Item '{}' owned count is equal to zero.".format(self.name))
|
raise Exception("Item {!r} owned count is equal to zero.".format(self.name))
|
||||||
|
|
||||||
if not self.type == "quest":
|
if not self.type == "quest":
|
||||||
# Quest items require manual triggers, it's more convenient.
|
# Quest items require manual triggers, it's more convenient.
|
||||||
@ -119,7 +119,7 @@ init python:
|
|||||||
|
|
||||||
def use(self):
|
def use(self):
|
||||||
if self.owned == 0:
|
if self.owned == 0:
|
||||||
raise Exception("Decoration '{}' owned count is equal to zero.".format(self.name))
|
raise Exception("Decoration {!r} owned count is equal to zero.".format(self.name))
|
||||||
|
|
||||||
achievements.unlock("decorator")
|
achievements.unlock("decorator")
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ init python:
|
|||||||
self.usable = bool( renpy.has_label("{}_use".format(self.label)) )
|
self.usable = bool( renpy.has_label("{}_use".format(self.label)) )
|
||||||
|
|
||||||
if self.recipe is None:
|
if self.recipe is None:
|
||||||
raise Exception("Potion '{}' recipe is empty!".format(self.name))
|
raise Exception("Potion {!r} recipe is empty!".format(self.name))
|
||||||
|
|
||||||
def has_ingredients(self):
|
def has_ingredients(self):
|
||||||
return all(x.owned > 0 for x in self.recipe)
|
return all(x.owned > 0 for x in self.recipe)
|
||||||
@ -163,7 +163,7 @@ init python:
|
|||||||
def set_active(self, who):
|
def set_active(self, who):
|
||||||
"""Marks the event as 'in progress' and will trigger a return event in the morning/evening."""
|
"""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()):
|
if not who in list(self.in_progress.keys()):
|
||||||
raise Exception("Potion '{}' is not marked as usable on '{}'.".format(self.name, who))
|
raise Exception("Potion {!r} is not marked as usable on {!r}.".format(self.name, who))
|
||||||
|
|
||||||
self.in_progress[who] = True
|
self.in_progress[who] = True
|
||||||
|
|
||||||
@ -195,13 +195,13 @@ init python:
|
|||||||
check_label = "{}_potion_check".format(who[:3])
|
check_label = "{}_potion_check".format(who[:3])
|
||||||
|
|
||||||
if not renpy.has_label(give_label):
|
if not renpy.has_label(give_label):
|
||||||
raise Exception("Potion '{}' give label doesn't exist.".format(self.name))
|
raise Exception("Potion {!r} give label doesn't exist.".format(self.name))
|
||||||
|
|
||||||
if not renpy.has_label(check_label):
|
if not renpy.has_label(check_label):
|
||||||
raise Exception("Potion '{}' check label doesn't exist for '{}'.".format(self.name, who))
|
raise Exception("Potion {!r} check label doesn't exist for {!r}.".format(self.name, who))
|
||||||
|
|
||||||
if self.owned == 0:
|
if self.owned == 0:
|
||||||
raise Exception("Potion '{}' owned count is equal to zero.".format(self.name))
|
raise Exception("Potion {!r} owned count is equal to zero.".format(self.name))
|
||||||
|
|
||||||
if not self.check_progression(who):
|
if not self.check_progression(who):
|
||||||
self.jump(check_label)
|
self.jump(check_label)
|
||||||
@ -215,10 +215,10 @@ init python:
|
|||||||
label = "{}_use".format(self.label)
|
label = "{}_use".format(self.label)
|
||||||
|
|
||||||
if not renpy.has_label(label):
|
if not renpy.has_label(label):
|
||||||
raise Exception("Potion '{}' has no use label.".format(self.name))
|
raise Exception("Potion {!r} has no use label.".format(self.name))
|
||||||
|
|
||||||
if self.owned == 0:
|
if self.owned == 0:
|
||||||
raise Exception("Potion '{}' owned count is equal to zero.".format(self.name))
|
raise Exception("Potion {!r} owned count is equal to zero.".format(self.name))
|
||||||
|
|
||||||
self.owned -= 1
|
self.owned -= 1
|
||||||
self.jump(label)
|
self.jump(label)
|
||||||
@ -227,12 +227,12 @@ init python:
|
|||||||
"""Play the return event for <girl>"""
|
"""Play the return event for <girl>"""
|
||||||
|
|
||||||
if not self.in_progress[who]:
|
if not self.in_progress[who]:
|
||||||
raise Exception("Potion '{}' is not marked as in progress.".format(self.name))
|
raise Exception("Potion {!r} is not marked as in progress.".format(self.name))
|
||||||
|
|
||||||
label = "{}_{}_return".format(who[:3], self.label)
|
label = "{}_{}_return".format(who[:3], self.label)
|
||||||
|
|
||||||
if not renpy.has_label(label):
|
if not renpy.has_label(label):
|
||||||
raise Exception("Potion '{}' has no return label.".format(self.name))
|
raise Exception("Potion {!r} has no return label.".format(self.name))
|
||||||
|
|
||||||
self.in_progress[who] = False
|
self.in_progress[who] = False
|
||||||
self.jump(label)
|
self.jump(label)
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user