Weapons/RatThrowWeapon.cs
public class RatThrowWeapon : BaseWeapon
{
[Property] public GameObject RatPrefab { get; set; }
TimeSince TimeSinceCreated = 0;
protected override void OnEnabled()
{
TimeSinceCreated = 0;
}
public override void OnControl( Player player )
{
base.OnControl( player );
if ( TimeSinceCreated < 0.2f )
return;
if ( Input.Pressed( "Attack1" ) )
{
StartAttack();
}
if ( Input.Released( "Attack1" ) )
{
StopAttack();
Attack( player );
}
}
[Rpc.Host]
public void ThrowRat()
{
if ( !Owner.IsValid() ) return;
var ratGo = RatPrefab?.Clone( Owner.EyeTransform.Position + Owner.EyeTransform.Forward * 64f );
var rat = ratGo.GetComponent<Rat>();
rat.Instigator = Owner.PlayerData;
rat.Throw( Owner.EyeTransform.Rotation );
ratGo.NetworkSpawn();
}
void Attack( Player player )
{
if ( !CanShoot() || !TakeAmmo( 1 ) )
{
return;
}
AddShootDelay( 1 );
var ev = new IWeaponEvent.AttackEvent( ViewModel.IsValid() );
IWeaponEvent.PostToGameObject( GameObject.Root, x => x.OnAttack( ev ) );
ThrowRat();
if ( !HasAmmo() )
{
SwitchAway();
}
}
}