Files
VNGame/game/chapters/chapter1/first_test.rpy
T

188 lines
7.6 KiB
Plaintext
Raw Normal View History

2026-09-08 16:43:22 +02:00
label first_test:
scene black
with dissolve
scene bg training_yard
mercenary "It's time to prove you worth. We are gonna start with a simple test, so everyone gets a feel for each other."
mercenary "One-on-one fights, but since we are an uneven number, one person will have to fight twice."
mercenary "It will be a friendly spar, so using wooden weapons, and no permanent injuries allowed. First contact wins."
mercenary "And also, no blessings."
eron "Seems easy, can I go first?"
thinking "I'm not sure if this test is that simple. Since none of us know each other, aside from maybe these two, it is hard to judge how much to hold back without loosing instantly."
thinking "If you go all out and injure the opponent, you probably get disqualified. But if you hold back too much, you might loose in the first strike."
mercenary "Since you seem to be so eager, you can go first, and your opponent will be Sara."
thinking "Why does it have to b:e me? That guy seems to be really strong."
thinking "Maybe it's not so bad, since I can display any gift, it will be a good chance to prove my worth."
sara "Are we allowed to use the surroundings?"
mercenary "This is a sparring match without blessings, you are supposed to show your weapons techinques, so no."
thinking "That makes things even harder. One on one without being able to use the environment gives me not a lot of room to work with."
thinking "I don't think I can win against him in direct combat. At first glance he might seem arrogant, but from his stance I can tell he is not an amateur."
thinking "My only advantage is that he cannot use his blessing, while I can, since noone will remember."
thinking "But rewinding after every strike will consume way too much energy, I will have to use as much of my own skill as possible."
with dissolve
scene bg eron_ready
mercenary "Begin the match!"
scene black
with dissolve
2026-09-11 11:38:32 +02:00
"The feeling of a cold thread. The feeling of the air thickening."
2026-09-08 16:43:22 +02:00
scene bg training_yard
with dissolve
2026-09-11 11:38:32 +02:00
# Checkpoint: a rewind from anywhere in the spar lands back at the first
# exchange. `rewind_reset` is empty — the spar's state is re-derived from
# the choices, so there are no flags to reset.
$ checkpoint = ".first_attack_choice"
$ rewind_reset = []
2026-09-08 16:43:22 +02:00
eron "Hyaaa"
jump .first_attack_choice
label .first_attack_choice:
2026-09-11 11:38:32 +02:00
"Eron raises his sword over his right shoulder."
2026-09-08 16:43:22 +02:00
menu:
thinking "Fast!"
"Dodge left":
2026-09-11 11:38:32 +02:00
jump .dodge_left
2026-09-08 16:43:22 +02:00
"Dodge right":
2026-09-11 11:38:32 +02:00
jump .dodge_right
2026-09-08 16:43:22 +02:00
"Parry":
2026-09-11 11:38:32 +02:00
jump .parry
2026-09-08 16:43:22 +02:00
2026-09-11 11:38:32 +02:00
# Initial left
label .dodge_left:
"Whizz! The sword almost grazes her right shoulder."
thinking "Hairs breadth!"
menu:
thinking "I need to regain my balance and counter."
"Counterattack":
jump .dodge_left_counterattack
"Anticipate next attack":
jump .dodge_left_anticipate
## Left -> counter
label .dodge_left_counterattack:
"Whack! The sword turns quickly and strikes her leg."
sara "Ugh!"
thinking "He hit my leg! Should i try another attack or go back?"
menu:
"[[Rewind]":
# Shared mechanic: reads `checkpoint` (".first_attack_choice") and
# rewinds there via the teal-wash effect, then returns here.
2026-09-11 19:00:59 +02:00
call do_rewind
2026-09-11 11:38:32 +02:00
"Press the attack":
jump .dodge_left_counterattack_press
label .dodge_left_counterattack_press:
"Whack! Eron takes the momentum of the recoil from the leg strike and makes a lightning fast spinning attack for Saras temple."
screen black with dissolve
jump .after_spar
## Left -> anticipate
label .dodge_left_anticipate:
thinking "I dodged to the left, so the next attack will come from the right."
menu:
"Dodge further left":
jump .dodge_left_anticipate_left
"Jump":
jump .dodge_left_anticipate_jump
"Parry":
jump .dodge_left_anticipate_parry
## Left -> anticipate -> left
label .dodge_left_anticipate_left:
"Erons sword that narrowly missed her right side quickly turns and aims for her legs."
"The tradjectory of the sword is faster than she can dodge away but the increased distance allows eron to adjust the trajectory."
"Eron upswings unter her raised arms quarely into Saras stomach"
sara "Ugh!"
thinking "That knocked the air out of me! I need to catch my breath. Or should I rewind?"
menu:
"[[Rewind]":
2026-09-11 19:00:59 +02:00
call do_rewind
2026-09-11 11:38:32 +02:00
"Create distance":
jump .dodge_left_anticipate_left_distance
label .dodge_left_anticipate_left_distance:
"Whack! Eron takes the momentum of the recoil from the stomach strike and makes a lightning fast spinning attack for Saras temple."
screen black with dissolve
jump .after_spar
2026-09-11 19:00:59 +02:00
label .dodgle_left_anticipate_jump:
"Sara leaps into the air, narrowly avoiding the strike."
"Eron uses the momentum of the missed strike to do a spinning attack"
menu:
thinking "There is a brief window where he shows his back"
"Attack":
jump .dodge_left_anticipate_jump_attack
"Parry":
jump .parry
label .dodge_left_anticipate_jump_attack:
"Sara tries to go for the opening"
"But she is simply too slow, she lacks combat experience."
"Eron hits her temple with the spinning attack before she can hit is back"
screen black with dissolve
jump .after_spar
2026-09-11 11:38:32 +02:00
label .dodge_left_anticipate_jump:
"Sara jumps over the incoming strike, landing gracefully."
jump .eron_adjusts
# Initial right
label .dodge_right:
2026-09-11 19:00:59 +02:00
"Sara dodges straight into Eron's attack, and gets hit on the shoulder."
thinking "Ugh! That was a heavy hit, should I rewind? No, I should gather more information first"
menu:
"[[Rewind]":
call do_rewind
"Create distance":
jump .dodge_right_distance
2026-09-11 11:38:32 +02:00
2026-09-11 19:00:59 +02:00
label .dodge_right_distance:
"Sara tries too create some distance between herself and Eron, but he quickly closes the gap."
thinking "How is he so fast? Just focus on defending myself"
menu:
"Parry":
jump .parry
"Create distance":
jump .dodge_right_distance_distance
label .dodge_right_distance_distance:
"Sara manages to create some distance, but Eron is relentless and quickly closes the gap again."
"Before she can further react, he strikes her temple."
screen black with dissolve
jump .after_spar
# Initial parry
2026-09-11 11:38:32 +02:00
label .parry:
2026-09-11 19:00:59 +02:00
"Sara raises her weapon to block Eron's incoming strike."
"Sara's weapon gets knocked way to the side, leaving her wide open."
thinking "Ugh! How heavy was that strike? I am already loosing my grip. Should I rewind right way?"
menu:
"[[Rewind]":
call do_rewind
"Recover":
jump .parry_recover
"Create distance":
jump .parry_create_distance
2026-09-11 11:38:32 +02:00
2026-09-11 19:00:59 +02:00
label .parry_recover:
"Sara tries to regain her balance, but Eron is relentless."
menu:
"Parry":
jump .parry_recover_parry
"Dodge":
jump .parry_recover_dodge
2026-09-11 11:38:32 +02:00
2026-09-11 19:00:59 +02:00
label .parry_recover_parry:
"Sara attempts to parry again, but Eron strikes through her defense, hitting her temple."
screen black with dissolve
jump .after_spar
label .parry_recover_dodge:
"Sara attempts to dodge, but Eron anticipates her movement and strikes her temple."
screen black with dissolve
jump .after_spar
label .after_spar:
"Sara lies on the ground, trying to recover from the intense sparring session with Eron."
thinking "I need to analyze his movements more carefully next time."
return