Bots cannot cast, withdraw, or route by teleport — a plan for all three #150
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bots cannot cast, cannot withdraw, and do not know teleports exist. Now that #149 has landed the standard spellbook, this is the plan for teaching them to use it — and for retiring the free teleports they use today.
The principle this is built on
Realism is what an observer can see, not what the input path did. A player watching a bot cannot tell whether a spell was reached through a decoded
if_buttonpacket or by calling the cast directly after a plausible pause. Emulating the click plumbing buys nothing and costs a goal several round trips per cast.So bots call the cast path directly, after a realistic delay — and every observable effect stays real: the Magic level is required, the runes or tablet are consumed, the animation plays, the three-tick delay applies, the wilderness ceiling refuses. Only the packet decode is skipped.
This is the same deviation
Goals.Merchantalready documents forAct.relocate/2, but a far smaller one: there the outcome is impossible for a player, here only the input is.Where things actually stand
Bot.Acthaswalk,object_action,npc_action,player_action,button/6,deposit_all, the trade verbs andexchange_offer. No spell affordance, and no bank withdrawal —Act.withdraw/4is the trade screen, not a bank.Bot.Travelis walking, a straight-line long-leg hop, and recover-by-relocate. Nothing in it would ever choose to teleport.Goals.MerchantandGoals.RestockcallAct.relocate/2— the session moving the player directly. No runes, no level, no gate, no delay. So doesBot.Travel.recover/2on every wedge, which is also how #138 drops bots into dungeons.What the cache already gives us
Break— the standard set at8009Falador,8010Camelot,8011Ardougne and their neighbours. So the tablet route is real, and it is the route for a bot without the Magic level.The plan, in dependency order
1. A teleport view for bots. Given a bot's Magic level and what it holds or banks, which teleports can it actually use — and for a target tile, which one lands nearest. Pure, so it is testable without a world. This is the piece everything else asks.
2. A destination index, hand-curated. Operator's call, and the right one: derive nothing here. A curated table of common areas → nearest teleport → walking remainder. It doubles as the thing that makes an operator able to say where a bot is in words rather than coordinates, which is worth as much as the routing.
3.
Bot.Act.cast_teleport/2andbreak_tablet/2. The affordances, calling the real cast so every gate applies.4.
Bot.Travelprefers a teleport when one lands closer than walking. Gated on the remainder being inside its working radius — which is unmeasured, and is what #123 should be retitled around. Measure it before tuning anything on top of it.5. Bank withdrawal. Genuinely new and the largest piece: the bank interface has only ever been driven in the deposit direction. Needed for runes and tablets, and useful far beyond teleports.
6. Acquisition, two routes plus a fallback. Have the level and borrow runes; or buy/borrow a tablet; or, for a unique location, acquire whatever item reaches it the way a player would.
7. Retire the relocate cheats. Once bots can cast,
Goals.MerchantandGoals.Restockshould use real teleports where one exists.Bot.Travel.recover/2is a separate question — it is an error path, and #138 argues it is actively harmful in its current form regardless.Three decisions this needs before it is built
Shared pool or per-bot bank? The sister project's model has gatherers depositing into a shared pool with a reason-tagged ledger, and "borrow from the economy" means drawing on that. Revenant has neither: each bot has its own bank. Borrowing therefore means either building the pool first, or minting into a bot's own bank and recording it. These are different amounts of work and different economies.
Does borrowing mint? A bot borrowing runes that did not exist is a source, and the sister project's own lending design is explicit that item-minting is the inflationary axis it was careful to avoid. A fleet quietly minting law runes to move around is a slow leak into an economy the Grand Exchange is connected to. Worth deciding deliberately rather than discovering.
What is the walking remainder allowed to be?
Bot.Travel's radius is unknown. The measurement is cheap — spawn a travel bot at increasing distances and find where it stops arriving — and until it exists, "teleport near then walk" has no definition of near.Moved to https://forge.home.arpa/Revenant/Server/issues/49