Skip to content

Comments

InkCombatRound6: Implement Sequential Filling Mechanic#1865

Open
russell-cj wants to merge 9 commits intomainfrom
issue_1847
Open

InkCombatRound6: Implement Sequential Filling Mechanic#1865
russell-cj wants to merge 9 commits intomainfrom
issue_1847

Conversation

@russell-cj
Copy link
Contributor

This PR implements the Sequential Combo mechanic for Level 6. Barrels must now be filled in a specific, randomized order.

  • Visuals: Added a glow animation to the barrel to indicate the currently active target.
  • Barrel Logic: Barrels can now be locked. When locked (gray state), they do not receive ink.
  • New Mechanic: Introduced the BarrelUnlockSequence component:
    • Shuffles the barrel order when the level starts.
    • Keeps all barrels locked except one.
    • Automatically unlocks the next barrel when the current one is completed.

🎮 Play Ink Drinker Level 6

Play Ink Drinker Level 6

resolves #1847

- Added the 'barrel_glow' folder containing the sprite sheet and animation resource.
- Added a new AnimatedSprite2D node named 'BarrelGlow' to the FillingBarrel scene.
- Configured the 'glowing' animation and set the correct offset to align with the barrel.

feat: #1847
- Set the Y offset to -21 to align correctly with the barrel sprite.
- Set the initial visibility to false so it remains hidden until activated.

fix: #1847
- Added new component to handle sequential unlocking logic.
- Implemented shuffle and locked state management.

feat: #1847
- Updated 'filling_barrel.gd' to ignore inputs when locked.
- Added visual feedback handling dimmed color for locked state.

feat: #1847
- Added 'BarrelUnlockSequence' node to the level scene.
- Configured barrels to unlock one by one in random order.

feat: #1847
@github-actions
Copy link

Play this branch at https://play.threadbare.game/branches/endlessm/issue_1847.

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

@wjt
Copy link
Member

wjt commented Feb 4, 2026

I pushed a conflict resolution.

Without reviewing the code in detail: this level is now extremely hard because you have to evade the Mothsache and also focus on one specific barrel at a time! (Don't feel the need to change this, it's just an observation before we review the logic.)

@russell-cj
Copy link
Contributor Author

You’re absolutely right, @wjt. Originally, Level 6 was focused only on the sequential barrel mechanic, but later Mothsache was added to test it, which significantly increased the difficulty.

In fact, I had an idea that I didn’t get a chance to share before the internship ended. I’ll open a discussion and share the idea I had in mind with you.

@russell-cj
Copy link
Contributor Author

I've just created the discussion regarding the difficulty curve and intermediate levels. You can find it here: #1881

@russell-cj russell-cj moved this to In Progress in Threadbare Development Feb 6, 2026
Copy link
Member

@wjt wjt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a nice addition to the filling-game mechanic - I think it will make it possible to design more interesting puzzles.


func _ready() -> void:
if auto_start:
call_deferred("start_sequence")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
call_deferred("start_sequence")
start_sequence.call_deferred()

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But why do you need to defer this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used call_deferred because, at the time, I thought it was the best alternative to fix an issue where the glow was disappearing. Deferring the execution solved that bug for me.

@russell-cj
Copy link
Contributor Author

Hi @wjt , I'm really sorry about this. I thought you hadn't reviewed this PR yet; I usually get an email notification, but I think I missed it.

- Add documentation and native setter for is_locked.
- Replace hardcoded colors with LOCKED_COLOR and Color.WHITE constants.
- Use get_node_or_null for optional BarrelGlow node.
- Remove redundant randomize() call.
- Add randomize_barrel_order export to sequence manager.

fix: #1847
@russell-cj russell-cj requested a review from wjt February 24, 2026 19:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

InkCombatRound6: Implement Sequential Filling Logic

2 participants