Skip to content

Add townies system with occasional helpers#2129

Open
manuq wants to merge 14 commits into
mainfrom
townies-system
Open

Add townies system with occasional helpers#2129
manuq wants to merge 14 commits into
mainfrom
townies-system

Conversation

@manuq
Copy link
Copy Markdown
Collaborator

@manuq manuq commented Apr 17, 2026

Void quest: Add helpers

Add the following helpers:

  • 1_void_quest: Memory helper that displays a placeholder dialogue.
  • 1_void_quest: Spirit helper that slows down the enemy.
  • 2_grappling_hook: Imagination helper that makes needles appear in the optional loop.

Musician quest: Add helpers

Add the following helpers:

  • 1_music_puzzle: Memory helper that triggers a dialogue saying "Lore lore lore" as placeholder.
  • 2_ink_combat: Spirit helper that fills the hard to reach inkwell.
  • 3_stealth_level: Imagination helper that fixes the bridge.

Musician and Void quests: Add retelling dialogue

The dialogue lines should be considered placeholders.

Sokobans: Remove project setting to skip the sokobans

Sokobans cleanup: Remove incorporating threads state

Frays End, Eternal Loom: Add retelling and remove sokobans

Change the interaction of the eternal loom when the player is ready to offer the
threads. Now if the quest has retelling dialogue, display it. A retelling may
result in the player obtaining help, that can be used later in the game.

After the retelling, or if no retelling happened, trigger the incorporating
threads cutscene and let the corresponding elder congratulate the player.

Remove the sokoban puzzles, which are going to be repurposed. More cleanup on
this later.

Add HelperCharacter

Node that will be used to make characters become helpers in levels, for
consuming the help obtained during the retelling at the eternal loom. There is
no actual implementation, this help could be spent in imaginative ways and is
left to the level creators. A default dialogue is provided as example.

Add RetellingManager and RetellingTownie

The RetellingManager coordinates the retelling with the EternalLoom, to avoid
cluttering that node. It does so by listening to signals and calling a method.

StoryQuestProgress: Add helper character face to HUD

Listen to the global state for doing so. If there is helper state, instantiate
the face of the character according to its seed, and set the background color to
the type of help.

Quest: Add optional retelling dialogue to the resource

This dialogue will be displayed when interacting with the eternal loom, before
the threads offering.

CharacterRandomizer: Vary the animation when randomizing

If not, when randomizing multiple characters at the same time, they all end up
moving in sync. This is the case of the retelling townies in Fray's End.

CharacterRandomizer: Allow accessing the head sprite.

By setting an unique name to this node. This will be used to show the head in
the HUD.

InventoryItem: Add NONE type and color constants

The NONE type is needed in the enum to better identify no state, when consuming
the help.

The colors will be used in the HUD as background to indicate the type of help.

Add global state for helper characters

Persist the type of help, matching one of the magical threads, and a character
seed for the visual features of the character.

Add methods to obtain and consume the help.

Resolve #2119

@github-actions
Copy link
Copy Markdown

Play this branch at https://play.threadbare.game/branches/endlessm/townies-system/.

(This launches the game from the start, not directly at the change(s) in this pull request.)

@manuq manuq force-pushed the townies-system branch 2 times, most recently from 0948ae6 to 1c98b25 Compare April 20, 2026 15:35
@manuq manuq changed the title Townies system Townies system "occasional helpers" exploration Apr 20, 2026
@manuq
Copy link
Copy Markdown
Collaborator Author

manuq commented Apr 20, 2026

This is implementation for an idea that @wjt and I had this morning: a townie helps you with the most difficult part of the Stealth level, by fixing a bridge that opens a shortcut.

Here is one game_state.cfg to try it:

game_state-fix_bridge.zip

Video:

recording.webm

@manuq
Copy link
Copy Markdown
Collaborator Author

manuq commented Apr 20, 2026

Update: I added 6 townies to quests now:

In musician quest:

  • Memory helper at music_puzzle.tscn: Tells a story. Just narrative / lore.
  • Imagination helper at stealth_level.tscn: Fixes a bridge to skip the difficult part.
  • Spirit helper at ink_combat_round_3.tscn: Helps the player by automatically filling one barrel (tries the hard cyan first)

