private static bool Prefix(FlashGrenade __instance) { List <Exiled.API.Features.Player> players = new List <Exiled.API.Features.Player>(); foreach (GameObject gameObject in PlayerManager.players) { Vector3 position = __instance.transform.position; ReferenceHub hub = ReferenceHub.GetHub(gameObject); Flashed effect = hub.playerEffectsController.GetEffect <Flashed>(); Deafened effect2 = hub.playerEffectsController.GetEffect <Deafened>(); if (effect == null || __instance.thrower == null || (!__instance.Network_friendlyFlash && !effect.Flashable(ReferenceHub.GetHub(__instance.thrower.gameObject), position, __instance.viewLayerMask))) { continue; } float num = __instance.powerOverDistance.Evaluate(Vector3.Distance(gameObject.transform.position, position) / ((position.y > 900f) ? __instance.distanceMultiplierSurface : __instance.distanceMultiplierFacility)) * __instance.powerOverDot.Evaluate(Vector3.Dot(hub.PlayerCameraReference.forward, (hub.PlayerCameraReference.position - position).normalized)); byte b = (byte)Mathf.Clamp(Mathf.RoundToInt(num * 10f * __instance.maximumDuration), 1, 255); if (b >= effect.Intensity && num > 0f) { players.Add(API.Features.Player.Get(gameObject)); } } ExplodingGrenadeEventArgs ev = new ExplodingGrenadeEventArgs(players, false, __instance.gameObject); Handlers.Map.OnExplodingGrenade(ev); return(ev.IsAllowed); }
public void Apply_NotACharacter_Test() { var entity = Mock.Of <IEntity>(); var deafened = new Deafened(); deafened.Apply(entity); Assert.IsTrue(true); // If we made it here without exception then the test passed }
public void Remove_NoConditions_Test() { var character = CreateMockCharacter(); var deafened = new Deafened(); deafened.Apply(character); deafened.Remove(character); Assert.AreEqual(0, character.Conditions.Count); }
public void Apply_Character_WithExistingDeafenedCondition_Test() { var character = CreateMockCharacter(); character.Conditions.Add(new Deafened()); var deafened = new Deafened(); deafened.Apply(character); }
public static bool Prefix(FlashGrenade __instance, ref bool __result) { Exiled.API.Features.Log.Debug($"Flash grenade explosion", Subclass.Instance.Config.Debug); foreach (GameObject obj2 in PlayerManager.players) { Player target = Player.Get(obj2); Vector3 position = ((EffectGrenade)__instance).transform.position; ReferenceHub hub = ReferenceHub.GetHub(obj2); Flashed effect = hub.playerEffectsController.GetEffect <Flashed>(); Deafened deafened = hub.playerEffectsController.GetEffect <Deafened>(); Exiled.API.Features.Log.Debug($"Flash target is: {target?.Nickname}", Subclass.Instance.Config.Debug); if ((effect != null) && ((((EffectGrenade)__instance).thrower != null) && (__instance._friendlyFlash || effect.Flashable(ReferenceHub.GetHub(((EffectGrenade)__instance).thrower.gameObject), position, __instance._ignoredLayers)))) { if (!Tracking.PlayersWithSubclasses.ContainsKey(target) || !Tracking.PlayersWithSubclasses[target].Abilities.Contains(AbilityType.FlashImmune)) { float num = __instance.powerOverDistance.Evaluate((float)(Vector3.Distance(obj2.transform.position, position) / ((position.y > 900f) ? __instance.distanceMultiplierSurface : __instance.distanceMultiplierFacility))) * __instance.powerOverDot.Evaluate(Vector3.Dot(hub.PlayerCameraReference.forward, (hub.PlayerCameraReference.position - position).normalized)); byte intensity = (byte)Mathf.Clamp(Mathf.RoundToInt((float)((num * 10f) * __instance.maximumDuration)), 1, 0xff); if ((intensity >= effect.Intensity) && (num > 0f)) { hub.playerEffectsController.ChangeEffectIntensity <Flashed>(intensity); if (deafened != null) { hub.playerEffectsController.EnableEffect(deafened, num * __instance.maximumDuration, true); } } } else { Concussed concussedEffect = hub.playerEffectsController.GetEffect <Concussed>(); concussedEffect.Intensity = 3; hub.playerEffectsController.EnableEffect(concussedEffect, 5); Disabled disabledEffect = hub.playerEffectsController.GetEffect <Disabled>(); disabledEffect.Intensity = 2; hub.playerEffectsController.EnableEffect(disabledEffect, 5); } } } if (((EffectGrenade)__instance).serverGrenadeEffect != null) { Transform transform = ((Grenade)__instance).transform; Object.Instantiate <GameObject>(((EffectGrenade)__instance).serverGrenadeEffect, transform.position, transform.rotation); } string str = (((Grenade)__instance).thrower != null) ? ((Grenade)__instance).thrower.hub.LoggedNameFromRefHub() : ((string)"(UNKNOWN)"); string[] textArray1 = new string[] { "Player ", (string)str, "'s ", (string)((Grenade)__instance).logName, " grenade exploded." }; ServerLogs.AddLog(ServerLogs.Modules.Logger, string.Concat((string[])textArray1), ServerLogs.ServerLogType.GameEvent, false); __result = true; return(false); }
public void Apply_Character_NoConditions_Test() { var character = CreateMockCharacter(); var deafened = new Deafened(); deafened.Apply(character); Assert.AreEqual(EntityIds.DEAFENED_CONDITION_ID, character.Conditions[0].Id); Assert.AreSame(deafened, character.Conditions[0]); Assert.AreEqual(ConditionGroup.Senses, character.Conditions[0].Group); }
public void Apply_Character_PerceptionInitiativeModifier_Test() { var character = CreateMockCharacter(); var deafened = new Deafened(); deafened.Apply(character); Assert.AreEqual(1, character.Conditions.Count); Assert.AreEqual(EntityIds.PERCEPTION_BASED_INITIATIVE_ID, character.Conditions[0].AppliesTo[0]); Assert.AreEqual(ModifierType.Status, character.Conditions[0].Modifier.Type); Assert.AreEqual(-2, character.Conditions[0].Modifier.Value); }
private static bool Prefix(FlashGrenade __instance) { try { Dictionary <Player, float> players = new Dictionary <Player, float>(); foreach (GameObject gameObject in PlayerManager.players) { Vector3 position = __instance.transform.position; ReferenceHub hub = ReferenceHub.GetHub(gameObject); Flashed effect = hub.playerEffectsController.GetEffect <Flashed>(); Deafened effect2 = hub.playerEffectsController.GetEffect <Deafened>(); if (effect == null || __instance.thrower == null || (!__instance.Network_friendlyFlash && !effect.Flashable( ReferenceHub.GetHub(__instance.thrower.gameObject), position, __instance._ignoredLayers))) { continue; } float num = __instance.powerOverDistance.Evaluate( Vector3.Distance(gameObject.transform.position, position) / ((position.y > 900f) ? __instance.distanceMultiplierSurface : __instance.distanceMultiplierFacility)) * __instance.powerOverDot.Evaluate(Vector3.Dot(hub.PlayerCameraReference.forward, (hub.PlayerCameraReference.position - position).normalized)); byte b = (byte)Mathf.Clamp(Mathf.RoundToInt(num * 10f * __instance.maximumDuration), 1, 255); if (b >= effect.Intensity && num > 0f) { players.Add(Player.Get(gameObject), num); } } ExplodingGrenadeEventArgs ev = new ExplodingGrenadeEventArgs(Player.Get(__instance.throwerGameObject), players, false, __instance.gameObject); Handlers.Map.OnExplodingGrenade(ev); return(ev.IsAllowed); } catch (Exception exception) { Log.Error($"{typeof(ExplodingFlashGrenade).FullName}:\n{exception}"); return(true); } }
public string[] ToArray() { string[] array = new string[16]; array[0] = Blinded.Equals("Cured") ? "" : "Blinded"; array[1] = Charmed.Equals("Cured") ? "" : "Charmed"; array[2] = Deafened.Equals("Cured") ? "" : "Deafened"; array[3] = Encumbrance.Equals("Normal") ? "" : Encumbrance; array[4] = Fatigued.Equals("Cured") ? "" : Fatigued; array[5] = Frightened.Equals("Cured") ? "" : "Frightened"; array[6] = Grappled.Equals("Cured") ? "" : "Grappled"; array[7] = Incapacitated.Equals("Cured") ? "" : "Incapacitated"; array[8] = Invisible.Equals("Cured") ? "" : "Invisible"; array[9] = Paralyzed.Equals("Cured") ? "" : "Paralyzed"; array[10] = Petrified.Equals("Cured") ? "" : "Petrified"; array[11] = Poisoned.Equals("Cured") ? "" : "Poisoned"; array[12] = Prone.Equals("Cured") ? "" : "Prone"; array[13] = Restrained.Equals("Cured") ? "" : "Restrained"; array[14] = Stunned.Equals("Cured") ? "" : "Stunned"; array[15] = Unconscious.Equals("Cured") ? "" : "Unconscious"; return(array); }