Compare commits
5
Commits
1d9b7cf133
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
38fc15c175 | ||
|
|
077890d752 | ||
|
|
90e564f629 | ||
|
|
995ae4b80b | ||
|
|
94b64feb05 |
Vendored
+1
-1
@@ -5,6 +5,6 @@
|
|||||||
"**/*.rpymc": true,
|
"**/*.rpymc": true,
|
||||||
"**/cache/": true
|
"**/cache/": true
|
||||||
},
|
},
|
||||||
"renpyWarp.sdkPath": "/home/dynamitos/.config/Code - OSS/User/globalStorage/paisleysoftworks.renpywarp/file-downloader-downloads/8.5.3",
|
"renpyWarp.sdkPath": "/Users/dynamitos/Library/Application Support/Code/User/globalStorage/paisleysoftworks.renpywarp/file-downloader-downloads/8.5.3",
|
||||||
"renpyWarp.renpyExtensionsEnabled": "Enabled"
|
"renpyWarp.renpyExtensionsEnabled": "Enabled"
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,195 @@
|
|||||||
|
# ── Persistent flags ──────────────────────────────────────────────────────────
|
||||||
|
# `checkpoint` (the rewind destination) is defined globally in script.rpy.
|
||||||
|
default rewind_used = False
|
||||||
|
default purpose_chosen = False
|
||||||
|
default silence_chosen = False # here Sara learns that Luno asks everyone the same question
|
||||||
|
|
||||||
|
|
||||||
|
label arrival:
|
||||||
|
scene bg training_yard
|
||||||
|
with fade
|
||||||
|
|
||||||
|
"The Iron Hollow training yard sits inside a converted warehouse district. Stone walls, packed dirt, the smell of old metal and new sweat."
|
||||||
|
thinking "So this is where the Iron Hollow has its base."
|
||||||
|
|
||||||
|
show sara neutral at left
|
||||||
|
with easeinright
|
||||||
|
|
||||||
|
thinking "Two others have arrived already. The boy over there is seems to know where to go, maybe I should ask him."
|
||||||
|
thinking "Looks like the other one noticed me."
|
||||||
|
|
||||||
|
show luno curious at right
|
||||||
|
with easeinright
|
||||||
|
|
||||||
|
luno "You're here for the recruitment?"
|
||||||
|
sara "Yes. Where do I register?"
|
||||||
|
luno "The man over at that table takes your name. Then we wait."
|
||||||
|
thinking "Seems like she told him where to go."
|
||||||
|
luno "I'm Luno. Been here a few days already — helping with the wounded from last month's job. I know how things run here if you need anything."
|
||||||
|
thinking "That's a strong question right away."
|
||||||
|
luno "So. Money, glory, or are you just bored?"
|
||||||
|
jump .choice_screen
|
||||||
|
|
||||||
|
# Per-checkpoint reset: called by the shared rewind mechanic before it lands.
|
||||||
|
label .arrival_rewind_reset:
|
||||||
|
$ rewind_used = True
|
||||||
|
return
|
||||||
|
|
||||||
|
label .rewind_choice:
|
||||||
|
if checkpoint is None:
|
||||||
|
# No checkpoint created yet — can't rewind, move on.
|
||||||
|
jump .kaeros_arrives
|
||||||
|
|
||||||
|
menu:
|
||||||
|
"[[Rewind]":
|
||||||
|
jump rewind_to
|
||||||
|
"Continue":
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Resuming after "Continue": clear the checkpoint and move on.
|
||||||
|
$ checkpoint = None
|
||||||
|
$ rewind_used = False
|
||||||
|
jump .kaeros_arrives
|
||||||
|
|
||||||
|
label .choice_screen:
|
||||||
|
scene bg training_yard
|
||||||
|
with fade
|
||||||
|
|
||||||
|
show sara neutral at left
|
||||||
|
|
||||||
|
show luno curious at right
|
||||||
|
|
||||||
|
menu:
|
||||||
|
"Why are you here?"
|
||||||
|
"[[ Create Checkpoint ]" if checkpoint is None:
|
||||||
|
# Store where a rewind should land, plus the reset label to call.
|
||||||
|
$ checkpoint = "arrival.choice_screen"
|
||||||
|
$ rewind_reset_label = "arrival.arrival_rewind_reset"
|
||||||
|
scene black
|
||||||
|
with dissolve
|
||||||
|
"A flash. Sara's hand, signing something. A contract. The ink is red."
|
||||||
|
scene bg training_yard
|
||||||
|
with dissolve
|
||||||
|
show sara neutral at left
|
||||||
|
show luno curious at right
|
||||||
|
jump .choice_screen
|
||||||
|
|
||||||
|
"For the money, like anyone.":
|
||||||
|
if rewind_used:
|
||||||
|
jump .branch_money_post_rewind
|
||||||
|
else:
|
||||||
|
jump .branch_money
|
||||||
|
|
||||||
|
"To find something worth doing." if not purpose_chosen:
|
||||||
|
jump .branch_purpose
|
||||||
|
|
||||||
|
"I'd rather not say.":
|
||||||
|
jump .branch_silence
|
||||||
|
|
||||||
|
"[[ You asked the others the same thing, didn't you. ]" if silence_chosen:
|
||||||
|
jump .branch_sharp
|
||||||
|
|
||||||
|
label .branch_money:
|
||||||
|
sara "Same reason as everyone else, I'd assume."
|
||||||
|
luno "Honest. I can work with that."
|
||||||
|
show luno amused at right
|
||||||
|
luno "Though if money's the goal, you don't look like you need it."
|
||||||
|
sara "Looks can be misleading."
|
||||||
|
show luno neutral at right
|
||||||
|
luno "Sure."
|
||||||
|
"A pause. Just a half-beat too long."
|
||||||
|
luno "They can be."
|
||||||
|
"She doesn't push. But her eyes stay on Sara for another moment"
|
||||||
|
jump .rewind_choice
|
||||||
|
|
||||||
|
label .branch_money_post_rewind:
|
||||||
|
sara "Same reason as everyone else."
|
||||||
|
luno "Sure."
|
||||||
|
thinking "Unremarkable. Fine."
|
||||||
|
"But when Sara finishes speaking, Luno's eyes linger — just a half-second longer than they should."
|
||||||
|
show luno linger at right
|
||||||
|
"Not suspicion. Not quite. More like the feeling of reaching for something that moved."
|
||||||
|
show luno neutral at right
|
||||||
|
thinking "Probably nothing."
|
||||||
|
"But it wasn't nothing."
|
||||||
|
jump .rewind_choice
|
||||||
|
|
||||||
|
label .branch_purpose:
|
||||||
|
$ purpose_chosen = True
|
||||||
|
sara "I'm not looking for money exactly. More... something to point myself at."
|
||||||
|
"A beat. Something opens in Luno's expression — not warm, but something."
|
||||||
|
show luno curious at right
|
||||||
|
luno "Huh. That's not what I expected."
|
||||||
|
sara "What did you expect?"
|
||||||
|
luno "Something about honour. Or family legacy."
|
||||||
|
show luno tilted at right
|
||||||
|
luno "The clothes tell me nobility, and nobles are always on the look for honour."
|
||||||
|
show sara pained at left
|
||||||
|
sara "Honour is pointless when everyone is dead."
|
||||||
|
thinking "I said too much."
|
||||||
|
"She can feel it land — can feel Luno actually {i}looking{/i} at her now, not just watching."
|
||||||
|
show luno soft at right
|
||||||
|
luno "...Yeah. I know that feeling."
|
||||||
|
thinking "I should go back. I told her way too much"
|
||||||
|
jump .rewind_choice
|
||||||
|
|
||||||
|
label .branch_silence:
|
||||||
|
$ silence_chosen = True
|
||||||
|
sara "That's a fairly personal question for someone I've known thirty seconds."
|
||||||
|
luno "Fair. I ask everyone. You don't have to answer."
|
||||||
|
sara "...Then I won't."
|
||||||
|
luno "That's an answer too."
|
||||||
|
"She's not unfriendly. But Sara just became a question mark in Luno's mental ledger."
|
||||||
|
jump .rewind_choice
|
||||||
|
|
||||||
|
label .branch_sharp:
|
||||||
|
sara "You asked him the same thing."
|
||||||
|
"She nods towards the guy who also arrived already."
|
||||||
|
sara "Before I arrived."
|
||||||
|
"Luno goes still. Not alarmed — but recalibrating."
|
||||||
|
show luno still at right
|
||||||
|
luno "...You were watching from outside the gate?"
|
||||||
|
sara "The wall has gaps."
|
||||||
|
luno "Most people don't bother to look."
|
||||||
|
sara "I bother."
|
||||||
|
"A pause. Luno is weighing something."
|
||||||
|
luno "That's either very smart or very paranoid."
|
||||||
|
sara "Both, usually."
|
||||||
|
"Luno laughs — a real one, short and surprised."
|
||||||
|
show luno laugh at right
|
||||||
|
"But her eyes are sharper now, not warmer."
|
||||||
|
show luno sharp at right
|
||||||
|
jump .rewind_choice
|
||||||
|
|
||||||
|
label .kaeros_arrives:
|
||||||
|
"Before the silence can settle, footsteps at the gate."
|
||||||
|
show kaeros guarded at right
|
||||||
|
kaeros "Is this the Iron Hollow?"
|
||||||
|
luno "Looks like quite a few people are interested. You are at the right place."
|
||||||
|
luno "Why do you want to join the Hollow?"
|
||||||
|
mira "To protect people from evil---"
|
||||||
|
kaeros "To make some money. Have to live off something around here."
|
||||||
|
show luno laugh at right
|
||||||
|
luno "I see, you have you priorities in order."
|
||||||
|
show luno neutral at right
|
||||||
|
luno "I like that. I am Luno, I arrived a while a go. Give the man over there your names and wait."
|
||||||
|
sara "I am Sara, not sure what else to say."
|
||||||
|
kaeros "I am Kaeros, and this is Mira."
|
||||||
|
luno "She also just arrived you can register together."
|
||||||
|
scene black
|
||||||
|
with dissolve
|
||||||
|
scene bg table
|
||||||
|
show sara neutral at left
|
||||||
|
# show iron_hollow_mercenary at right
|
||||||
|
sara "The three of us are here to register."
|
||||||
|
mercenary "Tell me your names and blessing."
|
||||||
|
mira "I'm Mira, and I have a fire blessing. I can do a lot of things with it, like make bursts---"
|
||||||
|
show kaeros guarded at left
|
||||||
|
kaeros "I'm Kaeros, and I have a water blessing."
|
||||||
|
kaeros "..."
|
||||||
|
mercenary "Alright, what about you?"
|
||||||
|
show sara neutral at left
|
||||||
|
sara "My name is Sara, I have a wind blessing, but its really weak. My expertise is more with strategy."
|
||||||
|
mercenary "It's rare to have a strategist join a band of mercenaries. I hope you can at least hold your own in combat."
|
||||||
|
mercenary "I think fo-- five people are enough for now, grab Luno and that guy over there and we'll get started."
|
||||||
|
jump first_test
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
label first_test:
|
||||||
|
scene black
|
||||||
|
with dissolve
|
||||||
|
scene bg training_yard
|
||||||
|
mercenary "It's time to see what you are made of. We are gonna start with a simple test, so we can get a feel for what you can do."
|
||||||
|
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, make your opponent give up, but no killing allowed. Try to avoid injuring them too much, but if they refuse to give up, it is what it is."
|
||||||
|
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 seriously 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 be me? That guy seems to be really strong."
|
||||||
|
sara "Are we allowed to use the surroundings?"
|
||||||
|
mercenary "This is a sparring match without blessings, you are supposed to show your weapon techinques, so no."
|
||||||
|
thinking "That makes things even harder. One on one without being able to use the environment doesn't give me 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
|
||||||
|
"The feeling of a cold thread. The feeling of the air thickening."
|
||||||
|
scene bg training_yard
|
||||||
|
with dissolve
|
||||||
|
# Checkpoint: a rewind from anywhere in the spar lands back at the first
|
||||||
|
# exchange. No reset label needed — the spar's state is re-derived from
|
||||||
|
# the choices, so there are no flags to reset (rewind_reset_label stays None).
|
||||||
|
$ checkpoint = "first_test.first_attack_choice"
|
||||||
|
eron "Hyaaa!"
|
||||||
|
jump .first_attack_choice
|
||||||
|
|
||||||
|
|
||||||
|
label .first_attack_choice:
|
||||||
|
scene bg training_yard
|
||||||
|
with dissolve
|
||||||
|
"Eron dashes with his sword raised over his right shoulder."
|
||||||
|
menu:
|
||||||
|
thinking "Fast!"
|
||||||
|
"Dodge left":
|
||||||
|
jump .dodge_left
|
||||||
|
"Dodge right":
|
||||||
|
jump .dodge_right
|
||||||
|
"Parry":
|
||||||
|
jump .parry
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
jump rewind_to
|
||||||
|
"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."
|
||||||
|
scene 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 under her raised arms squarely 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]":
|
||||||
|
jump rewind_to
|
||||||
|
"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."
|
||||||
|
scene black with dissolve
|
||||||
|
jump .after_spar
|
||||||
|
|
||||||
|
label .dodge_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"
|
||||||
|
scene black with dissolve
|
||||||
|
jump .after_spar
|
||||||
|
|
||||||
|
# Initial right
|
||||||
|
label .dodge_right:
|
||||||
|
"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]":
|
||||||
|
jump rewind_to
|
||||||
|
"Create distance":
|
||||||
|
jump .dodge_right_distance
|
||||||
|
|
||||||
|
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."
|
||||||
|
scene black with dissolve
|
||||||
|
jump .after_spar
|
||||||
|
|
||||||
|
# Initial parry
|
||||||
|
label .parry:
|
||||||
|
"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]":
|
||||||
|
jump rewind_to
|
||||||
|
"Recover":
|
||||||
|
jump .parry_recover
|
||||||
|
"Create distance":
|
||||||
|
jump .parry_create_distance
|
||||||
|
|
||||||
|
label .parry_recover:
|
||||||
|
"Sara tries to regain her balance, but Eron is relentless."
|
||||||
|
menu:
|
||||||
|
"Parry":
|
||||||
|
jump .parry_recover_parry
|
||||||
|
"Dodge":
|
||||||
|
jump .parry_recover_dodge
|
||||||
|
|
||||||
|
label .parry_recover_parry:
|
||||||
|
"Sara attempts to parry again, but Eron strikes through her defense, hitting her temple."
|
||||||
|
scene black with dissolve
|
||||||
|
jump .after_spar
|
||||||
|
|
||||||
|
label .parry_recover_dodge:
|
||||||
|
"Sara attempts to dodge, but Eron anticipates her movement and strikes her temple."
|
||||||
|
scene black with dissolve
|
||||||
|
jump .after_spar
|
||||||
|
|
||||||
|
label .parry_create_distance:
|
||||||
|
"Sara tries to create distance between herself and Eron, but he lunges after her."
|
||||||
|
"Before she can react, he strikes her temple"
|
||||||
|
scene 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."
|
||||||
|
jump quit
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
define sara = Character("Sara", color="#5acbd5")
|
||||||
|
define thinking = Character("Sara", color="#1d9fa4", what_italic=True)
|
||||||
|
define luno = Character("Luno", color="#1b449d")
|
||||||
|
define eron = Character("Eron", color="#c98a3a")
|
||||||
|
define kaeros = Character("Kaeros", color="#96d08c")
|
||||||
|
define mira = Character("Mira", color="#c42626")
|
||||||
|
define narrator = Character(None)
|
||||||
|
define mercenary = Character("Iron Hollow Mercenary", color="#3a6998")
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# ── Rewind mechanic (shared across all scripts) ──────────────────────────────
|
||||||
|
# Where the next rewind lands. Set this to a label string at each checkpoint.
|
||||||
|
default checkpoint = None
|
||||||
|
|
||||||
|
# Optional: a label to `call` for per-checkpoint flag resets, or None.
|
||||||
|
# Define it like: label .my_checkpoint_reset: $ some_flag = False return
|
||||||
|
default rewind_reset_label = None
|
||||||
|
|
||||||
|
# Plays the shared rewind effect, then returns to `destination` (a label string).
|
||||||
|
# Uses `call` (not `jump`) so it is re-entrant: rewinding to a label that is
|
||||||
|
# already on the call stack (e.g. back to a choice mid-spar) returns cleanly
|
||||||
|
# to the caller instead of corrupting the stack.
|
||||||
|
# Call as: call rewind_to ".some_label"
|
||||||
|
label rewind_to:
|
||||||
|
scene black
|
||||||
|
with dissolve
|
||||||
|
show screen teal_wash
|
||||||
|
"The world pulls back."
|
||||||
|
"Colour drains to teal. Sound slows to nothing."
|
||||||
|
hide screen teal_wash
|
||||||
|
scene black
|
||||||
|
with dissolve
|
||||||
|
# Run any per-checkpoint reset statements (e.g. $ rewind_used = False)
|
||||||
|
if rewind_reset_label is not None:
|
||||||
|
call expression rewind_reset_label
|
||||||
|
call expression checkpoint
|
||||||
|
|
||||||
|
screen teal_wash():
|
||||||
|
zorder 20
|
||||||
|
add Solid("#1a4a4a") alpha 0.7
|
||||||
+2
-225
@@ -1,228 +1,5 @@
|
|||||||
# The Iron Hollow — Chapter 1 PoC
|
|
||||||
# Scene 2: Sara Arrives
|
|
||||||
|
|
||||||
define sara = Character("Sara", color="#5acbd5")
|
|
||||||
define thinking = Character("Sara", color="#1d9fa4", what_italic=True)
|
|
||||||
define luno = Character("Luno", color="#1b449d")
|
|
||||||
define narrator = Character(None)
|
|
||||||
|
|
||||||
# ── Persistent flags ──────────────────────────────────────────────────────────
|
|
||||||
default checkpoint_set = False
|
|
||||||
default rewind_used = False
|
|
||||||
default purpose_chosen = False
|
|
||||||
default silence_chosen = False # here Sara learns that Luno asks everyone the same question
|
|
||||||
|
|
||||||
# ── Entry point ───────────────────────────────────────────────────────────────
|
# ── Entry point ───────────────────────────────────────────────────────────────
|
||||||
label start:
|
label start:
|
||||||
scene bg training_yard
|
jump arrival
|
||||||
with fade
|
|
||||||
|
|
||||||
"The Iron Hollow training yard sits inside a converted warehouse district. Stone walls, packed dirt, the smell of old metal and new sweat."
|
|
||||||
thinking "So this is where the Iron Hollow has its base."
|
|
||||||
|
|
||||||
show sara neutral at left
|
|
||||||
with easeinright
|
|
||||||
|
|
||||||
thinking "Two others have arrived already. The boy over there is seems to know where to go, maybe I should ask him."
|
|
||||||
thinking "Looks like the other one noticed me."
|
|
||||||
|
|
||||||
show luno curious at right
|
|
||||||
with easeinright
|
|
||||||
|
|
||||||
jump luno_greeting
|
|
||||||
|
|
||||||
label luno_greeting:
|
|
||||||
luno "You're here for the recruitment?"
|
|
||||||
sara "Yes. Where do I register?"
|
|
||||||
luno "The man over at that table takes your name. Then we wait."
|
|
||||||
thinking "Seems like she told him where to go."
|
|
||||||
luno "I'm Luno. Been here a few days already — helping with the wounded from last month's job. I know how things run here if you need anything."
|
|
||||||
thinking "That's a strong question right away."
|
|
||||||
luno "So. Money, glory, or are you just bored?"
|
|
||||||
jump choice_screen
|
|
||||||
|
|
||||||
label rewind_choice:
|
|
||||||
if not checkpoint_set:
|
|
||||||
jump kaeros_arrives
|
|
||||||
|
|
||||||
show screen rewind_prompt
|
|
||||||
menu:
|
|
||||||
"[[ Rewind ]":
|
|
||||||
hide screen rewind_prompt
|
|
||||||
$ rewind_used = True
|
|
||||||
scene black
|
|
||||||
with dissolve
|
|
||||||
show screen teal_wash
|
|
||||||
"The world pulls back."
|
|
||||||
"Colour drains to teal. Sound slows to nothing."
|
|
||||||
hide screen teal_wash
|
|
||||||
scene bg training_yard
|
|
||||||
with dissolve
|
|
||||||
show sara neutral at left
|
|
||||||
show luno curious at right
|
|
||||||
thinking "Let's try this again."
|
|
||||||
jump choice_screen
|
|
||||||
"[[ Continue ]":
|
|
||||||
hide screen rewind_prompt
|
|
||||||
jump kaeros_arrives
|
|
||||||
|
|
||||||
label choice_screen:
|
|
||||||
|
|
||||||
menu:
|
|
||||||
"Why are you here?"
|
|
||||||
"[[ Create Checkpoint ]" if not checkpoint_set:
|
|
||||||
$ checkpoint_set = True
|
|
||||||
scene black
|
|
||||||
with dissolve
|
|
||||||
"A flash. Sara's hand, signing something. A contract. The ink is red."
|
|
||||||
scene bg training_yard
|
|
||||||
with dissolve
|
|
||||||
show sara neutral at left
|
|
||||||
show luno curious at right
|
|
||||||
jump choice_screen
|
|
||||||
|
|
||||||
"For the money, like anyone.":
|
|
||||||
if rewind_used:
|
|
||||||
jump branch_money_post_rewind
|
|
||||||
else:
|
|
||||||
jump branch_money
|
|
||||||
|
|
||||||
"To find something worth doing." if not purpose_chosen:
|
|
||||||
jump branch_purpose
|
|
||||||
|
|
||||||
"I'd rather not say.":
|
|
||||||
jump branch_silence
|
|
||||||
|
|
||||||
"[[ You asked the others the same thing, didn't you. ]" if silence_chosen:
|
|
||||||
jump branch_sharp
|
|
||||||
|
|
||||||
label branch_money:
|
|
||||||
sara "Same reason as everyone else, I'd assume."
|
|
||||||
luno "Honest. I can work with that."
|
|
||||||
show luno amused at right
|
|
||||||
luno "Though if money's the goal, you don't look like you need it."
|
|
||||||
sara "Looks can be misleading."
|
|
||||||
show luno neutral at right
|
|
||||||
luno "Sure."
|
|
||||||
"A pause. Just a half-beat too long."
|
|
||||||
luno "They can be."
|
|
||||||
"She doesn't push. But her eyes stay on Sara for another moment"
|
|
||||||
jump rewind_choice
|
|
||||||
|
|
||||||
label branch_money_post_rewind:
|
|
||||||
sara "Same reason as everyone else."
|
|
||||||
luno "Sure."
|
|
||||||
thinking "Unremarkable. Fine."
|
|
||||||
"But when Sara finishes speaking, Luno's eyes linger — just a half-second longer than they should."
|
|
||||||
show luno linger at right
|
|
||||||
"Not suspicion. Not quite. More like the feeling of reaching for something that moved."
|
|
||||||
show luno neutral at right
|
|
||||||
thinking "Probably nothing."
|
|
||||||
"But it wasn't nothing."
|
|
||||||
jump rewind_choice
|
|
||||||
|
|
||||||
label branch_purpose:
|
|
||||||
$ purpose_chosen = True
|
|
||||||
sara "I'm not looking for money exactly. More... something to point myself at."
|
|
||||||
"A beat. Something opens in Luno's expression — not warm, but something."
|
|
||||||
show luno curious at right
|
|
||||||
luno "Huh. That's not what I expected."
|
|
||||||
sara "What did you expect?"
|
|
||||||
luno "Something about honour. Or family legacy."
|
|
||||||
show luno tilted at right
|
|
||||||
luno "The clothes tell me nobility, and nobles are always on the look for honour."
|
|
||||||
show sara pained at left
|
|
||||||
sara "Honour is pointless when everyone is dead."
|
|
||||||
thinking "I said too much."
|
|
||||||
"She can feel it land — can feel Luno actually {i}looking{/i} at her now, not just watching."
|
|
||||||
show luno soft at right
|
|
||||||
luno "...Yeah. I know that feeling."
|
|
||||||
thinking "I should go back. I told her way too much"
|
|
||||||
jump rewind_choice
|
|
||||||
|
|
||||||
label branch_silence:
|
|
||||||
$ silence_chosen = True
|
|
||||||
sara "That's a fairly personal question for someone I've known thirty seconds."
|
|
||||||
luno "Fair. I ask everyone. You don't have to answer."
|
|
||||||
sara "...Then I won't."
|
|
||||||
luno "That's an answer too."
|
|
||||||
"She's not unfriendly. But Sara just became a question mark in Luno's mental ledger."
|
|
||||||
jump rewind_choice
|
|
||||||
|
|
||||||
label branch_sharp:
|
|
||||||
sara "You asked him the same thing."
|
|
||||||
"She nods towards the guy who also arrived already."
|
|
||||||
sara "Before I arrived."
|
|
||||||
"Luno goes still. Not alarmed — but recalibrating."
|
|
||||||
show luno still at right
|
|
||||||
luno "...You were watching from outside the gate?"
|
|
||||||
sara "The wall has gaps."
|
|
||||||
luno "Most people don't bother to look."
|
|
||||||
sara "I bother."
|
|
||||||
"A pause. Luno is weighing something."
|
|
||||||
luno "That's either very smart or very paranoid."
|
|
||||||
sara "Both, usually."
|
|
||||||
"Luno laughs — a real one, short and surprised."
|
|
||||||
show luno laugh at right
|
|
||||||
"But her eyes are sharper now, not warmer."
|
|
||||||
show luno sharp at right
|
|
||||||
jump rewind_choice
|
|
||||||
|
|
||||||
label kaeros_arrives:
|
|
||||||
"Before the silence can settle, footsteps at the gate."
|
|
||||||
show kaeros guarded at right
|
|
||||||
show mira curious at left
|
|
||||||
kaeros "Is this the Iron Hollow?"
|
|
||||||
luno "Looks like quite a few people are interested. You are at the right place."
|
|
||||||
luno "Why do you want to join the Hollow?"
|
|
||||||
mira "To protect people from evil---"
|
|
||||||
kaeros "To make some money. Have to live off something around here."
|
|
||||||
show mira timit at left
|
|
||||||
show luno laughing at right
|
|
||||||
luno "I see, you have you priorities in order."
|
|
||||||
show luno neutral at right
|
|
||||||
luno "I like that. I am Luno, I arrived a while a go. Give the man over there your names and wait."
|
|
||||||
sara "I am Sara, not sure what else to say."
|
|
||||||
kaeros "I am Kaeros, and this is Mira."
|
|
||||||
luno "She also just arrived you can register together."
|
|
||||||
scene black
|
|
||||||
with dissolve
|
|
||||||
scene bg table
|
|
||||||
show sara at left
|
|
||||||
show iron_hollow_mercenary at right
|
|
||||||
sara "The three of us are here to register."
|
|
||||||
"Iron Hollow Mercenary" "Tell me your names and blessing."
|
|
||||||
show mira excited at left
|
|
||||||
mira "I'm Mira, and I have a fire blessing. I can do a lot of things with it, like make bursts---"
|
|
||||||
show kaeros guarded at left
|
|
||||||
kaeros "I'm Kaeros, and I have a wind blessing."
|
|
||||||
kaeros "..."
|
|
||||||
"Iron Hollow Mercenary" "Alright, what about you?"
|
|
||||||
show sara at left
|
|
||||||
sara "My name is Sara, I have a wind blessing, but its really weak. My expertise is more with strategy."
|
|
||||||
"Iron Hollow Mercenary" "It's rare to have a strategist join a band of mercenaries. I hope you can at least hold your own in combat."
|
|
||||||
"Iron Hollow Mercenary" "I think fo-- five people are enough for now, grab Luno and that guy over there and we'll get started."
|
|
||||||
jump first_test
|
|
||||||
|
|
||||||
label first_test:
|
|
||||||
scene black
|
|
||||||
with dissolve
|
|
||||||
scene bg training_yard
|
|
||||||
"Iron Hollow Mercenary" "It's time to prove you worth. We are gonna start with a simple test, so everyone gets a feel for each other."
|
|
||||||
"Iron Hollow Mercenary" "One-on-one fights, but since we are an uneven number, one person will have to fight twice."
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
# ── Screens ───────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
screen rewind_prompt():
|
|
||||||
zorder 10
|
|
||||||
text "Rewind available":
|
|
||||||
xalign 0.05
|
|
||||||
yalign 0.95
|
|
||||||
color "#4ab8b8"
|
|
||||||
size 22
|
|
||||||
|
|
||||||
screen teal_wash():
|
|
||||||
zorder 20
|
|
||||||
add Solid("#1a4a4a") alpha 0.7
|
|
||||||
Reference in New Issue
Block a user