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); } }
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); } }
private static void OnPlayerPickedupWeapon(IPlayer player, PlayerWeaponAddedArg arg) { if (player == null) { return; } var bot = GetBot(player); if (bot == Bot.None) { return; } bot.OnPickedupWeapon(arg); }
public virtual void OnPickedupWeapon(PlayerWeaponAddedArg arg) { }
public override void OnPickedupWeapon(PlayerWeaponAddedArg arg) { base.OnPickedupWeapon(arg); m_rifleReloadTime = 0; }