public static void Add() { ShrineFactory sf = new ShrineFactory() { name = "Random Shrine", modID = "cc", text = "Randomize your character?", spritePath = "CustomCharacters/resources/random_shrine.png", shadowSpritePath = "CustomCharacters/resources/default_shrine_shadow_small.png", acceptText = "Accept", declineText = "Decline", OnAccept = Accept, OnDecline = null, offset = new Vector3(63.9f, 23.3f, 23.8f), talkPointOffset = new Vector3(0, 1, 0), isToggle = false, isBreachShrine = true }; //register shrine sf.Build(); ETGModConsole.Commands.AddUnit("set_hegemony_credits", (args) => { try { GameStatsManager.Instance.SetStat(TrackedStats.META_CURRENCY, int.Parse(args[0])); } catch { Tools.PrintError("You did it wrong"); } }); }
public override void Start() { FakePrefabHooks.Init(); Tools.Init(); Hooks.Init(); CharacterSwitcher.Init(); ShrineFactory.Init(); Tools.Print("Did Start()", "00FF00"); }
// Token: 0x06000059 RID: 89 RVA: 0x0000480C File Offset: 0x00002A0C public static void Add() { ShrineFactory SQUIRE = new ShrineFactory { name = "Squire of the Jammed", modID = "BunnyMod", spritePath = "BunnyMod/Resources/JammedSquire/Idle/squire_idle_001.png", shadowSpritePath = "BunnyMod/Resources/JammedSquire/Idle/squire_idle_001.png", acceptText = "I accept His offer.", declineText = "I refuse.", OnAccept = new Action <PlayerController, GameObject>(JammedSquire.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(JammedSquire.CanUse), offset = new Vector3(48.375f, 50.8f, 51.3f), talkPointOffset = new Vector3(0f, 3f, 0f), isToggle = false, isBreachShrine = true, interactableComponent = typeof(JammedSquireInteractable) }; GameObject gameObject = SQUIRE.Build(); gameObject.AddAnimation("idle", "BunnyMod/Resources/JammedSquire/Idle/", 4, NPCBuilder.AnimationType.Idle, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk", "BunnyMod/Resources/JammedSquire/Talk/", 4, NPCBuilder.AnimationType.Talk, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk_start", "BunnyMod/Resources/JammedSquire/TalkStart/", 4, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("do_effect", "BunnyMod/Resources/JammedSquire/DoEffect/", 7, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); JammedSquireInteractable component1 = gameObject.GetComponent <JammedSquireInteractable>(); component1.conversation = new List <string> { "...", "My Lord has always been curious of your kind...", "Trying to manipulate things out of your control...", "Messing with things you shouldn't...", "Obtaining treasure that overpowers you...", "My Lord is... interested...", "Interested in you sheer stubborness for power...", "So, He sent me here to for one thing...", "To give you power, strength, riches...", "At the cost of Him not holding back...", "His army... And Himself...", "What do you say, Gungeoneer...?" }; component1.conversationB = new List <string> { "What do you ask of Him...?" }; component1.declineTextB = "I ask nothing more."; component1.acceptTextB = "Remove His offer from me."; //gameObject.SetActive(false); }
// Token: 0x0600004D RID: 77 RVA: 0x00004700 File Offset: 0x00002900 public static void Add() { ShrineFactory shrineFactory = new ShrineFactory { name = "The Jammomaster", modID = "nevernamedsMod", //text = "Might not be smart to stick around.", spritePath = "NevernamedsItems/Resources/JammomasterSprites/jammomaster_idle_001.png", shadowSpritePath = "NevernamedsItems/Resources/JammomasterSprites/jammomaster_shadow_001.png", acceptText = "I Accept", declineText = "...no thanks", OnAccept = new Action <PlayerController, GameObject>(TheJammomaster.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(TheJammomaster.CanUse), //offset = new Vector3(43.8f, 42.4f, 42.9f), offset = new Vector3(51.2f, 50.8f, 51.3f), talkPointOffset = new Vector3(0.75f, 1.5f, 0f), isToggle = false, isBreachShrine = true, interactableComponent = typeof(JammomasterInteractible) }; GameObject gameObject = shrineFactory.Build(); gameObject.AddAnimation("idle", "NevernamedsItems/Resources/JammomasterSprites/jammomaster_idle", 12, NPCBuilder.AnimationType.Idle, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk", "NevernamedsItems/Resources/JammomasterSprites/jammomaster_talk", 12, NPCBuilder.AnimationType.Talk, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk_start", "NevernamedsItems/Resources/JammomasterSprites/jammomaster_talk", 12, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("do_effect", "NevernamedsItems/Resources/JammomasterSprites/jammomaster_talk", 12, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); JammomasterInteractible component = gameObject.GetComponent <JammomasterInteractible>(); component.conversation = new List <string> { "All things wise and wonderful...", "All creatures great and small...", "All things bright and beautiful...", "I've cursed them, one and all..." }; component.conversation2 = new List <string> { "What?....", "What do you desire now, young one?" }; component.declineText2 = "I am content"; component.acceptText2 = "Please undo what is done..."; //gameObject.SetActive(false); }
// Token: 0x06000059 RID: 89 RVA: 0x0000480C File Offset: 0x00002A0C public static void Add() { ShrineFactory ShrineFactory = new ShrineFactory { name = "Artifact Monger", modID = "BunnyMod", spritePath = "BunnyMod/Resources/Artifacts/ArtifactNPC/Idle/artifactmonger_idle_001.png", shadowSpritePath = "BunnyMod/Resources/Artifacts/ArtifactNPC/artifactmongerplaceshadow_001.png", acceptText = "...Sure?", declineText = "No thanks.", OnAccept = new Action <PlayerController, GameObject>(ArtifactMonger.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(ArtifactMonger.CanUse), offset = new Vector3(38.125f, 27f, 26.5f), talkPointOffset = new Vector3(3f, 3f, 0f), isToggle = false, isBreachShrine = true, interactableComponent = typeof(ArtifactMongerInteractable) }; GameObject gameObject = ShrineFactory.Build(); gameObject.AddAnimation("idle", "BunnyMod/Resources/Artifacts/ArtifactNPC/Idle/", 2, NPCBuilder.AnimationType.Idle, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk", "BunnyMod/Resources/Artifacts/ArtifactNPC/Talk/", 6, NPCBuilder.AnimationType.Talk, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk_start", "BunnyMod/Resources/Artifacts/ArtifactNPC/TalkStart/", 6, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("do_effect", "BunnyMod/Resources/Artifacts/ArtifactNPC/DoEffect/", 5, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); ArtifactMongerInteractable component = gameObject.GetComponent <ArtifactMongerInteractable>(); component.conversation = new List <string> { "helo!", "i com from favaway pwanet!", "soooooo fav awayyyyy!!", "and breng pwetty wocks!", "but te wocks hurt...", "...", "...do u want one? tu help me?" }; component.conversationB = new List <string> { "u wont anytien else?" }; component.declineTextB = "Im good."; component.acceptTextB = "Please take them away."; gameObject.SetActive(false); }
public static void LateStart1(Action <Foyer> orig, Foyer self1) { orig(self1); bool flag = BunnyModule.hasInitialized; if (!flag) { ArtifactMonger.Add(); WhisperShrine.Add(); DeicideShrine.Add(); { ShrineFactory.PlaceBnyBreachShrines(); } BunnyModule.hasInitialized = true; } ShrineFactory.PlaceBnyBreachShrines(); }
// Token: 0x06000059 RID: 89 RVA: 0x0000480C File Offset: 0x00002A0C public static void Add() { try { ShrineFactory ShrineFactory = new ShrineFactory { name = "Pulpit", modID = "cak", spritePath = "CakeMod/Resources/ModRooms/Pulpit", shadowSpritePath = "CakeMod/Resources/PulpitShadow", }; GameObject gameObject = ShrineFactory.Build(); } catch (Exception e) { Tools.Print(e); } }
public static void LateStart1(Action <Foyer> orig, Foyer self1) { orig(self1); Bugun.ThisIsBasicallyCelsRNGUNButTakenToASillyLevel(); bool flag = BunnyModule.hasInitialized; if (!flag) { ArtifactMonger.Add(); WhisperShrine.Add(); DeicideShrine.Add(); JammedSquire.Add(); { ShrineFactory.PlaceBnyBreachShrines(); } BunnyModule.hasInitialized = true; } //ShrineFactory.PlaceBnyBreachShrines(); }
public static void Add() { ShrineFactory shrineFactory = new ShrineFactory { name = "Nuclear Shrine", modID = "bot_nt", //text = "Might not be smart to stick around.", spritePath = "LostItems/NuclearThrone/NuclearThroneSprite/NPC/Idle/ntNPC_idle_001.png", shadowSpritePath = "LostItems/NuclearThrone/NuclearThroneSprite/NPC/Idle/ntNPC_idle_001.png", acceptText = "Bring it on!", declineText = "No thanks.", OnAccept = new Action <PlayerController, GameObject>(NuclearShrine.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(NuclearShrine.CanUse), //offset = new Vector3(43.8f, 42.4f, 42.9f), offset = new Vector3(188.8f, 18.3f, 18.9f), talkPointOffset = new Vector3(0.75f, 1.5f, 0f), isToggle = false, isBreachShrine = true, interactableComponent = typeof(NuclearInteractable) }; GameObject gameObject = shrineFactory.Build(); gameObject.AddAnimation("idle", "LostItems/NuclearThrone/NuclearThroneSprite/NPC/Idle", 12, NPCBuilder.AnimationType.Idle, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk", "LostItems/NuclearThrone/NuclearThroneSprite/NPC/Talk/", 12, NPCBuilder.AnimationType.Talk, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk_start", "LostItems/NuclearThrone/NuclearThroneSprite/NPC/StartTalk/", 12, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("do_effect", "LostItems/NuclearThrone/NuclearThroneSprite/NPC/DoEffect/", 12, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); NuclearInteractable component = gameObject.GetComponent <NuclearInteractable>(); component.conversation = new List <string> { "Hello ", //$"Hello <color={LostItemsMod.TEXT_COLOR_NT}>wip</color>", "I will be the npc that enables the upcoming NUCLEAR THRONE MODE", //$"I will be the npc that enables the upcoming <color={LostItemsMod.TEXT_COLOR_NT}>NUCLEAR THRONE MODE</color>", "But thats not finished" }; //gameObject.SetActive(false); }
// Token: 0x06000059 RID: 89 RVA: 0x0000480C File Offset: 0x00002A0C public static void Add() { try { ShrineFactory ShrineFactory = new ShrineFactory { name = "Chester", modID = "cak", spritePath = "CakeMod/Resources/Chester/Chester_idle_001.png", shadowSpritePath = "CakeMod/Resources/Chester/Chester_shadow_001.png", acceptText = "It's a deal.", declineText = "I don't think I want what you're offering.", OnAccept = new Action <PlayerController, GameObject>(Chester.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(Chester.CanUse), offset = new Vector3(60f, 35f, 51.3f), talkPointOffset = new Vector3(2f, 2f, 0f), isToggle = false, isBreachShrine = true, interactableComponent = typeof(ChesterInteractible) }; GameObject gameObject = ShrineFactory.Build(); gameObject.AddAnimation("idle", "CakeMod/Resources/Chester/Chester_idle", 4, NPCBuilder.AnimationType.Idle, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk", "CakeMod/Resources/Chester/Chester_idle", 4, NPCBuilder.AnimationType.Talk, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk_start", "CakeMod/Resources/Chester/Chester_talk", 4, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("do_effect", "CakeMod/Resources/Chester/Chester_doeffect", 3, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); ChesterInteractible component = gameObject.GetComponent <ChesterInteractible>(); component.conversation = new List <string> { "Heya, kid!", "You look like you need a hand!", "Say, pal, I've got a deal for ya.", "Let's make this a bit easier, yeah?" }; gameObject.SetActive(false); } catch (Exception e) { Tools.Print(e); } }
public static void Add() { ShrineFactory sf = new ShrineFactory() { name = "Grandfather Tick", modID = "cel", //text = "Randomize your stats and loadout?", spritePath = "Items/Resources/Tick/Idle/tick_idle_001.png", shadowSpritePath = "Items/Resources/Tick/tick_shadow_001.png", acceptText = "Uhh... sure.", declineText = "I'm good.", OnAccept = Accept, OnDecline = null, CanUse = CanUse, offset = new Vector3(184.7f, 19.9f, 20.4f), talkPointOffset = new Vector3(12 / 16f, 24 / 16f, 0), isToggle = false, isBreachShrine = false, interactableComponent = typeof(TickInteractable) }; ETGModConsole.Log("Test 2"); //register shrine var obj = sf.Build(); obj.AddAnimation("idle", "Items/Resources/Tick/Idle/", 5, NPCBuilder.AnimationType.Idle); obj.AddAnimation("talk", "Items/Resources/Tick/Talk/", 10, NPCBuilder.AnimationType.Talk); obj.AddAnimation("do_effect", "Items/Resources/Tick/DoEffect/", 10, NPCBuilder.AnimationType.Other); var npc = obj.GetComponent <FranseisInteractable>(); npc.conversation = new List <string>() { "I'm Grandfather Tick...", "Do you want to start again...", "I can bring you to when this began...", "But I must warn you, you will lose every item you currently have..." }; obj.SetActive(false); ETGModConsole.Log("Test 3"); }
// Token: 0x06000059 RID: 89 RVA: 0x0000480C File Offset: 0x00002A0C public static void Add() { try { ShrineFactory ShrineFactory = new ShrineFactory { name = "Shrap And Nel", modID = "cak", spritePath = "CakeMod/Resources/TinyBullet/Idle/tinybullet_idle_001.png", acceptText = "Let's get explodey!", declineText = "I'm fine.", OnAccept = new Action <PlayerController, GameObject>(TinyBullet.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(TinyBullet.CanUse), offset = new Vector3(40f, 40f, 51.3f), talkPointOffset = new Vector3(1f, 1f, 0f), isToggle = false, isBreachShrine = true, interactableComponent = typeof(TinyBulletInteractable) }; GameObject gameObject = ShrineFactory.Build(); gameObject.AddAnimation("idle", "CakeMod/Resources/TinyBullet/Idle/", 2, NPCBuilder.AnimationType.Idle, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk", "CakeMod/Resources/TinyBullet/Talk/", 6, NPCBuilder.AnimationType.Talk, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk_start", "CakeMod/Resources/TinyBullet/Talk/", 6, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("do_effect", "CakeMod/Resources/TinyBullet/Talk/", 5, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); TinyBulletInteractable component = gameObject.GetComponent <TinyBulletInteractable>(); component.conversation = new List <string> { "Yoooo!", "Got out of that dungeon crawling stuff.", "Not that much to do up here.", "Wanna get booming?" }; gameObject.SetActive(false); } catch (Exception e) { Tools.Print(e); } }
// Token: 0x06000059 RID: 89 RVA: 0x0000480C File Offset: 0x00002A0C public static void Add() { try { ShrineFactory ShrineFactory = new ShrineFactory { name = "OldManBreach", modID = "cak", spritePath = "CakeMod/Resources/OldManBreach/oldman_idle_001.png", shadowSpritePath = "CakeMod/Resources/OldManBreach/oldman_shadow_001.png", acceptText = "It's a deal.", declineText = "I don't think I want what you're offering.", OnAccept = new Action <PlayerController, GameObject>(OldManBreach.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(OldManBreach.CanUse), offset = new Vector3(35f, 45f, 51.3f), talkPointOffset = new Vector3(1f, 2f, 0f), isToggle = false, isBreachShrine = true, interactableComponent = typeof(OldManBreachInteractable) }; GameObject gameObject = ShrineFactory.Build(); gameObject.AddAnimation("idle", "CakeMod/Resources/OldManBreach/oldman_idle", 4, NPCBuilder.AnimationType.Idle, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk", "CakeMod/Resources/OldManBreach/oldman_idle", 4, NPCBuilder.AnimationType.Talk, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk_start", "CakeMod/Resources/OldManBreach/oldman_idle", 4, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("do_effect", "CakeMod/Resources/OldManBreach/oldman_talk", 3, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); OldManBreachInteractable component = gameObject.GetComponent <OldManBreachInteractable>(); component.conversation = new List <string> { "Hey, you!", "It's dangerous to go alone!", "Take this!" }; gameObject.SetActive(false); } catch (Exception e) { Tools.Print(e); } }
// Token: 0x0600015C RID: 348 RVA: 0x0000D0B0 File Offset: 0x0000B2B0 public static void Add() { ShrineFactory shrineFactory = new ShrineFactory { name = "Breach Shrine", modID = "bot", text = "Please Select a Character", spritePath = "LostItems/NuclearThrone/NuclearThroneSprite/char_shrine_temp.png", acceptText = "Go to hang out", declineText = "No thanks", OnAccept = new Action <PlayerController, GameObject>(MoreBreachShrine.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(MoreBreachShrine.CanUse), offset = new Vector3(188.3f, 19.7f, 18.9f), talkPointOffset = new Vector3(0.75f, 1.5f, 0f), isToggle = false, isBreachShrine = true }; shrineFactory.Build(); }
// Token: 0x0600015C RID: 348 RVA: 0x0000D0B0 File Offset: 0x0000B2B0 public static void Add() { ShrineFactory shrineFactory = new ShrineFactory { name = "Test Breach Shrine", modID = "bot", text = "hi", spritePath = "LostItems/sprites/hmm.png", room = RoomFactory.BuildFromResource("LostItems/rooms/breachHangout.room").room, acceptText = "hi", declineText = "bye", OnAccept = new Action <PlayerController, GameObject>(BreachRoomShrine.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(BreachRoomShrine.CanUse), offset = new Vector3(0, 0, 0), talkPointOffset = new Vector3(0.75f, 1.5f, 0f), isToggle = false, isBreachShrine = true }; shrineFactory.Build(); }
// Token: 0x06000059 RID: 89 RVA: 0x0000480C File Offset: 0x00002A0C public static void Add() { ShrineFactory ShrineFactory = new ShrineFactory { name = "Deicide Shrine", modID = "BunnyMod", spritePath = "BunnyMod/Resources/DeicideShrine/dcdshrine_idle_001.png", shadowSpritePath = "BunnyMod/Resources/DeicideShrine/dcdshrine_shadow.png", acceptText = "I challenge fate. (Gives all artifacts)", declineText = "I don't challenge fate.", OnAccept = new Action <PlayerController, GameObject>(DeicideShrine.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(DeicideShrine.CanUse), offset = new Vector3(12.6875f, 21.9375f, 22.4375f), talkPointOffset = new Vector3(3f, 3f, 0f), isToggle = false, isBreachShrine = true, interactableComponent = typeof(DeicideShrineInteractible) }; GameObject gameObject = ShrineFactory.Build(); gameObject.AddAnimation("idle", "BunnyMod/Resources/DeicideShrine/", 2, NPCBuilder.AnimationType.Idle, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk", "BunnyMod/Resources/DeicideShrine/", 3, NPCBuilder.AnimationType.Talk, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("talk_start", "BunnyMod/Resources/DeicideShrine/", 4, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); gameObject.AddAnimation("do_effect", "BunnyMod/Resources/DeicideShrine/", 5, NPCBuilder.AnimationType.Other, DirectionalAnimation.DirectionType.None, DirectionalAnimation.FlipType.None); DeicideShrineInteractible component = gameObject.GetComponent <DeicideShrineInteractible>(); component.conversation = new List <string> { "Put yourself to the ultimate test?" }; component.conversationB = new List <string> { "What do you desire?" }; component.declineTextB = "I desire nothing more."; component.acceptTextB = "Make it stop...."; gameObject.SetActive(false); }
// Token: 0x0600015C RID: 348 RVA: 0x0000D0B0 File Offset: 0x0000B2B0 public static void Add() { ShrineFactory shrineFactory = new ShrineFactory { name = "Character Shrine Shrine", modID = "bot_nt", text = "Please Select a Character", spritePath = "LostItems/NuclearThrone/NuclearThroneSprite/char_shrine_temp.png", //room = RoomFactory.BuildFromResource("FrostAndGunfireItems/Resources/rooms/CharacterShrineRoom.room").room, acceptText = "Next Character", declineText = "This one's fine", OnAccept = new Action <PlayerController, GameObject>(CharacterShrine.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(CharacterShrine.CanUse), offset = new Vector3(188.3f, 16.7f, 18.9f), talkPointOffset = new Vector3(0.75f, 1.5f, 0f), isToggle = false, isBreachShrine = true }; shrineFactory.Build(); }
//Creates characters late to prevent conflict with custom loadouts and stuff public static void LateStart(Action <Foyer> orig, Foyer self) { orig(self); Tools.Print("Late start called"); if (hasInitialized) { return; } Tools.StartTimer("Initializing mod"); Loader.Init(); Franseis.Add(); RandomShrine.Add(); Tools.StopTimerAndReport("Initializing mod"); hasInitialized = true; Tools.Print($"Custom Character Mod v{version} Initialized", "00FF00", true); Tools.Print("Custom Characters Available:", "00FF00", true); foreach (var character in CharacterBuilder.storedCharacters) { Tools.Print(" " + character.Value.First.nameShort, "00FF55", true); } ShrineFactory.PlaceBreachShrines(); }
public static void Add() { ShrineFactory sf = new ShrineFactory() { name = "Franseis", modID = "cc", //text = "Randomize your stats and loadout?", spritePath = "CustomCharacters/resources/Franseis/Idle/fran_idle_001.png", shadowSpritePath = "CustomCharacters/resources/default_shrine_shadow_small.png", acceptText = "Lets get weird.", declineText = "No thanks.", OnAccept = Accept, OnDecline = null, CanUse = CanUse, offset = new Vector3(184.7f, 19.9f, 20.4f), talkPointOffset = new Vector3(12 / 16f, 24 / 16f, 0), isToggle = false, isBreachShrine = true, interactableComponent = typeof(FranseisInteractable) }; //register shrine var obj = sf.Build(); obj.AddAnimation("idle", "CustomCharacters/resources/Franseis/Idle/", 5, NPCBuilder.AnimationType.Idle); obj.AddAnimation("talk", "CustomCharacters/resources/Franseis/Talk/", 10, NPCBuilder.AnimationType.Talk); obj.AddAnimation("talk_start", "CustomCharacters/resources/Franseis/StartTalk/", 7, NPCBuilder.AnimationType.Other); obj.AddAnimation("do_effect", "CustomCharacters/resources/Franseis/DoEffect/", 10, NPCBuilder.AnimationType.Other); var npc = obj.GetComponent <FranseisInteractable>(); npc.conversation = new List <string>() { "The name's Franseis.", "Crazy eyes over there is my uncle.", "Wanna get weird?" }; obj.SetActive(false); }
// Token: 0x0600015C RID: 348 RVA: 0x0000D0B0 File Offset: 0x0000B2B0 public static void Add() { ShrineFactory shrineFactory = new ShrineFactory { name = "Proto Chest", modID = "bot_nt", text = "Store A weapon", spritePath = "LostItems/NuclearThrone/NuclearThroneSprite/chest/proto_chest.png", room = RoomFactory.BuildFromResource("LostItems/NuclearThrone/NuclearThroneRooms/proto_chest_room.room").room, acceptText = "Store Current Gun", declineText = "Close Chest", OnAccept = new Action <PlayerController, GameObject>(ProtoChest.Accept), OnDecline = null, CanUse = new Func <PlayerController, GameObject, bool>(ProtoChest.CanUse), offset = new Vector3(-1f, 0f, 0), //offset = new Vector3(189.3f, 13.7f, 18.9f), talkPointOffset = new Vector3(0f, 3f, 0f), isToggle = false, isBreachShrine = false }; shrineFactory.Build(); }
// Token: 0x0600001B RID: 27 RVA: 0x000028E8 File Offset: 0x00000AE8 public override void Start() { ItemBuilder.Init(); FakePrefabHooks.Init(); HookYeah.Init(); GungeonAPI.GungeonAP.Init(); FakePrefabHooks.Init(); GungeonAPI.Tools.Init(); ItemAPI.FakePrefabHooks.Init(); GungeonAP.Init(); FakePrefabHooks.Init(); ShrineFactory.Init(); ShrineFactory.PlaceBnyBreachShrines(); TestActiveItem.Init(); VengeanceVlone.Init(); ShatterEffect.Initialise(); ShrineOfTheLeadLord.Add(); ArtifactOfRevenge.Init(); ArtifactOfAttraction.Init(); ArtifactOfGlass.Init(); ArtifactOfAvarice.Init(); ArtifactOfDaze.Init(); ArtifactOfPrey.Init(); ArtifactOfMegalomania.Init(); ArtifactOfFodder.Init(); ArtifactOfBolster.Init(); ArtifactOfHatred.Init(); ArtifactOfEnigma.Init(); ArtifactOfSacrifice.Init(); ModuleCannon.Add(); ModuleChip.Init(); ModuleAmmoEater.Init(); ModuleDamage.Init(); ModuleClipSize.Init(); ModuleFireRate.Init(); ModuleReload.Init(); T2ModuleYV.Init(); T2ModuleCloak.Init(); T2ModulePierce.Init(); T2ModuleBounce.Init(); T2ModuleEjector.Init(); T2ModuleHoming.Init(); T3ModuleRocket.Init(); T3ModuleInaccurate.Init(); T3ModuleColossus.Init(); T3ModuleOverload.Init(); T3ModuleReactive.Init(); CorruptModuleSensor.Init(); CorruptModuleAccuracy.Init(); CorruptModuleLoose.Init(); CorruptModuleCoolant.Init(); CorruptModuleDamage.Init(); //Gimmick Heavy Guns TrainGun.Add(); LastStand.Add(); SoulStealer.Add(); Commiter.Add(); Pickshot.Add(); AerialBombardment.Add(); //Mimic Guns Casemimic.Add(); ABlasphemimic.Add(); Gunthemimic.Add(); Mimikey47.Add(); //Mechanical Guns ThunderStorm.Add(); CaptainsShotgun.Add(); EnforcersLaw.Add(); TimeZoner.Add(); ArtemissileRocket.Add(); BigNukeGun.Add(); BoxGun.Add(); REXNeedler.Add(); FlakCannon.Add(); GunslayerShotgun.Add(); RogueLegendary.Add(); //Otherworldly Guns HarvestersShotgun.Add(); PrismaticShot.Add(); Starbounder.Add(); ReaverClaw.Add(); ReaverHeart.Add(); ChaosRevolver.Add(); ChaosRevolverSynergyForme.Add(); ChaosHand.Add(); NuclearTentacle.Add(); //Outright Wacky weaponry OppressorsCrossbow.Add(); GunslayerGauntlets.Add(); SuperFlakCannon.Add(); MithrixHammer.Add(); TungstenCube.Add(); CoolStaff.Add(); ASwordGun.Add(); AGunSword.Add(); //Dumb Guns StickGun.Add(); BulletCaster.Add(); SausageRevolver.Add(); BloatedRevolver.Add(); PocketPistol.Add(); BrokenGunParts.Add(); IDPDFreakGun.Add(); FakeShotgun.Add(); //Life Living PersonalGuard.Init(); GlockOfTheDead.Init(); LizardBloodTransfusion.Init(); AbsoluteZeroPotion.Init(); MatrixPotion.Init(); GreandeParasite.Init(); //Joke Items SpeckOfDust.Init(); LastResort.Init(); JokeBook.Init(); //Mechanical Items OnPlayerItemUsedItem.Init(); BloodyTrigger.Init(); StaticCharger.Init(); //Bullet Type Items ResurrectionBullets.Init(); GuillotineRounds.Register(); LunarGlassRounds.Init(); ReaverRounds.Init(); SimpBullets.Init(); //Cursed Items Risk Reward Items LeadHand.Init(); JammedGuillotine.Init(); CrownOfBlood.Init(); RTG.Init(); DGrenade.Init(); MalachiteCrown.Init(); AncientWhisper.Init(); AncientEnigma.Init(); LunarGlassSyringe.Init(); SlayerKey.Init(); DamocleanClip.Init(); DeathMark.Init(); TheMonolith.Init(); LoopMarker.Init(); BulletRelic.Init(); GodLifesGift.Init(); //Defense Items SuperShield.Init(); GunslayerHelmet.Init(); FreezeLighter.Init(); //Stats Up Microscope.Init(); EmpoweringCore.Init(); BookOfEconomics.Register(); CounterChamber.Register(); Infusion.Init(); MinigunRounds.Register(); //Otherworldly SpiritOfStagnation.Init(); SoulInAJar.Init(); AmmoRepurposer.Init(); SkyGrass.Init(); ChaosChamber.Init(); ChaosGodsWrath.Register(); Coolrobes.Init(); //Companion Items/CompanionAI Claycord.Init(); Blastcore.Init(); ClayCordStatue.ClayBuildPrefab(); GunSoulBox.Init(); GunSoulBlue.BlueBuildPrefab(); GunSoulGreen.GreenBuildPrefab(); GunSoulRed.RedBuildPrefab(); GunSoulYellow.YellowBuildPrefab(); GunSoulPink.PinkBuildPrefab(); GunSoulPurple.PurpleBuildPrefab(); PointZero.Init(); BabyGoodModular.Init(); //Guon Stones GuonPebble.Init(); ChaosGuonStone.Init(); BulluonStone.Init(); DynamiteGuon.Init(); GuonGeon.Init(); //Ammolets LunarGlassAmmolet.Init(); ReaverAmmolet.Init(); //TableTechs TableTechReload.Init(); TableTechBomb.Init(); TableTechSoul.Init(); TableTechKnife.Init(); //OP??? BunnysFoot.Init(); //Random Weird Shit that just kinda exists GungeonInvestment.Init(); BrokenLockpicker.Init(); Dejammer.Init(); Keylocator.Init(); Keyceipt.Init(); FrequentFlyer.Init(); //Vengeance.Init(); TestItemBNY.Init(); DragunHeartThing.Init(); MasteryReplacementRNG.InitDungeonHook(); SynergyFormInitialiser.AddSynergyForms(); InitialiseSynergies.DoInitialisation(); BunnyModule.Log(BunnyModule.MOD_NAME + " v" + BunnyModule.VERSION + " started successfully.", BunnyModule.TEXT_COLOR); }
public override void Start() { ItemAPI.FakePrefabHooks.Init(); GungeonAPI.FakePrefabHooks.Init(); ItemAPI.EnemyBuilder.Init(); ItemAPI.BossBuilder.Init(); ItemAPI.EnemyTools.Init(); SaveAPI.SaveAPIManager.Setup("cel"); ItemBuilder.Init(); Hooks.Init(); GungeonAPI.Tools.Init(); ShrineFactory.Init(); Library.DefineGoops(); Library.InitVacuumProjectiles(); SpecialBlankModificationItem.InitHooks(); var forgeDungeon = DungeonDatabase.GetOrLoadByName("Base_Forge"); hellDrag = forgeDungeon.PatternSettings.flows[0].AllNodes.Where(node => node.overrideExactRoom != null && node.overrideExactRoom.name.Contains("EndTimes")).First().overrideExactRoom.placedObjects.Where(ppod => ppod != null && ppod.nonenemyBehaviour != null).First().nonenemyBehaviour.gameObject.GetComponentsInChildren <HellDragZoneController>()[0]; forgeDungeon = null; MultiActiveReloadManager.SetupHooks(); //--- PrinceOfTheJammed.Init(); //--- PoisonGeistEnemy.Init(); //--- RiskyAmmoCrate.Register(); TheBullet.Init(); //1 ACTIVE 1 FunkyBullets.Init(); //2 PASSIVE 1 NeedleBullets.Init(); //3 PASSIVE 2 ImpsHorn.Init(); //4 PASSIVE 3 SnareBullets.Init(); //5 PASSIVE 4 CorruptHeart.Init(); //6 ACTIVE 2 ShockingBattery.Init(); //7 ACTIVE 3 Dispenser.Add(); //8 GUN 1 IronHeart.Init(); //9 ACTIVE 4 VoidBottle.Init(); //10 ACTIVE 5 SprunButBetter.Init(); //11 PASSIVE 5 PetRock.Init(); //12 PASSIVE 6 RGG.Add(); //13 GUN 2 Phazor.Add(); //14 GUN 3 Tesla.Add(); //15 GUN 4 Fallout.Add(); //16 GUN 5 SuperCrate.Init(); //17 ACTIVE 6 SteamSale.Init(); //18 PASSIVE 7 EmptyBullets.Init(); //19 PASSIVE 8 Sawblade.Init(); // 20 PASSIVE 9 Matchbox.Init(); //21 ACTIVE 7 ACMESupply.Init(); //22 ACTIVE 8 Mininomicon.Init(); //23 PASSIVE 10 TerribleAmmoBag.Init(); //24 PASSIVE 11 Questlog.Init(); //25 ACTIVE 9 Gunlust.Init(); //26 PASSIVE 12 BananaJamHands.Init(); //27 PASSIVE 13 LiteralTrash.Init(); // MISC 1 Enemies.SpectreBehav(); DaggerSpray.Init(); // 28 PASSIVE 14 AuricVial.Init(); //29 PASSIVE 15 StakeLauncher.Add(); //30 GUN 6 DragunClaw.Init(); //31 PASSIVE 16 DragunWing.Init(); //32 PASSIVE 17 DragunHeart.Init(); //33 PASSIVE 18 DragunSkull.Init(); //34 PASSIVE 19 GravityWell.Init(); //35 PASSIVE 20 WaterCup.Init(); //36 ACTIVE 10 SpinelTonic.Init(); //37 ACTIVE 11 DDR.Init(); //38 PASSIVE 21 CitrineAmmolet.Init(); // 39 PASSIVE 22 MalachiteAmmolet.Init(); //40 PASSIVE 23 GlassHeart.Init(); // 41 PASSIVE 24 AccursedShackles.Init(); // 42 PASSIVE 25 Hooks.BuffGuns(); //43 GUN 7 D6.Init(); //44 ACTIVE 12 TimeKeepersPistol.Add(); ALiteralRock.Add(); // 47 GUN 8 FloopBullets.Init(); // 48 PASSIVE 26 EliteBullets.Init(); // 49 PASSIVE 27 Enemies.AmmoDotBehav(); FireworkRifle.Add(); // 50 GUN 9 Skeleton.Add(); // 51 GUN 10 Incremental.Add(); // 52 GUN 11 VenomRounds.Init(); // 53 PASSIVE 28 BismuthAmmolet.Init(); //54 PASSIVE 29 MercuryAmmolet.Init(); //55 PASSIVE 30 BashelliskRifle.Add(); //56 GUN 12 MarkOfWind.Init(); //57 PASSIVE 31 PrimeSaw.Add(); //58a GUN 13a PrimeVice.Add(); //58b GUN 13b PrimeLaser.Add(); //58c GUN 13c PrimeCannon.Add(); //58d GUN 13d RussianRevolver.Add(); //59 GUN 14 ImpactRounds.Init(); //60 PASSIVE 31 DroneController.Add(); //61 GUN 15 Drone.Add(); Drone2.Add(); //D.E.A.T.H. Set LittleDroneBuddy.Init(); //62 PASSIVE 32 DroneBuddy1Gun.Add(); //62a TriggerPulseDrone.Init(); //63 PASSIVE 33 TriggerDroneGun.Add(); //63a VenomSpitDrone.Init(); //64a PASSIVE 34 VenomSpitDGun.Add(); //64b DEATHGun.Add(); //65a GUN 16 DEATHDrone.Add(); //65b //True Gunpowder Set PrimalNitricAcid.Init(); //66 PASSIVE 35 PrimalCharcoal.Init(); //67 PASSIVE 36 PrimalSulfur.Init(); //68 PASSIVE 37 PrimalSaltpeter.Init(); //69 PASSIVE 38 TrueGunpowder.Init(); //70 PASSIVE 39 // SpiritOfTheDragun.Add(); //71 GUN 17 BilliardBouncer.Add(); //72 GUN 18 ElectricBass.Add(); //73 GUN 19 IonFist.Add(); //74 GUN 20 NenFist.Add(); //74a EvilCharmedBow.Add(); ReloadedRifle.Add(); //75 GUN 21 AK94.Add(); //76 GUN 22 LeakingSyringe.Init(); //77 PASSIVE 40 Holoprinter.Init(); //78 ACTIVE 14 Günther.Add(); //79 GUN 23 AK141.Add(); //80 GUN 24 AK188.Add(); //81 GUN 25 InfiniteAK.Add(); //82 GUN 26 // ---AltarOfKaliber.Init(); BrokenAltar.Init(); PlasmaCannon.Add(); //85 GUN 27 TheLastChamber.Add(); //86 GUN 28 // ---BulletDog.Init();//ENEMY 1 //--- HunterKin.Init();//ENEMY 2 AutoShotgun.Add();//87 GUN 29 // ---CrownOfTheChosen.Init(); // ---CrownChanger.InitCrowns(); Vacuum.Add(); //88 GUN 30 StickyLauncher.Add(); //89 GUN 31 SupportContract.Init(); //90 ACTIVE 15 PanicPistol.Add(); //91 GUN 32 NineBarreledGun.Add(); //92 GUN 33 //---Ak_hillesHeel.Init(); //--- TestTargettingSystem.Init(); SympathyBullets.Init(); //93 PASSIVE 41 //--- RefractedGlass.Init(); BloatedRounds.Init(); //94 PASSIVE 42 EyesOfStone.Init(); //95 PASSIVE 43 ShellBank.Init(); //96 PASSIVE 44 //Katana.Add(); /* * HairGel.Init(); * IgnitionPowder.Init(); * Magnorbs.Add(); // need to do the orbiting code * PoisonPoltergeist.Init(); * * PsiMarker.Init(); //Still need to fix this lol, specifically SpecialOrbitals needs to be fixed. * PsiScales.Add(); * PsiFocus.Init(); * //Prob wok on Psi Scales tomorrow. * SliverBeam.Add(); */ GoldenRecord.Init();//97 ACTIVE 16 //--- MunitionsChestController.Init(); if (SteamUsername != string.Empty) { SteamUsername = SteamFriends.GetPersonaName(); CrownChanger.Change(); } //SPINEL TONIC BY TankTheta! //Bismuth Ammolet sprite by TankTheta! //Spirit spride by TankTheta! //Thanks to ExplosivePanda for helping with the code for Soul Forge DualGunsManager.AddDual(); HoveringGunsAdder.AddHovers(); SynergyFormAdder.AddForms(); foreach (AdvancedSynergyEntry syn in GameManager.Instance.SynergyManager.synergies) { if (syn.NameKey == "#IRONSHOT") { syn.OptionalGunIDs.Add(ETGMod.Databases.Items["billiard_bouncer"].PickupObjectId); } } GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.ExtravaganceSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.RulebookSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.SturdyAmmoSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.LeadWeightSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.DragunRoarSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.IronManSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.EldritchLoveSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.TwoForOneSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.CriticalMassSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.OverclockedSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.SovietSkillsSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.CommunistIdealsSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.LuckySpinSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.TestGunSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.DEATHGunSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.TrueGunpowderSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.GoldenSpinSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.LoveLeechSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.JajankenSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.AllOutOfLoveSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.BleedingEdgeSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.AbsoluteChaosSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.ShakenSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.CallingInTheHeavySupportSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.BloodlessSyn() }).ToArray <AdvancedSynergyEntry>(); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new CelSynergies.KvotheKingKillerSyn() }).ToArray <AdvancedSynergyEntry>(); /* --- GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] * { * new CelSynergies.VacuumChamberSyn() * }).ToArray<AdvancedSynergyEntry>(); */ ETGModConsole.Commands.AddGroup("cel", args => { }); //---ETGModConsole.Commands.GetGroup("cel").AddUnit("crown_override", this.CrownOverride); //---ETGModConsole.Commands.GetGroup("cel").AddUnit("mchest", this.SpawnMChest); ETGModConsole.Commands.GetGroup("cel").AddUnit("toggle_eyestrain", ToggleEyeStrain); //--- ETGModConsole.Commands.GetGroup("cel").AddUnit("get_risk_value", GetRiskStatValue); Log($"{Modname} v{Version} started successfully.", Color); Log($"Link to Changelog https://pastebin.com/0LeBBa57", Color); }
public override void Start() { try { ZipFilePath = this.Metadata.Archive; metadata = this.Metadata.Directory; metadataARCHIVE = this.Metadata.Archive; FilePath = this.Metadata.Directory + "/rooms"; path = "CakeMod.Resources.TurtSprites."; assembly = Assembly.GetExecutingAssembly(); list = new List <Texture2D>(); foreach (var item in assembly.GetManifestResourceNames()) { if (!item.EndsWith(".png")) { continue; } if (item.StartsWith(path)) { list.Add(ResourceExtractor.GetTextureFromResource(item)); } } ETGModConsole.Log(list.Count.ToString()); cosmoSpriteSheet = ResourceExtractor.GetTextureFromResource(cosmoSpriteSheetName); FloorSheet = ResourceExtractor.GetTextureFromResource(StringFloorSheet); FakePrefabHooks.Init(); ItemBuilder.Init(); EnemyTools.Init(); EnemyBuilder.Init(); Hooks.Init(); BossBuilder.Init(); SpecialBlankModificationItem.InitHooks(); ItemsMod.Strings = new AdvancedStringDB(); EasyGoopDefinitions.DefineDefaultGoops(); Cake.Init(); CircularKing.Init(); KinglyBullets.Init(); LockOfTheJammed.Init(); CakeBullets.Init(); BleakBullets.Init(); Jankan.Init(); Robohead.Init(); HatShells.Init(); DumbBullets.Init(); ControlledBullets.Init(); David.Init(); HeadCrab.Init(); GunJester.Init(); Waffle.Init(); BladeBullets.Init(); TheFool.Init(); BowlerHat.Init(); Depresso.Init(); FleshCake.Init(); BountyPoster.Init(); OneReverse.Init(); StrangeEffigy.Init(); ConcealedTreasure.Init(); Winpetster.Init(); RookGuonStone.Init(); IceOgreHead.Init(); MysteriousIdol.Init(); GlowingWomb.Init(); Honkhorn.Init(); HeartyLocket.Init(); FunnyHat.Init(); Radio.Init(); ChocolateBar.Init(); CluwneBullets.Init(); BowlerRainbowDust.Init(); StrangeArrow.Init(); testingitem.Init(); TestItem.Init(); glitchammolet.Init(); testbarrel.Init(); BlobHeart.Init(); WebAmmolet.Init(); StarNinja.Init(); PoisonBomb.Init(); RoboticHeart.Init(); ApprenticeScroll.Init(); amogus.Init(); ArmouredKey.Init(); BabyGoodChamber.Init(); SpringlockSuit.Init(); BirthdayCandle.Init(); DeadlyInsanity.Init(); Keysing.Init(); BabyGoodLovebulon.Init(); FreddyPizza.Init(); CultistHelm.Init(); Lime.Init(); CurseItemTest.Init(); GoopCurse.Init(); Jammolet.Init(); HoloProjection.Init(); Clumsy.Init(); MiniShroom.Init(); DrawnChamber.Init(); BabyGoodMagnum.Init(); SewingKit.Init(); PocketRedChest.Init(); PocketBlackChest.Init(); PocketGreenChest.Init(); PocketBlueChest.Init(); PocketBrownChest.Init(); ChestFriend.Init(); PricklyPear.Init(); StrangePotion.Init(); DevilContract.Init(); Hellfire.Init(); BloomingHeart.Init(); RatRound.Init(); FrozenFrog.Init(); BabyGoodApiary.Init(); ImmortalSmoke.Init(); UFO.Init(); VoodooHeart.Init(); GunslingKingRequest.Init(); HappyLad.Init(); Fez.Init(); NecromancerBook.Init(); PlatinumJunk.Init(); ToxicArmour.Init(); Notebook.Init(); TestJammedBullets.Init(); BulletKinBullets.Init(); LichHat.Init(); Skelebot.Init(); CosmoStatue.CosmoBuildPrefab(); LichHat2.Init(); PickleJar.Init(); Jawbreaker.Init(); Rift.Init(); SaveDisk.Init(); d20.Init(); ThirdEye.Init(); GhostlyBody.Init(); Butter.Init(); Cookie.Init(); JunkChestHandler.TheHooks(); CarpenterHandbook.Init(); Ipecac.Init(); Taurus.Init(); LifeLemon.Init(); ArmourGuonStone.Init(); JammedGunParts.Init(); CloningVat.Init(); DevilKey.Init(); TurtsMelon.Init(); SpareShell.Init(); FungalTurtle.Init(); PBullets.Init(); OddBullets.Init(); BloodTether.Init(); TableTechHolographic.Init(); NavySealCopypasta.Init(); RuneChalk.Init(); //RuneChalk2.Init(); Synergun.Add(); JackpotOfGreed.Add(); NoSpriteFound.Add(); boneblaster.Add(); KingGun.Add(); GungeonGun.Add(); Glockamole.Add(); CursedKatana.Add(); Blox.Add(); Terragun.Add(); SpongeGun.Add(); Horn.Add(); IHateGuns.Add(); gamefreeze.Add(); Bananastaff.Add(); Blackpistol.Add(); boomstick.Add(); SydneySleeper.Add(); Explodergun.Add(); Scrapgun.Add(); tinyshotgun.Add(); GunResource.Add(); Scrapper.Add(); Megaphone.Add(); MissGun.Add(); Drawn47.Add(); PirateShotgunKinGun.Add(); AnArrowkin.Add(); Timerase.Add(); Knife.Add(); firegun.Add(); Television.Add(); //Dupligun.Add(); //OneShot.Add(); MoneyDebuffEffect.Init(); money22DebuffEffect.Init(); hegemonyDebuffEffect.Init(); moneydebuff3DebuffEffect.Init(); DemonBuff.Init(); CasingBullets.Init(); UnlockHookInators.Init(); InkBooklet.Init(); Doodlelet.Init(); KoolAidMan.Init(); ammomimic.Init(); BulletBishop.Init(); FlameChamber.Init(); KillShrine.Init(); InflamedEye.Init(); FlameClone.Init(); Jesterlet.Init(); Mimekin.Init(); RoyalJesterlet.Init(); DrawnKin.Init(); HoveringGunsAdder.AddHovers(); CakeGunMods.Init(); BreachShopTool.AddBaseMetaShopTier(ETGMod.Databases.Items["Cultist Helm"].PickupObjectId, 80, ETGMod.Databases.Items["Rainbowllets"].PickupObjectId, 25, ETGMod.Databases.Items["Reloading Waffle"].PickupObjectId, 75, null); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new SyngergraceThisMod.HatSynergy(), new SyngergraceThisMod.IceSynergy(), new SyngergraceThisMod.RainbowSynergy(), new SyngergraceThisMod.ChaosSynergy(), new SyngergraceThisMod.VoodooSynergy(), //new SyngergraceThisMod.OldSynergy(), new SyngergraceThisMod.LoveSynergy(), new SyngergraceThisMod.SoundSynergy(), }).ToArray <AdvancedSynergyEntry>(); //TinyBullet.Add(); //OldManBreach.Add(); //ArtistShrine.Add(); Chester.Add(); //LesGo.Add(); StaticReferences.Init(); StaticReferences2.Init(); DungeonHandlerTrueForm.Init(); ShrineFakePrefabHooks.Init(); ShrineFactory.Init(); OldShrineFactory.Init(); SaveAPIManager.Setup("cak"); ShrineFactory.PlaceBreachShrines(); ETGModConsole.Log("King's Items is up and running."); SyngergraceThisMod.Synergies(); SynergyFormInitialiser.AddSynergyForms(); ModPrefabs.InitCustomPrefabs(); ModRoomPrefabs.InitCustomRooms(); FloorNameDungeonFlows.InitDungeonFlows(); DoodleDungeon.InitCustomDungeon(); ETGModConsole.Commands.AddUnit("daflow", (args) => { DungeonHandlerTrueForm.debugFlow = !DungeonHandlerTrueForm.debugFlow; string status = DungeonHandlerTrueForm.debugFlow ? "enabled" : "disabled"; string color = DungeonHandlerTrueForm.debugFlow ? "00FF00" : "FF0000"; ETGModConsole.Log($"da flow is {status}", false); }); List <string> SpareVFXPaths = new List <string>() { "CakeMod/Resources/BulletBishop/incense_teleport_poof_001", "CakeMod/Resources/BulletBishop/incense_teleport_poof_002", "CakeMod/Resources/BulletBishop/incense_teleport_poof_003", "CakeMod/Resources/BulletBishop/incense_teleport_poof_004", "CakeMod/Resources/BulletBishop/incense_teleport_poof_005", "CakeMod/Resources/BulletBishop/incense_teleport_poof_006", "CakeMod/Resources/BulletBishop/incense_teleport_poof_007", "CakeMod/Resources/BulletBishop/incense_teleport_poof_008", }; GameObject spareVFX = VFXLibrary.CreateVFX("IncensePoof", SpareVFXPaths, 1, new IntVector2(10, 1), tk2dBaseSprite.Anchor.LowerCenter, true, 0.18f, 0, null); EasyVFXDatabase.IncenseVFX = spareVFX; List <string> SpareVFXPaths3 = new List <string>() { "CakeMod/Resources/FlameChamber/flamepoof_001", "CakeMod/Resources/FlameChamber/flamepoof_002", "CakeMod/Resources/FlameChamber/flamepoof_003", "CakeMod/Resources/FlameChamber/flamepoof_004", "CakeMod/Resources/FlameChamber/flamepoof_005", }; GameObject spareVFX3 = VFXLibrary.CreateVFX("FlamePoof", SpareVFXPaths3, 7, new IntVector2(10, 1), tk2dBaseSprite.Anchor.LowerCenter, true, 0.18f, 0, null); EasyVFXDatabase.FlameVFX = spareVFX3; List <string> SpareVFXPaths2 = new List <string>() { "CakeMod/Resources/BloodyLightning/blood1", "CakeMod/Resources/BloodyLightning/blood2", "CakeMod/Resources/BloodyLightning/blood3", "CakeMod/Resources/BloodyLightning/blood4", "CakeMod/Resources/BloodyLightning/blood5", "CakeMod/Resources/BloodyLightning/blood6", "CakeMod/Resources/BloodyLightning/blood7", "CakeMod/Resources/BloodyLightning/blood8", "CakeMod/Resources/BloodyLightning/blood9", "CakeMod/Resources/BloodyLightning/blood10", }; GameObject spareVFX2 = VFXLibrary.CreateVFX("String", SpareVFXPaths2, 16, new IntVector2(10, 1), tk2dBaseSprite.Anchor.LowerCenter, true, 0.18f, 0, null); EasyVFXDatabase.StringVFX = spareVFX2; //DoodleDungeon.InitCustomDungeon(); } catch (Exception e) { ETGModConsole.Log(e.ToString(), false); } }
// Token: 0x0600001B RID: 27 RVA: 0x000028E8 File Offset: 0x00000AE8 public override void Start() { ItemAPI.Tools.Init(); StaticReferences.Init(); ShrineFakePrefabHooks.Init(); ShrineFactory.Init(); BreachShopTool.DoSetup(); BossBuilder.Init() ; MultiActiveReloadManager.SetupHooks(); ItemBuilder.Init(); HookYeah.Init(); //FakePrefabHooks.Init(); GungeonAPI.Tools.Init(); //GungeonAP.Init(); //FakePrefabHooks.Init(); //ShrineFactory.Init(); //ShrineFactory.PlaceBnyBreachShrines(); //TestActiveItem.Init(); //VengeanceVlone.Init(); //ShatterEffect.Initialise(); ShrineOfTheLeadLord.Add(); ChaosCorruptionShrine.Add(); PleaseForgiveMe.Add(); BunnyModule.Strings = new AdvancedStringDB(); //SpecialDungeon.Init(); EnemyBuilder.Init(); HooksEnemy.Init(); ToolsEnemy.Init(); ArtifactOfRevenge.Init(); ArtifactOfAttraction.Init(); ArtifactOfGlass.Init(); ArtifactOfAvarice.Init(); ArtifactOfDaze.Init(); ArtifactOfPrey.Init(); ArtifactOfMegalomania.Init(); ArtifactOfFodder.Init(); ArtifactOfBolster.Init(); ArtifactOfEnigma.Init(); ArtifactOfSacrifice.Init(); ArtifactOfFraility.Init(); //ArtifactOfParanoia.Init(); /* * ModuleCannon.Add(); * ModuleChip.Init(); * ModuleAmmoEater.Init(); * ModuleDamage.Init(); * ModuleClipSize.Init(); * ModuleFireRate.Init(); * ModuleReload.Init(); * T2ModuleYV.Init(); * T2ModuleCloak.Init(); * T2ModulePierce.Init(); * T2ModuleBounce.Init(); * T2ModuleEjector.Init(); * T2ModuleHoming.Init(); * T3ModuleRocket.Init(); * T3ModuleInaccurate.Init(); * T3ModuleColossus.Init(); * T3ModuleOverload.Init(); * T3ModuleReactive.Init(); * CorruptModuleSensor.Init(); * CorruptModuleAccuracy.Init(); * CorruptModuleLoose.Init(); * CorruptModuleCoolant.Init(); * CorruptModuleDamage.Init(); */ //Gimmick Heavy Guns TrainGun.Add(); LastStand.Add(); SoulStealer.Add(); Commiter.Add(); Pickshot.Add(); AerialBombardment.Add(); WarningShot.Add(); //Mimic Guns Casemimic.Add(); ChambemimicGun.Add(); ABlasphemimic.Add(); Gunthemimic.Add(); Mimikey47.Add(); //Mechanical Guns MatterTranslocator.Add(); ThunderStorm.Add(); CaptainsShotgun.Add(); EnforcersLaw.Add(); TimeZoner.Add(); ArtemissileRocket.Add(); BigNukeGun.Add(); BoxGun.Add(); REXNeedler.Add(); FlakCannon.Add(); GunslayerShotgun.Add(); RogueLegendary.Add(); //Otherworldly Guns HarvestersShotgun.Add(); PrismaticShot.Add(); Starbounder.Add(); ReaverClaw.Add(); ReaverHeart.Add(); ChaosRevolver.Add(); ChaosRevolverSynergyForme.Add(); ChaosHand.Add(); NuclearTentacle.Add(); SteveStaff.Add(); //Outright Wacky weaponry Valkyrie.Add(); OppressorsCrossbow.Add(); GunslayerGauntlets.Add(); SuperFlakCannon.Add(); MithrixHammer.Add(); TungstenCube.Add(); CoolStaff.Add(); ASwordGun.Add(); AGunSword.Add(); Microwave.Add(); //Dumb Guns StickGun.Add(); //BulletCaster.Add(); SausageRevolver.Add(); BloatedRevolver.Add(); PocketPistol.Add(); BrokenGunParts.Add(); IDPDFreakGun.Add(); FakeShotgun.Add(); Bugun.Add(); //Life Living PersonalGuard.Init(); GlockOfTheDead.Init(); LizardBloodTransfusion.Init(); AbsoluteZeroPotion.Init(); MatrixPotion.Init(); GreandeParasite.Init(); //Joke Items SpeckOfDust.Init(); LastResort.Init(); JokeBook.Init(); //Mechanical Items OnPlayerItemUsedItem.Init(); StaticCharger.Init(); //Bullet Type Items ResurrectionBullets.Init(); GuillotineRounds.Init(); LunarGlassRounds.Init(); ReaverRounds.Init(); SimpBullets.Init(); //Cursed Items Risk Reward Items LeadHand.Init(); JammedGuillotine.Init(); GestureOfTheJammed.Init(); CrownOfBlood.Init(); RTG.Init(); DGrenade.Init(); MalachiteCrown.Init(); AncientWhisper.Init(); AncientEnigma.Init(); LunarGlassSyringe.Init(); SlayerKey.Init(); DamocleanClip.Init(); DeathMark.Init(); TheMonolith.Init(); LoopMarker.Init(); BulletRelic.Init(); GodLifesGift.Init(); BloodGoldRing.Init(); //Defense Items SuperShield.Init(); GunslayerHelmet.Init(); FreezeLighter.Init(); //Stats Up Microscope.Init(); EmpoweringCore.Init(); BookOfEconomics.Init(); CounterChamber.Init(); Infusion.Init(); MinigunRounds.Init(); //Otherworldly AstralCounterweight.Init(); SpiritOfStagnation.Init(); SoulInAJar.Init(); AmmoRepurposer.Init(); ZenithDesign.Init(); ChaosGodsWrath.Init(); SkyGrass.Init(); ChaosChamber.Init(); ChaosHammer.Init(); BloodyTrigger.Init(); Coolrobes.Init(); //Companion Items/CompanionAI //Claycord.Init(); Blastcore.Init(); //ClayCordStatue.ClayBuildPrefab(); GunSoulBox.Init(); GunSoulBlue.BlueBuildPrefab(); GunSoulGreen.GreenBuildPrefab(); GunSoulRed.RedBuildPrefab(); GunSoulYellow.YellowBuildPrefab(); GunSoulPink.PinkBuildPrefab(); GunSoulPurple.PurpleBuildPrefab(); PointZero.Init(); //BabyGoodModular.Init(); //Guon Stones GuonPebble.Init(); ChaosGuonStone.Init(); BulluonStone.Init(); DynamiteGuon.Init(); GuonGeon.Init(); //Ammolets LunarGlassAmmolet.Init(); ReaverAmmolet.Init(); //TableTechs TableTechReload.Init(); TableTechBomb.Init(); TableTechSoul.Init(); TableTechKnife.Init(); //OP??? BunnysFoot.Init(); //Random Weird Shit that just kinda exists GungeonInvestment.Init(); BrokenLockpicker.Init(); Dejammer.Init(); Keylocator.Init(); Keyceipt.Init(); FrequentFlyer.Init(); Death.Add(); Taxes.Add(); Lacon1Scrap.Init(); Lacon1.Add(); Lacon2.Add(); Lacon3.Add(); Lacon4.Add(); Lacon5.Add(); Lacon6.Add(); //Vengeance.Init(); TestItemBNY.Init(); DragunHeartThing.Init(); MasteryReplacementRNG.InitDungeonHook(); SynergyFormInitialiser.AddSynergyForms(); InitialiseSynergies.DoInitialisation(); //BunnyEnemies.InitPrefabs(); //AbyssKinPlease.Init(); //AbyssShotgunner.Init(); ChaosBeing.Init(); ChaosBeingLarge.Init(); //DopplegamnerClone.Init(); // AncientWhisperInfinite.Init(); CursedPearl.Init(); RewardCrown.Init(); ChaosMalice.Add(); ChaosEmblem.Init(); //Curse2Emblem.Init(); DeathsDebt.Init(); SteadyShotSniper.Add(); TheStranger.Init(); //TheStranger.Init(); //AdrenalineAmmolet.Init(); //Game.Items["bny:matter_translocator"].SetupUnlockOnCustomFlag(CustomDungeonFlags.EXAMPLE_BLUEPRINTTRUCK, true); //setups rolling eye's unlock //Game.Items["bny:matter_translocator"].AddItemToTrorcMetaShop(1123); //adds rolling eye to trorc's breach shop as the last item BunnyModule.Log(BunnyModule.MOD_NAME + " v" + BunnyModule.VERSION + " started successfully.", BunnyModule.TEXT_COLOR); }
public override void Start() { try { GungeonAP.Init(); ETGModConsole.Commands.AddUnit("botflow", delegate(string[] args) { DungeonHandler.debugFlow = !DungeonHandler.debugFlow; string str = DungeonHandler.debugFlow ? "enabled" : "disabled"; string color = DungeonHandler.debugFlow ? "00FF00" : "FF0000"; LostItemsMod.Log("Debug flow " + str, color); }); } catch (Exception e) { LostItemsMod.Log("Command Broke", TEXT_COLOR_BAD); LostItemsMod.Log(string.Format(e + ""), TEXT_COLOR_BAD); } try { //GungeonAP.Init(); //NuclearShrine.Add(); FakePrefabHooks.Init(); ItemBuilder.Init(); ShrineFactory.Init(); GungeonAPI.Tools.Init(); EnemyAPI.Tools.Init(); EnemyAPI.Hooks.Init(); //CustomSynergiesBaseGame.Init(); hooks.Init(); //MoreBreachShrine.Add(); //BreachRoomShrine.Add(); // ConfigManager sta = new ConfigManager(); // GunConfigManager gcf = new GunConfigManager(); //sta.Init(); //gcf.Init(); //CustomGun.Add(); //GunBuffs.Init(); // MagicSpriteStuff.Init(); //Ping.Init(); NuclearTalisman.Init(); //potato BotGhost.Init(); //potato LostGun.Add(); //1 change sounds //SaiGun.Add();//2 book sprite LostOrb.Init(); //3 sprite is boring LostRobe.Init(); //4 RoboticMuncher.Init(); //5 JunkHeart.Init(); //6 i think this is done LootBox.Init(); //7 CNerfGun.Add(); //8 pretty much everything //MopController.Add();//9 fix charge animation, add water projectile CoopTest.Init(); //10 pretty much everything Bond.Init(); //11 rework or remove Bob.Init(); //12 this ones just a joke Children.Init(); //13 maybe add some nice vfx BlessedOrb.Init(); //14 BanGun.Add(); //15 disintergration effect, new projectile sprite? RetoStarter.Init(); //16 add flight and knockback, lessen the light it gives off RetoStarterOld.Init(); //17 add flight and knockback, lessen the light it gives off Test.Init(); //18 add new items when i get to making them MistakeCharm.Init(); //19 i think this one is fine Revenge.Init(); //21 //CNerfGun2.Add();//22 //ETGModConsole.Log("up to pet works"); BabyGoodMistake.Init();//20 make the synergy work //Demonitization.Init(); //23 // syntest.Add(); //24 //syntest2.Add(); //25 CosmicSludge.Init(); // 26 //StarterGun.Add(); // 27 ScatedyCat.Init(); // 28 Shine.Init(); //29 Kunia.Add(); //30 BalencePatch.Init(); //31 ChlorophyteRounds.Init(); //32 LostGunAlt.Add(); //33 Apache.Add(); //TestGun.Add();// TestActive.Init(); //35 //RageRifle.Add();//34 TestPassive.Init(); //36 Gundertale.Add(); MyItem.Init(); RuinousEffigy.Add(); Log($"Begining to load Nuclear Throne related stuff...", TEXT_COLOR_NT); //2.1 // NuclearTalisman.Init(); MutaionBolt.Init(); //1 MutaionBullet.Init(); //2`` MutaionEnergy.Init(); //3`` MutaionShell.Init(); //4`` MutaionMelee.Init(); //5`` MutaionStress.Init(); //6 MutaionTriggerFingers.Init(); //7 MutaionTeeth.Init(); //8 MutaionFace.Init(); //9 MutaionSkin.Init(); //10 MutaionEyes.Init(); //11 MutaionMuscle.Init(); //12 MutaionFeet.Init(); //13 MutaionPaw.Init(); //14 MutaionWish.Init(); //15 MutaionEuphoria.Init(); //16 MutaionWrists.Init(); //17 MutaionBlood.Init(); //18 MutaionStomach.Init(); //19 MutaionLucky.Init(); //20 MutaionExplosive.Init(); //21 MutaionGuts.Init(); //22 MutaionMind.Init(); //23 MutaionSpirit.Init(); //24 MutaionWait.Init(); //25 //Tools.Print<string>("Did Start()", "00FF00", false); //NuclearShrine.Add(); SnareGoop.Init(); AbilityMelting.Init(); //1 AbilityRobot.Init(); //2 AbilitySteroids.Init(); //3 AbilityRogue.Init(); //4 AbilityRebel.Init(); //5 AbilityCrystal.Init(); //6 AbilityPlant.Init(); //7 AbilityYV.Init(); //8 AbilityEyes.Init(); //9 AbilityChicken.Init(); // RebelGun.Add();//1 CharacterShrine.Add();//2 Revolver.Add(); AssaultRifle.Add(); SmartGun.Add(); //Katana.Init(); Directory.CreateDirectory("NTConfig"); bool flag = !File.Exists("NTsConfig/protochest.json"); if (flag) { File.WriteAllText("NTConfig/protochest.json", "1"); } // bool flag2 = !LostItemsMod.AvailableNailModes.Contains(File.ReadAllText("NTConfig/nailmode.json")); // if (flag2) //{ // File.WriteAllText("NTConfig/protochest.json", "normal"); // } LostItemsMod.ProtoChestContent = File.ReadAllText("NTConfig/protochest.json"); ProtoChest.Add(); ShrineFactory.PlaceBreachShrines(); ETGModConsole.Commands.AddGroup("nt", delegate(string[] args) { ETGModConsole.Log("shoop has my family", false); }); ETGModConsole.Commands.GetGroup("nt").AddUnit("level", delegate(string[] args) { header = "test"; text = "test"; Notify(header, text); }); ETGModConsole.Commands.GetGroup("nt").AddUnit("character", delegate(string[] args) { header = NuclearShrine.header; text = "Character"; Notify(header, text); }); ETGModConsole.Commands.GetGroup("nt").AddUnit("protochest", delegate(string[] args) { LostItemsMod.Log("Current stored gun has the id " + ProtoChest.StoredGunID, LostItemsMod.TEXT_COLOR_NT); }); LostItemsMod.Log(LostItemsMod.MOD_NAME + " v" + LostItemsMod.VERSION + " started successfully.", LostItemsMod.TEXT_COLOR); LostItemsMod.Log("It worked", LostItemsMod.TEXT_COLOR_GOOD); } catch (Exception arg) { LostItemsMod.Log(string.Format(LostItemsMod.MOD_NAME + " v" + LostItemsMod.VERSION + " Failed to load ", LostItemsMod.MOD_NAME, LostItemsMod.VERSION, arg), LostItemsMod.TEXT_COLOR_BAD); LostItemsMod.Log("it did not work", LostItemsMod.TEXT_COLOR_BAD); } }
public override void Start() { try { ETGModConsole.Log("Once More Into The Breach started initialising..."); //Rooms ZipFilePath = this.Metadata.Archive; FilePath = this.Metadata.Directory + "/rooms"; ModName = this.Metadata.Name; //Tools and Toolboxes StaticReferences.Init(); ExoticPlaceables.Init(); DungeonHandler.Init(); Tools.Init(); ShrineFakePrefabHooks.Init(); ShrineFactory.Init(); OldShrineFactory.Init(); FakePrefabHooks.Init(); ItemBuilder.Init(); CharApi.Init("nn"); CustomClipAmmoTypeToolbox.Init(); EnemyTools.Init(); NpcApi.Hooks.Init(); EnemyAPI.Hooks.Init(); SaveAPIManager.Setup("nn"); AudioResourceLoader.InitAudio(); CurseManager.Init(); ETGModMainBehaviour.Instance.gameObject.AddComponent <GlobalUpdate>(); ETGModMainBehaviour.Instance.gameObject.AddComponent <CustomDarknessHandler>(); GameOfLifeHandler.Init(); //ETGModMainBehaviour.Instance.gameObject.AddComponent<GameOfLifeHandler>(); //ETGModConsole.Log(Assembly.GetExecutingAssembly().FullName); //Challenges Challenges.Init(); //Hooks n Shit PlayerToolsSetup.Init(); EnemyHooks.InitEnemyHooks(); CompanionisedEnemyUtility.InitHooks(); MiscUnlockHooks.InitHooks(); FloorAndGenerationToolbox.Init(); PedestalHooks.Init(); ExplosionHooks.Init(); ChestToolbox.Inithooks(); UIHooks.Init(); ComplexProjModBeamCompatibility.Init(); ReloadBreachShrineHooks.Init(); metadata = this.Metadata; //VFX Setup VFXToolbox.InitVFX(); EasyVFXDatabase.Init(); //Needs to occur before goop definition ShadeFlightHookFix.Init(); //Status Effect Setup StaticStatusEffects.InitCustomEffects(); PlagueStatusEffectSetup.Init(); Confusion.Init(); //Goop Setup EasyGoopDefinitions.DefineDefaultGoops(); DoGoopEffectHook.Init(); //Commands and Other Console Utilities Commands.Init(); //Hats HatUtility.NecessarySetup(); HatDefinitions.Init(); //Gamemodes AllJammedState.Init(); JammedChests.Init(); //Exotic Object Shit //VFX LockdownStatusEffect.Initialise(); //Testing / Debug Items ActiveTestingItem.Init(); PassiveTestingItem.Init(); BulletComponentLister.Init(); ObjectComponentLister.Init(); //-----------------------------------------------------ITEMS GET INITIALISED #region ItemInitialisation //Character Starters ShadeHand.Init(); ShadeHeart.Init(); //Egg Salad and Prima Bean can go here, because they were the first EggSalad.Init(); PrimaBean.Init(); //Bullet modifiers BashingBullets.Init(); TitanBullets.Init(); MistakeBullets.Init(); FiftyCalRounds.Init(); UnengravedBullets.Init(); EngravedBullets.Init(); HardReloadBullets.Init(); NitroBullets.Init(); SupersonicShots.Init(); GlassRounds.Init(); Junkllets.Init(); BloodthirstyBullets.Init(); CleansingRounds.Init(); HallowedBullets.Init(); PromethianBullets.Init(); EpimethianBullets.Init(); RandoRounds.Init(); IngressBullets.Init(); //Unfinished HematicRounds.Init(); FullArmourJacket.Init(); MirrorBullets.Init(); CrowdedClip.Init(); BashfulShot.Init(); OneShot.Init(); BulletBullets.Init(); AntimatterBullets.Init(); SpectreBullets.Init(); Tabullets.Init(); TierBullets.Init(); //Unfinished BombardierShells.Init(); GildedLead.Init(); DemoterBullets.Init(); Voodoollets.Init(); TracerRound.Init(); EndlessBullets.Init(); HellfireRounds.Init(); Birdshot.Init(); Unpredictabullets.Init(); WarpBullets.Init(); BulletsWithGuns.Init(); LaserBullets.Init(); BalancedBullets.Init(); //Unfinished WoodenBullets.Init(); ComicallyGiganticBullets.Init(); //Excluded KnightlyBullets.Init(); EmptyRounds.Init(); LongswordShot.Init(); DrillBullets.Init(); FoamDarts.Init(); BatterBullets.Init(); ElectrumRounds.Init(); BreachingRounds.Init(); MagnetItem.Init(); EargesplittenLoudenboomerRounds.Init(); TheShell.Init(); //Status Effect Bullet Mods SnailBullets.Init(); LockdownBullets.Init(); PestiferousLead.Init(); Shrinkshot.Init(); //Volley Modifying Bullet Mods Splattershot.Init(); BackwardsBullets.Init(); CrossBullets.Init(); ShadeShot.Init(); //Insta-Kill Bullet Modifiers MinersBullets.Init(); AntimagicRounds.Init(); AlkaliBullets.Init(); ShutdownShells.Init(); ERRORShells.Init(); OsteoporosisBullets.Init(); //NonBullet Stat Changers MicroAIContact.Init(); LuckyCoin.Init(); IronSights.Init(); Lewis.Init(); MysticOil.Init(); VenusianBars.Init(); NumberOneBossMug.Init(); LibramOfTheChambers.Init(); OrganDonorCard.Init(); GlassGod.Init(); ChaosRuby.Init(); BlobulonRage.Init(); OverpricedHeadband.Init(); GunslingerEmblem.Init(); MobiusClip.Init(); ClipOnAmmoPouch.Init(); JawsOfDefeat.Init(); //Armour ArmourBandage.Init(); GoldenArmour.Init(); ExoskeletalArmour.Init(); PowerArmour.Init(); ArmouredArmour.Init(); //Consumable Givers LooseChange.Init(); SpaceMetal.Init(); //Blank Themed Items TrueBlank.Init(); FalseBlank.Init(); SpareBlank.Init(); OpulentBlank.Init(); GrimBlanks.Init(); NNBlankPersonality.Init(); Blombk.Init(); Blankh.Init(); //Key Themed Items BlankKey.Init(); SharpKey.Init(); SpareKey.Init(); KeyChain.Init(); KeyBullwark.Init(); KeyBulletEffigy.Init(); FrostKey.Init(); ShadowKey.Init(); Keygen.Init(); CursedTumbler.Init(); //Ammo Box Themed Items TheShellactery.Init(); BloodyAmmo.Init(); MengerAmmoBox.Init(); AmmoTrap.Init(); //Boxes and Stuff BloodyBox.Init(); MaidenShapedBox.Init(); Toolbox.Init(); PocketChest.Init(); DeliveryBox.Init(); Wonderchest.Init(); //Heart themed items HeartPadlock.Init(); Mutagen.Init(); ForsakenHeart.Init(); HeartOfGold.Init(); GooeyHeart.Init(); ExaltedHeart.Init(); CheeseHeart.Init(); TinHeart.Init(); //Chambers BarrelChamber.Init(); GlassChamber.Init(); FlameChamber.Init(); Recyclinder.Init(); Nitroglycylinder.Init(); SpringloadedChamber.Init(); WitheringChamber.Init(); HeavyChamber.Init(); CyclopeanChamber.Init(); //Table Techs TableTechTable.Init(); TableTechSpeed.Init(); TableTechInvulnerability.Init(); TableTechAmmo.Init(); TableTechGuon.Init(); TableTechNology.Init(); UnsTableTech.Init(); //Guon Stones WoodGuonStone.Init(); YellowGuonStone.Init(); GreyGuonStone.Init(); GoldGuonStone.Init(); BrownGuonStone.Init(); CyanGuonStone.Init(); IndigoGuonStone.Init(); SilverGuonStone.Init(); MaroonGuonStone.Init(); UltraVioletGuonStone.Init(); InfraredGuonStone.Init(); RainbowGuonStone.Init(); KaleidoscopicGuonStone.Init(); GuonBoulder.Init(); BloodglassGuonStone.Init(); //Ammolets GlassAmmolet.Init(); WickerAmmolet.Init(); FuriousAmmolet.Init(); SilverAmmolet.Init(); IvoryAmmolet.Init(); KinAmmolet.Init(); Autollet.Init(); Keymmolet.Init(); Ammolock.Init(); HepatizonAmmolet.Init(); BronzeAmmolet.Init(); PearlAmmolet.Init(); NeutroniumAmmolet.Init(); Shatterblank.Init(); // Boots CycloneCylinder.Init(); BootLeg.Init(); BlankBoots.Init(); BulletBoots.Init(); //Bracelets and Jewelry DiamondBracelet.Init(); PearlBracelet.Init(); PanicPendant.Init(); GunknightAmulet.Init(); AmuletOfShelltan.Init(); //Rings RingOfOddlySpecificBenefits.Init(); FowlRing.Init(); RingOfAmmoRedemption.Init(); RiskyRing.Init(); WidowsRing.Init(); ShadowRing.Init(); RingOfInvisibility.Init(); //Holsters BlackHolster.Init(); TheBeholster.Init(); HiveHolster.Init(); ShoulderHolster.Init(); ArtilleryBelt.Init(); BulletShuffle.Init(); //Companions MolotovBuddy.Init(); BabyGoodChanceKin.Init(); Potty.Init(); Peanut.Init(); DarkPrince.Init(); Diode.Init(); DroneCompanion.Init(); GregTheEgg.Init(); FunGuy.Init(); BabyGoodDet.Init(); AngrySpirit.Init(); Gusty.Init(); ScrollOfExactKnowledge.Init(); LilMunchy.Init(); //Potions / Jars SpeedPotion.Init(); LovePotion.Init(); HoneyPot.Init(); ChemicalBurn.Init(); WitchsBrew.Init(); Nigredo.Init(); Albedo.Init(); Citrinitas.Init(); Rubedo.Init(); HoleyWater.Init(); //Remotes ReinforcementRadio.Init(); //Medicine BloodThinner.Init(); BoosterShot.Init(); ShotInTheArm.Init(); //Knives and Blades DaggerOfTheAimgel.Init(); CombatKnife.Init(); Bayonet.Init(); //Books BookOfMimicAnatomy.Init(); KalibersPrayer.Init(); GunidaeSolvitHaatelis.Init(); //Maps MapFragment.Init(); TatteredMap.Init(); //Clothing CloakOfDarkness.Init(); TimeFuddlersRobe.Init(); //Eyes CartographersEye.Init(); BloodshotEye.Init(); ShadesEye.Init(); KalibersEye.Init(); //Hands Lefthandedness.Init(); NecromancersRightHand.Init(); //Bombs InfantryGrenade.Init(); DiceGrenade.Init(); //True Misc Lvl2Molotov.Init(); GoldenAppleCore.Init(); AppleCore.Init(); AppleActive.Init(); LibationtoIcosahedrax.Init(); //Unfinished BagOfHolding.Init(); ItemCoupon.Init(); IdentityCrisis.Init(); LiquidMetalBody.Init(); GunGrease.Init(); BomberJacket.Init(); DragunsScale.Init(); GTCWTVRP.Init(); BlightShell.Init(); BulletKinPlushie.Init(); Kevin.Init(); PurpleProse.Init(); RustyCasing.Init(); HikingPack.Init(); GunpowderPheromones.Init(); GunsmokePerfume.Init(); Pestilence.Init(); ElevatorButton.Init(); Bullut.Init(); GSwitch.Init(); FaultyHoverboots.Init(); //Unfinished AcidAura.Init(); HornedHelmet.Init(); RocketMan.Init(); Roulette.Init(); //Unfinished FinishedBullet.Init(); ChanceKinEffigy.Init(); MagickeCauldron.Init(); Bombinomicon.Init(); ClaySculpture.Init(); GracefulGoop.Init(); MrFahrenheit.Init(); MagicQuiver.Init(); FocalLenses.Init(); MagicMissile.Init(); AmberDie.Init(); ObsidianPistol.Init(); Showdown.Init(); LootEngineItem.Init(); Ammolite.Init(); PortableHole.Init(); CardinalsMitre.Init(); GunjurersBelt.Init(); GoomperorsCrown.Init(); ChemGrenade.Init(); EightButton.Init(); TitaniumClip.Init(); PaperBadge.Init(); Permafrost.Init(); GlassShard.Init(); EqualityItem.Init(); BitBucket.Init(); Eraser.Init(); TackShooter.Init(); Moonrock.Init(); Telekinesis.Init(); TabletOfOrder.Init(); LeadSoul.Init(); LeadOfLife.Init(); AWholeBulletKin.Init(); #endregion //-----------------------------------------------------GUNS GET INITIALISED #region GunInitialisation //UNFINISHED / TEST GUNS WailingMagnum.Add(); Defender.Add(); TestGun.Add(); Gunycomb.Add(); GlobbitSMALL.Add(); GlobbitMED.Add(); GlobbitMEGA.Add(); //GUNS //CHARACTERSTARTERS ElderMagnum.Add(); //REVOLVERS FlayedRevolver.Add(); G20.Add(); MamaGun.Add(); LovePistol.Add(); DiscGun.Add(); Repeatovolver.Add(); Pista.Add(); NNGundertale.Add(); DiamondGun.Add(); NNMinigun.Add(); ShroomedGun.Add(); GoldenRevolver.Add(); Nocturne.Add(); BackWarder.Add(); Redhawk.Add(); ToolGun.Add(); //GENERAL HANDGUNS StickGun.Add(); Glock42.Add(); StarterPistol.Add(); PopGun.Add(); UnusCentum.Add(); StunGun.Add(); CopperSidearm.Add(); Rekeyter.Add(); HotGlueGun.Add(); UpNUp.Add(); RedRobin.Add(); VariableGun.Add(); CrescendoBlaster.Add(); Glasster.Add(); HandGun.Add(); Viper.Add(); DiamondCutter.Add(); MarchGun.Add(); RebarGun.Add(); MinuteGun.Add(); Ulfberht.Add(); HeadOfTheOrder.Add(); GunOfAThousandSins.Add(); DoubleGun.Add(); //SHOTGUNS JusticeGun.Add(); Orgun.Add(); Octagun.Add(); ClownShotgun.Add(); Ranger.Add(); RustyShotgun.Add(); TheBride.Add(); TheGroom.Add(); IrregularShotgun.Add(); GrenadeShotgun.Add(); Jackhammer.Add(); SaltGun.Add(); SoapGun.Add(); //CANNONS Felissile.Add(); HandCannon.Add(); Lantaka.Add(); GreekFire.Add(); EmberCannon.Add(); ElysiumCannon.Add(); DisplacerCannon.Add(); //SCI-FI GUNS Blasmaster.Add(); St4ke.Add(); RedBlaster.Add(); BeamBlade.Add(); Neutrino.Add(); Rico.Add(); TheThinLine.Add(); RocketPistol.Add(); Repetitron.Add(); Dimensionaliser.Add(); Purpler.Add(); VacuumGun.Add(); Oxygun.Add(); TriBeam.Add(); KineticBlaster.Add(); LaserWelder.Add(); QBeam.Add(); HighVelocityRifle.Add(); Demolitionist.Add(); PumpChargeShotgun.Add(); TheOutbreak.Add(); Multiplicator.Add(); PunishmentRay.Add(); YBeam.Add(); WallRay.Add(); BolaGun.Add(); AlphaBeam.Add(); Glazerbeam.Add(); StasisRifle.Add(); Gravitron.Add(); Ferrobolt.Add(); TauCannon.Add(); GravityGun.Add(); GalaxyCrusher.Add(); //ARC Weapons ARCPistol.Add(); ARCShotgun.Add(); ARCRifle.Add(); ARCTactical.Add(); ARCCannon.Add(); //BOWS AND CROSSBOWS IceBow.Add(); Boltcaster.Add(); Clicker.Add(); //ANTIQUES WheelLock.Add(); Welrod.Add(); Welgun.Add(); TheLodger.Add(); Gonne.Add(); Hwacha.Add(); FireLance.Add(); HandMortar.Add(); GrandfatherGlock.Add(); GatlingGun.Add(); Blowgun.Add(); Gaxe.Add(); WoodenHorse.Add(); AgarGun.Add(); //KNIVES AND BLADES Carnwennan.Add(); MantidAugment.Add(); //REALISTIC GUNS HeatRay.Add(); BarcodeScanner.Add(); AntimaterielRifle.Add(); Primos1.Add(); DartRifle.Add(); AM0.Add(); RiskRifle.Add(); RiotGun.Add(); Kalashnirang.Add(); MaidenRifle.Add(); Blizzkrieg.Add(); Copygat.Add(); Skorpion.Add(); HeavyAssaultRifle.Add(); DynamiteLauncher.Add(); MarbledUzi.Add(); BurstRifle.Add(); OlReliable.Add(); //MISSILE LAUNCHERS BottleRocket.Add(); NNBazooka.Add(); BoomBeam.Add(); Pillarocket.Add(); //ANIMAL / ORGANIC GUNS SporeLauncher.Add(); PoisonDartFrog.Add(); Corgun.Add(); FungoCannon.Add(); PhaserSpiderling.Add(); Guneonate.Add(); KillithidTendril.Add(); Gunger.Add(); SickWorm.Add(); MiniMonger.Add(); CarrionFormeTwo.Add(); CarrionFormeThree.Add(); Carrion.Add(); UterinePolyp.Add(); Wrinkler.Add(); //BLADES ButchersKnife.Add(); RapidRiposte.Add(); //FUN GUNS Gumgun.Add(); Glooper.Add(); Accelerator.Add(); PaintballGun.Add(); Converter.Add(); Spiral.Add(); Gunshark.Add(); FingerGuns.Add(); OBrienFist.Add(); GolfRifle.Add(); Pandephonium.Add(); Sweeper.Add(); DeskFan.Add(); Pencil.Add(); SquarePeg.Add(); Ringer.Add(); Snaker.Add(); GayK47.Add(); DecretionCarbine.Add(); RC360.Add(); UziSpineMM.Add(); Autogun.Add(); Rebondir.Add(); BigShot.Add(); W3irdstar.Add(); Seismograph.Add(); BioTranstater2100.Add(); //MAGICAL GUNS Icicle.Add(); GunjurersStaff.Add(); InitiateWand.Add(); LightningRod.Add(); OrbOfTheGun.Add(); SpearOfJustice.Add(); Protean.Add(); BulletBlade.Add(); Bookllet.Add(); Lorebook.Add(); Beastclaw.Add(); Bullatterer.Add(); Entropew.Add(); Missinguno.Add(); Paraglocks.Add(); //CONSUMABLE FIRING GUNS Creditor.Add(); Blankannon.Add(); Viscerifle.Add(); //ENDPAGE GUNS MastersGun.Add(); Wrench.Add(); Pumhart.Add(); //SYNERGY FORME GUNS GunsharkMegasharkSynergyForme.Add(); DiscGunSuperDiscForme.Add(); OrgunHeadacheSynergyForme.Add(); Wolfgun.Add(); MinigunMiniShotgunSynergyForme.Add(); PenPencilSynergy.Add(); ReShelletonKeyter.Add(); AM0SpreadForme.Add(); BulletBladeGhostForme.Add(); GlueGunGlueGunnerSynergy.Add(); KingBullatterer.Add(); WrenchNullRefException.Add(); GatlingGunGatterUp.Add(); GravityGunNegativeMatterForm.Add(); GonneElder.Add(); UterinePolypWombular.Add(); DiamondGaxe.Add(); RedRebondir.Add(); DiamondCutterRangerClass.Add(); StickGunQuickDraw.Add(); StormRod.Add(); UnrustyShotgun.Add(); #endregion //-----------------------------------------------------SHRINES GET INITIALISED #region ShrineInitialisation InvestmentShrine.Add(); RelodinShrine.Add(); DagunShrine.Add(); ArtemissileShrine.Add(); ExecutionerShrine.Add(); TurtleShrine.Add(); KliklokShrine.Add(); #endregion //-----------------------------------------------------NPCS GET INITIALISED #region NPCInitialisation Rusty.Init(); Ironside.Init(); Boomhildr.Init(); #endregion ChromaGun.Add(); //GOOD MIMIC (NEEDS TO BE INITIALISED LATER) GoodMimic.Add(); //Characters var data = Loader.BuildCharacter("NevernamedsItems/Characters/Shade", CustomPlayableCharacters.Shade, new Vector3(12.3f, 21.3f), false, new Vector3(13.1f, 19.1f), false, false, true, true, //Sprites used by paradox false, //Glows null, //Glow Mat null, //Alt Skin Glow Mat 0, //Hegemony Cost false, //HasPast ""); //Past ID String //Other Features MasteryReplacementOub.InitDungeonHook(); CadenceAndOxShopPoolAdditions.Init(); CustomHuntingQuest.Init(); //NPCS TheJammomaster.Add(); //Carto.Add(); ShrineFactory.PlaceBreachShrines(); //Synergy Setup, Synergy Formes, Dual Wielding, and any changes to Basegame Guns InitialiseSynergies.DoInitialisation(); SynergyFormInitialiser.AddSynergyForms(); ExistantGunModifiers.Init(); ChamberGunAPI.Init("OnceMoreIntoTheBreach"); //Late Hooks AmmoPickupHooks.Init(); HealthPickupHooks.Init(); ETGModConsole.Commands.AddUnit("nndebugflow", (args) => { DungeonHandler.debugFlow = !DungeonHandler.debugFlow; string status = DungeonHandler.debugFlow ? "enabled" : "disabled"; string color = DungeonHandler.debugFlow ? "00FF00" : "FF0000"; ETGModConsole.Log($"OMITB flow {status}", false); }); //PoopySchloopy /* Dungeon keepDungeon = DungeonDatabase.GetOrLoadByName("base_jungle"); * if (keepDungeon == null) ETGModConsole.Log("Jungle null!"); * if (keepDungeon && keepDungeon.PatternSettings != null) * { * if (keepDungeon.PatternSettings.flows != null && keepDungeon.PatternSettings.flows.Count > 0) * { * if (keepDungeon.PatternSettings.flows[0].fallbackRoomTable) * { * if (keepDungeon.PatternSettings.flows[0].fallbackRoomTable.includedRooms != null) * { * if (keepDungeon.PatternSettings.flows[0].fallbackRoomTable.includedRooms.elements != null) * { * foreach (WeightedRoom wRoom in keepDungeon.PatternSettings.flows[0].fallbackRoomTable.includedRooms.elements) * { * * if (wRoom.room != null && !string.IsNullOrEmpty(wRoom.room.name)) * { * ETGModConsole.Log(wRoom.room.name); * } * } * } * else ETGModConsole.Log("No elements"); * } * else ETGModConsole.Log("No included rooms"); * } * else ETGModConsole.Log("No fallback room table"); * } * else ETGModConsole.Log("Flow was null or empty"); * } * else ETGModConsole.Log("Pattern settings null"); * keepDungeon = null;*/ ETGMod.StartGlobalCoroutine(this.delayedstarthandler()); ETGModConsole.Log("'If you're reading this, I must have done something right' - NN"); } catch (Exception e) { ETGModConsole.Log(e.Message); ETGModConsole.Log(e.StackTrace); } }