I'm currently working on it already and this is what I've come up with so far with some help.
How it works:
Phase 1: (Intro)
1. Transitions from Dialogue to Debate [Done]
2. Showcases the available truth bullets (Evidence) [Working on]
3. Transition to debate. [Done]
Phase 2: (Debates)
4. Debate Loop: Everyone says their piece, statements float on the screen. Then after the debate it jumps back to the MC who will think something then the loop repeats [Done]
5. Weak points: Some statements contain a weakpoint. The player must click on the right weakpoint while the right evidence is selected. [Done]
6. Truth Bullets: During the debate a truth bullet will always be selected. The player can press a button to switch out the current truth bullet with another. (The player can pause the game and check the evidence.) [Working on]
Phase 3: (After Clicking Weakpoint)
7. If right weakpoint is selected with right bullet, then calls transition then moves story further. [Working on]
I'm focusing on the truth bullets right now. Later on I will add a life meter and a way to fast-forward.
This is my current code so far. This is the debate without the truth bullets.
This keeps track of the debate's progress
Code: Select all
screen sta_count:
vbox xalign 0.0 yalign 0.0:
text "Current Speaker: [speaker]"
text "Remaining Statements: [stat]"
Code: Select all
screen st_display(sta, trans):
text sta at trans #display the text at the transform
timer 3 action Return() #after 3 seconds passed, return/exit the screen
Code: Select all
label db1:
label .a:
call present #Transition from story to debate
label .loop:
window hide
show screen sta_count
$ stat = 6 #Remaining statements: 6
$ speaker == "Taka"
$ renpy.call_screen('st_display', sta="{size=50}I assert that the one who was murdered was REDACTED!", trans=dissolve_leftcenter)
$ renpy.pause(0.5)
$ stat -= 1 #Remaining statements: 5
$ speaker == "Hiro"
$ renpy.call_screen('st_display', sta="{size=50}Yeah, we know that already.", trans=dissolve_leftup)
$ renpy.pause(0.5)
$ stat -= 1
$ speaker == "Byakuya"
$ renpy.call_screen('st_display', sta="{size=50}And the murder took place in Makoto's room.", trans=dissolve_rightcenter)
$ renpy.pause(0.5)
$ stat -= 1
$ speaker == "Hina"
$ renpy.call_screen('st_display', sta="{size=50}In the bathroom...", trans=dissolve_rightdown)
$ renpy.pause(0.5)
$ stat -= 1
$ speaker == "Chihiro"
$ renpy.call_screen('st_display', sta="{size=50}The killer must have taken them by surprise while they were in the bathroom.", trans=dissolve_rightdown)
$ renpy.pause(0.5)
$ stat -= 1
#This statement contains a clickable hyperlink that jumps to a label, in this case, the label is c
$ renpy.call_screen('st_display', sta="{size=50}{a=jump:db1.c}{color=#FF8F00}They didn't even have a chance to resist{/a}", trans=dissolve_zoom)
pause(0.5)
#once all statements have been displayed, if the player didn't click any, jump to label b
label .b:
"Naegi" "(Wait...that sounds wrong...)"
"Naegi" "(I should present the evidence of a struggle)"
pause(1)
jump .loop
label .c: #end and continue
call debate_end #Transition from debate to story
It's very incomplete, but close to finished. I decided to take out the aesthetic parts and focus only on the function for this post.
My pseudo-code thoughts:
Phase 1: (Intro)
2. Showcases the available truth bullets (Evidence)
The code I imagine would look something like this.
Code: Select all
label db1:
label .a:
call present #Transition
show evidenceofstruggle
show bullet2
show bullet3
pause(1)
hide bullet1
hide bullet2
hide bullet3
jump .loop
6. Truth Bullets: During the debate a truth bullet will always be selected. The player can press a button to switch out the current truth bullet with another. (The player can pause the game and check the evidence.)
This part I'm a bit iffy on how I should do this.
Code: Select all
label .loop:
show screen truth_cylinder
#Debate
Code: Select all
define bullet_selected = 1
screen truth_cylinder():
textbutton "Up" action (bullet_selected += 1)
textbutton "Down" action (bullet_selected -= 1)
if bullet_selected = 1:
show evidenceofstruggle
hide bullet2
hide bullet3
if bullet_selected = 2:
show bullet2
hide evidenceofstruggle
hide bullet3
if bullet_selected = 3:
show bullet3
hide bullet2
hide evidenceofstruggle
if bullet_selected > 3:
bullet_selected = 1
else:
bullet_selected = 3
Phase 3: (After Clicking Weakpoint)
7. If right weakpoint is selected with right bullet, then calls transition then moves story further.
It might look like this.
Code: Select all
label .loop:
$ renpy.call_screen('st_display', sta="{size=50}{a=jump:db1.check}{color=#FF8F00}They didn't even have a chance to resist{/a}", trans=dissolve_zoom)
label .check:
if bullet_selected = 1:
jump .c
else:
jump .wrong
label .wrong:
Naegi "Shoot! I was wrong!"
jump .loop
label .c:
call debate_end #Transition back to story.
https://youtu.be/wWlegT06gDo?t=2m46s
Closing:
I think that just about covers everything. I'm interested in seeing what you think. Any ideas? Any places I can improve the code? I'd love to see. Thank you very much for reading this far!