Skip to content

Conversation

@CTimmerman
Copy link
Contributor

@CTimmerman CTimmerman commented Dec 10, 2025

The first step to attacking multiple opponents (#8996) is not overextending on one. See this patch saving player one:

image

@CTimmerman CTimmerman force-pushed the Attack-multiple-opponents-(#8996) branch from 76311b2 to e9c14d7 Compare December 15, 2025 23:12
@CTimmerman
Copy link
Contributor Author

Now checking isGoaded and entitiesMustAttack (which should be enough on its own imo):
image

@CTimmerman CTimmerman force-pushed the Attack-multiple-opponents-(#8996) branch from e9c14d7 to 58ef8ed Compare December 15, 2025 23:23
@CTimmerman CTimmerman requested a review from tool4ever December 28, 2025 23:01
Copy link
Contributor

@tool4ever tool4ever left a comment

Choose a reason for hiding this comment

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

The main problem remains: you're trying to modify a pretty extensive calculation result with way simpler heuristics.

This will certainly work to the AIs advantage in some constructed cases but at the same time just introduce at least as much new potential for misplays, e.g. when your damage_guess ignores modifiers (having Infect would already be enough) remaining attackers might end up suiciding for no real benefit.

For a smarter selection you could do your threshold approach while inside the relevant parts of doAssault.
Or/And the other opponents should be considered too.
I'm actually not sure if just not assaulting when your teamsize is smaller wouldn't be a better (certainly safer) default anyway?

On top you keep simply resolving comments and only force-pushing which doesn't help at all in understanding what changes you make to address any concerns...

@CTimmerman
Copy link
Contributor Author

The issue this patch fixes is about using too many attackers. It appears that the current doAssault adds all of them.

As commented, the current patch checks for needing to attack (using isGoaded and static check, but not the singular rememberedtoattack check in the existing code; i'd make shouldAttack a single function checking all potential causes) and leaves 2 extra attackers beyond the 20 life overkill (more than enough for shared infect, but an edge case would be a bunch of mites sorted last. To avoid edge case code i'd just Monte Carlo or neural net the options.).

A smaller team sounds unable to swing for the win so should not return true in doAssault, unless there's a big enough trampler in there, which should make the rest not needed for the attack. I'll see about modifying doAssault and leave the messy history.

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