Repository navigation
Let hurrying bots path through smoke hazards - #2260
Merged
sunzenshen merged 3 commits intoOct 17, 2026
Merged
Conversation
A bot's default route treats every hazard area as impassable. When a hurrying bot, such as a CTG interceptor chasing the ghost carrier, has no detour around a smoke, its chase path comes back partial and it stands at the smoke's edge until the path fail timer runs out. A hurrying bot now pays a large cost multiplier for smoke areas instead, so it still detours when a reasonable detour exists and goes through the smoke when none does. Deadly hazards such as frag grenade areas stay impassable, and only the default route is affected.
Expose the smoke cost multiplier for hurrying bots as neo_bot_path_penalty_hurry_smoke_multiplier, next to the other path penalty ConVars, so it can be tuned without a rebuild.
sunzenshen
marked this pull request as ready for review
October 17, 2026 04:37
sunzenshen
added a commit
to sunzenshen/neo
that referenced
this pull request
Oct 17, 2026
Expose the cost multiplier for hurrying bots crossing the tank's sight as neo_bot_path_penalty_hurry_hazard_multiplier, next to the other path penalty ConVars, matching the smoke penalty in NeotokyoRebuild#2260.
The multiplier applies to every hazard that is not deadly, not only smoke, so name the ConVar and its comment for that.
sunzenshen
added a commit
to sunzenshen/neo
that referenced
this pull request
Oct 17, 2026
A bot chasing on DEFAULT_ROUTE treated every area the tank can see as impassable, so a hurrying interceptor stalled when no detour existed. The turret mark is no longer also written as a deadly mark, so the hurry penalty for hazards that are not deadly (NeotokyoRebuild#2260) now covers it: in a hurry a bot crosses the tank's sight at a large path cost and still detours when a detour exists. Grenades and the tank's own area (run over) stay deadly, and every other hazard check counts the turret mark as before.
sunzenshen
added a commit
to sunzenshen/neo
that referenced
this pull request
Oct 17, 2026
A bot chasing on DEFAULT_ROUTE treated every area the tank can see as impassable, so a hurrying interceptor stalled when no detour existed. The turret mark is no longer also written as a deadly mark, so the hurry penalty for hazards that are not deadly (NeotokyoRebuild#2260) now covers it: in a hurry a bot crosses the tank's sight at a large path cost and still detours when a detour exists. Grenades and the tank's own area (run over) stay deadly, and every other hazard check counts the turret mark as before.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
A bot's default route treats every hazard area as impassable (path cost
-1). That is right for a bot with time to spare, but a hurrying bot, such as a CTG interceptor chasing the ghost carrier (CNEOBotCtgEnemy, and theCNEOBotAttackchase under it), has nowhere to go when a smoke covers the only way to its target: the chase path comes back partial,ChasePathreportsFAIL_NO_PATH_EXISTS, and the bot stands at the smoke's edge until the path fail timer runs out, then tries again with the same result.With this change:
CNEOBotPathCostreadsShouldHurryonce when it is built.neo_bot_path_penalty_hurry_hazard_multiplier, default 20, the same factor as a navmesh avoid area) instead of being impassable. A detour that costs less still wins, and when none exists the path goes through the smoke and is complete, so the chase no longer stalls.CNEOBotPathReservationSystem::IsAreaDeadlyHazardtells the two kinds apart.#2179 (bots avoid the NPC tank) extends the same check to the tank's line-of-sight marks, so a hurrying chaser can push through them too.
Toolchain
Linked Issues