Decompiled source of NoBrain v1.1.0
NoBrain.dll
Decompiled a week ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using BepInEx; using HarmonyLib; using InControl; using Newtonsoft.Json; using SGUI; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("NoBrain")] [assembly: AssemblyDescription("https://github.com/markusmo3")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("markusmo3")] [assembly: AssemblyProduct("NoBrain")] [assembly: AssemblyCopyright("Copyright © 2018")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("9E985D78-4AF0-4A8B-A2DC-568A068E5482")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyVersion("1.0.0.0")] public static class Extensions { public delegate T Getter<out T>(); public delegate void Setter<in T>(T t); public delegate string ToStringFunction<in T>(T t); private static readonly ToStringFunction<int> ITEM_ID_TO_DISPLAY_NAME = (int id) => ((ObjectDatabase<PickupObject>)(object)PickupObjectDatabase.Instance).InternalGetById(id).getDisplayName(); public static ConsoleCommandGroup AddUnitFlag(this ConsoleCommandGroup group, string name, Getter<bool> getFunc, Setter<bool> setAction) { group.AddUnit(name, (Action<string[]>)delegate(string[] args) { bool result; if (args.Length == 0) { string text = (getFunc() ? "<color=#00ff00ff>on</color>" : "<color=#ff0000ff>off</color>"); NoBrain.Log(name + " is turned " + text + "!"); } else if (!bool.TryParse(args[0], out result)) { NoBrain.Log("This argument only supports \"true\" or \"false\" as values. (Given: " + args[0] + ")"); } else { setAction(result); string text2 = (result ? "<color=#00ff00ff>enabled</color>" : "<color=#ff0000ff>disabled</color>"); NoBrain.Log(name + " has been " + text2 + "!"); } }); return group; } public static string getName(this AdvancedSynergyEntry e) { return StringTableManager.GetSynergyString(e.NameKey, -1); } public static string getUISpriteString(this PlayerAction playerAction, bool keyboardAndMouse) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Invalid comparison between Unknown and I4 //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) if (keyboardAndMouse) { string text = "-"; foreach (BindingSource binding in playerAction.Bindings) { if ((int)binding.BindingSourceType == 2 || (int)binding.BindingSourceType == 3) { text = binding.Name; break; } } return text.Trim(); } ReadOnlyCollection<BindingSource> bindings = playerAction.Bindings; if (bindings.Count > 0) { foreach (BindingSource item in bindings) { DeviceBindingSource val = (DeviceBindingSource)(object)((item is DeviceBindingSource) ? item : null); if ((BindingSource)(object)val != (BindingSource)null && (int)val.Control != 0) { return UIControllerButtonHelper.GetUnifiedControllerButtonTag(val.Control, BraveInput.PlayerOneCurrentSymbology, (GungeonActions)null); } } } return playerAction.Name; } public static string getUISpriteString(this ItemQuality q) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected I4, but got Unknown string text = (((int)q == -50) ? "resourceful_rat_icon_001" : ((int)q switch { 0 => "poopsack_001", 1 => "master_token_icon_001", 2 => "master_token_icon_002", 3 => "master_token_icon_003", 4 => "master_token_icon_004", 5 => "master_token_icon_005", _ => "ps4_cross", })); return "[sprite \"" + text + "\"]"; } public static string join<T>(this IEnumerable<T> list, ToStringFunction<T> toStringFunction, string separator = ", ") { string text = ""; bool flag = true; foreach (T item in list) { if (flag) { flag = false; } else { text += separator; } text += toStringFunction(item); } return text; } public static int deepHashCode<T>(this IEnumerable<T> list) { int num = 757602046; foreach (T item in list) { num = num * 31 + (item?.GetHashCode() ?? 0); } return num; } public static string getMandatoryString(this AdvancedSynergyEntry e) { string text = e.MandatoryGunIDs.join(ITEM_ID_TO_DISPLAY_NAME); string text2 = e.MandatoryItemIDs.join(ITEM_ID_TO_DISPLAY_NAME); if (text.Length > 0 && text2.Length > 0) { text += ", "; } return text + text2; } public static string getOptionalString(this AdvancedSynergyEntry e) { string text = e.OptionalGunIDs.join(ITEM_ID_TO_DISPLAY_NAME); string text2 = e.OptionalItemIDs.join(ITEM_ID_TO_DISPLAY_NAME); if (text.Length > 0 && text2.Length > 0) { text += ", "; } return text + text2; } public static string getDisplayName(this PickupObject item) { EncounterTrackable component = ((Component)item).GetComponent<EncounterTrackable>(); if (!((Object)(object)component == (Object)null)) { return component.journalData.GetPrimaryDisplayName(false); } return item.DisplayName; } public static string getSimpleTypeName(this object o) { if (o != null) { return o.GetType().Name; } return "Null"; } } public class MultiValueDictionary<KeyType, ValueType> : Dictionary<KeyType, List<ValueType>> { private new void Add(KeyType key, List<ValueType> value) { base.Add(key, value); } public void Add(KeyType key, ValueType value) { MultiValueDictionaryExtensions.Add(this, key, value); } } public static class MultiValueDictionaryExtensions { public static void Add<KeyType, ListType, ValueType>(this Dictionary<KeyType, ListType> thisDictionary, KeyType key, ValueType value) where ListType : IList<ValueType>, new() { if (!thisDictionary.ContainsKey(key)) { thisDictionary.Add(key, new ListType()); } thisDictionary[key].Add(value); } } public class NBInteractableBehaviour : AbstractNBInteractableBehaviour { private delegate void UseLabelAndItem(DefaultLabelController labelController, EncounterTrackable encounter, PickupObject item); private const string SEPARATOR_TEXT = "[color #bada55][/color]"; private const int PAGE_AMMO = 0; private const int PAGE_DESC = 1; private const int PAGE_STATS = 2; private const int PAGE_SYNERGIES = 3; private const int PAGE_LENGTH = 4; private int currentPage; private DefaultLabelController labelControllerCache; private void Start() { NoBrain.LogFine("Start of NoBrainBehaviour"); } protected override void onNewInteractable(IPlayerInteractable interactable) { ShopItemController val = (ShopItemController)(object)((interactable is ShopItemController) ? interactable : null); if (val != null) { with(((BraveBehaviour)val).transform, val.item, onNewShopItemController); return; } PickupObject val2 = (PickupObject)(object)((interactable is PickupObject) ? interactable : null); if (val2 != null) { if (!NoBrainDB.ITEM_BLACKLIST.Contains(val2.PickupObjectId)) { spawnPickupObjectLabel(val2, ((BraveBehaviour)val2).transform); with(((BraveBehaviour)val2).transform, val2, onNewShopItemController); } return; } RewardPedestal val3 = (RewardPedestal)(object)((interactable is RewardPedestal) ? interactable : null); if (val3 != null) { PickupObject contents = val3.contents; if (!NoBrainDB.ITEM_BLACKLIST.Contains(contents.PickupObjectId)) { spawnPickupObjectLabel(contents, val3.spawnTransform); with(val3.spawnTransform, contents, onNewShopItemController); } } else { Chest val4 = (Chest)(object)((interactable is Chest) ? interactable : null); if (val4 != null && NoBrain.SHOW_CHEST_CONTENTS) { spawnChestLabel(val4); } } } private void spawnPickupObjectLabel(PickupObject po, Transform poTransform) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) Bounds bounds = ((BraveBehaviour)po).sprite.GetBounds(); float num = ((Bounds)(ref bounds)).max.x + 0.1875f; bounds = ((BraveBehaviour)po).sprite.GetBounds(); Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(num, ((Bounds)(ref bounds)).min.y, 0f); string displayName = po.getDisplayName(); GameObject val2 = GameUIRoot.Instance.RegisterDefaultLabel(poTransform, val, displayName); labelControllerCache = val2.GetComponent<DefaultLabelController>(); dfLabel componentInChildren = val2.GetComponentInChildren<dfLabel>(); componentInChildren.ColorizeSymbols = false; componentInChildren.ProcessMarkup = true; } private void spawnChestLabel(Chest c) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) Bounds bounds = ((BraveBehaviour)c).sprite.GetBounds(); float num = ((Bounds)(ref bounds)).max.x + 0.1875f; bounds = ((BraveBehaviour)c).sprite.GetBounds(); Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(num, ((Bounds)(ref bounds)).min.y, 0f); List<PickupObject> list = c.PredictContents(getPrimaryPlayer()); string text = list.join((PickupObject po) => po.getDisplayName(), "\n"); GameObject val2 = GameUIRoot.Instance.RegisterDefaultLabel(((BraveBehaviour)c).transform, val, text); labelControllerCache = val2.GetComponent<DefaultLabelController>(); dfLabel componentInChildren = val2.GetComponentInChildren<dfLabel>(); componentInChildren.ColorizeSymbols = false; componentInChildren.ProcessMarkup = true; } protected override void onCleanupInteractable(IPlayerInteractable interactable) { if ((interactable is PickupObject || interactable is Chest || interactable is RewardPedestal) && !((Object)(object)labelControllerCache == (Object)null)) { Object.Destroy((Object)(object)((Component)labelControllerCache).gameObject); GameUIRoot.Instance.extantBasicLabels.Remove(labelControllerCache); } } protected override void onReloadPressed(IPlayerInteractable interactable) { ShopItemController val = (ShopItemController)(object)((interactable is ShopItemController) ? interactable : null); if (val != null) { currentPage = (currentPage + 1) % 4; with(((BraveBehaviour)val).transform, val.item, onUpdateShopItemController); return; } PickupObject val2 = (PickupObject)(object)((interactable is PickupObject) ? interactable : null); if (val2 != null) { currentPage = (currentPage + 1) % 4; with(((BraveBehaviour)val2).transform, val2, onUpdateShopItemController); return; } RewardPedestal val3 = (RewardPedestal)(object)((interactable is RewardPedestal) ? interactable : null); if (val3 != null) { currentPage = (currentPage + 1) % 4; with(val3.spawnTransform, val3.contents, onUpdateShopItemController); } } private void with(Transform transform, PickupObject po, UseLabelAndItem action) { if (NoBrainDB.ITEM_BLACKLIST.Contains(po.PickupObjectId)) { return; } DefaultLabelController labelController = getLabelController(transform); if ((Object)(object)labelController == (Object)null) { return; } EncounterTrackable component = ((Component)po).GetComponent<EncounterTrackable>(); if ((Object)(object)component == (Object)null) { return; } PickupObject val = po; if (val is ItemBlueprintItem) { PickupObject byEncounterName = PickupObjectDatabase.GetByEncounterName(component.journalData.GetPrimaryDisplayName(false)); if ((Object)(object)byEncounterName != (Object)null) { val = byEncounterName; } else { NoBrain.Log("Couldn't find the real item behind the ItemBlueprintItem."); } } action(labelController, component, val); } private DefaultLabelController getLabelController(Transform transform) { if ((Object)(object)labelControllerCache != (Object)null && (Object)(object)labelControllerCache.targetObject == (Object)(object)transform) { return labelControllerCache; } DefaultLabelController result = null; foreach (DefaultLabelController extantBasicLabel in GameUIRoot.Instance.extantBasicLabels) { if ((Object)(object)extantBasicLabel.targetObject == (Object)(object)transform) { result = extantBasicLabel; break; } } labelControllerCache = result; return result; } private void onNewShopItemController(DefaultLabelController labelController, EncounterTrackable encounter, PickupObject item) { //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown ((Component)labelController).gameObject.AddComponent<PositionUpdater>(); string text = labelController.label.Text; text += "[color #bada55][/color]"; text += getTextForPage(encounter, item); labelController.label.Text = text; ((Behaviour)labelController).enabled = false; labelController.label.TextScale = 2f; labelController.label.AutoHeight = true; labelController.label.WordWrap = true; ((dfControl)labelController.label).Width = (float)Screen.width / 3f; labelController.label.Padding = new RectOffset(6, 6, 0, 0); ((dfControl)labelController.label).Invalidate(); labelController.panel.FitToContents(); ((dfControl)labelController.panel).Invalidate(); labelController.Trigger(); } private void onUpdateShopItemController(DefaultLabelController labelController, EncounterTrackable encounter, PickupObject item) { if (NoBrainDB.ITEMS.TryGetValue(item.PickupObjectId, out var _)) { string text = labelController.label.Text; int num = text.IndexOf("[color #bada55][/color]") + "[color #bada55][/color]".Length; if (num == -1) { text = "ERROR FINDING SEPARATOR"; } else { text = text.Substring(0, num); text += getTextForPage(encounter, item); } labelController.label.Text = text; labelController.label.AutoHeight = true; ((dfControl)labelController.label).Invalidate(); labelController.panel.FitToContents(); ((dfControl)labelController.panel).Invalidate(); labelController.Trigger(); } } private string getTextForPage(EncounterTrackable encounter, PickupObject item) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) string text = ""; NoBrainJsonItem value; bool flag = NoBrainDB.ITEMS.TryGetValue(item.PickupObjectId, out value); string text2 = ((item is PassiveItem) ? "Passive" : "Active"); text = "[color #7d7d7d]"; if (NoBrain.SHOW_ITEM_IDS) { text = text + " " + item.PickupObjectId; } text = text + " " + item.quality.getUISpriteString() + " " + text2 + "[/color]"; string text3; if (currentPage == 0 || !flag) { text3 = "Ammonomicon"; string ammonomiconFullEntry = encounter.journalData.GetAmmonomiconFullEntry(false, false); if (ammonomiconFullEntry.Length > 0) { text = text + "\n[color #a0a0a0]" + ammonomiconFullEntry.TrimEnd(new char[0]) + "[/color]"; } } else if (currentPage == 1) { text3 = "Description"; text = text + "\n[color #a0a0a0]" + value.desc + "[/color]"; } else if (currentPage == 2) { text3 = "Stats"; text = text + "\n[color #a0a0a0]" + value.stats + "[/color]"; } else if (currentPage == 3) { text3 = "Synergies"; if (NoBrainDB.SYNERGIES.TryGetValue(item.PickupObjectId, out var value2)) { foreach (AdvancedSynergyEntry item2 in value2) { string mandatoryString = item2.getMandatoryString(); string optionalString = item2.getOptionalString(); text = text + "\n[color #98FAFF]" + item2.getName() + "[/color] " + item2.NumberObjectsRequired + " of (" + mandatoryString + ") [" + optionalString + "]"; } text = text ?? ""; } else { text = "\nNo Synergies found."; } } else { text3 = "ERROR"; text = "INVALID PAGE"; } if (!flag) { return text; } return text + "\n[color #3f704d]" + text3 + "(" + (currentPage + 1) + "/" + 4 + ") Press " + getReloadSpriteTag() + "[/color]"; } } [BepInPlugin("lazymo3_and_NilT_PL.etg.NoBrain", "No Brain", "1.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class NoBrain : BaseUnityPlugin { public const string GUID = "lazymo3_and_NilT_PL.etg.NoBrain"; public const string NAME = "No Brain"; public const string VERSION = "1.1.0"; public static bool FINE_LOGGING = true; public static bool SHOW_ITEM_IDS = true; public static bool SHOW_LABELS = true; public static bool SHOW_SHRINES = true; public static bool SHOW_CHEST_CONTENTS = false; public void Awake() { LogFine("ModInit"); Patcher.doPatch(); ETGModConsole.Commands.AddGroup("nobrain", (Action<string[]>)delegate { Log("<size=100>NoBrain v1 by markusmo3!</size>"); Log("Use \"nobrain help\" for help!"); }); ETGModConsole.Commands.GetGroup("nobrain").AddUnit("help", (Action<string[]>)delegate { Log("<size=100>NoBrain v1 by markusmo3!</size>"); Log(""); Log("NoBrain Command Reference:"); Log("(arg) = Optional argument, [arg] = Mandatory argument"); Log(""); Log("nobrain help - Displays this help"); Log("nobrain clearbasiclabels - Clears all the labels"); Log("nobrain showlabels (true/false) - show the extended labels"); Log("nobrain showshrines (true/false) - replace the default shrine stone tablet description with a custom description"); Log("nobrain showchestcontents (true/false) - displays the name of the items contained in a chest"); Log("nobrain finelogging (true/false) - logs more, only needed by the dev"); Log("nobrain showitemids (true/false) - show the item id in the label"); }).AddUnitFlag("showlabels", () => SHOW_LABELS, delegate(bool b) { SHOW_LABELS = b; }) .AddUnitFlag("showshrines", () => SHOW_SHRINES, delegate(bool b) { SHOW_SHRINES = b; }) .AddUnitFlag("finelogging", () => FINE_LOGGING, delegate(bool b) { FINE_LOGGING = b; }) .AddUnitFlag("showitemids", () => SHOW_ITEM_IDS, delegate(bool b) { SHOW_ITEM_IDS = b; }) .AddUnitFlag("showchestcontents", () => SHOW_CHEST_CONTENTS, delegate(bool b) { SHOW_CHEST_CONTENTS = b; }) .AddUnit("clearbasiclabels", (Action<string[]>)delegate { GameUIRoot.Instance.ClearAllDefaultLabels(); }); } public void Start() { ETGModMainBehaviour.WaitForGameManagerStart((Action<GameManager>)GMStart); } public void GMStart(GameManager gameManager) { LogFine("ModStart"); NoBrainDB.Load(); ((Component)ETGModMainBehaviour.Instance).gameObject.AddComponent<NBInteractableBehaviour>(); } public static void Log(string message) { string text = "@NoBrain " + message; if (((ETGModMenu)ETGModConsole.Instance).GUI != null && ((SElement)((ETGModMenu)ETGModConsole.Instance).GUI)[0] != null) { ETGModConsole.Log((object)text, false); } else { Debug.Log((object)text); } } public static void LogFine(string message) { if (FINE_LOGGING) { Log("FINE " + message); } } } public static class NoBrainDB { public static readonly Dictionary<int, NoBrainJsonItem> ITEMS; public static readonly MultiValueDictionary<int, AdvancedSynergyEntry> SYNERGIES; public static readonly MultiValueDictionary<string, string> SHRINE_KEY_MAPPING; public static readonly Dictionary<string, string> SHRINES; public static readonly List<int> ITEM_BLACKLIST; static NoBrainDB() { ITEMS = new Dictionary<int, NoBrainJsonItem>(); SYNERGIES = new MultiValueDictionary<int, AdvancedSynergyEntry>(); SHRINE_KEY_MAPPING = new MultiValueDictionary<string, string>(); SHRINES = new Dictionary<string, string>(); ITEM_BLACKLIST = new List<int>(new int[7] { GlobalItemIds.Key, GlobalItemIds.RatKey, GlobalItemIds.SmallHeart, GlobalItemIds.FullHeart, GlobalItemIds.AmmoPickup, GlobalItemIds.SpreadAmmoPickup, 120 }); SHRINE_KEY_MAPPING.Add("Ammo Shrine", "#SHRINE_AMMO_DISPLAY"); SHRINE_KEY_MAPPING.Add("Angel Shrine", "#SHRINE_FALLEN_ANGEL_DISPLAY"); SHRINE_KEY_MAPPING.Add("Blank Shrine", "#SHRINE_BLANK_DISPLAY"); SHRINE_KEY_MAPPING.Add("Blood Shrine", "#SHRINE_BLOOD_DISPLAY"); SHRINE_KEY_MAPPING.Add("Blood Shrine", "#SHRINE_NEWBLOOD_DISPLAY"); SHRINE_KEY_MAPPING.Add("Challenge Shrine", "#SHRINE_CHALLENGE_DISPLAY"); SHRINE_KEY_MAPPING.Add("Cleansing Shrine", "#SHRINE_CLEANSE_DISPLAY_01"); SHRINE_KEY_MAPPING.Add("Cleansing Shrine", "#SHRINE_CLEANSE_DISPLAY_02"); SHRINE_KEY_MAPPING.Add("Cleansing Shrine", "#SHRINE_CLEANSE_DISPLAY_03"); SHRINE_KEY_MAPPING.Add("Cleansing Shrine", "#SHRINE_CLEANSE_DISPLAY_04"); SHRINE_KEY_MAPPING.Add("Cleansing Shrine", "#SHRINE_CLEANSE_DISPLAY_05"); SHRINE_KEY_MAPPING.Add("Dice Shrine", "#SHRINE_DICE_DISPLAY"); SHRINE_KEY_MAPPING.Add("Familiar Shrine", "#SHRINE_COMPANION_DISPLAY"); SHRINE_KEY_MAPPING.Add("Glass Shrine", "#SHRINE_GLASS_DISPLAY"); SHRINE_KEY_MAPPING.Add("Hero Shrine", "#SHRINE_HERO_DISPLAY"); SHRINE_KEY_MAPPING.Add("Junk Shrine", "#SHRINE_JUNK_DISPLAY"); SHRINE_KEY_MAPPING.Add("Peace Shrine", "#SHRINE_HEALTH_DISPLAY"); SHRINE_KEY_MAPPING.Add("Y.V Shrine", "#SHRINE_YV_DISPLAY"); } public static void Load() { //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Invalid comparison between Unknown and I4 //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Invalid comparison between Unknown and I4 List<NoBrainJsonItem> list = JsonConvert.DeserializeObject<List<NoBrainJsonItem>>(NoBrainJsonDB.ITEM_JSON); foreach (NoBrainJsonItem item in list) { if (!ITEM_BLACKLIST.Contains(item.id)) { ITEMS[item.id] = item; } } List<NoBrainJsonShrine> list2 = JsonConvert.DeserializeObject<List<NoBrainJsonShrine>>(NoBrainJsonDB.SHRINE_JSON); foreach (NoBrainJsonShrine item2 in list2) { foreach (string item3 in SHRINE_KEY_MAPPING[item2.name]) { SHRINES[item3] = item2.desc; } } AdvancedSynergyEntry[] synergies = GameManager.Instance.SynergyManager.synergies; AdvancedSynergyEntry[] array = synergies; foreach (AdvancedSynergyEntry advancedSynergyEntry in array) { if ((int)advancedSynergyEntry.ActivationStatus != 1 && (int)advancedSynergyEntry.ActivationStatus != 2) { advancedSynergyEntry.MandatoryGunIDs.ForEach(delegate(int i) { SYNERGIES.Add(i, advancedSynergyEntry); }); advancedSynergyEntry.MandatoryItemIDs.ForEach(delegate(int i) { SYNERGIES.Add(i, advancedSynergyEntry); }); advancedSynergyEntry.OptionalGunIDs.ForEach(delegate(int i) { SYNERGIES.Add(i, advancedSynergyEntry); }); advancedSynergyEntry.OptionalItemIDs.ForEach(delegate(int i) { SYNERGIES.Add(i, advancedSynergyEntry); }); } } } } public class NoBrainJsonItem { public int id; public string desc; public string stats; public override string ToString() { return "NoBrainJsonItem{" + id + ", " + desc + ", " + stats + "}"; } } public class NoBrainJsonShrine { public string name; public string desc; public override string ToString() { return "NoBrainJsonShrine{" + name + ", " + desc + ", " + desc + "}"; } } public class NoBrainJsonDB { public static readonly string ITEM_JSON = "[{\"id\":\"99\",\"name\":\"Rusty Sidearm\",\"desc\":\"The Hunter's starting gun\\nCannot reveal secret room doors\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: 6\\nDamage: 6\\nFire rate: 0.2\\nShot speed: 16\\nRange: 16\\nKnockback: 10\\nSpread: 7°\"},{\"id\":\"86\",\"name\":\"Marine Sidearm\",\"desc\":\"The Marine's starting gun\\nCannot reveal secret room doors\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: 10\\nDamage: 5\\nFire rate: 0.25\\nShot speed: 25\\nRange: 18\\nKnockback: 12\\nSpread: 5°\"},{\"id\":\"89\",\"name\":\"Rogue Special\",\"desc\":\"The Pilot's starting gun.\\nCannot reveal secret room doors\\nHas a short range and fires with low accuracy\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: 8\\nDamage: 5\\nFire rate: 0.25\\nShot speed: 22\\nRange: 13\\nKnockback: 6\\nSpread: 10°\"},{\"id\":\"80\",\"name\":\"Budget Revolver\",\"desc\":\"The Convict's starting gun.\\nCannot reveal secret room doors\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: 5\\nDamage: 6\\nFire rate: 0.15\\nShot speed: 23\\nRange: 18\\nKnockback: 10\\nSpread: 10°\"},{\"id\":\"24\",\"name\":\"Dart Gun\",\"desc\":\"The Cultist's starting gun (Co-op only character) which fires sticky darts\\nCannot reveal secret room doors\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: 6\\nDamage: 6\\nFire rate: 0.2\\nShot speed: 20\\nRange: 25\\nKnockback: 2\\nSpread: 5°\"},{\"id\":\"88\",\"name\":\"Robot's Right Hand\",\"desc\":\"The Robot's starting weapon (Secret unlockable character)\\nCannot reveal secret room doors\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: 20\\nDamage: 5\\nFire rate: 0.2\\nShot speed: 25\\nRange: 20\\nKnockback: 10\\nSpread: 7°\"},{\"id\":\"417\",\"name\":\"Blasphemy\",\"desc\":\"A sword that can be used to damage enemies and destroy projectiles (e.g. bullets)\\nWhen you are a full health, Blasphemy fires a piercing sword projectile (A reference to The Legend of Zelda)\\nThe Bullet's starting weapon\\nAs of the Supply Drop Update, this weapon's sword swing cannot reveal secret rooms (Still works on Nintendo Switch)\\nWhen used as The Robot, this weapon will not fire projectiles as the character has no red health.\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: n/a\\nDamage: 14\\nFire rate: 0.2\\nShot speed: 26\\nRange: Infinite\\nKnockback: 10\\nSpread: 10°\"},{\"id\":\"197\",\"name\":\"Pea Shooter\",\"desc\":\"A gun which shoots incredibly low damage peas\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 1000\\nClip size: 6\\nDamage: 4\\nFire rate: 0.15\\nShot speed: 20\\nRange: 20\\nKnockback: 3\\nSpread: 10°\"},{\"id\":\"56\",\"name\":\"38 Special\",\"desc\":\"A standard semi-automatic gun which fires bullets.\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 6\\nDamage: 5\\nFire rate: 0.07\\nShot speed: 23\\nRange: 35\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"378\",\"name\":\"Derringer\",\"desc\":\"A small standard semi-automatic pistol based on the real life gun of the same name\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 2\\nDamage: 10\\nFire rate: 0.07\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 6°\"},{\"id\":\"83\",\"name\":\"Unfinished Gun\",\"desc\":\"Shoots piercing bullets, which will travel through enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 15\\nDamage: 6\\nFire rate: 0.2\\nShot speed: 15\\nRange: 35\\nKnockback: 6\\nSpread: 15°\"},{\"id\":\"79\",\"name\":\"Makarov\",\"desc\":\"A basic pistol, which is stronger than some starting weapons\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 7\\nDamage: 5\\nFire rate: 0.15\\nShot speed: 23\\nRange: 60\\nKnockback: 10\\nSpread: 4°\"},{\"id\":\"30\",\"name\":\"M1911\",\"desc\":\"Standard pistol that is stronger than most starting weapons.\\nA reference to the real Colt M1991 pistol\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 7\\nDamage: 8\\nFire rate: 0.15\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 6°\"},{\"id\":\"38\",\"name\":\"Magnum\",\"desc\":\"A powerful pistol, based off the real gun of the same name\\nUpon reloading, the Magnum will randomly switch between having a clip size of either 5 or 6\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 140\\nClip size: 6\\nDamage: 13\\nFire rate: 0.15\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 7°\"},{\"id\":\"62\",\"name\":\"Colt 1851\",\"desc\":\"Fires two shots at the same time in a burst\",\"stats\":\"Type: Burst\\nMax ammo: 350\\nClip size: 12\\nDamage: 6\\nFire rate: 0.21\\nShot speed: 25\\nRange: ∞\\nKnockback: 10\\nSpread: None\"},{\"id\":\"50\",\"name\":\"SAA\",\"desc\":\"A gun which fires bouncing bullets\\nHas a faster reloading speed\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 6\\nDamage: 8 (direct) 12 (bounce)\\nFire rate: 0.12\\nShot speed: 25\\nRange: 1000\\nKnockback: 14\\nSpread: 0°\"},{\"id\":\"223\",\"name\":\"Cold 45\",\"desc\":\"Bullets fired by Cold 45 have a chance to freeze enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 12\\nDamage: 6\\nFire rate: 0.15\\nShot speed: 28\\nRange: 35\\nKnockback: 10\\nSpread: 6°\"},{\"id\":\"97\",\"name\":\"Polaris\",\"desc\":\"A gun that can evolve into 3 different stages.\\nKilling enemies causes Polaris to level up, increasing it's damage.\\nTaking damage will cause it to level down by 1\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 400\\nClip size: 12\\nDamage: 5 (level 1), 12 (level 2), 20 (level 3)\\nFire rate: 0.07\\nShot speed: 40\\nRange: 1000\\nKnockback: 30\\nSpread: 5°\"},{\"id\":\"47\",\"name\":\"Jolter\",\"desc\":\"Fires large rectangular bullets which do a good amount of damage\\nThis is a reference to a Warhammer 40k weapon\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 12\\nDamage: 13\\nFire rate: 0.25\\nShot speed: 25\\nRange: 25\\nKnockback: 50\\nSpread: 10°\"},{\"id\":\"23\",\"name\":\"Dungeon Eagle\",\"desc\":\"A strong pistol which can be charged up to release a powerful high-damaging shot\\nThis is a reference to the real gun, the Desert Eagle\",\"stats\":\"Type: Charged\\nMax ammo: 200\\nClip size: 9\\nDamage: 20 charged, 10 uncharged\\nFire rate: 0.2\\nShot speed: 25\\nRange: 60\\nKnockback: 10\\nSpread: 10°\"},{\"id\":\"182\",\"name\":\"Grey Mauser\",\"desc\":\"A gun which makes you invisible every time you reload an empty clip\\nDoing anything other than walking or stealing items from the shop will remove the invisibility effect\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 15\\nDamage: 8\\nFire rate: 0.1\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"464\",\"name\":\"Shellegun\",\"desc\":\"Reloading this gun will switch between two modes of firing either a pistol or a continous beam\\nCurse Up while held\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 300\\nClip size: 20 (beam), 12 (pistol)\\nDamage: 8\\nFire rate: 0.1\\nShot speed: 25\\nRange: 30\\nKnockback: 22\\nSpread: 5°\"},{\"id\":\"9\",\"name\":\"Dueling Pistol\",\"desc\":\"Fires large bullets that bounce twice\\nA single shot pistol which shoots bullets that can bounce off objects up to a maximum of two times\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 120\\nClip size: 1\\nDamage: 10\\nFire rate: 0.2\\nShot speed: 30\\nRange: 1000\\nKnockback: 15\\nSpread: 8°\"},{\"id\":\"53\",\"name\":\"AU Gun\",\"desc\":\"Fires a single powerful bullet, which will kill a lot of enemies in a single hit\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 22\\nClip size: 1\\nDamage: 100\\nFire rate: 0.2\\nShot speed: 25\\nRange: 1000\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"157\",\"name\":\"Big Iron\",\"desc\":\"Fires three bullets at a time, which spread out in a random fashion\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 6\\nDamage: 7 x 3 bullets (21 total)\\nFire rate: 0.07\\nShot speed: 16\\nRange: 16\\nKnockback: 10\\nSpread: 4°\"},{\"id\":\"337\",\"name\":\"Composite Gun\",\"desc\":\"This gun fires a charged shot which consumes two ammo and will pierce through enemies\",\"stats\":\"Type: Charged\\nMax ammo: 50\\nClip size: 2\\nDamage: 40 (uncharged), 100 (charged)\\nFire rate: 0.2\\nShot speed: 25\\nRange: 1000\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"275\",\"name\":\"Flare Gun\",\"desc\":\"Fires a bullet that has a chance to set enemies on fire\\nIngited enemies take damage over time for a short period\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 1\\nDamage: 13\\nFire rate: 0.1\\nShot speed: 23\\nRange: 1000\\nKnockback: 35\\nSpread: 6°\"},{\"id\":\"35\",\"name\":\"Smiley's Revolver\",\"desc\":\"A semi-automatic gun which gains a fire rate increase for a while after dodge rolling\\nDecreases shop prices while held\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 9\\nFire rate: 0.1\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 6°\"},{\"id\":\"22\",\"name\":\"Shades's Revolver\",\"desc\":\"While held, this gun will increase the player's coolness stat by +3, which reduces the cooldown of active items and increase the chance of getting a pickup or chest drop after clearing a room\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 6\\nDamage: 15\\nFire rate: 0.3\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 6°\"},{\"id\":\"51\",\"name\":\"Regular Shotgun\",\"desc\":\"A standard shotgun, which releases a spread of bullets each time it is fired\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 8\\nDamage: 4 x 6 (24 total)\\nFire rate: 0.6\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 10°\"},{\"id\":\"93\",\"name\":\"Old Goldie\",\"desc\":\"A double-barrel shotgun more powerful than the regular shotgun, which fires a random spread of bullets\\n+1 Coolness up (decreases active item cooldowns, luck up)\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 70\\nClip size: 4\\nDamage: 3.5 x 10 (35 total)\\nFire rate: 0.5\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 5°\"},{\"id\":\"202\",\"name\":\"Sawed-Off\",\"desc\":\"A shotgun with a low bullet range and wider spread of bullets\\nOne of the Convict's starting weapons\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 6\\nDamage: 4 x 4 (16 total)\\nFire rate: 0.5\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 8°\"},{\"id\":\"1\",\"name\":\"Winchester\",\"desc\":\"A modified shotgun which has the same damage as the regular shotgun, but has a more accurate spread\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 8\\nDamage: 4 x 6 (24 total)\\nFire rate: 0.6\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 7°\"},{\"id\":\"406\",\"name\":\"Rattler\",\"desc\":\"Simultaneously fires a shotgun blast and a beam that has a chance to poison enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 8\\nDamage: 3 x 7 (21 total)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"82\",\"name\":\"Elephant Gun\",\"desc\":\"Fires a cone spread of bullets and has strong knockback dealt to any enemies hit by the bullets\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 120\\nClip size: 2\\nDamage: 5.5 x 6 (33 total)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"175\",\"name\":\"Tangler\",\"desc\":\"Fires a shotgun blast of rectangular bullets that bounce off walls. Enemies hit will be folded into a rectangle\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 6 x 6 (36 total)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"55\",\"name\":\"Void Shotgun\",\"desc\":\"A shotgun with low range that fires a cluster of purple bullets\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 120\\nClip size: 4\\nDamage: 5 x 6 (30 total)\\nFire rate: 0.4\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 0°\"},{\"id\":\"365\",\"name\":\"Mass Shotgun\",\"desc\":\"The Mass Shotgun fires a single large bullet that splits into a series of smaller bullets, which all continue in a straight line\",\"stats\":\"Type: Automatic\\nMax ammo: 200\\nClip size: 1\\nDamage: 30 (large bullet), 6 x 12 (72 total for all smaller bullets)\\nFire rate: 0.4\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 0°\"},{\"id\":\"143\",\"name\":\"Shotgun Full of Hate\",\"desc\":\"A shotgun which fires a cluster of poison bullets, which each leave a pool of poison on the ground\\nPoisoned enemies take damage over time\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 8\\nDamage: 6 x 4 (24 total for bullets), 5 (skull), 3 (nail)\\nFire rate: 0.5\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 14°\"},{\"id\":\"379\",\"name\":\"Shotgun Full of Love\",\"desc\":\"A shotgun that fires a cluster of bullets, which each have a chance to charm any hit enemies\\nCharmed enemies will attack other enemies instead of players for a short amount of time\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 120\\nClip size: 8\\nDamage: 5 x 6 (30 total)\\nFire rate: 0.5\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 14°\"},{\"id\":\"347\",\"name\":\"Shotgrub\",\"desc\":\"A shotgun that fires 5 bullets, each which leave a pool of poison on the ground\\nPoisoned enemies take damage over time\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 8\\nDamage: 5 x 5 (25 total)\\nFire rate: 0.4\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 0°\"},{\"id\":\"231\",\"name\":\"Gilded Hydra\",\"desc\":\"A semi-automatic gun which fires large bouncy, piercing bullets\\nBy default the Clip size is 1, however this can be increased by 1 for every empty half heart the player is missing.\\nFilling those empty health containers will reduce the Clip size again\\nVery good at killing large or multiple part bosses (e.g. Kill Pillars)\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 50\\nClip size: >= 1\\nDamage: 7.5 x 8 (60 total)\\nFire rate: 0.4\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 0°\"},{\"id\":\"122\",\"name\":\"Blunderbuss\",\"desc\":\"A gun which must be charged, and upon release will fire a short-range cluster of bullets\\nThe bullets fired have a wide spread\",\"stats\":\"Type: Charged\\nMax ammo: 100\\nClip size: 4\\nDamage: 3 x 10 (30 total)\\nFire rate: 0.5\\nShot speed: 26\\nRange: 1000\\nKnockback: 25\\nSpread: 20°\"},{\"id\":\"123\",\"name\":\"Pulse Cannon\",\"desc\":\"A shotgun which fires clusters of 5 bullets per use\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 120\\nClip size: 8\\nDamage: 4 x 6 (24 total)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"404\",\"name\":\"Siren\",\"desc\":\"A shotgun which fires a cluster of water bullets.\\nEach bullet that makes contact with an enemy or obstacle will place a pool of water on the floor\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 6\\nDamage: 6 x 3 (18 total)\\nFire rate: 0.4\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 0°\"},{\"id\":\"329\",\"name\":\"Zilla Shotgun\",\"desc\":\"A shotgun which fires a cluster of bullets each time it is used\\nCan be charged up to fire the entire clip of bullets at once\\nIf fully charged, the bullets will be bouncy and piercing\",\"stats\":\"Type: Charged\\nMax ammo: 120\\nClip size: 6\\nDamage: 4 x 8 (32 total when uncharged), 6 x 7 (42 total when charged)\\nFire rate: 0.5\\nShot speed: 26\\nRange: 1000\\nKnockback: 26\\nSpread: 20°\"},{\"id\":\"225\",\"name\":\"Ice Breaker\",\"desc\":\"A gun with a clip size of 3. \\nThe first 2 shots of each clip fire a cluster of ice bullets.\\nThe 3rd shot fires a single explosive bullet\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 3\\nDamage: 2 x 5 (10 total), 35 (explosive)\\nFire rate: 0.4\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 0°\"},{\"id\":\"151\",\"name\":\"The Membrane\",\"desc\":\"A shotgun which fires a cluster of bouncy bullets\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 120\\nClip size: 6\\nDamage: 24 (before split), 36 (after split)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"346\",\"name\":\"Huntsman\",\"desc\":\"A gun which fires clusters of bullets like a shotgun\\nWhen reloaded, will cause the player to swing the axe infront of them, breaking any projectiles caught in the blade\\nCurse Up while this gun is held\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 6\\nDamage: 3.5 x 6 (21 total)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"18\",\"name\":\"Blooper\",\"desc\":\"A shotgun that fires a cluster of bullets\\nHas a short range\\nBullets deal a lot of knockback to enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 5\\nDamage: 7 x 6 (42 total)\\nFire rate: 0.4\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 0°\"},{\"id\":\"8\",\"name\":\"Bow\",\"desc\":\"Fires arrows\\nWhen fully charged, the arrows will become piercing and do much more damage.\",\"stats\":\"Type: Charged\\nMax ammo: 100\\nClip size: 1\\nDamage: 7.5 (uncharged), 30 (charged)\\nFire rate: 1\\nShot speed: 26\\nRange: 1000\\nKnockback: 25\\nSpread: 0°\"},{\"id\":\"200\",\"name\":\"Charmed Bow\",\"desc\":\"Fires arrows\\nArrows have a chance to charm enemies\\nCharmed enemies will attack other enemies instead of players for a short amount of time\",\"stats\":\"Type: Charged\\nMax ammo: 100\\nClip size: 1\\nDamage: 7.5 (uncharged), 14 (charged)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"12\",\"name\":\"Crossbow\",\"desc\":\"A crossbow which fires bolts that deal a lot of damage, however each bolt needs to be loaded individually\\nThe Hunter starts with this weapon\\nThere is a delay between the shot being fired and the auto reload which can be canceled with a manual reload.\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 1\\nDamage: 22\\nFire rate: 0.5\\nShot speed: 26\\nRange: 1000\\nKnockback: 25\\nSpread: 7°\"},{\"id\":\"4\",\"name\":\"Sticky Crossbow\",\"desc\":\"A crossbow which fires sticky bolts.\\nThe bolts will explode when you reload the gun, dealing damage to any nearby enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 5\\nDamage: 5 (bolts), 15 (explosion)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"126\",\"name\":\"Shotbow\",\"desc\":\"A shotgun-crossbow combo that fires a cluster of piercing bolts\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 80\\nClip size: 3\\nDamage: 6 x 6 (36 total)\\nFire rate: 1\\nShot speed: 26\\nRange: 1000\\nKnockback: 25\\nSpread: 5°\"},{\"id\":\"381\",\"name\":\"Triple Crossbow\",\"desc\":\"A crossbow that will either shoot 3 bolts at once, or a single bolt which has a chance to slow enemies\\nReloading the Triple Crossbow will switch between the two types\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 3\\nDamage: 7 (single bolt), 7 x 3 (21 total for tripe bolts)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"52\",\"name\":\"Crescent Crossbow\",\"desc\":\"A crossbow which fires star projectiles, which will split into smaller bouncy stars\\nIf fully charged, the it will fire a larger star, which will split twice instead of once\",\"stats\":\"Type: Charged\\nMax ammo: 100\\nClip size: 12\\nDamage: 22 (large), 8 (medium), 3 (small)\\nFire rate: 0.2\\nShot speed: 32\\nRange: 1000\\nKnockback: 20\\nSpread: 0°\"},{\"id\":\"210\",\"name\":\"Gunbow\",\"desc\":\"A gun which can be charged up to fire bouncy bullets that have a high shot speed\",\"stats\":\"Type: Charged\\nMax ammo: 70\\nClip size: 1\\nDamage: 35\\nFire rate: 0.001\\nShot speed: 26\\nRange: 1000\\nKnockback: 25\\nSpread: 0°\"},{\"id\":\"31\",\"name\":\"Klobbe\",\"desc\":\"An automatic gun which rapidly fires weak, inaccurate bullets\",\"stats\":\"Type: Automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 1.2\\nFire rate: 0.04\\nShot speed: 14\\nRange: 1000\\nKnockback: 1\\nSpread: 20°\"},{\"id\":\"43\",\"name\":\"Machine Pistol\",\"desc\":\"An automatic gun which rapidly fires bullets\",\"stats\":\"Type: Automatic\\nMax ammo: 600\\nClip size: 30\\nDamage: 3.2\\nFire rate: 0.07\\nShot speed: 23\\nRange: 16\\nKnockback: 6\\nSpread: 10°\"},{\"id\":\"2\",\"name\":\"Thompson Sub-Machinegun\",\"desc\":\"An automatic sub-machinegun\",\"stats\":\"Type: Automatic\\nMax ammo: 350\\nClip size: 30\\nDamage: 5\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"15\",\"name\":\"AK-47\",\"desc\":\"A automatic assault rifle. It's good.\",\"stats\":\"Type: Automatic\\nMax ammo: 500\\nClip size: 30\\nDamage: 5.5\\nFire rate: 0.11\\nShot speed: 23\\nRange: 1000\\nKnockback: 9\\nSpread: 4°\"},{\"id\":\"95\",\"name\":\"AKEY-47\",\"desc\":\"A automatic gun which fires keys\\nShooting a locked door or chest will unlock it\",\"stats\":\"Type: Automatic\\nMax ammo: 500\\nClip size: 30\\nDamage: 5.5\\nFire rate: 0.11\\nShot speed: 23\\nRange: 1000\\nKnockback: 9\\nSpread: 4°\"},{\"id\":\"96\",\"name\":\"M16\",\"desc\":\"A machine gun, which can either fire a burst of 3 bullets or grenades\\nReloading will swap between the two firing modes\",\"stats\":\"Type: Burst\\nMax ammo: n/a\\nClip size: \\nDamage: 5.5 (bullets), 10 (grenade impact), 25 (explosion)\\nFire rate: 0.1\\nShot speed: 23\\nRange: 1000\\nKnockback: 11\\nSpread: 7°\"},{\"id\":\"6\",\"name\":\"Zorgun\",\"desc\":\"A gun which rapidly fires homing bullets\\nThe last bullet in each clip fires a random explosive (grenade, rocket, or drill)\",\"stats\":\"Type: Automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 5.5\\nFire rate: 0.1\\nShot speed: 23\\nRange: 1000\\nKnockback: 9\\nSpread: 5°\"},{\"id\":\"29\",\"name\":\"VertebraeK-47\",\"desc\":\"A gun which fires piercing and homing bullets\\nBullets close to one another will link together, damaging enemies that touch the link\",\"stats\":\"Type: Automatic\\nMax ammo: 250\\nClip size: 30\\nDamage: 4\\nFire rate: 0.1\\nShot speed: 18\\nRange: 1000\\nKnockback: 6\\nSpread: 5°\"},{\"id\":\"94\",\"name\":\"MAC10\",\"desc\":\"A machine gun that fires a burst of four bullets at a time\",\"stats\":\"Type: Burst\\nMax ammo: 600\\nClip size: 30\\nDamage: 3.5\\nFire rate: 0.07\\nShot speed: 23\\nRange: 1000\\nKnockback: 3\\nSpread: 10°\"},{\"id\":\"17\",\"name\":\"Heck Blaster\",\"desc\":\"A gun that fires bullets which travel instantly towards their target, appearing to be invisible\",\"stats\":\"Type: Automatic\\nMax ammo: 999\\nClip size: 999\\nDamage: 2.5\\nFire rate: 0.05\\nShot speed: 40\\nRange: 14\\nKnockback: 3\\nSpread: 8°\"},{\"id\":\"98\",\"name\":\"Patriot\",\"desc\":\"An automatic gun that fires piercing bullets\\nHolding down the trigger will greatly increase the fire rate of this gun\",\"stats\":\"Type: Automatic\\nMax ammo: 350\\nClip size: 50\\nDamage: 7\\nFire rate: 0.3\\nShot speed: 30\\nRange: 1000\\nKnockback: 15\\nSpread: 1°\"},{\"id\":\"84\",\"name\":\"Vulcan Cannon\",\"desc\":\"A gun which rapidly fires inaccurate bullets\\nUsed by the Gatling Gull boss that appears in the first chamber\",\"stats\":\"Type: Automatic\\nMax ammo: 800\\nClip size: 800\\nDamage: 4\\nFire rate: 0.05\\nShot speed: 35\\nRange: 1000\\nKnockback: 15\\nSpread: 12°\"},{\"id\":\"207\",\"name\":\"Plague Pistol\",\"desc\":\"Fires bullets that leave poison goop on the ground and have a chance to poison enemies\\nA semi-automatic pistol that fires bullets which have a chance to poison enemies\\nPoisoned enemies take damage over time for a short period\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 12\\nDamage: 4\\nFire rate: 0.15\\nShot speed: 20\\nRange: 25\\nKnockback: 13\\nSpread: 5°\"},{\"id\":\"401\",\"name\":\"Gungine\",\"desc\":\"An automatic gun which when reloaded, will clear up nearby goop and replenish ammo missing from your current magazine\\nPlayer movement speed up by +32% while held\",\"stats\":\"Type: Automatic\\nMax ammo: 800\\nClip size: 100\\nDamage: 5\\nFire rate: 0.05\\nShot speed: 35\\nRange: 1000\\nKnockback: 15\\nSpread: 6°\"},{\"id\":\"146\",\"name\":\"Dragunfire\",\"desc\":\"An automatic gun that fires bullets which have a chance to burn enemies\\nBurned enemies take damage over time for a short period\",\"stats\":\"Type: Automatic\\nMax ammo: 600\\nClip size: 30\\nDamage: 5\\nFire rate: 0.05\\nShot speed: 25\\nRange: 1000\\nKnockback: 27\\nSpread: 7°\"},{\"id\":\"49\",\"name\":\"Sniper Rifle\",\"desc\":\"A sniper rifle that fires single high-power bullets, which can pierce through enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 80\\nClip size: 10\\nDamage: 26\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"5\",\"name\":\"A.W.P.\",\"desc\":\"A high powered sniper rifle that fires piercing bullets which deal a lot of damage\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 60\\nClip size: 10\\nDamage: 40\\nFire rate: 1.2\\nShot speed: 100\\nRange: 1000\\nKnockback: 25\\nSpread: 5°\"},{\"id\":\"25\",\"name\":\"M1\",\"desc\":\"A semi-automatic gun which fires piercing bullets\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 6\\nDamage: 20\\nFire rate: 0.8\\nShot speed: 200\\nRange: 60\\nKnockback: 25\\nSpread: 2°\"},{\"id\":\"181\",\"name\":\"Winchester Rifle\",\"desc\":\"A semi-automatic rifle that fires powerful bullets at a low rate of fire\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 130\\nClip size: 12\\nDamage: 15\\nFire rate: 0.72\\nShot speed: 32\\nRange: 1000\\nKnockback: 9\\nSpread: 5°\"},{\"id\":\"327\",\"name\":\"Corsair\",\"desc\":\"A gun which must be charged to fire bullets which start out slow, but increase in speed over time and bounce around the room\",\"stats\":\"Type: Charged\\nMax ammo: 200\\nClip size: 1\\nDamage: 10\\nFire rate: \\nShot speed: 26\\nRange: 1000\\nKnockback: 25\\nSpread: 5°\"},{\"id\":\"358\",\"name\":\"Railgun\",\"desc\":\"A single clip gun that is charged up to fire one highly powerful bouncy, piercing bullet with high shot speed\",\"stats\":\"Type: Charged\\nMax ammo: 40\\nClip size: 1\\nDamage: 50\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"370\",\"name\":\"Prototype Railgun\",\"desc\":\"A gun which fires piercing shots with a high shot speed (charge to fire)\",\"stats\":\"Type: Charged\\nMax ammo: n/a\\nClip size: \\nDamage: 75\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"32\",\"name\":\"Void Marshal\",\"desc\":\"A highly accurate semi-automatic gun that fires fast-moving lasers\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 15\\nDamage: 9\\nFire rate: 0.1\\nShot speed: 35\\nRange: 35\\nKnockback: 10\\nSpread: 7°\"},{\"id\":\"81\",\"name\":\"Deck4rd\",\"desc\":\"Fires massive powerful bullets that will explode upon impact\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 40\\nClip size: 2\\nDamage: 5 (bullets), 35 (explosion)\\nFire rate: 0.2\\nShot speed: 20\\nRange: 1000\\nKnockback: 22\\nSpread: 10°\"},{\"id\":\"184\",\"name\":\"The Judge\",\"desc\":\"The final shot of each clip has a chance to apply a random status effect to enemies (poison, freeze or burn)\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 400\\nClip size: 9\\nDamage: 7.5\\nFire rate: 0.15\\nShot speed: 30\\nRange: 1000\\nKnockback: 9\\nSpread: 7°\"},{\"id\":\"57\",\"name\":\"Alien Sidearm\",\"desc\":\"A gun which can be charged up to fire larger shots that deal more damage\\nCan also be rapid fired by quickly firing instead of charging\",\"stats\":\"Type: Charged\\nMax ammo: 350\\nClip size: 10\\nDamage: 5 (uncharged), 25 (charged)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"142\",\"name\":\"RUBE-ADYNE Prototype\",\"desc\":\"A gun which fires lasers that will bounce 4 times\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 6\\nDamage: 7\\nFire rate: 0.12\\nShot speed: 40\\nRange: 60\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"128\",\"name\":\"RUBE-ADYNE MK.II\",\"desc\":\"A laser pistol that fires bouncy lasers\\nA better version of the RUBE-ADYNE Prototype\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 300\\nClip size: 15\\nDamage: 8\\nFire rate: 0.1\\nShot speed: 40\\nRange: 35\\nKnockback: 10\\nSpread: 7°\"},{\"id\":\"394\",\"name\":\"Mine Cutter\",\"desc\":\"Upon reloading, this gun will alternate between firing three small piercing lasers and single larger lasers\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 12\\nDamage: 10 (3 laser mode), 8 (single laser mode)\\nFire rate: 0.1\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 7°\"},{\"id\":\"58\",\"name\":\"Void Core Assault Rifle\",\"desc\":\"An assault rifle that fires bursts of three lasers at a time\",\"stats\":\"Type: Burst\\nMax ammo: 300\\nClip size: 30\\nDamage: 6.5\\nFire rate: 0.35\\nShot speed: 23\\nRange: 20\\nKnockback: 15\\nSpread: 3°\"},{\"id\":\"383\",\"name\":\"Flash Ray\",\"desc\":\"A ray gun that fires piercing lasers\\nLasers from this gun have a chance to stun enemies for a brief period of time\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 8\\nDamage: 7.5\\nFire rate: 0.2\\nShot speed: 600\\nRange: 1000\\nKnockback: 4\\nSpread: 10°\"},{\"id\":\"334\",\"name\":\"Wind Up Gun\",\"desc\":\"A semi-automatic gun which decreases in damage as the clip empties\",\"stats\":\"Type: Automatic\\nMax ammo: 600\\nClip size: 20\\nDamage: 5\\nFire rate: 0.13\\nShot speed: 30\\nRange: 35\\nKnockback: 10\\nSpread: 8°\"},{\"id\":\"91\",\"name\":\"H4mmer\",\"desc\":\"A semi-automatic gun that fires bullets rapidly\\nThe last shot in the magazine is a hammer, which deals more damage and has a chance to stun enemies\",\"stats\":\"Type: Automatic\\nMax ammo: 450\\nClip size: 30\\nDamage: 3.8 (bullets), 20 (hammer)\\nFire rate: 0.05\\nShot speed: 23\\nRange: 1000\\nKnockback: 6\\nSpread: 7°\"},{\"id\":\"360\",\"name\":\"Snakemaker\",\"desc\":\"An automatic gun which fires bullets that have a chance to transmogrify enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 12\\nFire rate: 0.25\\nShot speed: 50\\nRange: 1000\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"229\",\"name\":\"Hegemony Carbine\",\"desc\":\"Shoots rapid fire white bolts of energy\\nHas a very small chance to drop a Hegemony Credit upon killing an enemy\",\"stats\":\"Type: Automatic\\nMax ammo: 600\\nClip size: 25\\nDamage: 3.5\\nFire rate: 0.13\\nShot speed: ?\\nRange: ?\\nKnockback: ?\\nSpread: ?°\"},{\"id\":\"3\",\"name\":\"Screecher\",\"desc\":\"A gun that fires piercing sound waves, which increase in size the further they travel across the room\\nThe sound waves have a chance to stun enemies for a few seconds\",\"stats\":\"Type: Automatic\\nMax ammo: 1000\\nClip size: 1000\\nDamage: 1.5\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"156\",\"name\":\"Laser Lotus\",\"desc\":\"Laser Lotus is a gun that fires piercing lasers\\nThe lasers electrify any water that they pass over.\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 10\\nDamage: 16\\nFire rate: 0.2\\nShot speed: 45\\nRange: 1000\\nKnockback: 26\\nSpread: 5°\"},{\"id\":\"59\",\"name\":\"Hegemony Rifle\",\"desc\":\"A fairly decent damaging semi-automatic gun which is inaccurate\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 10\\nFire rate: 0.25\\nShot speed: 35\\nRange: 15\\nKnockback: 15\\nSpread: 13°\"},{\"id\":\"345\",\"name\":\"Fightsabre\",\"desc\":\"An automatic gun that is swung while reloading. Any bullets nearby while reloading will be reflected away\\nCurse Up while held\",\"stats\":\"Type: Automatic\\nMax ammo: 500\\nClip size: 25\\nDamage: 6\\nFire rate: 0.15\\nShot speed: 23\\nRange: 50\\nKnockback: 10\\nSpread: 8°\"},{\"id\":\"230\",\"name\":\"Helix\",\"desc\":\"Fires two bullets in a helix pattern\\nQuite powerful, best used on large bosses where the most amount of damage can be dealt per shot\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 12\\nDamage: 7.5 x 2 (15 total)\\nFire rate: 0.07\\nShot speed: 35\\nRange: 35\\nKnockback: 10\\nSpread: 7°\"},{\"id\":\"54\",\"name\":\"Laser Rifle\",\"desc\":\"A laser rifle that fires a burst of 3 shots\",\"stats\":\"Type: Burst\\nMax ammo: 500\\nClip size: 24\\nDamage: 5\\nFire rate: 0.5\\nShot speed: 200\\nRange: 60\\nKnockback: 16\\nSpread: 5°\"},{\"id\":\"178\",\"name\":\"Crestfaller\",\"desc\":\"A semi-automatic gun that fires bullets which have a chance to slow and freeze enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 8\\nDamage: 10\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"13\",\"name\":\"Thunderclap\",\"desc\":\"A semi-automatic gun that fires small balls of lightning\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 300\\nClip size: 15\\nDamage: 8\\nFire rate: 0.1\\nShot speed: 20\\nRange: 1000\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"328\",\"name\":\"Charge Shot\",\"desc\":\"Fires a large laser that fires piercing, bouncy bullets\",\"stats\":\"Type: Charged\\nMax ammo: 50\\nClip size: 1\\nDamage: 30\\nFire rate: 0.01\\nShot speed: 26\\nRange: 1000\\nKnockback: 25\\nSpread: 5°\"},{\"id\":\"274\",\"name\":\"Dark Marker\",\"desc\":\"This gun can be charged to fire the entire clip at once, creating two projectiles which curve and meet at the same point\\nWhen the two fired projectiles meet, they create a blank effect and explosion\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 12\\nDamage: 8 (bullets), 80 (explosion)\\nFire rate: 0.2\\nShot speed: 32\\nRange: 1000\\nKnockback: 20\\nSpread: 0°\"},{\"id\":\"228\",\"name\":\"Particulator\",\"desc\":\"Fires seeking bullets in a small spread, which will travel towards nearby enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 60\\nClip size: 1\\nDamage: 30 (large), 7 (small)\\nFire rate: 0.7\\nShot speed: 10\\nRange: 10\\nKnockback: 8\\nSpread: 0°\"},{\"id\":\"330\",\"name\":\"The Emperor\",\"desc\":\"A gun that fires a burst of four bullets which are all connected to each other by electricity\",\"stats\":\"Type: Burst\\nMax ammo: n/a\\nClip size: 30\\nDamage: 7\\nFire rate: 0.3\\nShot speed: 20\\nRange: 50\\nKnockback: 10\\nSpread: 7°\"},{\"id\":\"39\",\"name\":\"RPG\",\"desc\":\"Fires rocket-propelled grenades, which explode on impact\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 40\\nClip size: 1\\nDamage: 20 (impact), 35 (explosion)\\nFire rate: 1\\nShot speed: 40\\nRange: 90\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"19\",\"name\":\"Grenade Launcher\",\"desc\":\"Shoots a grenade that bounces off of surfaces and explodes on impact with enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 25\\nClip size: 1\\nDamage: 10 (impact), 25 (explosion)\\nFire rate: 1.2\\nShot speed: 20\\nRange: 20\\nKnockback: 20\\nSpread: 4°\"},{\"id\":\"92\",\"name\":\"Stinger\",\"desc\":\"A semi-automatic launcher that fires homing rockets, which release bees when exploded\\nFriendly bees will seek out and attack the nearest enemy, dealing damage on contact\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 50\\nClip size: 1\\nDamage: 10 (impact), 15 (explosion)\\nFire rate: 1\\nShot speed: 20\\nRange: 60\\nKnockback: 10\\nSpread: 1°\"},{\"id\":\"129\",\"name\":\"Com4nd0\",\"desc\":\"Fires homing rockets\\nFires very powerful homing rockets, which seek out enemies and explode on contact\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 40\\nClip size: 4\\nDamage: 20 (impact), 25 (explosion)\\nFire rate: 0.6\\nShot speed: 14\\nRange: 90\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"372\",\"name\":\"RC Rocket\",\"desc\":\"Fires rockets that are controlled by your mouse cursor\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 50\\nClip size: 1\\nDamage: 100\\nFire rate: 0.6\\nShot speed: 10\\nRange: 200\\nKnockback: 10\\nSpread: 1°\"},{\"id\":\"16\",\"name\":\"Yari Launcher\",\"desc\":\"A gun that rapidly fires homing rockets\",\"stats\":\"Type: Automatic\\nMax ammo: 80\\nClip size: \\nDamage: 10 (impact), 15 (explosion)\\nFire rate: 0.04\\nShot speed: 10\\nRange: 90\\nKnockback: 30\\nSpread: 45°\"},{\"id\":\"332\",\"name\":\"Lil' Bomber\",\"desc\":\"A gun which must be charged to fire a bomb, which explodes on contact with enemies\\nThe bombs will also bounce off objects and walls\",\"stats\":\"Type: Charged\\nMax ammo: 60\\nClip size: 3\\nDamage: 15 (impact), 25 (explosion)\\nFire rate: 1\\nShot speed: 23\\nRange: 1000\\nKnockback: 35\\nSpread: 6°\"},{\"id\":\"180\",\"name\":\"Grasschopper\",\"desc\":\"Fires a single powerful blast that will knock the player back in recoil\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 20 (impact), 20 (explosion)\\nFire rate: 0.07\\nShot speed: 36\\nRange: 18\\nKnockback: 22\\nSpread: 5°\"},{\"id\":\"61\",\"name\":\"Bundle of Wands\",\"desc\":\"Fires a spread of magic bursts that have a chance to transmogrify enemies upon each successful hit\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 7 x 3 (21 total)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"395\",\"name\":\"Staff of Firepower\",\"desc\":\"A gun that will alternate between two modes when reloading: A quick firing pistol and a beam that can set enemies on fire\\nBurned enemies take damage over time for a short period\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 12 (staff), 6 (gun)\\nDamage: 7 (pistol), 12 (beam)\\nFire rate: 0.15\\nShot speed: 25\\nRange: 1000\\nKnockback: 12\\nSpread: 7°\"},{\"id\":\"145\",\"name\":\"Witch Pistol\",\"desc\":\"Fires bullets that have a chance to transmogrify enemies upon each successful hit\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 6\\nDamage: 6\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"385\",\"name\":\"Hexagun\",\"desc\":\"A semiautomatic rifle that fires piercing bullets which have a chance to transmogrify enemies on each successful hit\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 75\\nClip size: 1\\nDamage: 35\\nFire rate: 0.001\\nShot speed: 200\\nRange: 1000\\nKnockback: 25\\nSpread: 0°\"},{\"id\":\"384\",\"name\":\"Phoenix\",\"desc\":\"Firing a bullet also creates a cone of fire in front of the player that sets enemies on fire\\nBurned enemies take damage over time for a short period\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 12\\nDamage: 4\\nFire rate: 0.15\\nShot speed: 25\\nRange: 25\\nKnockback: 13\\nSpread: 3°\"},{\"id\":\"0\",\"name\":\"Magic Lamp\",\"desc\":\"Fires magic bullets which add a counter to each enemy it hits\\nWhen the counter reaches 3, a genie will spawn and punch the enemy\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 8\\nFire rate: 0.5\\nShot speed: 12\\nRange: 1000\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"198\",\"name\":\"Gunslinger's Ashes\",\"desc\":\"Each shot releases an armed spirit that attacks enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 80\\nClip size: 6\\nDamage: 5 x 3 (15 total)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"199\",\"name\":\"Luxin Cannon\",\"desc\":\"Rapidly fires laser bullets\\nWhen the magazine is emptied, the end of the crystal will be launched forward, dealing extra damage to any enemies it hits\",\"stats\":\"Type: Automatic\\nMax ammo: 600\\nClip size: 45\\nDamage: 4.5\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"338\",\"name\":\"Gunther\",\"desc\":\"Gunther is a gun which evolves slowly as each room is cleared\\nStage #1: Gunther fires piercing bullets\\nStage #2: Bullets gain a damage up and become bouncy\\nStage #3: Bullets gain another damage up and seek out enemies (homing effect)\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: \\nDamage: 6, 9, 12 (increases with each stage)\\nFire rate: 0.1\\nShot speed: 16\\nRange: 50\\nKnockback: 20\\nSpread: 10°\"},{\"id\":\"100\",\"name\":\"Unicorn Horn\",\"desc\":\"Fires a rainbow beam that will bend towards enemies\\nCurse Up while held\",\"stats\":\"Type: Beam\\nMax ammo: n/a\\nClip size: \\nDamage: 30 per second\\nFire rate: 0.1\\nShot speed: 30\\nRange: 30\\nKnockback: 45\\nSpread: 0°\"},{\"id\":\"390\",\"name\":\"Cobalt Hammer\",\"desc\":\"A gun which fires blue lasers\\nCan be charged up to fire lasers in four directions\\nA reference to twitch.tv streamers Cobaltstreak and Richard Hammer\",\"stats\":\"Type: Charged\\nMax ammo: 60\\nClip size: 6\\nDamage: 36 (charged), 26 (uncharged)\\nFire rate: 0.3\\nShot speed: 100\\nRange: 1000\\nKnockback: 80\\nSpread: 0°\"},{\"id\":\"387\",\"name\":\"Frost Giant\",\"desc\":\"Firing a bullet also creates a cone of ice in front of the player that has a chance to freeze enemies inside it\\nSlowed enemies will have reduced movement speed. If applied multiple times, the enemy will freeze solid for a while. Dodge rolling into a frozen enemy will shatter it\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 130\\nClip size: 12\\nDamage: 12\\nFire rate: 0.001\\nShot speed: 20\\nRange: 30\\nKnockback: 10\\nSpread: 12°\"},{\"id\":\"362\",\"name\":\"Bullet Bore\",\"desc\":\"Fires homing drills, that seek out enemies and stun them for a few seconds\\nAfter a while, the drill will then explode\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 75\\nClip size: 1\\nDamage: 10 (bullet), 25 (explosion)\\nFire rate: 1\\nShot speed: 20\\nRange: 1000\\nKnockback: 8\\nSpread: 5°\"},{\"id\":\"357\",\"name\":\"Cat Claw\",\"desc\":\"Fires homing darts which deal no damage on contact, but will explode after a few seconds of being stuck to an enemy\",\"stats\":\"Type: Automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 2 (dart), 10 (explosion)\\nFire rate: 0.15\\nShot speed: 23\\nRange: 1000\\nKnockback: 2\\nSpread: 5°\"},{\"id\":\"36\",\"name\":\"Megahand\",\"desc\":\"A charged gun which can be rapidly fired with low damage bullets, or fully charged to deal a powerful shot\",\"stats\":\"Type: Charged\\nMax ammo: 200\\nClip size: 18\\nDamage: 6 (uncharged), 45 (charged)\\nFire rate: 0.07\\nShot speed: 20\\nRange: 1000\\nKnockback: 8\\nSpread: 0°\"},{\"id\":\"60\",\"name\":\"Demon Head\",\"desc\":\"Fires a continuous beam that has a chance to afflict Burn\\nBurned enemies take damage over time for a short period\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 31 per second\\nFire rate: 0.1\\nShot speed: 100\\nRange: 40\\nKnockback: 30\\nSpread: 5°\"},{\"id\":\"41\",\"name\":\"Heroine\",\"desc\":\"A charged gun which can be fired quickly with low damage bullets, or fully charged to deal a single powerful shot\",\"stats\":\"Type: Charged\\nMax ammo: 200\\nClip size: 6\\nDamage: 5 (level 1 charge), 10 (level 2 charge), 70 (level 3 charge)\\nFire rate: 0.07\\nShot speed: 25\\nRange: 1000\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"333\",\"name\":\"Mutation\",\"desc\":\"Fires a continuous beam which has heavy recoil for the player\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 45 per second\\nFire rate: 0.1\\nShot speed: 40\\nRange: 20\\nKnockback: 50\\nSpread: 5°\"},{\"id\":\"125\",\"name\":\"Flame Hand\",\"desc\":\"Fires fireballs that pierce enemies and have a chance to set enemies on fire\\nBurned enemies take damage over time for a short period\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: Varies\\nFire rate: 0.1\\nShot speed: 23\\nRange: 1000\\nKnockback: 35\\nSpread: 0°\"},{\"id\":\"186\",\"name\":\"Machine Fist\",\"desc\":\"A gun that alternates between two modes of firing upon reloading\\nMode 1: A gattling gun\\nMode 2: A single shot exploding rocket that is guided by the player's mouse cursor (consumes 10 ammo)\",\"stats\":\"Type: Automatic\\nMax ammo: 300\\nClip size: 70\\nDamage: 4 (gattling gun), 20 (rocket impact), 30 (explosion)\\nFire rate: 0.07\\nShot speed: 27\\nRange: 1000\\nKnockback: 15\\nSpread: 6°\"},{\"id\":\"402\",\"name\":\"Snowballer\",\"desc\":\"Fires snowballs that have a chance to freeze enemies\\nSlowed enemies will have reduced movement speed. If applied multiple times, the enemy will freeze solid for a while. Dodge rolling into a frozen enemy will shatter it\",\"stats\":\"Type: Automatic\\nMax ammo: 400\\nClip size: 20\\nDamage: 3.5\\nFire rate: 0.15\\nShot speed: 28\\nRange: 35\\nKnockback: 10\\nSpread: 10°\"},{\"id\":\"479\",\"name\":\"Super Meat Gun\",\"desc\":\"Fires piercing bouncy saw blades\\nPlayer movement speed up while held\\n+1 HP up while held\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 12\\nDamage: 6\\nFire rate: 0.1\\nShot speed: 25\\nRange: 1000\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"393\",\"name\":\"Anvillain\",\"desc\":\"A charged gun which fires large, slow moving piercing anvils, that will knockback and stun enemies for a few seconds\",\"stats\":\"Type: Charged\\nMax ammo: 60\\nClip size: 3\\nDamage: 10\\nFire rate: 0.1\\nShot speed: 20\\nRange: 1000\\nKnockback: 8\\nSpread: 5°\"},{\"id\":\"196\",\"name\":\"Fossilized Gun\",\"desc\":\"While fired, this gun will release a stream of oil on the floor\\nReloading will cause the gun to spit fire, which can ignite the oil\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 15 per second\\nFire rate: 0.1\\nShot speed: 15\\nRange: 20\\nKnockback: 40\\nSpread: 0°\"},{\"id\":\"87\",\"name\":\"Gamma Ray\",\"desc\":\"Fires a continuous green laser, which has a chance to poison enemies\\nPoisoned enemies take damage over time for a short period\",\"stats\":\"Type: Beam\\nMax ammo: 800\\nClip size: 800\\nDamage: 15 per second\\nFire rate: 0.1\\nShot speed: unknown\\nRange: 50\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"40\",\"name\":\"Freeze Ray\",\"desc\":\"Fires a continuous blue laser, which has a chance to freeze enemies\\nSlowed enemies will have reduced movement speed. If applied multiple times, the enemy will freeze solid for a while. Dodge rolling into a frozen enemy will shatter it\",\"stats\":\"Type: Beam\\nMax ammo: n/a\\nClip size: \\nDamage: 20 per second\\nFire rate: 0.1\\nShot speed: 60\\nRange: 30\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"331\",\"name\":\"Science Cannon\",\"desc\":\"A gun which fires a large laser (requires a small time to spin-up before it will fire)\\nThe laser can inflict random status effects on enemies (e.g. burn, freeze, poison)\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 26 per second\\nFire rate: 0.1\\nShot speed: 90\\nRange: 500\\nKnockback: 35\\nSpread: 0°\"},{\"id\":\"121\",\"name\":\"Disintegrator\",\"desc\":\"A gun which fires a large laser (requires a long time to spin-up before it will fire)\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 70 per second\\nFire rate: 0.1\\nShot speed: 120\\nRange: 50\\nKnockback: 0\\nSpread: 0°\"},{\"id\":\"179\",\"name\":\"Proton Backpack\",\"desc\":\"A gun which fires a homing laser, which will seek out and target nearby enemies\\nDeals bonus damage to ghosts and spectres\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 50 per second\\nFire rate: 0.1\\nShot speed: 14\\nRange: 90\\nKnockback: 30\\nSpread: 0°\"},{\"id\":\"10\",\"name\":\"Mega Douser\",\"desc\":\"A gun which fires a continuous stream of water, pushing enemies back slightly\",\"stats\":\"Type: Beam\\nMax ammo: 900\\nClip size: 900\\nDamage: 15 per second\\nFire rate: 0.1\\nShot speed: 20\\nRange: 20\\nKnockback: 40\\nSpread: 0°\"},{\"id\":\"208\",\"name\":\"Plunger\",\"desc\":\"Fires a continous stream of poison liquid, which has a chance to poison enemies\\nPoisoned enemies take damage over time for a short period\\nCannot reveal secret rooms\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 5 per second\\nFire rate: 0.1\\nShot speed: 20\\nRange: 20\\nKnockback: 40\\nSpread: 0°\"},{\"id\":\"107\",\"name\":\"Raiden Coil\",\"desc\":\"A gun which fires a continuous laser which seeks out and damages all enemies currently on screen\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 15 per second\\nFire rate: 0.1\\nShot speed: unknown\\nRange: 30\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"20\",\"name\":\"Moonscraper\",\"desc\":\"Fires a continuous laser which will bounce off objects and walls and reflect back across the room\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 26 per second\\nFire rate: 0.1\\nShot speed: unknown\\nRange: 50\\nKnockback: 20\\nSpread: 5°\"},{\"id\":\"7\",\"name\":\"Barrel\",\"desc\":\"A gun that fires fish, which have a chance to stun enemies for a brief period of time\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 300\\nClip size: 9\\nDamage: 8\\nFire rate: 0.2\\nShot speed: 20\\nRange: 1000\\nKnockback: 13\\nSpread: 7°\"},{\"id\":\"363\",\"name\":\"Trick Gun\",\"desc\":\"A gun which will switch between a handgun and a shotgun after each reload\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 6\\nDamage: 7 (handgun), 2 x 8 (16 total shotgun)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"28\",\"name\":\"Mailbox\",\"desc\":\"A gun that fires mail at enemies\\nThe final shot of each clip is a parcel, which will contain a random effect (confetti, fire, poison or an explosion)\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: \\nDamage: 5\\nFire rate: 0.2\\nShot speed: 22\\nRange: 1000\\nKnockback: 10\\nSpread: 10°\"},{\"id\":\"26\",\"name\":\"Nail Gun\",\"desc\":\"A semi-automatic gun that fires a lot of low damage nails very quickly\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 500\\nClip size: \\nDamage: 3\\nFire rate: 0.12\\nShot speed: 26\\nRange: 12\\nKnockback: 8\\nSpread: 10°\"},{\"id\":\"27\",\"name\":\"Light Gun\",\"desc\":\"A gun that fires flashes of light\\nThe last bullet in each magazine is a duck, which will seek out the nearest enemy and deal damage to it\\nIf you also have the Stuffed Star active item, the duck will gain a size and damage increase\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 6\\nDamage: 7\\nFire rate: 0.2\\nShot speed: 400\\nRange: 60\\nKnockback: 30\\nSpread: 5°\"},{\"id\":\"339\",\"name\":\"Mahoguny\",\"desc\":\"A gun that fires damaging leaves and bouncy wooden bullets at the same time\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 10\\nDamage: 5 (bullet), 10 (explosion), 4 (leaves)\\nFire rate: 0.4\\nShot speed: 15\\nRange: 30\\nKnockback: 20\\nSpread: 0°\"},{\"id\":\"445\",\"name\":\"The Scrambler\",\"desc\":\"A single clip gun that fires eggs\\nUpon hitting an enemy or object, the egg will hatch into a cluster of homing bullets, which will seek out and attack the nearest enemy\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 120\\nClip size: 1\\nDamage: 6 (egg), 9 x 5 (homing bullets)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"154\",\"name\":\"Trashcannon\",\"desc\":\"A gun that fires trash, sending poison in all directions\\nPoisoned enemies take damage over time for a short period\\nCan prove to be dangerous and leave poison in unpredictable spots\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: 1\\nDamage: 20\\nFire rate: 0.2\\nShot speed: 20\\nRange: 1000\\nKnockback: 20\\nSpread: 5°\"},{\"id\":\"130\",\"name\":\"Glacier\",\"desc\":\"A gun that fires bouncy ice cubes that explode and freeze enemies\\nFrozen enemies will be unable to move for a short period of time. Dodge rolling into a frozen enemy will shatter it\",\"stats\":\"Type: Automatic\\nMax ammo: 120\\nClip size: 12\\nDamage: 8 (ice cube), 6 (explosion)\\nFire rate: 0.5\\nShot speed: 18\\nRange: 35\\nKnockback: 8\\nSpread: 5°\"},{\"id\":\"477\",\"name\":\"Origuni\",\"desc\":\"A gun that fires piercing paper airplanes, which will shoot out and follow the player's mouse cursor\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 300\\nClip size: 8\\nDamage: 7.5\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"152\",\"name\":\"The Kiln\",\"desc\":\"A gun that fires pots, which upon contact with an enemy or object will break into three bouncy crystals\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 8\\nDamage: 8 (pots), 4 (crystals)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"45\",\"name\":\"Skull Splitter\",\"desc\":\"Fires homing skulls\\nA semi-automatic gun that fires homing skulls, which will deviate from their normal path to seek out and damage enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 10\\nDamage: 10\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"341\",\"name\":\"Buzzkill\",\"desc\":\"A semi-automatic gun that fires piercing bouncy sawblades\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 350\\nClip size: 12\\nDamage: 7\\nFire rate: 0.2\\nShot speed: 25\\nRange: 1000\\nKnockback: 10\\nSpread: 5°\"},{\"id\":\"33\",\"name\":\"Tear Jerker\",\"desc\":\"A gun that fires tears, which leave a puddle of water on the ground\\nTears will shoot slightly to the side depending on which direction the player is currently moving\\nA reference to The Binding of Isaac, a similar game where tears are the primary weapon\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 20\\nDamage: 7\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"90\",\"name\":\"Eye of the Beholster\",\"desc\":\"A gun that fires quick lasers\\nThe last shot in each magazine spawns a friendly Beadie familiar\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 6\\nFire rate: 0.15\\nShot speed: 200\\nRange: 1000\\nKnockback: 4\\nSpread: 4°\"},{\"id\":\"292\",\"name\":\"Molotov Launcher\",\"desc\":\"A gun that fires molotov cocktails, which create a large area of fire on the ground where it lands\\nBurned enemies take damage over time for a short period\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 80\\nClip size: 1\\nDamage: 6\\nFire rate: 1.5\\nShot speed: 18\\nRange: 35\\nKnockback: 13\\nSpread: 5°\"},{\"id\":\"153\",\"name\":\"Shock Rifle\",\"desc\":\"A gun that fires zaps of electricity\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 15\\nDamage: 8\\nFire rate: 0.2\\nShot speed: 140\\nRange: 1000\\nKnockback: 20\\nSpread: 5°\"},{\"id\":\"369\",\"name\":\"Bait Launcher\",\"desc\":\"A gun that fires steaks, which cause a tiger to appear and attack nearby enemies\",\"stats\":\"Type: Charged\\nMax ammo: 60\\nClip size: 1\\nDamage: 10\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"376\",\"name\":\"Brick Breaker\",\"desc\":\"A gun that fires bouncy piercing green turtle shells\\nIf you also have the Stuffed Star active item, the shells from this gun gain a size and damage increase\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 5\\nDamage: 10\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"380\",\"name\":\"Betrayer's Shield\",\"desc\":\"A gun which generates a protective shield upon reloading, that blocks enemy bullets\\nThe shield is destroyed after it has blocked a number of enemy bullets\",\"stats\":\"Type: Automatic\\nMax ammo: 350\\nClip size: 12\\nDamage: 6\\nFire rate: 0.1\\nShot speed: 23\\nRange: 18\\nKnockback: 12\\nSpread: 5°\"},{\"id\":\"340\",\"name\":\"Lower Case r\",\"desc\":\"A burst gun that fires 6 bullets at a time, which spell out the word 'bullet' in uppercase (B U L L E T)\",\"stats\":\"Type: Burst\\nMax ammo: 900\\nClip size: 36\\nDamage: 2.222\\nFire rate: 0.07\\nShot speed: 25\\nRange: 1000\\nKnockback: 14\\nSpread: 0°\"},{\"id\":\"377\",\"name\":\"Excaliber\",\"desc\":\"Fires a burst of three piercing sword projectiles. Reloading swings the sword, destroying nearby bullets\\nCurse Up while held\",\"stats\":\"Type: Burst\\nMax ammo: 280\\nClip size: 32\\nDamage: 7\\nFire rate: 0.15\\nShot speed: 26\\nRange: 1000\\nKnockback: 15\\nSpread: 0°\"},{\"id\":\"149\",\"name\":\"Face Melter\",\"desc\":\"Rapidly fires musical notes in all four directions around the player\\nUpon reloading, places an amplifier on the ground, which will also fire musical notes in the same pattern\\nReloading again will delete the current amplifier and place another\",\"stats\":\"Type: Automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 3\\nFire rate: 0.1\\nShot speed: 15\\nRange: 15\\nKnockback: 13\\nSpread: 6°\"},{\"id\":\"444\",\"name\":\"Trident\",\"desc\":\"Fires a piercing magic beam which damages enemies\\nReloading causes the Trident to destroy nearby bullets and projectiles\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: \\nDamage: 8\\nFire rate: 0.08\\nShot speed: 600\\nRange: 1000\\nKnockback: 4\\nSpread: 0°\"},{\"id\":\"474\",\"name\":\"Abyssal Tentacle\",\"desc\":\"A gun that fires a tentacle which homes in on enemies and grips them, dealing damage\\nThis gun can grip enemies through walls\",\"stats\":\"Type: Beam\\nMax ammo: 500\\nClip size: 500\\nDamage: 22.5 per second\\nFire rate: 0.1\\nShot speed: unknown\\nRange: 30\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"475\",\"name\":\"Quad Laser\",\"desc\":\"A semi-automatic gun that fires a large, square bullet which moves very slowly\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 50\\nClip size: 1\\nDamage: 80\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"336\",\"name\":\"Pitchfork\",\"desc\":\"Rapidly fires fireballs which have a chance to Burn enemies\\nBurned enemies take damage over time for a short period\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 200\\nDamage: 4\\nFire rate: 0.15\\nShot speed: 23\\nRange: 1000\\nKnockback: 35\\nSpread: 5°\"},{\"id\":\"176\",\"name\":\"Gungeon Ant\",\"desc\":\"Reloading alternates between firing spreads of bullets that leave behind oil and flaming bullets\\nA gun with two modes, which can be swapped between by reloading\\nMode #1: Fires a spread of bullets which leave behind oil\\nMode #2: Fires flaming bullets\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 6\\nDamage: 2 x 3 (6 total oil damage), 1.5 x 3 (4.5 total fire damage)\\nFire rate: \\nShot speed: 26\\nRange: 1000\\nKnockback: 25\\nSpread: 0°\"},{\"id\":\"177\",\"name\":\"Alien Engine\",\"desc\":\"A gun with a very short range, which propels the player backwards while firing\\nOnly enemies inside the energy flash will be damaged\",\"stats\":\"Type: Automatic\\nMax ammo: 1000\\nClip size: 1000\\nDamage: 10\\nFire rate: 0.02\\nShot speed: 30\\nRange: 3\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"476\",\"name\":\"Microtransaction Gun\",\"desc\":\"A gun which fires gems, books, and dolls of the Gungeoneers in exchange for one money per shot.\\nThe gun can shoot any of the following things:\\nMarine figurine: Piercing and bouncy, deals 20 damage\\nPilot figurine: Opens locks, deals 15 damage\\nConvict figurine: Molotov effect on impact, deals 15 damage\\nHunter figurine: Homing effect, deals 15 damage\\nBulletkin figurine: Charms enemies, deals 8 damage\\nGreen crystal: Deals 15 damage\\nA book, deals 2 damage\",\"stats\":\"Type: Semi-automatic\\nMax ammo: n/a\\nClip size: Same as your number of held coins\\nDamage: Various, see above\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"513\",\"name\":\"Poxcannon\",\"desc\":\"A gun which fires poisonous t-shirts\\nEnemies poisoned by this gun leave a pool of poison behind when they die\\nPoisoned enemies take damage over time for a short period\",\"stats\":\"Type: n/a\\nMax ammo: n/a\\nClip size: n/a\\nDamage: 15\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"150\",\"name\":\"T-Shirt Cannon\",\"desc\":\"Fires t-shirts that deal significant knockback to enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 6\\nDamage: 8\\nFire rate: 0.35\\nShot speed: 25\\nRange: 1000\\nKnockback: 60\\nSpread: 5°\"},{\"id\":\"478\",\"name\":\"Banana\",\"desc\":\"A gun which is charged up and releases an explosive banana, which splits into three more bouncy explosive bananas\",\"stats\":\"Type: Charged\\nMax ammo: 55\\nClip size: 7\\nDamage: 10 (impact), 30 (explosion)\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"14\",\"name\":\"Bee Hive\",\"desc\":\"Fires a continuous stream of damaging bees, which home in on enemies\",\"stats\":\"Type: Automatic\\nMax ammo: 300\\nClip size: 300\\nDamage: 3\\nFire rate: 0.1\\nShot speed: 9\\nRange: 1000\\nKnockback: 2\\nSpread: 90°\"},{\"id\":\"335\",\"name\":\"Silencer\",\"desc\":\"Fires pillows\\nHitting an enemy while swinging the weapon will stun enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 200\\nClip size: 8\\nDamage: 13\\nFire rate: 0.6\\nShot speed: 23\\nRange: 60\\nKnockback: 30\\nSpread: 5°\"},{\"id\":\"481\",\"name\":\"Camera\",\"desc\":\"A gun which is charged up and when released, deals damage to all enemies in the current room\\nThe camera flash also knocks back and has a chance to stun enemies\",\"stats\":\"Type: Charged\\nMax ammo: 60\\nClip size: 4\\nDamage: 10\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"482\",\"name\":\"Gunzheng\",\"desc\":\"A gun that fires a continuous stream of thick arrows without the need to reload\",\"stats\":\"Type: Automatic\\nMax ammo: 800\\nClip size: 350\\nDamage: 6\\nFire rate: 0.07\\nShot speed: 32\\nRange: 1000\\nKnockback: 8\\nSpread: 35°\"},{\"id\":\"382\",\"name\":\"Sling\",\"desc\":\"Sling allows you to charge up and fire a projectile which deals a lot of damage.\\nA very strong weapon to quickly kill early-game bosses and will kill all weak enemies in one hit in the first few chambers.\",\"stats\":\"Type: Charged\\nMax ammo: 80\\nClip size: 1\\nDamage: 25\\nFire rate: 0.1\\nShot speed: 23\\nRange: 1000\\nKnockback: 35\\nSpread: 0°\"},{\"id\":\"124\",\"name\":\"Cactus\",\"desc\":\"An automatic gun that fires needles with a very high rate of fire, but low damage\",\"stats\":\"Type: Automatic\\nMax ammo: 1000\\nClip size: 1000\\nDamage: 2.5\\nFire rate: n/a\\nShot speed: unknown\\nRange: n/a\\nKnockback: n/a\\nSpread: n/a°\"},{\"id\":\"169\",\"name\":\"Black Hole Gun\",\"desc\":\"A charged gun which fires black holes\\nBlack holes attract enemies and their bullets\",\"stats\":\"Type: Charged\\nMax ammo: 30\\nClip size: 1\\nDamage: 10\\nFire rate: 1\\nShot speed: 4\\nRange: 1000\\nKnockback: 9\\nSpread: 0°\"},{\"id\":\"21\",\"name\":\"BSG\",\"desc\":\"Slowly charges up to fire a large high-damage projectile\\nA gun which is charged up very slowly and fires a large green bullet which explodes after reaching maximum range, dealing a huge amount of damage to all enemies in the room\\nThe bullet will bounce from a wall once before detonating, but will disappear if it bounces more than once before exploding\\nWill pierce enemies but deal damage to them\\nVery good at clearing rooms full of enemies\",\"stats\":\"Type: Charged\\nMax ammo: 25\\nClip size: 1\\nDamage: 50\\nFire rate: 4\\nShot speed: 25\\nRange: 1000\\nKnockback: 10\\nSpread: 0°\"},{\"id\":\"359\",\"name\":\"Compressed Air Tank\",\"desc\":\"A gun that fires sharks\\nThe sharks will swim around the room and home in on enemies, eating them whole\\nCannot kill bosses in one go\",\"stats\":\"Type: Charged\\nMax ammo: 50\\nClip size: 1\\nDamage: 50\\nFire rate: 0.6\\nShot speed: 35\\nRange: 1000\\nKnockback: 60\\nSpread: 6°\"},{\"id\":\"37\",\"name\":\"Serious Cannon\",\"desc\":\"A cannon which fires large bouncy, piercing cannonballs which deal high damage\",\"stats\":\"Type: Charged\\nMax ammo: 30\\nClip size: 1\\nDamage: 50\\nFire rate: 0.6\\nShot speed: 35\\nRange: 1000\\nKnockback: 60\\nSpread: 6°\"},{\"id\":\"480\",\"name\":\"Makeshift Cannon\",\"desc\":\"A charged gun that fires a blast of various colored balls that deal very high damage\",\"stats\":\"Type: Charged\\nMax ammo: 1\\nClip size: 1\\nDamage: 1213.3 (ish)\\nFire rate: 0.50\\nShot speed: 35\\nRange: 1000\\nKnockback: 60\\nSpread: 6°\"},{\"id\":\"520\",\"name\":\"Balloon Gun\",\"desc\":\"A gun that fires small tornados which home in on enemies\\nGrants flight while held\\nLoses all of its ammo if the player is hit while holding it\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 10\\nDamage: 12\"},{\"id\":\"503\",\"name\":\"Bullet\",\"desc\":\"A semi-automatic gun that fires rotating guns, which fire streams of bullets\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 250\\nClip size: 6\\nDamage: 7 (Gun projectile), 4 (Bullets)\"},{\"id\":\"541\",\"name\":\"Casey\",\"desc\":\"A melee weapon that allows you to charge up and swing to damage nearby enemies and reflect enemy bullets\\nKilled enemies' bodies will fly across the room and deal damage to any enemies they hit\\n+2 Curse Up\\nCannot be fed to a gun muncher\",\"stats\":\"Type: Charged\\nMax ammo: Infinite\\nClip size: 1\\nDamage: 100\"},{\"id\":\"551\",\"name\":\"Crown of Guns\",\"desc\":\"An automatic gun that rapidly fires bullets in all directions, which will home slightly towards enemies\\nFires and consumes 3 bullets per shot\",\"stats\":\"Type: Automatic\\nMax ammo: 3000\\nClip size: 3000\\nFire rate: who cares, its heckin fast\\nDamage: 5.5\"},{\"id\":\"484\",\"name\":\"Devolver\",\"desc\":\"Bullets from this gun have a chance to devolve enemies into less powerful enemies\\nMost enemies will be devolved into Shotgun Kin. Shotgun Kin will be devolved into Bullet Kin. Bullet Kin will be devolved into Arrowkin\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 6\\nDamage: 6\"},{\"id\":\"514\",\"name\":\"Directional Pad\",\"desc\":\"This gun fires bullets in four directions at once.\\nWhen all ammo is consumed, the gun is deleted and will spawn a random chest of any quality\\nPressing certain button combos will cause special effects. Pressing down, right and fire quickly will cause the gun to fire a ball of fire that deals 45 damage.Pressing left, left and fire will fire a grappling hook\",\"stats\":\"Type: Automatic\\nMax ammo: 120\\nClip size: 30\\nDamage: 8 (Bullets), 45 (Fireball), Hook (10)\"},{\"id\":\"508\",\"name\":\"Dueling Laser\",\"desc\":\"A gun which fires a high-damage piercing laser.\\nThe recharge of this gun acts similar to an active item, meaning it must charge up by dealing damage to enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\\nClip size: 1\\nDamage: 100\"},{\"id\":\"504\",\"name\":\"Hyper Light Blaster\",\"desc\":\"A gun which starts with a very low max ammo count, however successfully hitting an enemy will restore 1 ammo.\",\"stats\":\"Max ammo: 12\\nClip size: 12\\nDamage: 20\"},{\"id\":\"515\",\"name\":\"Mourning Star\",\"desc\":\"A gun which fires a laser sight, which will call down a high-damage orbital strike at the location of an enemy when targeting it for a short time.\\nThe beam persists while the trigger is held, and it will slowly move in the direction of the player's crosshair\",\"stats\":\"Type: Beam\\nMax ammo: 800\\nClip size: 800\"},{\"id\":\"566\",\"name\":\"Rad Gun\",\"desc\":\"Reloading this gun now shows a marker on the reload bar, similar to the Cog of Battle mechanic. Reloading at when the bar lines up will decrease the next reload time and increase damage.\\nStacking many successful reloads will cause fired projectiles to grow in size and eventually wear shades.\\nDamage increases are roughly double for the first 4 reloads, and increase past that infinitely but at a slower rate.\\nFailing a reload will reset the damage bonus\\n+2 Coolness\",\"stats\":\"Type: Automatic\\nMax ammo: 250\\nClip size: 12\\nDamage: Starts at 4, increasing with each successful active reload\"},{\"id\":\"576\",\"name\":\"Robot's Left Hand\",\"desc\":\"A gun that rapidly fires blue lasers\",\"stats\":\"Type: Automatic\"},{\"id\":\"512\",\"name\":\"Shell\",\"desc\":\"A semi-automatic gun that fires several shotguns with each shot.\\nEach fired shotgun will also fire several bullets upon hitting an enemy of obstacle\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 150\\nClip size: 6\\nDamage: 2x4 (Bullets), 3x8 (Shotguns)\"},{\"id\":\"507\",\"name\":\"Starpew\",\"desc\":\"A charged gun that fires drops of water.\\nIncreases in charge with each drop of water fired:\\nNo charge: 1 drop\\n1 charge: 1 row of 3 drop\\n2 charges: 1 row of 5 drop\\n3 charges: 3 rows of 3 drop\\nFully charged: 3 rows of 6 drop\",\"stats\":\"Type: Charged\\nMax ammo: 100\\nClip size: 100\\nDamage: 5\"},{\"id\":\"542\",\"name\":\"Strafe Gun\",\"desc\":\"A gun which fires nails\\nReleasing the trigger will detonate the nails, however they will also automatically explode after a short amount of time\\nCan cause enemies to appear to bleed, however this is a cosmetic effect only\",\"stats\":\"Type: Automatic\\nMax ammo: 400\\nClip size: 20\\nDamage: 1 (on hit), 8 (in explosion radius)\"},{\"id\":\"537\",\"name\":\"Vorpal Gun\",\"desc\":\"A semi-automatic gun that fires bullets and has a chance to fire a 'critical' shot that deals 100 damage.\\nThe chance to fire a critical shot is based on your Coolness stat\",\"stats\":\"Type: Automatic\\nMax ammo: 250\\nClip size: 6\\nDamage: 5 (normal), 100 (critical)\"},{\"id\":\"545\",\"name\":\"AC-15\",\"desc\":\"An automatic gun that becomes more powerful when you have armor\\nThe power increase can also be activated by having the Nanomachines item (Synergy)\",\"stats\":\"Type: Automatic\\nMax ammo: 300\\nClip size: 40\\nDamage: 3.8 (No armor), 15 (With armor)\"},{\"id\":\"601\",\"name\":\"Big Shotgun\",\"desc\":\"Shoots 3 huge bullets that each explode\\nReloading the gun next to any type of Shotgun Kin and Shotgats (the shotgun bat enemies) will suck them up, killing them and giving you +1 ammo.\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 50\\nClip size: 4\\nDamage: n/a\"},{\"id\":\"539\",\"name\":\"Boxing Glove\",\"desc\":\"Shoots boxing gloves that have a chance to stun enemies\\nKilling an enemy with this gun gives you a star. At 3 stars the gun can be charged to consume them and fire a highly powered glove\\n+1 Curse Up\",\"stats\":\"Type: Charged\\nMax ammo: 350\\nDamage: 12 (3 star punch deals 200 damage)\"},{\"id\":\"599\",\"name\":\"Bubble Blaster\",\"desc\":\"Rapidly shoots bubbles which travel slowly across the room\\nCreates a pool of water when a bubble hits an enemy\\nReloading causes bubbles to be pushed forwards\",\"stats\":\"Type: Automatic\\nMax ammo: 500\\nClip size: \\nDamage: \"},{\"id\":\"519\",\"name\":\"Combined Rifle\",\"desc\":\"An automatic gun with 2 modes: Rapid fire pulse blasts and a piercing bouncy dark energy ball.\\nReloading switches between the 2 modes.\",\"stats\":\"Type: Automatic\\nMax ammo: 500\\nClip size: 30 (Pulse mode) 1 (Energy mode)\"},{\"id\":\"626\",\"name\":\"Elimentaler\",\"desc\":\"A gun which 'encheeses' enemies, freezing them in a block of cheese\\nEnemies killed while frozen spawn a pool of cheese that encheese other enemies that touch it\\nCan be found in one of the chests that appear after the Resourceful Rat boss fight. After finding it there once it can be found elsewhere too\",\"stats\":\"Type: Semi-automatic\\nMax ammo: Infinite\"},{\"id\":\"563\",\"name\":\"The Exotic\",\"desc\":\"Fires homing rockets that erupt into short-range swarms of smaller homing rockets\\nWhile held gives you a ghost friend, which reveals the contents of unopened chests\",\"stats\":\"\"},{\"id\":\"670\",\"name\":\"High Dragunfire\",\"desc\":\"Rapid fire gun with burning bullets that ignite enemies\\nThis gun ignores the usual damage cap\\nEach time you find this gun in the secret room the NPCs will have different dialogue\",\"stats\":\"Type: Automatic\"},{\"id\":\"595\",\"name\":\"Life Orb\",\"desc\":\"Fires purple lightning which targets the nearest enemy and deals damage\\nAfter killing an enemy, an icon will appear meaning the next time you reload this gun, damage is dealt to all enemies in the room\",\"stats\":\"Type: Beam\\nMax ammo: 600\\nClip size: 600\\nDamage: \"},{\"id\":\"734\",\"name\":\"Mimic Gun\",\"desc\":\"Randomly replaces another gun\\nYou won't be able to switch to other guns or drop Mimic Gun until you either pick up ammo or fully use its ammo\\nBullets that touch enemy bullets turn them into jammed bullets that deal a full heart of damage\",\"stats\":\"Max ammo: 900\\nClip size: 8\"},{\"id\":\"597\",\"name\":\"Mr. Accretion Jr.\",\"desc\":\"Fires planets from our solar system, each one with a different effect on enemies\\nMercury: Sometimes ignits enemies\\nVenus: Unknown effect / no effect\\nEarth: Sometimes poisons enemies\\nMars: Sometimes ignits enemies\\nJupiter: Explodes (doesn't hurt you)\\nSaturn: Unknown effect / no effect\\nUranus: Sometimes freezes enemies\\nNeptune: Sometimes freezes enemies\",\"stats\":\"Type: Semi-automatic\\nMax ammo: 100\\nClip size: 20\\nDamage: \"},{\"id\":\"609\",\"name\":\"Rubenstein's Monster\",\"desc\":\"Rapidly fires powerful rifle lasers that can ricochet off walls one time\\nCreated by combining RUBE-ADYNE prototype and MK.II\",\"stats\":\"Type: Automatic\\nMax ammo: 900\\nClip size: 100\\nDamage: 7\"},{\"id\":\"598\",\"name\":\"Stone Dome\",\"desc\":\"An automatic gun that spits out homing bullets rapidly\\nHas a chance to fear enemies nearby, causing them to run away\",\"stats\":\"Type: Automatic\\nMax ammo: 750\\nClip size: 750\"},{\"id\":\"577\",\"name\":\"Turbo-Gun\",\"desc\":\"An automatic gun who's damage and bullet size depends on the number of times the reload button is pressed during its reload animation.\",\"stats\":\"Type: Automatic\\nMax ammo: 180\\nClip size: 6\\nDamage: \"},{\"id\":\"610\",\"name\":\"Wood Beam\",\"desc\":\"A 'gun' that extends when fired, allowing you to hit enemies with it\\n+1 Curse Up\",\"stats\":\"Type: It's not even a gun\\nDamage: \"},{\"id\":\"469\",\"name\":\"Master Round I\",\"desc\":\"+1 Health Up\\nGives one piece of armour to The Robot character\\nDropped by killing the boss in the first chamber without taking damage\",\"stats\":\"Type: Passive\"},{\"id\":\"471\",\"name\":\"Master Round II\",\"desc\":\"+1 Health Up\\nGives one piece of armour to The Robot character\\nDropped by killing the boss in the second chamber without taking damage\",\"stats\":\"Type: Passive\"},{\"id\":\"468\",\"name\":\"Master Round III\",\"desc\":\"+1 Health Up\\nGives one piece of armour to The Robot character\\nDropped by killing the boss in the third chamber without taking damage\\n\",\"stats\":\"Type: Passive\"},{\"id\":\"470\",\"name\":\"Master Round IV\",\"desc\":\"+1 Health Up\\nGives one piece of armour to The Robot character\\nDropped by killing the boss in the fourth chamber without taking damage\",\"stats\":\"Type: Passive\"},{\"id\":\"467\",\"name\":\"Master Round V\",\"desc\":\"+1 Health Up\\nGives one piece of armour to The Robot character\\nDropped by killing the boss in the fifth chamber without taking damage\",\"stats\":\"Type: Passive\"},{\"id\":\"348\",\"name\":\"Prime Primer\",\"desc\":\"One of the pieces needed to craft the 'Bullet that can kill the past'\\nSold for 110 casings in the shop\",\"stats\":\"Type: Passive\"},{\"id\":\"351\",\"name\":\"Arcane Gunpowder\",\"desc\":\"One of the pieces needed to craft the 'Bullet that can kill the past'\\nFound in the 3rd chamber of the Gungeon (Black Powder Mine) at the back of the large room with floating minecarts\\nIt can be accessed by controlling each minecart and moving it along the invisible track, rolling between each one\\nWhile this is an Active item, it cannot be used\",\"stats\":\"Type: Active\"},{\"id\":\"349\",\"name\":\"Planar Lead\",\"desc\":\"One of the pieces needed to craft the 'Bullet that can kill the past'\\nFound in the 4th chamber of the Gungeon (Hollow) at the back of the large room with an empty chasm in the middle\\nThe room has an invisible path which can only be revealed with a gun that leaves a liquid or debris on the ground,\\n however you can also simply fly across with an item like Wax Wings\",\"stats\":\"Type: Passive\"},{\"id\":\"350\",\"name\":\"Obsidian Shell Casing\",\"desc\":\"One of the pieces needed to craft the 'Bullet that can kill the past'\\nFound in the 5th chamber of the Gungeon (Forge) by destroying the skull that is left behind after defeating the High\\n Dragun boss\",\"stats\":\"Type: Passive\"},{\"id\":\"291\",\"name\":\"Meatbun\",\"desc\":\"Heals one empty red heart container\\nWhen used, grants x2 damage until you next take damage\",\"stats\":\"Type: Active\\nRecharge time: Single use\"},{\"id\":\"63\",\"name\":\"Medkit\",\"desc\":\"Heals three empty red heart containers on use\",\"stats\":\"Type: Active\\nRecharge time: Single use\"},{\"id\":\"104\",\"name\":\"Ration\",\"desc\":\"Heals two empty red heart containers on use\\nGets used automatically if you run out of health\\nThis item has to be your selected active item to trigger the auto-heal mechanic\",\"stats\":\"Type: Active\\nRecharge time: Single use\"},{\"id\":\"485\",\"name\":\"Orange\",\"desc\":\"+1 Health Up\\nFull heal on use\\n+2 Coolness up (decreases active item cooldowns,