Skip to content

Conversation

@RobLoach
Copy link
Collaborator

@RobLoach RobLoach commented Jul 31, 2025

This adds the Great Admiral Repair Fleet ability.

Rather than a special unique to heal adjacent units, it allows unitTriggerTarget to take in
Every adjacent [mapUnitFilter] unit. When triggered, it invokes the trigger for all adjacent units matching mapUnitFilter.

"[Every adjacent [{Friendly} {Water}] unit] heals [100] HP <by consuming this unit>",

It also adds the "Change Port" ability, which allows the Great Admiral to move to other coastal cities. Good for when they're blocked in a lake.

Screenshot

Screenshot from 2025-09-14 17-48-28

Save Game

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

@RobLoach RobLoach marked this pull request as draft July 31, 2025 21:18
@RobLoach RobLoach marked this pull request as ready for review September 14, 2025 21:51
@yairm210
Copy link
Owner

There's a little bit too much here
Let's split "iterate on units upon trigger" into a separate PR because that's the contentious part of this

@RobLoach RobLoach marked this pull request as draft September 25, 2025 16:53
@RobLoach
Copy link
Collaborator Author

Sounds good with me. I'll have this focus on an iterative trigger.

@RobLoach RobLoach changed the title Add Great Admiral Allow Every adjacent [unitFilter] unit for Unit Triggers Sep 26, 2025
@RobLoach RobLoach mentioned this pull request Sep 26, 2025
@RobLoach RobLoach marked this pull request as ready for review September 30, 2025 17:15
@RobLoach
Copy link
Collaborator Author

Brought in the latest changes, seems to be working.

@RobLoach RobLoach changed the title Allow Every adjacent [unitFilter] unit for Unit Triggers Great Admiral: Add Repair Fleet ability Sep 30, 2025
@RobLoach RobLoach marked this pull request as draft October 8, 2025 14:50
@RobLoach RobLoach marked this pull request as ready for review October 11, 2025 14:25
@github-actions
Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions
Copy link

Conflicts have been resolved.

override fun isInvisible(to: Civilization): Boolean = unit.isInvisible(to)
override fun canAttack(): Boolean = unit.canAttack()
override fun matchesFilter(filter: String, multiFilter: Boolean) = unit.matchesFilter(filter, multiFilter)
override fun matchesFilter(filter: String, multiFilter: Boolean) = unit.matchesFilter(filter, multiFilter=multiFilter)
Copy link
Owner

Choose a reason for hiding this comment

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

Seem unnecessary to me

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Seems unnecessary, but is...

MapUnitCombatant.kt:22:99 Argument type mismatch: actual type is 'Boolean', but 'GameContext?' was expected.

The matchesFilter signature is...

fun matchesFilter(filter: String, state: GameContext? = cache.state, multiFilter: Boolean = true)

Just looks weird because we're skipping the state.

Copy link
Owner

Choose a reason for hiding this comment

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

Gotcha 👍🏿

@github-actions
Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions
Copy link

Conflicts have been resolved.

@github-actions
Copy link

github-actions bot commented Jan 1, 2026

This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.

@github-actions github-actions bot added the Stale label Jan 1, 2026
@RobLoach RobLoach removed the Stale label Jan 1, 2026
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.

2 participants