forked from SilverStudioGames/WTS
Temporary expression assignment support
* Added temporary expression assignment functionality * Fixed get_face returning a live dict object instead of a dict copy * Improved and simplified character speaker functions * Removed obsolete face dicts
This commit is contained in:
parent
57965bd8f5
commit
2ee9d0fb16
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -20,24 +20,40 @@ init python:
|
||||
def hoo(what, mouth=None, eyes=None, eyebrows=None, pupils=None, cheeks=None, tears=None,
|
||||
emote=None, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs):
|
||||
|
||||
def show():
|
||||
hooch.show()
|
||||
|
||||
if not renpy.in_rollback():
|
||||
renpy.with_statement(trans or d2)
|
||||
|
||||
face = {"mouth": mouth, "eyes": eyes, "eyebrows": eyebrows, "pupils": pupils, "cheeks": cheeks, "tears": tears}
|
||||
temp_face = renpy.game.context().temporary_attributes
|
||||
redraw = False
|
||||
tag = hooch.tag
|
||||
layer = hooch.layer
|
||||
#showing = renpy.showing(name=tag, layer=layer)
|
||||
|
||||
if xpos != None or ypos != None:
|
||||
xpos = sprite_pos.get("x").get(xpos, xpos) or hooch.pos[0]
|
||||
ypos = sprite_pos.get("y").get(ypos, ypos) or hooch.pos[1]
|
||||
if xpos is not None or ypos is not None:
|
||||
xpos = sprite_pos.get("x").get(xpos, hooch.pos[0])
|
||||
ypos = sprite_pos.get("y").get(ypos, hooch.pos[1])
|
||||
hooch.pos = (xpos, ypos)
|
||||
redraw = True
|
||||
|
||||
head_only = hooch.pos[1] == sprite_pos.get("y").get("head")
|
||||
|
||||
if any((mouth, eyes, eyebrows, pupils, cheeks, tears)):
|
||||
hooch.set_face(mouth=mouth, eyes=eyes, eyebrows=eyebrows, pupils=pupils, cheeks=cheeks, tears=tears)
|
||||
if any(face.values()):
|
||||
hooch.set_face(**face)
|
||||
redraw = True
|
||||
|
||||
hooch.set_emote(emote)
|
||||
if temp_face:
|
||||
last_face = hooch.get_face()
|
||||
|
||||
d = dict(zip(temp_face[::2], temp_face[1::2]))
|
||||
hooch.set_face(**d)
|
||||
redraw = True
|
||||
|
||||
if emote:
|
||||
hooch.set_emote(emote)
|
||||
redraw = True
|
||||
|
||||
if animation != False:
|
||||
hooch.animation = animation
|
||||
@ -48,16 +64,15 @@ init python:
|
||||
redraw = True
|
||||
|
||||
if redraw:
|
||||
hooch.show()
|
||||
|
||||
if not renpy.in_rollback():
|
||||
if trans:
|
||||
renpy.with_statement(trans)
|
||||
else:
|
||||
renpy.with_statement(d2)
|
||||
show()
|
||||
|
||||
if what:
|
||||
character.hooch_say(what, **kwargs)
|
||||
|
||||
# Reshow sprite if any changes have been made
|
||||
if temp_face:
|
||||
hooch.set_face(**last_face)
|
||||
show()
|
||||
|
||||
if head_only:
|
||||
hooch.hide()
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -37,7 +37,7 @@ init python:
|
||||
layers = {}
|
||||
for part, name in face.items():
|
||||
|
||||
if name is None:
|
||||
if name in (None, False):
|
||||
continue
|
||||
|
||||
path = posixpath.join(self.char.modpath, "characters", self.char.name, "poses", self.char.pose, subpath, "face", part, name)
|
||||
|
@ -14,7 +14,7 @@ init python:
|
||||
outfit_last = outfit = get_character_outfit(c, type="last")
|
||||
outfit_last.save()
|
||||
|
||||
char.set_face(mouth="base", eyes="base", eyebrows="base", pupils="mid")
|
||||
char.set_face(mouth="base", eyes="base", eyebrows="base", pupils="mid", cheeks="none", tears="none")
|
||||
|
||||
def chibi_init():
|
||||
# TODO: Perhaps it could be automated?
|
||||
|
@ -446,7 +446,7 @@ init python:
|
||||
|
||||
def get_face(self):
|
||||
"""Returns a dictionary containing currently set facial expressions. Used in character studio."""
|
||||
return self.face._face
|
||||
return self.face._face.copy()
|
||||
|
||||
def set_body_hue(self, arg):
|
||||
"""Takes integer between 0 - 359, rotates the character body colour by given amount."""
|
||||
|
@ -67,7 +67,7 @@ label blueballing_bad:
|
||||
call her_walk(xpos="418", ypos="430", speed=1.5)
|
||||
her "He--{w=0.2} He's covered his tracks... Or he made that {size=-3}idiot{/size} teacher Snape take them!" ("angry", "base", "annoyed", "R_soft")
|
||||
call her_walk(xpos="600", ypos="410", speed=1.5)
|
||||
ton "Miss Granger, please, you have to--{w=0.5}{nw}" ("open", "base", "annoyed", "stare", hair="annoyed")
|
||||
ton "Miss Granger, please, you have to--{w=0.5}{nw}" ("open", "base", "annoyed", "stare", hair="upset")
|
||||
her "You think this is something-{w=0.25} You think this is bad?{w=0.25} This, this chicanery?!" ("angry", "wide", "angry", "L_soft", flip=True)
|
||||
call her_walk(xpos="599", ypos="410", speed=1.5)
|
||||
|
||||
@ -95,7 +95,7 @@ label blueballing_bad:
|
||||
her "" ("open", "wide", "base", "down", xpos="mid", ypos="base")
|
||||
pause
|
||||
her "..." ("open", "wide", "base", "shocked")
|
||||
ton "..." ("annoyed", "base", "annoyed", "stare", hair="annoyed")
|
||||
ton "..." ("annoyed", "base", "annoyed", "stare", hair="upset")
|
||||
gen "..." ("base", xpos="far_left", ypos="head")
|
||||
her "{w=0.5}{size=+5}-!{/size}" ("disgust", "wide", "worried", "R", cheeks="blush")
|
||||
|
||||
@ -104,7 +104,7 @@ label blueballing_bad:
|
||||
|
||||
call music_block
|
||||
|
||||
ton "..." ("annoyed", "base", "annoyed", "stare", hair="annoyed")
|
||||
ton "..." ("annoyed", "base", "annoyed", "stare", hair="upset")
|
||||
ton "I guess this proves that the greatest prudes are the ones with the biggest stick up their asses." ("soft", "base", "base", "L", hair="neutral")
|
||||
gen "Tonks, what the fuck are you talking about?" ("open", xpos="far_left", ypos="head")
|
||||
ton "I'm saying this girl should really learn how to loosen up." ("annoyed", "base", "annoyed", "L", hair="neutral")
|
||||
|
Loading…
Reference in New Issue
Block a user