In void quest:

  • Memory helper at void_runner.tscn: Tells a story. Just narrative / lore.
  • Imagination helper at grappling_hook_needles.tscn: Appears extra needles. The only way to collect certain buttons.
  • Spirit helper at void_runner.tscn: Helps the player by slowing down the Void (this should be reused or repurposed for the difficult last chasing scene!)

Useful game states to try:

game_states.zip

@manuq manuq force-pushed the townies-system branch 2 times, most recently from 0b22abd to 075be85 Compare April 28, 2026 15:18
@manuq manuq force-pushed the townies-system branch 6 times, most recently from 0a22e2e to 10d41d1 Compare May 29, 2026 14:40
@manuq
Copy link
Copy Markdown
Collaborator Author

manuq commented May 29, 2026

I rebased this and adapted it to the flawless new game state! Here are the new game states "snapshots" I took for testing this:
saved_games.zip

I´'m now polishing this to put it for review.

@manuq manuq force-pushed the townies-system branch 4 times, most recently from 4877509 to cb1f206 Compare June 1, 2026 23:11
@manuq manuq changed the title Townies system "occasional helpers" exploration Add townies system with occasional helpers Jun 1, 2026
@manuq manuq marked this pull request as ready for review June 1, 2026 23:14
@manuq manuq requested a review from a team as a code owner June 1, 2026 23:14
manuq added 6 commits June 1, 2026 20:14
Persist the type of help, matching one of the magical threads, and a character
seed for the visual features of the character.

Add methods to obtain and consume the help.
The NONE type is needed in the enum to better identify no state, when consuming
the help.

The colors will be used in the HUD as background to indicate the type of help.
By setting an unique name to this node. This will be used to show the head in
the HUD.
If not, when randomizing multiple characters at the same time, they all end up
moving in sync. This is the case of the retelling townies in Fray's End.
This dialogue will be displayed when interacting with the eternal loom, before
the threads offering.
Listen to the global state for doing so. If there is helper state, instantiate
the face of the character according to its seed, and set the background color to
the type of help.
manuq added 8 commits June 1, 2026 20:14
The RetellingManager coordinates the retelling with the EternalLoom, to avoid
cluttering that node. It does so by listening to signals and calling a method.
Node that will be used to make characters become helpers in levels, for
consuming the help obtained during the retelling at the eternal loom. There is
no actual implementation, this help could be spent in imaginative ways and is
left to the level creators. A default dialogue is provided as example.
Change the interaction of the eternal loom when the player is ready to offer the
threads. Now if the quest has retelling dialogue, display it. A retelling may
result in the player obtaining help, that can be used later in the game.

After the retelling, or if no retelling happened, trigger the incorporating
threads cutscene and let the corresponding elder congratulate the player.

Remove the sokoban puzzles, which are going to be repurposed. More cleanup on
this later.
The dialogue lines should be considered placeholders.
Add the following helpers:
- 1_music_puzzle: Memory helper that triggers a dialogue saying "Lore lore lore" as placeholder.
- 2_ink_combat: Spirit helper that fills the hard to reach inkwell.
- 3_stealth_level: Imagination helper that fixes the bridge.
Add the following helpers:
- 1_void_quest: Memory helper that displays a placeholder dialogue.
- 1_void_quest: Spirit helper that slows down the enemy.
- 2_grappling_hook: Imagination helper that makes needles appear in the optional loop.
@manuq manuq force-pushed the townies-system branch from cb1f206 to 446ff47 Compare June 1, 2026 23:15
@manuq
Copy link
Copy Markdown
Collaborator Author

manuq commented Jun 1, 2026

This is now finally ready for review! Things left out of this change:

  • Animations and camera movement when using the help in levels.
  • All the dialogue should be considered placeholder.
  • Centering the camera around the loom when the retelling happens.

Also there is a small bug in the walking animations, when the character that gets closer to the player leaves the loom.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Prototype Townie System

1 participant