OneMoreRoundWeapon.BotControl.cs
using Sandbox;
/// <summary>
/// Narrow programmatic control surface for host-controlled OMR bots.
///
/// This intentionally routes AI through the real BaseCombatWeapon/OMR weapon
/// mechanics rather than duplicating damage, ammo, reload, ADS, cooldown or
/// cycle behavior inside the bot brain.
/// </summary>
public partial class OneMoreRoundWeapon
{
/// <summary>
/// Applies an AI ADS intent while respecting the same authored capability,
/// round-rule, reload, sprint and cycle gates used by a human weapon.
/// </summary>
public bool SetBotAimIntent( bool wantsAim )
{
if ( !IsBotControlled )
return false;
bool resolvedAim =
wantsAim &&
AllowAim &&
RoundAllowsAim &&
!_sprintSuppressesAim &&
!IsReloading &&
CanAimDuringCurrentCycle();
if ( resolvedAim != IsAiming )
SetAiming( resolvedAim );
EnsureViewModelAimState();
return IsAiming;
}
/// <summary>
/// Pulls the real primary trigger from AI. FirePrimary() owns fire-rate and
/// readiness checks; PrimaryAttack is never called directly.
/// </summary>
public bool BotTryPrimaryFire()
{
if ( !IsBotControlled )
return false;
UpdateTemporaryPrimaryGate();
return FirePrimary();
}
/// <summary>
/// Starts the real weapon reload when legal. Reload remains host-authoritative
/// and all normal magazine/reserve/presentation behavior is preserved.
/// </summary>
public bool BotTryReload()
{
if ( !IsBotControlled || !CanReload() )
return false;
Reload();
return true;
}
}