public static bool PlayerShoot(Player player, UseableGun gun) { PlayerShootEventArgs evt = new PlayerShootEventArgs(); evt.Player = new PlayerTag(player.channel.owner); // TODO: make GunTag/WeaponTag/EquipmentTag/WhateverTag to store this more accurately? evt.Gun = new ItemAssetTag(player.equipment.asset); UnturnedFreneticEvents.OnPlayerShoot.Fire(evt); return(evt.Cancelled); }
internal void InvokePlayerShootEvent(Player player, Player target, Vector3 targetpos, SynapseItem weapon, out bool allow) { var ev = new PlayerShootEventArgs { Player = player, Allow = true, Target = target, TargetPosition = targetpos, Weapon = weapon, }; PlayerShootEvent?.Invoke(ev); allow = ev.Allow; }
internal bool OnPlayerShootDynamicObject(int playerid, int weaponid, int objectid, float x, float y, float z) { var @object = DynamicObject.Find(objectid); if (@object == null) { return(false); } var args = new PlayerShootEventArgs(BasePlayer.FindOrCreate(playerid), (Weapon)weaponid, new Vector3(x, y, z)); OnPlayerShootDynamicObject(@object, args); return(!args.PreventDamage); }
//Used by: //Tranquilizer //GrenadLauncher //MedkitGun //VaccinePistole private void OnShoot(PlayerShootEventArgs ev) { if (ev.Player.GetComponent <TranquilizerPlayerScript>().Stuned) { ev.Allow = false; return; } switch (ev.Weapon?.ID) { case (int)CustomItemType.Tranquilizer: ev.Player.PlayerInteract.OnInteract(); ev.Allow = false; ev.Weapon.Durabillity--; if (ev.Target != null) { ev.Target.GetComponent <TranquilizerPlayerScript>().Stun(); Hitmarker.SendHitmarker(ev.Player.Connection, 1f); } break; case (int)CustomItemType.MedkitGun: ev.Player.PlayerInteract.OnInteract(); ev.Allow = false; ev.Weapon.Durabillity--; if (ev.Target != null) { ev.Target.Heal(PluginClass.MedkitGunConfig.HealAmount); Hitmarker.SendHitmarker(ev.Player.Connection, 1f); } break; case (int)CustomItemType.GrenadeLauncher: ev.Player.PlayerInteract.OnInteract(); ev.Allow = false; ev.Weapon.Durabillity--; var defaultItem = InventoryItemLoader.AvailableItems[ItemType.GrenadeHE] as ThrowableItem; var settings = defaultItem.FullThrowSettings; var reference = ev.Player.CameraReference; var a2 = reference.forward + (reference.up * settings.UpwardsFactor) * (1f - Mathf.Abs(Vector3.Dot(reference.forward, Vector3.up))); var velocity = ev.Player.PlayerMovementSync.PlayerVelocity + a2 * 20 * PluginClass.GLConfig.ForceMultiplier; var grenade = Map.Get.SpawnGrenade(ev.Player.CameraReference.position, velocity, PluginClass.GLConfig.GrenadeFuseTime, GrenadeType.Grenade, ev.Player); if (PluginClass.GLConfig.ExplodeOnCollison) { var script = grenade.Throwable.ThrowableItem.gameObject.AddComponent <ExplodeScript>(); script.owner = ev.Player.gameObject; } break; case (int)CustomItemType.VaccinePistole: ev.Player.PlayerInteract.OnInteract(); ev.Allow = false; ev.Weapon.Durabillity--; if (ev.Target != null) { Hitmarker.SendHitmarker(ev.Player.Connection, 1f); if (ev.Target.RoleID == (int)RoleType.Scp0492) { var pos = ev.Target.Position; ev.Target.ChangeRoleAtPosition(PluginClass.VPConfig.ReplaceRoles.ElementAt(UnityEngine.Random.Range(0, PluginClass.VPConfig.ReplaceRoles.Count))); ev.Target.Position = pos; } else { ev.Target.Hurt(PluginClass.VPConfig.Heal); ev.Target.PlayerEffectsController.UseMedicalItem(ItemType.SCP500); } } break; case (int)CustomItemType.Sniper: ev.Player.PlayerInteract.OnInteract(); ev.Allow = false; ev.Weapon.Durabillity--; if (ev.Target != null) { Hitmarker.SendHitmarker(ev.Player.Connection, 1f); ev.Target.Hurt((int)(ev.Target.RoleType == RoleType.Scp106 ? PluginClass.SnConfig.Damage / 10f : PluginClass.SnConfig.Damage)); } break; } }
public virtual void OnShot(PlayerShootEventArgs e) { AssertNotDisposed(); Shot?.Invoke(this, e); }
public void PlayerShoot(PlayerShootEventArgs e) => OnPlayerShoot?.Invoke(this, e);
protected virtual void OnPlayerShootDynamicObject(DynamicObject @object, PlayerShootEventArgs e) { PlayerShootDynamicObject?.Invoke(@object, e); }