Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FlashGrenade"/> class.
        /// </summary>
        /// <param name="itemBase"><inheritdoc cref="Throwable.Base"/></param>
        public FlashGrenade(ThrowableItem itemBase)
            : base(itemBase)
        {
            FlashbangGrenade grenade = (FlashbangGrenade)Base.Projectile;

            BlindCurve = grenade._blindingOverDistance;
            SurfaceDistanceIntensifier = grenade._surfaceZoneDistanceIntensifier;
            DeafenCurve = grenade._deafenDurationOverDistance;
            FuseTime    = grenade._fuseTime;
        }
Exemplo n.º 2
0
 private static void ProcessPlayers(FlashbangGrenade grenade, List <Player> players)
 {
     foreach (Player player in players)
     {
         if (HitboxIdentity.CheckFriendlyFire(grenade.PreviousOwner.Role, player.ReferenceHub.characterClassManager.CurClass))
         {
             grenade.ProcessPlayer(player.ReferenceHub);
         }
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Spawns an active grenade on the map at the specified location.
        /// </summary>
        /// <param name="position">The location to spawn the grenade.</param>
        /// <param name="owner">Optional: The <see cref="Player"/> owner of the grenade.</param>
        public void SpawnActive(Vector3 position, Player owner = null)
        {
#if DEBUG
            Log.Debug($"Spawning active grenade: {FuseTime}");
#endif
            FlashbangGrenade grenade = (FlashbangGrenade)Object.Instantiate(Base.Projectile, position, Quaternion.identity);
            grenade.PreviousOwner                   = new Footprint(owner != null ? owner.ReferenceHub : Server.Host.ReferenceHub);
            grenade._blindingOverDistance           = BlindCurve;
            grenade._surfaceZoneDistanceIntensifier = SurfaceDistanceIntensifier;
            grenade._deafenDurationOverDistance     = DeafenCurve;
            grenade._fuseTime = FuseTime;
            NetworkServer.Spawn(grenade.gameObject);
            grenade.ServerActivate();
        }
Exemplo n.º 4
0
        private static bool PlayExplosionEffects(FlashbangGrenade __instance)
        {
            try
            {
                float time = __instance._blindingOverDistance.keys[__instance._blindingOverDistance.length - 1].time;
                float num  = time * time;
                foreach (KeyValuePair <GameObject, ReferenceHub> keyValuePair in ReferenceHub.GetAllHubs())
                {
                    if (!(keyValuePair.Value == null) && (__instance.transform.position - keyValuePair.Value.transform.position).sqrMagnitude <= num && !(keyValuePair.Value == __instance.PreviousOwner.Hub) && HitboxIdentity.CheckFriendlyFire(__instance.PreviousOwner.Hub, keyValuePair.Value, false))
                    {
                        __instance.ProcessPlayer(keyValuePair.Value);
                    }
                }

                return(false);
            }
            catch (Exception ex)
            {
                Logger.Get.Error($"Synapse-FF: PlayExplosionFlash failed!!\n{ex}");
                return(true);
            }
        }