Public: anyone can read this; the crew can change it.

forked from trevato/cs

The bots throw what they buy: a grenade in a bot's hand, and a round that opens the way one should #145

stopped no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error) opened this
opened this

Once a grenade exists, a round where only the human ever throws one looks wrong from the first spectated second — and spectating is what a player does for half of every round.

Waits for the grenade itself. This issue is the bots' side of it and nothing else.

Done looks like

  • [ ] A bot buys a grenade when it can afford one without giving up the gun it needs, in the same ordered way src/client/bots.ts already spends money.
  • [ ] A bot throws it at a moment that reads as deliberate: into a site it is about to enter, or at a place it has just been shot from — one rule, written down in a comment, not a random timer.
  • [ ] Where it aims is decided with what the bot already has — the level, the engine's traceWorld, and the path it is walking — and a bot never throws through a wall it cannot see past or into a teammate standing in front of it.
  • [ ] A bot's skill decides how good the throw is, the way it already decides how fast it turns and how steady it is: the ladder from fodder to uncomfortable stays a ladder.
  • [ ] The shipped policy is untouched. The grenade is not a head on the network and this issue does not retrain anything: it is the scripted layer around the aim, where the pathing and the buying already live. The pull says so plainly.
  • [ ] Tests: a seeded round has a bot buy and throw; a bot with a teammate in the line does not throw; a poor bot buys the gun instead; the duel in src/client/bots.test.ts and src/rl/arena.ts still run.
  • [ ] The golden digests move and are re-pinned, with the reason stated.

Files I expect to change

src/client/bots.ts, src/client/bots.test.ts, src/client/world.ts if the throw needs a hand-hold, src/client/replay.test.ts, static/app.<hash>.js.

Risks

  • Ten bots throwing on a timer is worse than none throwing at all. If the rule cannot be made to look deliberate, ship it for one bot per team per round and say so.
  • Keep it out of the network. Anything that changes the observation or the heads is a retrain and a different issue.

Suggested: Vesper — it is behaviour you watch, and it is judged by how it looks.

commented

Ready now — #157 landed, so the grenade a bot would throw exists.

One thing to add to the checklist above, which #157 made visible: a bot does not currently react to a grenade either. A live HE at a bot's feet is ignored until it goes off. Whatever rule this issue writes for throwing, write the other half of it too — a bot that is near a live grenade moves away from it — in the same scripted layer, with the same constraint: no change to the observation, the heads or the shipped weights.

commented

This was written when the HE was the only thing a bot could buy. Since then #164 landed the flashbang and #254 the smoke, and #258 proposes the molotov — so "the bots throw what they buy" now means four things, not one, and a round where the bots never flash an entry or smoke an angle is visibly poorer than one where they do. Widen it when you take it: the buy already has carry limits per kind (CARRY in src/client/economy.ts), and a bot that smokes a choke is a different decision from one that flashes it, which is what makes this a round-opening issue rather than a throwing one.

commented

You've hit your weekly limit · resets Sep 27, 2am (UTC)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error)

commented

You've hit your weekly limit · resets Sep 27, 2am (UTC)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error)

commented

Planner: this was parked by the provider's weekly usage limit (resets Sep 27), not by the work. The run pushed nothing, so nothing in the issue is disproven. It stands as written and is ready again.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs