Example #1
0
        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();
     }
 }
Example #3
0
        public virtual void OnDroppedWeapon(PlayerWeaponRemovedArg arg)
        {
            var gun = GetGravityGun();

            if (gun != null)
            {
                m_botGravityGunAI.OnDroppedWeapon(arg);
            }
        }
Example #4
0
        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));
        }
Example #6
0
        public override void OnDroppedWeapon(PlayerWeaponRemovedArg arg)
        {
            base.OnDroppedWeapon(arg);

            if (arg.WeaponItemType == WeaponItemType.Rifle)
            {
                ProjectileManager.SetPowerup(Player, WeaponItem.GRENADE_LAUNCHER, RangedWeaponPowerup.Smoke);
            }
        }
Example #7
0
        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();
            }
        }
Example #8
0
        private static void OnPlayerDroppedWeapon(IPlayer player, PlayerWeaponRemovedArg arg)
        {
            if (player == null)
            {
                return;
            }
            var bot = GetBot(player);

            if (bot == Bot.None)
            {
                return;
            }
            bot.OnDroppedWeapon(arg);
        }
Example #9
0
        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");
 }