public static ConsoleCommandGroup AddUnitFlag(this ConsoleCommandGroup group, string name, Getter <bool> getFunc, Setter <bool> setAction) { group.AddUnit(name, delegate(string[] args) { var noArguments = args.Length == 0; if (noArguments) { var stateString = getFunc() ? "<color=#00ff00ff>on</color>" : "<color=#ff0000ff>off</color>"; NoBrain.Log($"{name} is turned {stateString}!"); } else { var parseSuccess = !bool.TryParse(args[0], out var parsedValue); if (parseSuccess) { NoBrain.Log($"This argument only supports \"true\" or \"false\" as values. (Given: {args[0]})"); } else { setAction(parsedValue); var stateString = parsedValue ? "<color=#00ff00ff>enabled</color>" : "<color=#ff0000ff>disabled</color>"; NoBrain.Log($"{name} has been {stateString}!"); } } }); return(group); }
public UnitSearchResult SearchUnit(string[] path) { ConsoleCommandGroup currentgroup = this; UnitSearchResult result = new UnitSearchResult(); for (int i = 0; i < path.Length; i++) { ConsoleCommandGroup group = currentgroup.GetGroup(path[i]); ConsoleCommand command = currentgroup.GetCommand(path[i]); if (group != null) { currentgroup = group; result.index++; } else if (command != null) { result.index++; result.unit = command; return(result); } } result.unit = currentgroup; return(result); }
public override void Init() { System.IO.Directory.CreateDirectory("MagicSmokeSaves"); _AutocompletionSettings = new AutocompletionSettings((input) => { List <string> ret = new List <string>(); foreach (var stat in _Stats) { if (stat.Key.AutocompletionMatch(input.ToLower())) { ret.Add(stat.Key); } } return(ret.ToArray()); }); _AutocompletionChests = new AutocompletionSettings((input) => { List <string> ret = new List <string>(); foreach (var stat in _Chests) { if (stat.Key.AutocompletionMatch(input.ToLower())) { ret.Add(stat.Key); } } return(ret.ToArray()); }); _StatGet = (args) => { if (_Stats.ContainsKey(args[0])) { ETGModConsole.Log(_Stats[args[0]] + " value is: <color=#ff0000ff>" + GameManager.Instance.PrimaryPlayer.stats.GetStatValue(_Stats[args[0]]) + "</color>"); } else { ETGModConsole.Log($"Please check your command and try again"); } }; _StatGetAll = (args) => { ETGModConsole.Log("Available stats:"); foreach (var stat in _Stats) { ETGModConsole.Log($"- {stat.Key} <color=#ff0000ff>" + GameManager.Instance.PrimaryPlayer.stats.GetStatValue(stat.Value) + "</color>"); } }; ETGModConsole.Commands.AddGroup("ms", (string[] args) => { ETGModConsole.Log("<size=100><color=#ff0000ff>MagicSmoke v1 by flagmaggot</color></size>", false); ETGModConsole.Log("<size=100><color=#ff0000ff>DOES NOT WORK WHILE IN THE BREACH</color></size>", false); ETGModConsole.Log("<size=100><color=#ff0000ff>--------------------------------</color></size>", false); ETGModConsole.Log("Use \"ms help\" for help!", false); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("help", (string[] args) => { ETGModConsole.Log("<size=100><color=#ff0000ff>MagicSmoke v1 by flagmaggot</color></size>", false); ETGModConsole.Log("<size=100><color=#ff0000ff>DOES NOT WORK WHILE IN THE BREACH</color></size>", false); ETGModConsole.Log("<size=100><color=#ff0000ff>--------------------------------</color></size>", false); ETGModConsole.Log("Magic Smoke Command Reference:", false); ETGModConsole.Log("", false); ETGModConsole.Log("<color=#FFFF33>ms help</color> - Displays this help", false); ETGModConsole.Log("<color=#FFFF33>ms get <stat name></color> - gets the state value", false); ETGModConsole.Log("<color=#FFFF33>ms set <stat name> [arg]</color> - sets the player speed (decimal values)", false); ETGModConsole.Log("<color=#FFFF33>ms getallstats</color> - returns all the stats and their values", false); ETGModConsole.Log("<color=#FFFF33>ms forcedualwield [gunid]</color> - forces the player to dual wield, use gun names, it will autocomplete to help.", false); ETGModConsole.Log("<color=#FFFF33>ms spawnsynergy</color> - spawns synergy chest", false); ETGModConsole.Log("<color=#FFFF33>ms spawnrainbowsynergy</color> - spawns rainbow synergy chest", false); ETGModConsole.Log("<color=#FFFF33>ms savesettings [name</color> - saves player settings to a file [name].json", false); ETGModConsole.Log("<color=#FFFF33>ms loadsettings [name]</color> - loads player settings from a file [name].json", false); ETGModConsole.Log("<color=#FFFF33>ms spawnglitched [arg] [true]</color> - spawns a glitch chest, [arg] can be a,b,c,d,s,red,green,blue,brown,black [use true after if you want to warp to glitched level]", false); ETGModConsole.Log("<color=#FFFF33>ms setmagnificense [arg]</color> - sets the magnificence value", false); ETGModConsole.Log("<color=#FFFF33>ms getmagnificense [arg]</color> - gets the current magnificence value", false); ETGModConsole.Log("<color=#FFFF33>ms saveclipboard</color> - copies the encoded settings to the clipboard", false); ETGModConsole.Log("<color=#FFFF33>ms loadclipboard</color> - loads the settings directly from clipboard", false); ETGModConsole.Log("<color=#FFFF33>ms loadclipboard [arg</color>] - loads the settings based off the encoded pasted data [arg]", false); ETGModConsole.Log("<color=#FFFF33>ms pollthegungeon</color> - Request from YouTuber Hutts, finds all chests on current floor and spawns 3 additional random chests.", false); ETGModConsole.Log("<color=#FFFF33>ms findchests</color> - gives coordinates for all chests currently on the floor (you can teleport to them by using tp <first number> <second number>", false); ETGModConsole.Log("<color=#FFFF33>ms addteleporters</color> - adds teleporters to almost all the rooms on the current dungeon", false); ETGModConsole.Log("<color=#FFFF33>ms visitallrooms</color> - marks all rooms as visited, makes all visible on minimap", false); ETGModConsole.Log("<color=#FFFF33>ms revealrooms</color> - makes all rooms visible (similar to Floor revealed item)", false); ETGModConsole.Log("<color=#FFFF33>ms dropactives</color> - drops all active items", false); ETGModConsole.Log("<color=#FFFF33>ms droppassives</color> - drops all passive items", false); ETGModConsole.Log("<color=#FFFF33>ms dropall</color> - drop all items and guns (except defauilt gun)", false); ETGModConsole.Log("<color=#FFFF33>ms clearall</color> - clears all active and passive items.", false); ETGModConsole.Log("<color=#FFFF33>ms clearpassives</color> - clears passive items", false); ETGModConsole.Log("<color=#FFFF33>ms clearactives</color> - clears active items", false); ETGModConsole.Log("<color=#FFFF33>ms dropguns</color> - drops all guns (except default gun)", false); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("forcedualwield", DualWieldItem, _GiveAutocompletionSettings); _MagnificenceSet = (args) => { float value; if (float.TryParse(args[0], out value)) { GameManager.Instance.PrimaryPlayer.stats.AddFloorMagnificence(value); ETGModConsole.Log("Magnificence set to: <color=#ff0000ff>" + value + "</color>"); } else { ETGModConsole.Log($"Please check your command and try again"); } }; _MagnificenceGet = (args) => { ETGModConsole.Log("Magnificence set to: <color=#ff0000ff>" + GameManager.Instance.PrimaryPlayer.stats.Magnificence + "</color>"); }; _StatSet = (args) => { float value; if (_Stats.ContainsKey(args[0]) && float.TryParse(args[1], out value)) { GameManager.Instance.PrimaryPlayer.stats.SetBaseStatValue(_Stats[args[0]], value, GameManager.Instance.PrimaryPlayer); ETGModConsole.Log(_Stats[args[0]] + " set to: <color=#ff0000ff>" + value + "</color>"); } else { ETGModConsole.Log($"Please check your command and try again"); } }; ETGModConsole.Commands.GetGroup("ms").AddUnit("spawnsynergy", (string[] args) => { Chest synergy_Chest = GameManager.Instance.RewardManager.Synergy_Chest; //if(args.Length != 0) //{ // synergy_Chest.IsRainbowChest = true; //} synergy_Chest.IsRainbowChest = false; synergy_Chest.ForceUnlock(); IntVector2 basePosition = new IntVector2((int)GameManager.Instance.PrimaryPlayer.transform.position.x, (int)GameManager.Instance.PrimaryPlayer.transform.position.y); Chest.Spawn(synergy_Chest, basePosition); synergy_Chest.ForceUnlock(); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("spawnrainbowsynergy", (string[] args) => { Chest synergy_Chest = GameManager.Instance.RewardManager.Synergy_Chest; synergy_Chest.IsRainbowChest = true; IntVector2 basePosition = new IntVector2((int)GameManager.Instance.PrimaryPlayer.transform.position.x, (int)GameManager.Instance.PrimaryPlayer.transform.position.y); Chest.Spawn(synergy_Chest, basePosition); synergy_Chest.ForceUnlock(); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("savesettings", (string[] args) => { SaveSettings(args[0]); ETGModConsole.Log("Settings file saved as: " + args[0] + ".json"); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("saveclipboard", (string[] args) => { SaveSettingsToClipboard(); ETGModConsole.Log("Settings copied to clipboard"); }); //ETGModConsole.Commands.GetGroup("ms").AddUnit("summon", (string[] args) => //{ // //ResourceManager.LoadAssetBundle("./shared_auto_001/Shrine_Mirror55"); // AdvancedShrineController ads = new AdvancedShrineController(); // ads.IsBlankShrine = true; // ads.Start(); // ETGModConsole.Log("No"); //}); ETGModConsole.Commands.GetGroup("ms").AddUnit("zoom", (string[] args) => { if (args.Count() > 0) { float zoomScale; float.TryParse(args[0], out zoomScale); GameManager.Instance.MainCameraController.OverrideZoomScale = zoomScale; ETGModConsole.Log($"Camera zoom set to {zoomScale}"); } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("pollthegungeon", (string[] args) => { List <Chest> chests = new List <Chest>(); chests = StaticReferenceManager.AllChests; foreach (Chest c in chests.ToList()) { RoomHandler room = c.GetAbsoluteParentRoom(); while (room.GetComponentsAbsoluteInRoom <Chest>().Count() < 4) { for (int i = 0; i < 3; i++) { SpawnChests(room); } } } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("findchests", (string[] args) => { List <Chest> chests = StaticReferenceManager.AllChests; foreach (Chest c in chests) { ETGModConsole.Log($"Chest location: <color=#ff0000ff>{c.transform.position}</color>"); } }); //ETGModConsole.Commands.GetGroup("ms").AddUnit("open", (string[] args) => //{ // List<Chest> chests = StaticReferenceManager.AllChests; // foreach (Chest c in chests) // { // ETGModConsole.Log($"Chest location: <color=#ff0000ff>{c.transform.position}</color>"); // } //}); ETGModConsole.Commands.GetGroup("ms").AddUnit("addteleporters", (string[] args) => { List <RoomHandler> rooms = GameManager.Instance.Dungeon.data.rooms; foreach (RoomHandler room in rooms) { try { room.AddProceduralTeleporterToRoom(); } catch (Exception) { //do nothing } } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("visitallrooms", (string[] args) => { List <RoomHandler> rooms = GameManager.Instance.Dungeon.data.rooms; foreach (RoomHandler room in rooms) { room.visibility = RoomHandler.VisibilityStatus.VISITED; } Minimap.Instance.RevealAllRooms(true); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("revealrooms", (string[] args) => { List <RoomHandler> rooms = GameManager.Instance.Dungeon.data.rooms; foreach (RoomHandler room in rooms) { Minimap.Instance.RevealAllRooms(true); } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("getroomname", (string[] args) => { ETGModConsole.Log($"{GameManager.Instance.PrimaryPlayer.GetAbsoluteParentRoom().GetRoomName()}"); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("loadsettings", (string[] args) => { LoadSettings(args[0]); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("dropactives", (string[] args) => { foreach (PlayerItem i in GameManager.Instance.PrimaryPlayer.activeItems.ToList()) { GameManager.Instance.PrimaryPlayer.DropActiveItem(i); } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("droppassives", (string[] args) => { foreach (PassiveItem i in GameManager.Instance.PrimaryPlayer.passiveItems.ToList()) { GameManager.Instance.PrimaryPlayer.DropPassiveItem(i); } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("dropall", (string[] args) => { foreach (PassiveItem i in GameManager.Instance.PrimaryPlayer.passiveItems.ToList()) { GameManager.Instance.PrimaryPlayer.DropPassiveItem(i); } foreach (PlayerItem i in GameManager.Instance.PrimaryPlayer.activeItems.ToList()) { GameManager.Instance.PrimaryPlayer.DropActiveItem(i); } foreach (Gun i in GameManager.Instance.PrimaryPlayer.inventory.AllGuns.ToList()) { GameManager.Instance.PrimaryPlayer.ForceDropGun(i); } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("clearall", (string[] args) => { GameManager.Instance.PrimaryPlayer.RemoveAllActiveItems(); GameManager.Instance.PrimaryPlayer.RemoveAllPassiveItems(); foreach (Gun i in GameManager.Instance.PrimaryPlayer.inventory.AllGuns.ToList()) { GameManager.Instance.PrimaryPlayer.ForceDropGun(i); } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("clearactives", (string[] args) => { GameManager.Instance.PrimaryPlayer.RemoveAllActiveItems(); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("clearpassives", (string[] args) => { GameManager.Instance.PrimaryPlayer.RemoveAllPassiveItems(); }); ETGModConsole.Commands.GetGroup("ms").AddUnit("dropguns", (string[] args) => { foreach (Gun i in GameManager.Instance.PrimaryPlayer.inventory.AllGuns.ToList()) { GameManager.Instance.PrimaryPlayer.ForceDropGun(i); } }); ETGModConsole.Commands.GetGroup("ms").AddUnit("charmall", (string[] args) => { if (args.Count() == 0 || args[0] == "true") { foreach (AIActor actor in StaticReferenceManager.AllEnemies) { //AkSoundEngine.PostEvent("Play_OBJ_enemy_charmed_01", GameManager.Instance.gameObject); AIActor aiactor = actor as AIActor; aiactor.CanTargetEnemies = true; aiactor.CanTargetPlayers = false; } } else if (args[0] == "false") { foreach (AIActor actor in StaticReferenceManager.AllEnemies) { //AkSoundEngine.PostEvent("Play_OBJ_enemy_charmed_01", GameManager.Instance.gameObject); AIActor aiactor = actor as AIActor; aiactor.CanTargetEnemies = false; aiactor.CanTargetPlayers = true; } } }); //ETGModConsole.Commands.GetGroup("ms").AddUnit("removeallcompanions", (string[] args) => //{ // //GameManager.Instance.PrimaryPlayer.companions.RemoveAll(AIActor); // GameManager.Instance.PrimaryPlayer.companions.Clear(); //}); ETGModConsole.Commands.GetGroup("ms").AddUnit("loadclipboard", (string[] args) => { if (args.Count() == 0) { LoadSettingsFromClipBoard(); } else { LoadSettingsFromClipBoard(args[0]); } ETGModConsole.Log("Loading settings from clipboard"); }); _GlitchSpawn = (args) => { if (_Chests.ContainsKey(args[0])) { Chest glitchedchest = _Chests[args[0]]; glitchedchest.ForceGlitchChest = true; glitchedchest.ForceUnlock(); glitchedchest.BecomeGlitchChest(); IntVector2 basePosition = new IntVector2((int)GameManager.Instance.PrimaryPlayer.transform.position.x, (int)GameManager.Instance.PrimaryPlayer.transform.position.y); Chest.Spawn(glitchedchest, basePosition); if (args.Count() == 2) { if (args[1] == "true") { ETGMod.Chest.OnPostOpen += glitchopen; } } } else { ETGModConsole.Log($"Please check your command and try again"); } }; _MsGroup = ETGModConsole.Commands.GetGroup("ms"); _SetGroup = _MsGroup.AddUnit("set", _StatSet, _AutocompletionSettings); _SetGroup = _MsGroup.AddUnit("get", _StatGet, _AutocompletionSettings); _SynergyChestGroup = _MsGroup.AddUnit("spawnglitched", _GlitchSpawn, _AutocompletionChests); _GetGroup = _MsGroup.AddUnit("getallstats", _StatGetAll, _AutocompletionSettings); _SetGroup = _MsGroup.AddUnit("getmagnificence", _MagnificenceGet, _AutocompletionSettings); _SetGroup = _MsGroup.AddUnit("setmagnificence", _MagnificenceSet, _AutocompletionSettings); }
public ConsoleCommandGroup AddUnit(string name, ConsoleCommandGroup group) { group.Name = name; _Groups [name] = group; return(this); }