private static IEnumerator <float> SpawnGrenadesSurface() { yield return(Timing.WaitForSeconds(GrenadeRun.Instance.Config.GrenadeDelaySurface)); while (GrenadeRun.Instance.GrenadeRound) { foreach (Exiled.API.Features.Player player in Exiled.API.Features.Player.List) { if (player.Role == RoleType.ClassD && player.Position.y > SurfaceBound) { GrenadeManager gm = player.ReferenceHub.GetComponent <GrenadeManager>(); GrenadeSettings grenade = gm.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFrag); if (grenade == null) { continue; } Grenade component = UnityEngine.Object.Instantiate(grenade.grenadeInstance).GetComponent <Grenade>(); component.InitData(gm, Vector3.zero, Vector3.zero, 0f); NetworkServer.Spawn(component.gameObject); } } yield return(Timing.WaitForSeconds(GrenadeRun.Instance.Config.GrenadeDelaySurface)); } }
public void OnThrowGrenade(PlayerThrowGrenadeEvent ev) { //La pasiva de los cadetes de que cuando lanzan granadas flash o granadas ganan salud y con las frag ganan una flash if ((ev.Player.TeamRole.Role == Role.NTF_CADET) && (ev.GrenadeType == GrenadeType.FRAG_GRENADE)) { ev.Player.AddHealth(20); ev.Player.GiveItem(ItemType.FLASHBANG); } if ((ev.Player.TeamRole.Role == Role.NTF_CADET) && (ev.GrenadeType == GrenadeType.FLASHBANG)) { ev.Player.AddHealth(30); } if (ev.Player.TeamRole.Role == Role.NTF_LIEUTENANT) { if (NTFlic4.ContainsKey(ev.Player.SteamId)) { if (NTFlic4[ev.Player.SteamId] == true) { GrenadeManager grenadeManager = ((GameObject)ev.Player.GetGameObject()).GetComponent <GrenadeManager>(); foreach (GrenadeSettings grenade in grenadeManager.availableGrenades) { grenade.timeUnitilDetonation = 120f; } } else { GrenadeManager grenadeManager = ((GameObject)ev.Player.GetGameObject()).GetComponent <GrenadeManager>(); foreach (GrenadeSettings grenade in grenadeManager.availableGrenades) { grenade.timeUnitilDetonation = 6f; } } } } }
public void OnDied(DiedEventArgs ev) { if (Tracking.PlayersInvisibleByCommand.Contains(ev.Target)) { Tracking.PlayersInvisibleByCommand.Remove(ev.Target); } if (Tracking.PlayersWithSubclasses.ContainsKey(ev.Target) && Tracking.PlayersWithSubclasses[ev.Target].Abilities.Contains(AbilityType.ExplodeOnDeath)) { GrenadeManager grenadeManager = ev.Target.ReferenceHub.gameObject.GetComponent <GrenadeManager>(); GrenadeSettings settings = grenadeManager.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFrag); Grenade grenade = UnityEngine.Object.Instantiate(settings.grenadeInstance).GetComponent <Grenade>(); grenade.fuseDuration = Tracking.PlayersWithSubclasses[ev.Target].FloatOptions.ContainsKey("ExplodeOnDeathFuseTimer") ? Tracking.PlayersWithSubclasses[ev.Target].FloatOptions["ExplodeOnDeathFuseTimer"] : 2f; grenade.FullInitData(grenadeManager, ev.Target.Position, Quaternion.Euler(grenade.throwStartAngle), grenade.throwLinearVelocityOffset, grenade.throwAngularVelocity); NetworkServer.Spawn(grenade.gameObject); } Tracking.AddPreviousTeam(ev.Target); Tracking.RemoveZombie(ev.Target); Tracking.RemoveAndAddRoles(ev.Target, true); Timing.CallDelayed(0.1f, () => { Tracking.CheckRoundEnd(); }); }
public void cmd_ball(CommandInfo info) { Vector3 NULL_VECTOR = new Vector3(0, 0, 0); List <GameObject> playerList = GetPlayersFromString(info.commandArgs[1]); foreach (GameObject plr in playerList) { if (plr.GetComponent <CharacterClassManager>().CurClass == RoleType.Spectator) { continue; } PheggPlayer pp = new PheggPlayer(plr); // Initialization GrenadeManager gm = pp.gameObject.GetComponent <GrenadeManager>(); // Finalize creation & Spawn Grenade nade = Object.Instantiate <GameObject>(gm.availableGrenades[2].grenadeInstance).GetComponent <Grenade>(); (nade).InitData(gm, NULL_VECTOR, NULL_VECTOR); NetworkServer.Spawn(nade.gameObject); } info.commandSender.RaReply(info.commandName.ToUpper() + $"#Spawned 018 on {(info.commandArgs[1] == "*" ? "All" : playerList.Count.ToString())} players", true, true, ""); }
public static void InvokeGrenadeThrown(ref GrenadeManager gm, ref int id, ref bool slow, ref double fuse, ref bool allow) { GrenadeThrown grenadeThrown = GrenadeThrownEvent; if (grenadeThrown == null) { return; } GrenadeThrownEvent ev = new GrenadeThrownEvent() { Player = gm.gameObject.GetPlayer(), Gm = gm, Id = id, Allow = allow, Slow = slow, Fuse = fuse }; grenadeThrown?.Invoke(ref ev); allow = ev.Allow; id = ev.Id; gm = ev.Gm; slow = ev.Slow; fuse = ev.Fuse; }
public void OnPlayerDropItem(PlayerDropItemEvent ev) { if ((ev.Player.TeamRole.Role == Role.NTF_LIEUTENANT) && (ev.Item.ItemType == ItemType.WEAPON_MANAGER_TABLET)) { if (NTFlic4.ContainsKey(ev.Player.SteamId)) { if (NTFlic4[ev.Player.SteamId]) { GrenadeManager grenadeManager = ((GameObject)ev.Player.GetGameObject()).GetComponent <GrenadeManager>(); foreach (GrenadeSettings grenade in grenadeManager.availableGrenades) { grenade.timeUnitilDetonation = 0.2f; } int p = (int)System.Environment.OSVersion.Platform; if ((p == 4) || (p == 6) || (p == 128)) { MEC.Timing.RunCoroutine(C4s(ev.Player), MEC.Segment.FixedUpdate); } else { MEC.Timing.RunCoroutine(C4s(ev.Player), 1); } } } } }
private static bool Prefix(ref GrenadeManager __instance, ref IEnumerator <float> __result, ref GrenadeSettings settings, ref float forceMultiplier, ref int itemIndex, ref float delay) { try { var player = __instance.GetPlayer(); if (player == null) { return(true); } var item = __instance.hub.inventory.items[itemIndex].GetSynapseItem(); var allow = true; SynapseController.Server.Events.Player.InvokePlayerItemUseEvent(player, item, ItemInteractState.Initiating, ref allow); SynapseController.Server.Events.Player.InvokePlayerThrowGrenadeEvent(player, item, ref settings, ref forceMultiplier, ref delay, ref allow); __result = ServerThrowGrenadeOverride(__instance, settings, forceMultiplier, itemIndex, delay, !allow); } catch (Exception e) { Synapse.Api.Logger.Get.Error($"Synapse-Event: PlayerThrowGrenade failed!!\n{e}\nStackTrace:\n{e.StackTrace}"); throw; } return(false); }
/// <inheritdoc/> public override Grenade Spawn(Vector3 position, Vector3 velocity, float fuseTime = 3, ItemType grenadeType = ItemType.GrenadeFrag, Player player = null) { if (player == null) { player = Server.Host; } GrenadeManager grenadeManager = player.GrenadeManager; GrenadeSettings settings = grenadeManager.availableGrenades.FirstOrDefault(g => g.inventoryID == grenadeType); Grenade grenade = GameObject.Instantiate(settings.grenadeInstance).GetComponent <Grenade>(); grenade.FullInitData(grenadeManager, position, Quaternion.Euler(grenade.throwStartAngle), velocity, grenade.throwAngularVelocity, player == Server.Host ? Team.RIP : player.Team); grenade.NetworkfuseTime = NetworkTime.time + fuseTime; Tracked.Add(grenade.gameObject); GameObject grenadeObject = grenade.gameObject; UnityEngine.Object.Destroy(grenadeObject.GetComponent <Scp018Grenade>()); grenadeObject.AddComponent <Components.Rock>().Init(player.GameObject, player.Side, FriendlyFire, ThrownDamage); NetworkServer.Spawn(grenadeObject); if (ExplodeOnCollision) { grenade.gameObject.AddComponent <CollisionHandler>().Init(player.GameObject, grenade); } return(grenade); }
public void Initialize() { UIController uic = GeneralVariables.uiController; weaponName = uic.weaponName; curAmmo = uic.curAmmoDisplay; ammoLeft = uic.ammoLeftDisplay; ammoBar = uic.ammoBar; PlayerReference pr = GeneralVariables.playerRef; gm = transform.parent.GetComponent <GrenadeManager>(); pm = pr.GetComponent <PlayerMovement>(); gam = pr.gam; wm = pr.wm; acs = pr.acs; if (isDetonatable) { canDetonate = true; } OnSelect(); switchToWeapon = -1; canThrow = true; }
internal void PlayerDeath(ref PlayerDeathEvent ev) { if (plugin.curMod.HasFlag(ModType.NONE) && plugin.enabledTypes.Contains(ModType.NONE)) { return; // cuz none means none } if (plugin.curMod.HasFlag(ModType.EXPLODEONDEATH) && plugin.enabledTypes.Contains(ModType.EXPLODEONDEATH)) { if (ev.Killer == null || (ev.Killer != null && ev.Killer.GetTeam() != Team.SCP && ev.Killer.GetTeam() != Team.TUT)) { GrenadeManager gm = ev.Player.GetComponent <GrenadeManager>(); GrenadeSettings set = gm.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFrag); if (set == null) { } else { Grenade comp = UnityEngine.Object.Instantiate(set.grenadeInstance).GetComponent <Grenade>(); comp.fuseDuration = 0.1f; comp.InitData(gm, Vector3.zero, Vector3.zero, 10f); // commented for stable release //deathGrenades.Add(comp); NetworkServer.Spawn(comp.gameObject); } } } if (plugin.curMod.HasFlag(ModType.CLASSINFECT) && plugin.enabledTypes.Contains(ModType.CLASSINFECT)) { if (ev.Killer != null && ev.Killer != ev.Player && !plugin.noInfectRoles.Contains(ev.Killer.characterClassManager.CurClass)) { Timing.RunCoroutine(InfectLate(ev.Player, ev.Killer.characterClassManager.CurClass, ev.Killer.transform.position)); } } }
public static void InvokeGrenadeThrown(ref GrenadeManager grenadeManager, ref int grenadeId, ref bool slow, ref double fuse, ref bool allow) { if (GrenadeThrownEvent == null) { return; } GrenadeThrownEvent ev = new GrenadeThrownEvent() { Player = grenadeManager.gameObject.GetPlayer(), Gm = grenadeManager, Id = grenadeId, Allow = allow, Slow = slow, Fuse = fuse }; GrenadeThrownEvent.InvokeSafely(ev); allow = ev.Allow; grenadeId = ev.Id; grenadeManager = ev.Gm; slow = ev.Slow; fuse = ev.Fuse; }
/// <summary> /// Initializes a new instance of the <see cref="ThrowingGrenadeEventArgs"/> class. /// </summary> /// <param name="player"><inheritdoc cref="Player"/></param> /// <param name="grenadeManager"><inheritdoc cref="GrenadeManager"/></param> /// <param name="id"><inheritdoc cref="Id"/></param> /// <param name="isSlow"><inheritdoc cref="IsSlow"/></param> /// <param name="fuseTime"><inheritdoc cref="FuseTime"/></param> /// <param name="isAllowed">Indicates whether the event can be executed or not.</param> public ThrowingGrenadeEventArgs(Player player, GrenadeManager grenadeManager, int id, bool isSlow, double fuseTime, bool isAllowed = true) { Player = player; GrenadeManager = grenadeManager; Id = id; IsSlow = isSlow; FuseTime = fuseTime; IsAllowed = isAllowed; }
private void OnTriggerEnter(Collider other) { if (other.gameObject.layer == LayerMask.NameToLayer("Player")) { if (gameObject.tag == "HealthPickUp") { HP playerHP = other.GetComponent <HP>(); if (playerHP != null) { playerHP.health += healthIncrease; playerHP.healthText.text = playerHP.health.ToString(); Destroy(gameObject); } } if (gameObject.tag == "Treasure") { ScoreCounter playerScore = other.GetComponent <ScoreCounter>(); if (playerScore != null) { if (pool != null) { playerScore.ScoreIncrease(score); ReturnToPool(); } else { playerScore.ScoreIncrease(score); Destroy(gameObject); } } } if (gameObject.tag == "Grenade") { PlayerController player = other.GetComponent <PlayerController>(); GrenadeManager grenade = other.GetComponent <GrenadeManager>(); if (player.grenadeCount < 3) { player.grenadeCount++; if (pool != null) { grenade.GrenadeRunThrough(player); ReturnToPool(); } else { grenade.GrenadeRunThrough(player); Destroy(gameObject); } } } } }
private IEnumerator <float> C4s(Player attacker) { yield return(MEC.Timing.WaitForSeconds(1f)); GrenadeManager grenadeManager = ((GameObject)attacker.GetGameObject()).GetComponent <GrenadeManager>(); foreach (GrenadeSettings grenade in grenadeManager.availableGrenades) { grenade.timeUnitilDetonation = 120f; } }
public static void SpawnGrenadeOnPlayer(Player playerToSpawnGrenade, bool useCustomTimer) { GrenadeManager gm = playerToSpawnGrenade.ReferenceHub.gameObject.GetComponent <GrenadeManager>(); Grenade grenade = UnityEngine.Object.Instantiate(gm.availableGrenades[0].grenadeInstance.GetComponent <Grenade>()); grenade.fuseDuration = useCustomTimer ? Instance.Config.GrenadeTimerOnDeath : 0.01f; grenade.FullInitData(gm, playerToSpawnGrenade.Position, Quaternion.Euler(grenade.throwStartAngle), grenade.throwLinearVelocityOffset, grenade.throwAngularVelocity, playerToSpawnGrenade.Team); NetworkServer.Spawn(grenade.gameObject); }
private void Start() { hasKey = false; pause = GetComponent <PauseScript>(); anim = GetComponent <Animator>(); speed = stats.speed; lookSpeed = stats.speed; rb = GetComponent <Rigidbody>(); canMove = true; laserSight = GetComponent <LineRenderer>(); grenadeManager = GetComponent <GrenadeManager>(); }
private static bool Prefix(ref GrenadeManager __instance, ref int id, ref bool slowThrow, ref double time) { var ev = new ThrowingGrenadeEventArgs(API.Features.Player.Get(__instance.gameObject), __instance, id, slowThrow, time); Player.OnThrowingGrenade(ev); id = ev.Id; slowThrow = ev.IsSlow; time = ev.FuseTime; return(ev.IsAllowed); }
public void OnCollisionEnter(Collision other) { ContactPoint point = other.contacts[0]; Vector3 position = point.point; if (thrower == null) { return; } GrenadeManager manager = thrower.GetComponent <GrenadeManager>(); manager.CallRpcExplode(grenade.id, thrower.GetComponent <QueryProcessor>().PlayerId); }
public static bool Prefix(ref GrenadeManager __instance, ref int id, ref bool slowThrow, ref double time) { try { var player = __instance.GetPlayer(); if (player == null) { return(true); } ItemType item; switch (id) { case 0: item = ItemType.GrenadeFlash; break; case 1: item = ItemType.GrenadeFrag; break; case 2: item = ItemType.SCP018; break; default: Log.Error($"Invalid Grenade ID: {id}"); return(true); } time -= NetworkTime.time; Events.InvokeUseItemEvent(player, item, out var useAllow); if (!useAllow) { return(false); } Events.InvokePlayerThrowGrenadeEvent(player, item, ref slowThrow, ref time, out var allow); time += NetworkTime.time; return(allow); } catch (Exception e) { Log.Error($"Player Throw Grenade Error: {e}"); return(true); } }
private static void SpawnFlash(Player player) { Vector3 position = player.Camera.gameObject ? player.Camera.transform.position : player.ReferenceHub.scp079PlayerScript.transform.position; GrenadeManager gm = player.GrenadeManager; GrenadeSettings settings = gm.availableGrenades.First(g => g.inventoryID == ItemType.GrenadeFlash); FlashGrenade flash = UnityEngine.Object.Instantiate(settings.grenadeInstance).GetComponent <FlashGrenade>(); flash.fuseDuration = 0.5f; flash.InitData(gm, Vector3.zero, Vector3.zero); flash.transform.position = position; NetworkServer.Spawn(flash.gameObject); }
public Grenades.Grenade SpawnGrenade(Vector3 position, Vector3 velocity, float fusetime = 3f, GrenadeType grenadeType = GrenadeType.FragGrenade, Player player = null) { if (player == null) { player = Server.Host; } GrenadeManager component = player.GrenadeManager; Grenade component2 = GameObject.Instantiate(component.availableGrenades[(int)grenadeType].grenadeInstance).GetComponent <Grenades.Grenade>(); component2.FullInitData(component, position, Quaternion.Euler(component2.throwStartAngle), velocity, component2.throwAngularVelocity, player == Server.Host ? Team.RIP : player.Team); component2.NetworkfuseTime = NetworkTime.time + (double)fusetime; NetworkServer.Spawn(component2.gameObject); return(component2); }
private float DetonateFlash(Vector3 pos) { const int id = 1; Vector3 dir = Vector3.zero; const float throwForce = 0; GrenadeManager component1 = PlayerObject.GetComponent <GrenadeManager>(); Grenade component2 = UnityEngine.Object.Instantiate(component1.availableGrenades[id].grenadeInstance).GetComponent <Grenade>(); component2.id = PlayerObject.GetComponent <QueryProcessor>().PlayerId + ":" + (component1.smThrowInteger + 4096); GrenadeManager.grenadesOnScene.Add(component2); component2.SyncMovement(component1.availableGrenades[id].GetStartPos(PlayerObject), (PlayerObject.GetComponent <Scp049PlayerScript>().plyCam.transform.forward + Vector3.up / 4f).normalized * throwForce, Quaternion.Euler(component1.availableGrenades[id].startRotation), component1.availableGrenades[id].angularVelocity); component1.CallRpcThrowGrenade(id, PlayerObject.GetComponent <QueryProcessor>().PlayerId, component1.smThrowInteger++ + 4096, dir, true, pos, false, 0); return(component1.availableGrenades[id].timeUnitilDetonation); }
public override void OnInspectorGUI() { GrenadeManager gm = target as GrenadeManager; GrenadeAmmoManager gam = gm.transform.parent.parent.GetComponent <GrenadeAmmoManager>(); if (gm.nadeList == null) { gm.nadeList = (GrenadeList)EditorGUILayout.ObjectField("Grenade List Prefab:", gm.nadeList, typeof(GrenadeList), true); EditorGUILayout.HelpBox("Not assigning this variable will have a heavy performance cost!", MessageType.Warning); } GUILayout.Space(6); EditorGUILayout.LabelField(" To Be Instantiated:", EditorStyles.boldLabel); EditorGUI.indentLevel += 1; EditorGUILayout.ObjectField(" Grenade Slot #1:", GrenadeDatabase.GetGrenadeByID(gam.grenadeTypeOne), typeof(GrenadeController), false); EditorGUILayout.ObjectField(" Grenade Slot #2:", GrenadeDatabase.GetGrenadeByID(gam.grenadeTypeTwo), typeof(GrenadeController), false); EditorGUI.indentLevel -= 1; }
public static void SpawnGrenade(ItemType type, Player player, SubClass subClass) { // Credit to KoukoCocoa's AdminTools for the grenade spawn script below, I was lost. https://github.com/KoukoCocoa/AdminTools/ GrenadeManager grenadeManager = player.ReferenceHub.gameObject.GetComponent <GrenadeManager>(); GrenadeSettings settings = grenadeManager.availableGrenades.FirstOrDefault(g => g.inventoryID == type); Grenades.Grenade grenade = UnityEngine.Object.Instantiate(settings.grenadeInstance).GetComponent <Grenades.Grenade>(); if (type == ItemType.GrenadeFlash) { grenade.fuseDuration = subClass.FloatOptions.ContainsKey("FlashOnCommandFuseTimer") ? subClass.FloatOptions["FlashOnCommandFuseTimer"] : 0.3f; } else { grenade.fuseDuration = subClass.FloatOptions.ContainsKey("GrenadeOnCommandFuseTimer") ? subClass.FloatOptions["GrenadeOnCommandFuseTimer"] : 0.3f; } grenade.FullInitData(grenadeManager, player.Position, Quaternion.Euler(grenade.throwStartAngle), grenade.throwLinearVelocityOffset, grenade.throwAngularVelocity, player.Team); NetworkServer.Spawn(grenade.gameObject); }
public static bool Prefix(ref GrenadeManager __instance, ref int id, ref bool slowThrow, ref double time) { if (EventPlugin.GrenadeThrownPatchDisable) { return(true); } try { bool allow = true; Events.InvokeGrenadeThrown(ref __instance, ref id, ref slowThrow, ref time, ref allow); return(allow); } catch (Exception e) { Log.Error($"Grenade thrown patch error: {e}"); return(true); } }
private static bool Prefix(ref GrenadeManager __instance, ref int id, ref bool slowThrow, ref double time) { try { var ev = new ThrowingGrenadeEventArgs(API.Features.Player.Get(__instance.gameObject), __instance, (GrenadeType)id, slowThrow, time); Player.OnThrowingGrenade(ev); id = (int)ev.Type; slowThrow = ev.IsSlow; time = ev.FuseTime; return(ev.IsAllowed); } catch (Exception e) { Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.ThrowingGrenade: {e}\n{e.StackTrace}"); return(true); } }
void Start () { instance = this; grenadeCountGame = grenadeCountStart; timer = 0; }
public void ConsoleCmd(ConsoleCommandEvent ev) { if (ev.Player.GetRole() == RoleType.Scp079) { string[] args = ev.Command.Split(' '); if (args[0].Equals(Plugin.CommandPrefix)) { if (args.Length >= 2) { if (args[1].ToLower().Equals("help") || args[1].ToLower().Equals("commands") || args[1].ToLower().Equals("?")) { ev.ReturnMessage = Plugin.HelpMsgTitle + "\n" + "\"." + Plugin.CommandPrefix + " a1\" - " + Plugin.HelpMsgA1 + " | Coût: " + Plugin.A1Power + " AP | Tier " + (Plugin.A1Tier + 1) + ".\n" + "\"." + Plugin.CommandPrefix + " a2\" - " + Plugin.HelpMsgA2 + " | Coût: " + Plugin.A2Power + " AP | Tier " + (Plugin.A2Tier + 1) + ".\n" + "\"." + Plugin.CommandPrefix + " a3\" - " + Plugin.HelpMsgA3 + " | Coût: " + Plugin.A3Power + " AP | Tier " + (Plugin.A3Tier + 1) + ".\n" + "\"." + Plugin.CommandPrefix + " a4\" - " + Plugin.HelpMsgA4 + " | Coût: " + Plugin.A4Power + " AP | Tier " + (Plugin.A4Tier + 1) + ".\n" + "\"." + Plugin.CommandPrefix + " a5\" - " + Plugin.HelpMsgA5 + " | Coût: " + Plugin.A5Power + " AP | Tier " + (Plugin.A5Tier + 1) + ".\n" + "\"." + Plugin.CommandPrefix + " a6\" - " + Plugin.HelpMsgA6 + " | Coût: " + Plugin.A6Cost + " Tier | Tier " + (Plugin.A6Tier + 1) + ".\n" + "\"." + Plugin.CommandPrefix + " suicide\" - " + Plugin.HelpMsgSuicide + ".\n"; return; } if (args[1].ToLower().Equals("a1")) { if (ev.Player.scp079PlayerScript.NetworkcurLvl < Plugin.A1Tier) { ev.ReturnMessage = Plugin.TierRequiredMsg.Replace("$tier", "" + (Plugin.A1Tier + 1)); return; } if (ev.Player.scp079PlayerScript.NetworkcurMana < Plugin.A1Power) { ev.ReturnMessage = Plugin.NoPowerMsg; return; } if (args.Length > 3) { if (Plugin.A1AntiSpam > TimeBehaviour.CurrentTimestamp()) { ev.ReturnMessage = Plugin.AntiSpamMsg.Replace("%s", Math.Ceiling(TimeSpan.FromTicks(Plugin.A1AntiSpam - TimeBehaviour.CurrentTimestamp()).TotalSeconds).ToString()); return; } else { // .079 a1 SCP CAUSE[unknow/as/mtf/chaos] UNIT[C] UNIT[25] if (int.TryParse(args[2], out int SCP) || !String.IsNullOrWhiteSpace(args[3])) { string tts = string.Empty; tts += "BG_MTF2 BREAK_PREANNC SCP"; foreach (char c in args[2]) { tts += " " + c; } switch (args[3].ToLower()) { case "mtf": if (args.Length > 5) { if (char.IsLetter(args[4][0]) || !String.IsNullOrWhiteSpace(args[5])) { tts += " CONTAINEDSUCCESSFULLY CONTAINMENTUNIT NATO_" + args[4][0] + " " + args[5]; } else { ev.ReturnMessage = Plugin.FailA1Msg; return; } } else { ev.ReturnMessage = Plugin.FailA1Msg; return; } break; case "security": tts += " SUCCESSFULLY TERMINATED BY AUTOMATIC SECURITY SYSTEM"; break; case "chaos": tts += " TERMINATED BY CHAOSINSURGENCY"; break; case "classed": tts += " TERMINATED BY CLASSD PERSONNEL"; break; case "scientifique": tts += " TERMINATED BY SCIENCE PERSONNEL"; break; case "decontamination": tts += " LOST IN DECONTAMINATION SEQUENCE"; break; default: tts += " SUCCESSFULLY TERMINATED . CONTAINMENTUNIT UNKNOWN"; break; } DoAnnouncement(tts, true); ev.Player.scp079PlayerScript.NetworkcurMana -= Plugin.A1Power; Plugin.A1AntiSpam = DateTime.UtcNow.AddSeconds((double)Plugin.A1TimeBetween).Ticks; ev.ReturnMessage = Plugin.RunA1Msg; return; } } } else { ev.ReturnMessage = Plugin.FailA1Msg; return; } } if (args[1].ToLower().Equals("a2")) { if (ev.Player.scp079PlayerScript.NetworkcurLvl < Plugin.A2Tier) { ev.ReturnMessage = Plugin.TierRequiredMsg.Replace("$tier", "" + (Plugin.A2Tier + 1)); return; } if (ev.Player.scp079PlayerScript.NetworkcurMana >= Plugin.A2Power) { ev.Player.scp079PlayerScript.NetworkcurMana -= Plugin.A2Power; } else { ev.ReturnMessage = Plugin.NoPowerMsg; return; } Room room = SCP079Room(ev.Player); if (room == null) { ev.ReturnMessage = Plugin.FailA2Msg; return; } if (room.Zone == ZoneType.Surface) { ev.ReturnMessage = Plugin.FailA2Msg; return; } foreach (var item in Plugin.A2BlacklistRooms) { if (room.Name.ToLower().Contains(item.ToLower())) { ev.ReturnMessage = Plugin.FailA2Msg; return; } } if (Plugin.A2AntiSpam > TimeBehaviour.CurrentTimestamp()) { ev.ReturnMessage = Plugin.AntiSpamMsg.Replace("%s", Math.Ceiling(TimeSpan.FromTicks(Plugin.A2AntiSpam - TimeBehaviour.CurrentTimestamp()).TotalSeconds).ToString()); return; } Timing.RunCoroutine(GasRoom(room, ev.Player)); Plugin.A2AntiSpam = DateTime.UtcNow.AddSeconds((double)Plugin.A2TimeBetween).Ticks; ev.ReturnMessage = Plugin.RunA2Msg; return; } if (args[1].ToLower().Equals("a3")) { if (ev.Player.scp079PlayerScript.NetworkcurLvl < Plugin.A3Tier) { ev.ReturnMessage = Plugin.TierRequiredMsg.Replace("$tier", "" + (Plugin.A3Tier + 1)); return; } if (ev.Player.scp079PlayerScript.NetworkcurMana >= Plugin.A3Power) { ev.Player.scp079PlayerScript.NetworkcurMana -= Plugin.A3Power; } else { ev.ReturnMessage = Plugin.NoPowerMsg; return; } Generator079.generators[0].RpcCustomOverchargeForOurBeautifulModCreators(Plugin.A3Timer, false); ev.ReturnMessage = Plugin.RunA3Msg; return; } if (args[1].ToLower().Equals("a4")) { if (ev.Player.scp079PlayerScript.NetworkcurLvl < Plugin.A4Tier) { ev.ReturnMessage = Plugin.TierRequiredMsg.Replace("$tier", "" + (Plugin.A4Tier + 1)); return; } if (ev.Player.scp079PlayerScript.NetworkcurMana >= Plugin.A4Power) { ev.Player.scp079PlayerScript.NetworkcurMana -= Plugin.A4Power; } else { ev.ReturnMessage = Plugin.NoPowerMsg; return; } var pos = ev.Player.scp079PlayerScript.currentCamera.transform.position; GrenadeManager gm = ev.Player.GetComponent <GrenadeManager>(); GrenadeSettings settings = gm.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFlash); FlashGrenade flash = GameObject.Instantiate(settings.grenadeInstance).GetComponent <FlashGrenade>(); flash.fuseDuration = 0.5f; flash.InitData(gm, Vector3.zero, Vector3.zero, 1f); flash.transform.position = pos; NetworkServer.Spawn(flash.gameObject); ev.ReturnMessage = Plugin.RunA4Msg; return; } if (args[1].ToLower().Equals("suicide")) { ev.Player.playerStats.HurtPlayer(new PlayerStats.HitInfo(119000000, ev.Player.GetNickname(), DamageTypes.Wall, ev.Player.GetPlayerId()), ev.Player.gameObject); return; } if (args[1].ToLower().Equals("a5")) { if (ev.Player.scp079PlayerScript.NetworkcurLvl < Plugin.A1Tier) { ev.ReturnMessage = Plugin.TierRequiredMsg.Replace("$tier", "" + (Plugin.A5Tier + 1)); return; } if (ev.Player.scp079PlayerScript.NetworkcurMana < Plugin.A5Power) { ev.ReturnMessage = Plugin.NoPowerMsg; return; } if (args.Length > 2) { if (Plugin.A5AntiSpam > TimeBehaviour.CurrentTimestamp()) { ev.ReturnMessage = Plugin.AntiSpamMsg.Replace("%s", Math.Ceiling(TimeSpan.FromTicks(Plugin.A5AntiSpam - TimeBehaviour.CurrentTimestamp()).TotalSeconds).ToString()); return; } else { // .079 a5 GROUPE[unknow/mtf] UNIT[C] UNIT[25] [REMAIN SCP] if (!String.IsNullOrWhiteSpace(args[2])) { string tts = string.Empty; switch (args[2].ToLower()) { case "mtf": if (args.Length > 5) { bool success = Int32.TryParse(args[5], out int scpleft); if (char.IsLetter(args[3][0]) || !String.IsNullOrWhiteSpace(args[4]) || success) { tts += "MTFUNIT EPSILON 11 DESIGNATED NATO_" + args[3][0] + " " + args[4] + " HASENTERED ALLREMAINING "; tts += ((scpleft <= 0) ? "NOSCPSLEFT" : ("AWAITINGRECONTAINMENT " + scpleft + ((scpleft == 1) ? " SCPSUBJECT" : " SCPSUBJECTS"))); } else { ev.ReturnMessage = Plugin.FailA5Msg; return; } } else { ev.ReturnMessage = Plugin.FailA5Msg; return; } break; default: tts += "Danger. Alert all security .g1 personnel. .g4 Unauthorized personnel .g2 have been detected .g1 in the facility."; break; } DoAnnouncement(tts, true); ev.Player.scp079PlayerScript.NetworkcurMana -= Plugin.A5Power; Plugin.A5AntiSpam = DateTime.UtcNow.AddSeconds((double)Plugin.A5TimeBetween).Ticks; ev.ReturnMessage = Plugin.RunA5Msg; return; } } } else { ev.ReturnMessage = Plugin.FailA5Msg; return; } } if (args[1].ToLower().Equals("a6")) { if (ev.Player.scp079PlayerScript.NetworkcurLvl < Plugin.A6Tier) { ev.ReturnMessage = Plugin.TierRequiredMsg.Replace("$tier", "" + (Plugin.A6Tier + 1)); return; } if (ev.Player.scp079PlayerScript.NetworkcurMana < Plugin.A6Power) { ev.ReturnMessage = Plugin.NoPowerMsg; return; } else { List <ReferenceHub> riplist; ReferenceHub chosenPlayer; riplist = GetHubList(RoleType.Spectator); if (riplist.Count > 0) { chosenPlayer = riplist[(new System.Random()).Next(riplist.Count)]; int SCP = PlayerManager.localPlayer.GetComponent <CharacterClassManager>().FindRandomIdUsingDefinedTeam(Team.SCP); if (SCP != 1) { chosenPlayer.SetRole((RoleType)SCP); chosenPlayer.Broadcast(10, Plugin.NewSCPA6Msg, false); ev.Player.scp079PlayerScript.NetworkcurLvl -= Plugin.A6Cost; ev.Player.scp079PlayerScript.NetworkcurMana -= Plugin.A6Power; Scp079.SetMaxEnergy(ev.Player, 125); Timing.CallDelayed(0.8f, () => { foreach (Room r in Map.Rooms) { if (r.Name.ToLower().Equals("HCZ_079".ToLower())) { chosenPlayer.SetPosition(r.Position.x, r.Position.y + 1, r.Position.z); } } chosenPlayer.SetHealth(chosenPlayer.GetMaxHealth()); }); DoAnnouncement("Alert. New containment .g1 breach detected. Cassie .g2 corruption detected. Code .g4 red.", true); ev.ReturnMessage = Plugin.RunA6Msg; return; } else { ev.ReturnMessage = Plugin.NoSCPA6Msg; return; } } else { ev.ReturnMessage = Plugin.NoPlayerA6Msg; return; } } } ev.ReturnMessage = Plugin.HelpMsg.Replace("$prefix", "" + Plugin.CommandPrefix); return; } ev.ReturnMessage = Plugin.HelpMsg.Replace("$prefix", "" + Plugin.CommandPrefix); return; } } }
public static IEnumerator <float> ServerThrowGrenadeOverride(GrenadeManager __instance, GrenadeSettings settings, float forceMultiplier, int itemIndex, float delay, bool cancelled) { if (cancelled) { yield break; } if (itemIndex < 0 || itemIndex >= __instance.hub.inventory.items.Count) { yield break; } __instance.hub.weaponManager.scp268.ServerDisable(); float networkDelay = Mathf.Max(delay - __instance.velocityAuditPeriod, 0f); if (networkDelay > 0f) { ushort i = 0; while ((float)i < 50f * networkDelay) { yield return(0f); ushort num = i; i = (ushort)(num + 1); } if (__instance.hub.characterClassManager.CurClass == global::RoleType.Spectator) { yield break; } } float auditDelay = Mathf.Min(delay, __instance.velocityAuditPeriod); Vector3 relativeVelocity; if (auditDelay > 0f) { Transform localTransform = __instance.gameObject.transform; Vector3 initialPosition = localTransform.position; float initialTime = Time.time; ushort i = 0; while ((float)i < 50f * auditDelay) { yield return(0f); ushort num = i; i = (ushort)(num + 1); } if (__instance.hub.characterClassManager.CurClass == global::RoleType.Spectator) { yield break; } float num2 = Time.time - initialTime; relativeVelocity = (localTransform.position - initialPosition) / num2; localTransform = null; initialPosition = default(Vector3); } else { relativeVelocity = Vector3.zero; } var allow = true; var item = __instance.hub.inventory.items[itemIndex].GetSynapseItem(); SynapseController.Server.Events.Player.InvokePlayerItemUseEvent(__instance.GetPlayer(), item, ItemInteractState.Finalizing, ref allow); if (!allow) { yield break; } Grenade component = Object.Instantiate(settings.grenadeInstance).GetComponent <Grenade>(); component.InitData(__instance, relativeVelocity, __instance.hub.PlayerCameraReference.forward, forceMultiplier); NetworkServer.Spawn(component.gameObject); item.Destroy(); if (settings.inventoryID == global::ItemType.SCP018) { global::Team team = __instance.hub.characterClassManager.CurRole.team; if (team == global::Team.CHI || team == global::Team.CDP) { Respawning.RespawnTickets.Singleton.GrantTickets(Respawning.SpawnableTeamType.ChaosInsurgency, GameCore.ConfigFile.ServerConfig.GetInt("respawn_tickets_ci_scp_item_count", 1), false); } } yield break; }
public void OnSendingConsoleCommand(SendingConsoleCommandEventArgs ev) { Log.Debug($"Player {ev.Player.Nickname} sent a console command", Subclass.Instance.Config.Debug); ev.IsAllowed = false; switch (ev.Name) { case "revive": Log.Debug($"Player {ev.Player.Nickname} is attempting to revive", Subclass.Instance.Config.Debug); if (Tracking.PlayersWithSubclasses.ContainsKey(ev.Player) && Tracking.PlayersWithSubclasses[ev.Player].Abilities.Contains(AbilityType.Revive)) { SubClass subClass = Tracking.PlayersWithSubclasses[ev.Player]; AttemptRevive(ev, subClass); } else { ev.ReturnMessage = "You don't have the ability to revive!"; } break; case "necro": Log.Debug($"Player {ev.Player.Nickname} is attempting to necro", Subclass.Instance.Config.Debug); if (Tracking.PlayersWithSubclasses.ContainsKey(ev.Player) && Tracking.PlayersWithSubclasses[ev.Player].Abilities.Contains(AbilityType.Necromancy)) { SubClass subClass = Tracking.PlayersWithSubclasses[ev.Player]; AttemptRevive(ev, subClass, true); } else { ev.ReturnMessage = "You don't have the ability to necro!"; } break; case "locate": if (ev.Player.Role != RoleType.Scp93953 && ev.Player.Role != RoleType.Scp93989 && (!Tracking.PlayersWithSubclasses.ContainsKey(ev.Player) || !Tracking.PlayersWithSubclasses[ev.Player].Abilities.Contains(AbilityType.Scp939Vision))) { Log.Debug($"Player {ev.Player.Nickname} failed to echolocate", Subclass.Instance.Config.Debug); ev.ReturnMessage = "You must be SCP-939 or have a subclass with its visuals to use this command"; return; } if (Tracking.PlayersWithSubclasses.ContainsKey(ev.Player) && Tracking.PlayersWithSubclasses[ev.Player].Abilities.Contains(AbilityType.Echolocate)) { SubClass subClass = Tracking.PlayersWithSubclasses[ev.Player]; if (Tracking.OnCooldown(ev.Player, AbilityType.Echolocate, subClass)) { Log.Debug($"Player {ev.Player.Nickname} failed to echolocate", Subclass.Instance.Config.Debug); Tracking.DisplayCooldown(ev.Player, AbilityType.Echolocate, subClass, "echolocation", Time.time); return; } Collider[] colliders = Physics.OverlapSphere(ev.Player.Position, subClass.FloatOptions.ContainsKey("EcholocateRadius") ? subClass.FloatOptions["EcholocateRadius"] : 10f); foreach (Collider PlayerCollider in colliders.Where(c => EPlayer.Get(c.gameObject) != null)) { EPlayer.Get(PlayerCollider.gameObject).ReferenceHub.footstepSync?.CmdScp939Noise(100f); } Tracking.AddCooldown(ev.Player, AbilityType.Echolocate); Log.Debug($"Player {ev.Player.Nickname} successfully used echolocate", Subclass.Instance.Config.Debug); } break; case "noclip": Log.Debug($"Player {ev.Player.Nickname} is attempting to noclip", Subclass.Instance.Config.Debug); if (Tracking.PlayersWithSubclasses.ContainsKey(ev.Player) && Tracking.PlayersWithSubclasses[ev.Player].Abilities.Contains(AbilityType.NoClip)) { SubClass subClass = Tracking.PlayersWithSubclasses[ev.Player]; if (Tracking.OnCooldown(ev.Player, AbilityType.NoClip, subClass)) { Log.Debug($"Player {ev.Player.Nickname} failed to noclip - cooldown", Subclass.Instance.Config.Debug); Tracking.DisplayCooldown(ev.Player, AbilityType.NoClip, subClass, "noclip", Time.time); return; } bool previous = ev.Player.NoClipEnabled; ev.Player.NoClipEnabled = !ev.Player.NoClipEnabled; Tracking.AddCooldown(ev.Player, AbilityType.NoClip); if (subClass.FloatOptions.ContainsKey("NoClipTime")) { Timing.CallDelayed(subClass.FloatOptions["NoClipTime"], () => { if (ev.Player.NoClipEnabled != previous) { ev.Player.NoClipEnabled = previous; } }); } Log.Debug($"Player {ev.Player.Nickname} successfully noclipped", Subclass.Instance.Config.Debug); } else { ev.ReturnMessage = "You must have the noclip ability to use this command"; Log.Debug($"Player {ev.Player.Nickname} could not noclip", Subclass.Instance.Config.Debug); } break; case "flash": if (Tracking.PlayersWithSubclasses.ContainsKey(ev.Player) && Tracking.PlayersWithSubclasses[ev.Player].Abilities.Contains(AbilityType.FlashOnCommand)) { SubClass subClass = Tracking.PlayersWithSubclasses[ev.Player]; if (Tracking.OnCooldown(ev.Player, AbilityType.FlashOnCommand, subClass)) { Log.Debug($"Player {ev.Player.Nickname} failed to flash on command", Subclass.Instance.Config.Debug); Tracking.DisplayCooldown(ev.Player, AbilityType.FlashOnCommand, subClass, "flash", Time.time); return; } // Credit to KoukoCocoa's AdminTools for the grenade spawn script below, I was lost. https://github.com/KoukoCocoa/AdminTools/ GrenadeManager grenadeManager = ev.Player.ReferenceHub.gameObject.GetComponent <GrenadeManager>(); GrenadeSettings settings = grenadeManager.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFlash); Grenade grenade = UnityEngine.Object.Instantiate(settings.grenadeInstance).GetComponent <Grenade>(); grenade.fuseDuration = subClass.FloatOptions.ContainsKey("FlashOnCommandFuseTimer") ? subClass.FloatOptions["FlashOnCommandFuseTimer"] : 0.3f; grenade.FullInitData(grenadeManager, ev.Player.Position, Quaternion.Euler(grenade.throwStartAngle), grenade.throwLinearVelocityOffset, grenade.throwAngularVelocity); NetworkServer.Spawn(grenade.gameObject); Tracking.AddCooldown(ev.Player, AbilityType.FlashOnCommand); Log.Debug($"Player {ev.Player.Nickname} successfully used flash on commad", Subclass.Instance.Config.Debug); } else { ev.ReturnMessage = "You must have the flash on command ability to use this command"; Log.Debug($"Player {ev.Player.Nickname} could not flash on command", Subclass.Instance.Config.Debug); } break; case "invis": if (!Tracking.PlayersWithSubclasses.ContainsKey(ev.Player) || !Tracking.PlayersWithSubclasses[ev.Player].Abilities.Contains(AbilityType.InvisibleOnCommand)) { ev.ReturnMessage = "You must have the invisible on command ability to use this command"; Log.Debug($"Player {ev.Player.Nickname} could not go invisible on command", Subclass.Instance.Config.Debug); return; } Scp268 scp268 = ev.Player.ReferenceHub.playerEffectsController.GetEffect <Scp268>(); if (scp268 != null) { SubClass subClass = Tracking.PlayersWithSubclasses[ev.Player]; if (scp268.Enabled) { Log.Debug($"Player {ev.Player.Nickname} failed to go invisible on command", Subclass.Instance.Config.Debug); ev.Player.Broadcast(3, "You're already invisible!"); return; } if (Tracking.OnCooldown(ev.Player, AbilityType.InvisibleOnCommand, subClass)) { Log.Debug($"Player {ev.Player.Nickname} failed to go invisible on command", Subclass.Instance.Config.Debug); Tracking.DisplayCooldown(ev.Player, AbilityType.InvisibleOnCommand, subClass, "invisible", Time.time); return; } //scp268.Duration = subClass.FloatOptions.ContainsKey("InvisibleOnCommandDuration") ? // subClass.FloatOptions["InvisibleOnCommandDuration"]*2f : 30f*2f; //ev.Player.ReferenceHub.playerEffectsController.EnableEffect(scp268); ev.Player.ReferenceHub.playerEffectsController.EnableEffect <Scp268>(); Tracking.PlayersInvisibleByCommand.Add(ev.Player); Timing.CallDelayed(subClass.FloatOptions.ContainsKey("InvisibleOnCommandDuration") ? subClass.FloatOptions["InvisibleOnCommandDuration"] : 30f, () => { if (Tracking.PlayersInvisibleByCommand.Contains(ev.Player)) { Tracking.PlayersInvisibleByCommand.Remove(ev.Player); } if (scp268.Enabled) { ev.Player.ReferenceHub.playerEffectsController.DisableEffect <Scp268>(); } }); Tracking.AddCooldown(ev.Player, AbilityType.InvisibleOnCommand); } break; default: ev.IsAllowed = true; break; } }
public bool Execute(ArraySegment <string> arguments, ICommandSender sender, out string response) { if (sender is PlayerCommandSender) { var plr = sender as PlayerCommandSender; if (plr.RH.characterClassManager.NetworkCurClass == RoleType.Scp079) { var plugin = Better079Plugin.instance; var args = arguments.Array; { if (args.Length == 1) { if (args[1].ToLower().Equals("help") || args[1].ToLower().Equals("commands") || args[1].ToLower().Equals("?")) { response = plugin.Config.b079_help_title + "\n" + "\"." + plugin.Config.b079_prefix + " a1\" - " + plugin.Config.b079_help_a1 + " - " + plugin.Config.b079_a1_power + "+ AP - Tier " + (plugin.Config.b079_a1_tier + 1) + "+\n" + "\"." + plugin.Config.b079_prefix + " a2\" - " + plugin.Config.b079_help_a2 + " - " + plugin.Config.b079_a2_power + "+ AP - Tier " + (plugin.Config.b079_a2_tier + 1) + "+\n" + "\"." + plugin.Config.b079_prefix + " a3\" - " + plugin.Config.b079_help_a3 + " - " + plugin.Config.b079_a3_power + "+ AP - Tier " + (plugin.Config.b079_a3_tier + 1) + "+\n" + "\"." + plugin.Config.b079_prefix + " a4\" - " + plugin.Config.b079_help_a4 + " - " + plugin.Config.b079_a4_power + "+ AP - Tier " + (plugin.Config.b079_a4_tier + 1) + "+\n"; return(true); } if (args[1].ToLower().Equals("a1")) { if (plr.RH.scp079PlayerScript.NetworkcurLvl < plugin.Config.b079_a1_tier) { response = plugin.Config.b079_msg_tier_required.Replace("$tier", "" + (plugin.Config.b079_a1_tier + 1)); return(true); } if (plr.RH.scp079PlayerScript.NetworkcurMana >= plugin.Config.b079_a1_power) { plr.RH.scp079PlayerScript.NetworkcurMana -= plugin.Config.b079_a1_power; } else { response = plugin.Config.b079_msg_no_power; return(true); } var cams = PluginEvents.GetSCPCameras(); if (cams.Count > 0) { Camera079 cam = cams[UnityEngine.Random.Range(0, cams.Count)]; plr.RH.scp079PlayerScript.CmdSwitchCamera(cam.cameraId, false); response = plugin.Config.b079_msg_a1_run; return(true); } else { plr.RH.scp079PlayerScript.NetworkcurMana += plugin.Config.b079_a1_power; response = plugin.Config.b079_msg_a1_fail; return(true); } } if (args[1].ToLower().Equals("a2")) { if (plr.RH.scp079PlayerScript.NetworkcurLvl < plugin.Config.b079_a2_tier) { response = plugin.Config.b079_msg_tier_required.Replace("$tier", "" + (plugin.Config.b079_a2_tier + 1)); return(true); } if (plr.RH.scp079PlayerScript.NetworkcurMana >= plugin.Config.b079_a2_power) { plr.RH.scp079PlayerScript.NetworkcurMana -= plugin.Config.b079_a2_power; } else { response = plugin.Config.b079_msg_no_power; return(true); } if (Time.timeSinceLevelLoad - PluginEvents.a2cooldown < plugin.Config.b079_a2_cooldown) { plr.RH.scp079PlayerScript.NetworkcurMana += plugin.Config.b079_a2_power; response = plugin.Config.b079_msg_a2_fail; return(true); } Room room = PluginEvents.SCP079Room(plr.RH); if (room == null) { plr.RH.scp079PlayerScript.NetworkcurMana += plugin.Config.b079_a2_power; response = plugin.Config.b079_msg_a2_fail; return(true); } if (room.Zone == ZoneType.Surface) { plr.RH.scp079PlayerScript.NetworkcurMana += plugin.Config.b079_a2_power; response = plugin.Config.b079_msg_a2_fail; return(true); } foreach (var item in plugin.Config.b079_a2_blacklisted_rooms) { if (room.Name.ToLower().Contains(item.ToLower())) { plr.RH.scp079PlayerScript.NetworkcurMana += plugin.Config.b079_a2_power; response = plugin.Config.b079_msg_a2_fail; return(true); } } Timing.RunCoroutine(PluginEvents.GasRoom(room, plr.RH)); response = plugin.Config.b079_msg_a2_run; return(true); } if (args[1].ToLower().Equals("a3")) { if (plr.RH.scp079PlayerScript.NetworkcurLvl < plugin.Config.b079_a3_tier) { response = plugin.Config.b079_msg_tier_required.Replace("$tier", "" + (plugin.Config.b079_a3_tier + 1)); return(true); } if (plr.RH.scp079PlayerScript.NetworkcurMana >= plugin.Config.b079_a3_power) { plr.RH.scp079PlayerScript.NetworkcurMana -= plugin.Config.b079_a3_power; } else { response = plugin.Config.b079_msg_no_power; return(true); } Generator079.Generators[0].RpcCustomOverchargeForOurBeautifulModCreators(plugin.Config.b079_a3_timer, false); response = plugin.Config.b079_msg_a3_run; return(true); } if (args[1].ToLower().Equals("a4")) { if (plr.RH.scp079PlayerScript.NetworkcurLvl < plugin.Config.b079_a4_tier) { response = plugin.Config.b079_msg_tier_required.Replace("$tier", "" + (plugin.Config.b079_a4_tier + 1)); return(true); } if (plr.RH.scp079PlayerScript.NetworkcurMana >= plugin.Config.b079_a4_power) { plr.RH.scp079PlayerScript.NetworkcurMana -= plugin.Config.b079_a4_power; } else { response = plugin.Config.b079_msg_no_power; return(true); } var pos = plr.RH.scp079PlayerScript.currentCamera.transform.position; GrenadeManager gm = plr.RH.GetComponent <GrenadeManager>(); GrenadeSettings settings = gm.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFlash); FlashGrenade flash = GameObject.Instantiate(settings.grenadeInstance).GetComponent <FlashGrenade>(); flash.fuseDuration = 0.5f; flash.InitData(gm, Vector3.zero, Vector3.zero, 1f); flash.transform.position = pos; NetworkServer.Spawn(flash.gameObject); response = plugin.Config.b079_msg_a4_run; return(true); } response = plugin.Config.b079_msg_help_cmd_fail.Replace("$prefix", "" + plugin.Config.b079_prefix); return(true); } response = plugin.Config.b079_msg_help_cmd_fail.Replace("$prefix", "" + plugin.Config.b079_prefix); return(true); } } } response = Better079Plugin.instance.Config.b079_msg_help_cmd_fail.Replace("$prefix", "" + Better079Plugin.instance.Config.b079_prefix); return(false); }