feat(bot): net-fishing bot that re-acquires spots when they relocate #121

Merged
sickday merged 1 commit from feat/fishing-bots into main 2026-08-05 21:39:27 +00:00
Owner

A sixth kind, fisher (::botgen fisher/fish), now that Fishing exists.
It is not a third GatherAndBank :skill config the way miner was to chopper,
because a fishing spot is an NPC rather than a loc. So the goal is a hybrid:
GatherAndBank's choose-ground/travel/work/bank skeleton with HuntNpcs' scan
swapped into the middle — the target is found through MovementAuthority and
clicked with an npc_action, not read from the collision index.

That one substitution makes spot relocation free. A relocated spot is simply a
different nearby entity on the next scan; the only latched index lives in the
working phase, where present?/1 drops it the tick it stops carrying a spot
that offers the same option, and the goal re-finds. No engine change and no
skilling?-only heuristic — the explicit re-aim is what makes the re-click
prompt rather than waiting out a grace.

Scope is a net fisher (small net, shrimp, no bait): net spots are static
spawns, so Bot.Sites grows a fishing-ground list beside the water the same way
it grows trees and rocks — cluster the spot spawns, stand a tile beside them
(the spots are on water), pair the nearest bank. Fly spots are excluded on
purpose: they relocate and want a rod and feathers. The bank leg keeps tools
and baits and banks the catch; Seed.net_for/1 derives the net id from the
method's own tool list rather than naming it.

Also fixes default_activity(:travel_to_site)/(:travel_to_ground), which the
existing gatherers reported as :idle while walking to a site.

A sixth kind, `fisher` (`::botgen fisher`/`fish`), now that Fishing exists. It is not a third GatherAndBank `:skill` config the way miner was to chopper, because a fishing spot is an NPC rather than a loc. So the goal is a hybrid: GatherAndBank's choose-ground/travel/work/bank skeleton with HuntNpcs' scan swapped into the middle — the target is found through MovementAuthority and clicked with an npc_action, not read from the collision index. That one substitution makes spot relocation free. A relocated spot is simply a different nearby entity on the next scan; the only latched index lives in the `working` phase, where present?/1 drops it the tick it stops carrying a spot that offers the same option, and the goal re-finds. No engine change and no skilling?-only heuristic — the explicit re-aim is what makes the re-click prompt rather than waiting out a grace. Scope is a net fisher (small net, shrimp, no bait): net spots are static spawns, so Bot.Sites grows a fishing-ground list beside the water the same way it grows trees and rocks — cluster the spot spawns, stand a tile beside them (the spots are on water), pair the nearest bank. Fly spots are excluded on purpose: they relocate and want a rod and feathers. The bank leg keeps tools and baits and banks the catch; Seed.net_for/1 derives the net id from the method's own tool list rather than naming it. Also fixes default_activity(:travel_to_site)/(:travel_to_ground), which the existing gatherers reported as :idle while walking to a site.
feat(bot): net-fishing bot that re-acquires spots when they relocate
All checks were successful
ci / gates (pull_request) Successful in 54s
build / image (push) Successful in 31s
ci / gates (push) Successful in 59s
f3e8feeb46
A sixth kind, `fisher` (`::botgen fisher`/`fish`), now that Fishing exists.
It is not a third GatherAndBank `:skill` config the way miner was to chopper,
because a fishing spot is an NPC rather than a loc. So the goal is a hybrid:
GatherAndBank's choose-ground/travel/work/bank skeleton with HuntNpcs' scan
swapped into the middle — the target is found through MovementAuthority and
clicked with an npc_action, not read from the collision index.

That one substitution makes spot relocation free. A relocated spot is simply a
different nearby entity on the next scan; the only latched index lives in the
`working` phase, where present?/1 drops it the tick it stops carrying a spot
that offers the same option, and the goal re-finds. No engine change and no
skilling?-only heuristic — the explicit re-aim is what makes the re-click
prompt rather than waiting out a grace.

Scope is a net fisher (small net, shrimp, no bait): net spots are static
spawns, so Bot.Sites grows a fishing-ground list beside the water the same way
it grows trees and rocks — cluster the spot spawns, stand a tile beside them
(the spots are on water), pair the nearest bank. Fly spots are excluded on
purpose: they relocate and want a rod and feathers. The bank leg keeps tools
and baits and banks the catch; Seed.net_for/1 derives the net id from the
method's own tool list rather than naming it.

Also fixes default_activity(:travel_to_site)/(:travel_to_ground), which the
existing gatherers reported as :idle while walking to a site.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Revenant/Server!121
No description provided.