Player/PlayerController.Actor.cs
namespace Opium;
public partial class PlayerController
{
public override WeaponPickup DropWeapon( BaseWeapon weapon )
{
return Inventory?.Drop( weapon );
}
public override bool CanShoot( BaseWeapon weapon )
{
var staminaAbility = GetMechanic<StaminaMechanic>();
if ( ( staminaAbility?.Stamina ?? 100f ) < ( weapon.StaminaDrain / 2f ) ) return false;
return true;
}
public override bool CanAim( BaseWeapon weapon )
{
var staminaAbility = GetMechanic<StaminaMechanic>();
if ( (staminaAbility?.Stamina ?? 100f) < (weapon.StaminaDrain / 2f) ) return false;
return true;
}
public override BaseWeapon ActiveWeapon => Inventory.Current;
// TODO: move these
private readonly float CrouchingBonus = 1.25f;
private readonly float FlashlightBonus = 2.0f;
public override float GetDetectionFactor( Actor actor )
{
var points = base.GetDetectionFactor( actor );
if ( Crouching ) points /= CrouchingBonus;
if ( Components.Get<FlashLight>().IsActive ) points *= FlashlightBonus;
return points;
}
}