I have a series of input screens I use for character creation at the start of the game. For weeks, they've all been working fine.
Today, the sixth input screen, which uses the exact same code as the previous five, decided to sometimes activate hotkey commands and/or not accept typed input.
To be clear, I will type the first letter in the sixth input screen, and it works fine. I type the second letter, and it either does nothing, or if it's a hotkey, it activates a hotkey.
The problem also exists with the seventh input screen.
I have tried many solutions, including rewriting the code from the ground up, making a whole new game and copying/pasting the rewritten code there, deleting persistent data and forcing a recompile, and deleting saved games.
I feel like I may have introduced a bug that damaged something deeper than anything I know how to fix. Is there anything else I can purge to try to clean out whatever bug is there, and reinstall as necessary?
Here is the screen code. The last two screens are the problem-children. Note: this is sloppy and not optimized. I am iterating quickly. Basically, I am sure it's inelegant, but the bug didn't seem to have anything to do with that.
Code: Select all
screen countCharactersName():
$ characterLength = len(pcname)
text "[characterLength]/25":
xalign 0.8
yalign 0.3
screen countCharactersAppearance():
$ characterLength = len(appearance)
text "[characterLength]/250":
xalign 0.8
yalign 0.4
screen countCharactersSkill():
$ characterLength = len(skill)
text "[characterLength]/250":
xalign 0.8
yalign 0.4
screen countCharactersWorkOn():
$ characterLength = len(workOn)
text "[characterLength]/250":
xalign 0.8
yalign 0.4
screen countCharactersPossession():
$ characterLength = len(possession)
text "[characterLength]/250":
xalign 0.8
yalign 0.4
screen countCharactersBigChange():
$ characterLength = len(bigChange)
text "[characterLength]/250":
xalign 0.8
yalign 0.4
screen enterName():
vbox:
xalign 0.5
yalign 0.5
input:
xalign 0.5
yalign 0.5
default "You didn't write a name."
length 25
value VariableInputValue("pcname")
copypaste True
frame:
xpadding 40
ypadding 15
xalign 0.5
yanchor 0.5
ypos 0.7
textbutton "Confirm" action Jump ("confirmName")
screen nameConfirm():
vbox:
xanchor 0.5
xpos 0.5
yalign 0.55
spacing 20
text "You gave yourself the name {font=NewtSerifBold.otf}{size=+5}[pcname]{/size}{/font}."
text "Are you happy with your name? If not, you can change it."
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "I like this name." action Jump ("appearance")
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "I have a better idea for a name." action Jump ("start")
screen enterAppearance():
vbox:
xalign 0.5
yalign 0.6
input:
xalign 0.5
yalign 0.5
default "You didn't write anything."
length 250
value VariableInputValue("appearance")
copypaste True
frame:
xpadding 40
ypadding 15
xalign 0.5
yanchor 0.5
ypos 0.7
textbutton "Confirm" action Jump ("confirmAppearance")
screen appearanceConfirm():
vbox:
xanchor 0.5
xpos 0.5
yalign 0.9
spacing 20
text "You wrote:"
vbox:
spacing 50
xalign 0.5
yalign 0.5
text "{font=NewtSerifBold.otf}{size=+5}[appearance]{/size}{/font}"
text "Are you happy with this description?"
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "Looking good!" action Jump ("skill")
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "I want to refine this description." action Jump ("appearance")
screen enterSkill():
vbox:
xalign 0.5
yalign 0.6
input:
xalign 0.5
yalign 0.5
default "You didn't write anything."
length 250
value VariableInputValue("skill")
copypaste True
frame:
xpadding 40
ypadding 15
xalign 0.5
yanchor 0.5
ypos 0.7
textbutton "Confirm" action Jump ("confirmSkill")
screen skillConfirm():
vbox:
xanchor 0.5
xpos 0.5
yalign 0.9
spacing 20
text "You wrote:"
vbox:
spacing 50
xalign 0.5
yalign 0.5
text "{font=NewtSerifBold.otf}{size=+5}[skill]{/size}{/font}"
text "Are you happy with this description?"
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "This will work nicely." action Jump ("needToWorkOn")
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "I want to refine this description." action Jump ("skill")
screen enterWorkOn():
vbox:
xalign 0.5
yalign 0.6
input:
xalign 0.5
yalign 0.5
default "You didn't write anything."
length 250
value VariableInputValue("workOn")
copypaste True
frame:
xpadding 40
ypadding 15
xalign 0.5
yanchor 0.5
ypos 0.7
textbutton "Confirm" action Jump ("confirmWorkOn")
screen workOnConfirm():
vbox:
xanchor 0.5
xpos 0.5
yalign 0.9
spacing 20
text "You wrote:"
vbox:
spacing 50
xalign 0.5
yalign 0.5
text "{font=NewtSerifBold.otf}{size=+5}[workOn]{/size}{/font}"
text "Are you happy with this description?"
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "This gives me interesting ideas for roleplaying." action Jump ("possession")
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "I want to refine this description." action Jump ("needToWorkOn")
screen enterPossession():
vbox:
xalign 0.5
yalign 0.6
input:
xalign 0.5
yalign 0.5
default "You didn't write anything."
length 250
value VariableInputValue("possession")
copypaste True
frame:
xpadding 40
ypadding 15
xalign 0.5
yanchor 0.5
ypos 0.7
textbutton "Confirm" action Jump ("confirmPossession")
screen possessionConfirm():
vbox:
xanchor 0.5
xpos 0.5
yalign 0.9
spacing 20
text "You wrote:"
vbox:
spacing 50
xalign 0.5
yalign 0.5
text "{font=NewtSerifBold.otf}{size=+5}[possession]{/size}{/font}"
text "Are you happy with this description?"
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "Sure does!" action Jump ("bigChange")
frame:
xpadding 40
ypadding 20
xalign 0.5
yalign 0.5
textbutton "I want to refine this description." action Jump ("possession")
Code: Select all
label start:
camera:
perspective True
show screen gameMenu
scene sepiabg with dissolve
pause 1
show text "{size=+15}Character Creation{/size}" at xtop as line1 with dissolve
pause 1
show screen countCharactersName
$ renpy.transition(dissolve)
show text "What is your name?"at x2 as line2
call screen enterName
$ renpy.transition(dissolve)
label confirmName:
hide screen countCharactersName
call screen nameConfirm
$ renpy.pause(0.0)
label appearance:
hide line2
pause (.5)
show screen countCharactersAppearance
$ renpy.transition(dissolve)
show text "What kind of impression do your clothing and demeanor give others? How do you see yourself?"at x2 as line2 with dissolve
call screen enterAppearance
$ renpy.transition(dissolve)
label confirmAppearance:
hide screen countCharactersAppearance
call screen appearanceConfirm
$ renpy.pause(0.0)
label skill:
hide line2
pause (.5)
show text "What's something you're really good at? How has being good at this skill affected your life?" at x2 as line2 with dissolve
show screen countCharactersSkill
$ renpy.transition(dissolve)
call screen enterSkill
$ renpy.transition(dissolve)
label confirmSkill:
hide screen countCharactersSkill
call screen skillConfirm
$ renpy.pause(0.0)
label needToWorkOn:
hide line2
pause (.5)
show screen countCharactersWorkOn
show text "What's something about yourself you really need to work on?" at x2 as line2 with dissolve
$ renpy.transition(dissolve)
call screen enterWorkOn
$ renpy.transition(dissolve)
label confirmWorkOn:
hide screen countCharactersWorkOn
call screen workOnConfirm
$ renpy.pause(0.0)
label possession:
hide line2
pause (.5)
show screen countCharactersPossession
$ renpy.transition(dissolve)
show text "What possession do you treasure more than any other?"at x2 as line2 with dissolve
call screen enterPossession
$ renpy.transition(dissolve)
label confirmPossession:
hide screen countCharactersPossession
call screen possessionConfirm
$ renpy.pause(0.0)