/// <summary> /// Gets called whenever a player interacts with a weapon-pickup. /// </summary> /// <param name="weaponPickedUp"></param> /// <exception cref="ArgumentOutOfRangeException"></exception> public override void OnEvent(WeaponPickedUp weaponPickedUp) { //Get the player-state who interacted with the weapon-pickup. var playerState = weaponPickedUp.Player.GetState <IPlayer>(); //Get the weapon-pickup-state. var weaponPickup = weaponPickedUp.ObjectEntity.GetState <IWeaponPickup>(); //Get the target-weapon var weapon = playerState.Weapons[ConvertWeaponNameToId(weaponPickup.WeaponName)]; //Cancel if player already has weapon equipped or the stock is empty. if (weapon.IsEquipped || weaponPickup.WeaponAmount == 0) { return; } //Set the data. weapon.IsEquipped = true; weapon.EntireAmmo = weapon.MagazineSize; weapon.CurrentAmmoInMagazine = weapon.MagazineSize; //Reduce the stock. weaponPickup.WeaponAmount--; if (!weapon.DestroyOnPickup) { return; } var destroySponge = DestroyGameObject.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); destroySponge.Entity = weaponPickedUp.ObjectEntity; destroySponge.Send(); }
public override void Interact(BoltEntity boltEntity) { var weaponPickedUp = WeaponPickedUp.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); weaponPickedUp.Player = boltEntity; weaponPickedUp.WeaponType = weaponType.ToString(); weaponPickedUp.ObjectEntity = entity; weaponPickedUp.Send(); }