public override void OnDroppedWeapon(PlayerWeaponRemovedArg arg) { base.OnDroppedWeapon(arg); if (arg.WeaponItemType != WeaponItemType.Rifle) { return; } var weaponObject = Game.GetObject(arg.TargetObjectID); if (!Player.IsDead) { if (weaponObject != null) { weaponObject.SetHealth(0); } } else { // always drops powerup weapon as a reward for players var powerupWpn = ProjectileManager.CreateWeapon("WpnGrenadeLauncher", RangedWeaponPowerup.Spinner); powerupWpn.SetWorldPosition(weaponObject.GetWorldPosition()); powerupWpn.SetLinearVelocity(weaponObject.GetLinearVelocity()); powerupWpn.SetAngularVelocity(weaponObject.GetAngularVelocity()); weaponObject.Remove(); } }
public void OnDroppedWeapon(PlayerWeaponRemovedArg arg) { if (!Actor.HasEquipment) { StopBuilding(); } }
public virtual void OnDroppedWeapon(PlayerWeaponRemovedArg arg) { var gun = GetGravityGun(); if (gun != null) { m_botGravityGunAI.OnDroppedWeapon(arg); } }
public override void OnDroppedWeapon(PlayerWeaponRemovedArg arg) { base.OnDroppedWeapon(arg); if (m_controller != null) { m_controller.OnDroppedWeapon(arg); } }
private static void OnPlayerDroppedWeapon(IPlayer player, PlayerWeaponRemovedArg arg) { // ID == 0 means no weapon was dropped. For example: Activating instant powerup will make it disappeared, not dropped if (arg.TargetObjectID == 0) { return; } // player argument may be a null object if the weapon drops right after the player was gibbed if (player.UniqueID == 0) { return; } // dropped weapons dont not always have IObjectWeaponItem type. For example thrown grenades have IObject type var weaponObject = Game.GetObject(arg.TargetObjectID) as IObjectWeaponItem; if (weaponObject == null) { return; } var oldPlayerWpn = GetOrCreatePlayerWeapon(player); var newWeaponInfo = new WeaponObjectInfo() { Weapon = weaponObject }; switch (weaponObject.WeaponItemType) { case WeaponItemType.Melee: newWeaponInfo.MeleePowerup = oldPlayerWpn.Melee.Powerup; m_owners[player.UniqueID].Melee.Remove(); // TODO: add null object break; case WeaponItemType.Rifle: newWeaponInfo.RangedPowerup = oldPlayerWpn.Primary.Powerup; m_owners[player.UniqueID].Primary.Remove(); m_owners[player.UniqueID].Primary = RangeWeaponFactory.Create(player, WeaponItem.NONE, RangedWeaponPowerup.None); break; case WeaponItemType.Handgun: newWeaponInfo.RangedPowerup = oldPlayerWpn.Secondary.Powerup; m_owners[player.UniqueID].Secondary.Remove(); m_owners[player.UniqueID].Secondary = RangeWeaponFactory.Create(player, WeaponItem.NONE, RangedWeaponPowerup.None); break; case WeaponItemType.Thrown: newWeaponInfo.RangedPowerup = oldPlayerWpn.Throwable.Powerup; m_owners[player.UniqueID].Throwable.Remove(); m_owners[player.UniqueID].Throwable = RangeWeaponFactory.Create(player, WeaponItem.NONE, RangedWeaponPowerup.None); break; } m_weapons.Add(weaponObject.UniqueID, new Weapon(newWeaponInfo)); }
public override void OnDroppedWeapon(PlayerWeaponRemovedArg arg) { base.OnDroppedWeapon(arg); if (arg.WeaponItemType == WeaponItemType.Rifle) { ProjectileManager.SetPowerup(Player, WeaponItem.GRENADE_LAUNCHER, RangedWeaponPowerup.Smoke); } }
public override void OnDroppedWeapon(PlayerWeaponRemovedArg arg) { base.OnDroppedWeapon(arg); if (arg.WeaponItemType == WeaponItemType.Rifle && !Player.IsDead) { if (arg.TargetObjectID != 0) { Game.GetObject(arg.TargetObjectID).Remove(); } ResetWeapon(); } }
private static void OnPlayerDroppedWeapon(IPlayer player, PlayerWeaponRemovedArg arg) { if (player == null) { return; } var bot = GetBot(player); if (bot == Bot.None) { return; } bot.OnDroppedWeapon(arg); }
public override void OnDroppedWeapon(PlayerWeaponRemovedArg arg) { base.OnDroppedWeapon(arg); if (!Player.IsDead && Player.CurrentSecondaryWeapon.WeaponItem == WeaponItem.NONE) { // Don't give primary weapon again. it's OP if (arg.WeaponItemType == WeaponItemType.Rifle) { Player.GiveWeaponItem(WeaponItem.REVOLVER); } else { Player.GiveWeaponItem(arg.WeaponItem); } } }
public void OnDroppedWeapon(PlayerWeaponRemovedArg arg) { Stop("Drop weapon"); }