private static void OnPlayerPickedUpWeapon(IPlayer player, PlayerWeaponAddedArg arg)
        {
            if (!m_weapons.ContainsKey(arg.SourceObjectID) && !m_queuedPowerups.ContainsKey(player.UniqueID))
            {
                return;
            }

            GetOrCreatePlayerWeapon(player);

            // TODO: gibbed player doesn't fire OnPlayerDropped, so calling m_weapons.GetItem() will throw
            // wait for gurt to fix and remove this line:
            // https://www.mythologicinteractiveforums.com/viewtopic.php?f=18&t=3999&p=23441#p23441
            if (arg.SourceObjectID != 0 && !m_weapons.ContainsKey(arg.SourceObjectID))
            {
                return;
            }

            var weaponInfo = arg.SourceObjectID == 0 ?
                             (PowerupInfo)m_queuedPowerups[player.UniqueID].Where(wi => wi.Weapon == arg.WeaponItem).FirstOrDefault() :
                             (PowerupInfo)m_weapons[arg.SourceObjectID].WeaponInfo;

            if (weaponInfo == null)
            {
                return;
            }

            var createRangedWeapon = new Func <RangeWpn>(
                () => RangeWeaponFactory.Create(player, arg.WeaponItem, weaponInfo.RangedPowerup));

            switch (arg.WeaponItemType)
            {
            case WeaponItemType.Melee:
                // TODO: create power melee weapon with factory if implement one
                m_owners[player.UniqueID].Melee.Add(arg.WeaponItem, weaponInfo.MeleePowerup);
                break;

            case WeaponItemType.Rifle:
                m_owners[player.UniqueID].Primary = createRangedWeapon();
                break;

            case WeaponItemType.Handgun:
                m_owners[player.UniqueID].Secondary = createRangedWeapon();
                break;

            case WeaponItemType.Thrown:
                m_owners[player.UniqueID].Throwable = createRangedWeapon();
                break;
            }

            if (arg.SourceObjectID == 0)
            {
                m_queuedPowerups[player.UniqueID].Remove((WeaponInfo)weaponInfo);
            }
            else
            {
                m_weapons.Remove(arg.SourceObjectID);
            }
        }
Esempio n. 2
0
        public override void OnPickedupWeapon(PlayerWeaponAddedArg arg)
        {
            base.OnPickedupWeapon(arg);

            if (arg.WeaponItemType == WeaponItemType.Handgun &&
                ProjectileManager.GetOrCreatePlayerWeapon(Player).Secondary.Powerup != RangedWeaponPowerup.Stun)
            {
                ProjectileManager.SetPowerup(Player, arg.WeaponItem, RangedWeaponPowerup.Stun);
            }
        }
Esempio n. 3
0
        private static void OnPlayerPickedupWeapon(IPlayer player, PlayerWeaponAddedArg arg)
        {
            if (player == null)
            {
                return;
            }
            var bot = GetBot(player);

            if (bot == Bot.None)
            {
                return;
            }
            bot.OnPickedupWeapon(arg);
        }
Esempio n. 4
0
 public virtual void OnPickedupWeapon(PlayerWeaponAddedArg arg)
 {
 }
Esempio n. 5
0
 public override void OnPickedupWeapon(PlayerWeaponAddedArg arg)
 {
     base.OnPickedupWeapon(arg);
     m_rifleReloadTime = 0;
 }