Skip to content

feature: implement bot fresh start flag and receive elf solder buff - #880

Merged
sven-n merged 4 commits into
MUnique:masterfrom
eduardosmaniotto:feature/bot-fresh-start
Aug 16, 2026
Merged

feature: implement bot fresh start flag and receive elf solder buff#880
sven-n merged 4 commits into
MUnique:masterfrom
eduardosmaniotto:feature/bot-fresh-start

Conversation

@eduardosmaniotto

@eduardosmaniotto eduardosmaniotto commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements #853. Bot improvements: fresh-character startup, friendlier combat targets for low-level bots, Elf Soldier buff trips, and real-player skill parity — bots learn exactly what a player could.

Changes

Start as fresh characters (StartAsFreshCharacters)

  • New bot option: freshly generated bots start like new players (level 1, level-0 starter gear, no reset history) instead of as leveled veterans.
  • The veteran path becomes a BotStartupProfile, chosen at generation (BotStartupProfile.For(...)). Documented in docs/Bots.md; covered by BotStartupProfileTests.

Combat level headroom

  • CombatHandler.IsSafeTarget now engages monsters up to LevelHeadroom (5) levels above a bot's effective level, so fresh level-1 bots can actually find targets; true safety still comes from the existing damage/defense checks. Two new CombatHandlerTests cases.

Elf Soldier buff trips

  • Bots claim the free buff a dialog NPC offers (Elf Soldier): when configured and qualifying, they walk over (warping home first if needed), talk, request the buff and close the dialog like a player.
  • BotBuffHandler caches the offers once per game configuration; trips are errands like shopping — they beat hunting/party-follow, and BotPartyHandler declines invites meanwhile. Orchestrated in BotNavigator.TryBuffTripAsync; a no-op on servers without a buff NPC.

Skill parity with real players

  • Bots no longer learn skills that only come from an item — orb, scroll, weapon, pet — when the skill itself carries no requirements: the gate lives on the item, so a fresh DK no longer gets Twisting Slash, an MG no Fire Slash/Power Slash, an Elf no Ice Arrow, a DL no Earthshake/Force Wave, an RF no Killing Blow/Beast Uppercut/Phoenix Shot.
  • Item-granted skills with requirements of their own stay learnable once the bot qualifies (Rageful Blow at 170). The item-granted set is derived from the server config (GetItemGrantedSkillNumbers), so future items are covered automatically; one explicit entry stays for a skill whose granting weapon isn't in the config.
  • Applied at generation and level-up; bot builds no longer differ between reset and classic servers.

@sven-n sven-n left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Reviewed the bot buff trips, startup profiles, and stat-weight changes. Two correctness concerns noted inline; the rest looks good.


Generated by Claude Code

Comment thread src/GameLogic/Bots/BotNavigator.cs
Comment thread src/GameLogic/Bots/BotBuffHandler.cs Outdated

@sven-n sven-n left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Both review findings are addressed in e96ec5e: the failed buff-trip path now applies the full NextBuffCheckUtc() backoff, and the effect-scan catch is narrowed to InvalidOperationException with a debug log. CI is green. LGTM.


Generated by Claude Code

@sven-n
sven-n merged commit 70b33d1 into MUnique:master Aug 16, 2026
3 checks passed
@eduardosmaniotto
eduardosmaniotto deleted the feature/bot-fresh-start branch August 16, 2026 21:23
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