Example #1
0
        public static void Init()
        {
            string     itemName     = "Soul In A Jar";
            string     resourceName = "BunnyMod/Resources/soulinajar";
            GameObject obj          = new GameObject(itemName);
            SoulInAJar lockpicker   = obj.AddComponent <SoulInAJar>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Little Fella'";
            string longDesc  = "A tiny little gunslinger soul in a jar. Fly my pretty!";

            lockpicker.SetupItem(shortDesc, longDesc, "bny");
            lockpicker.SetCooldownType(ItemBuilder.CooldownType.Damage, 250f);
            lockpicker.consumable = false;
            lockpicker.quality    = PickupObject.ItemQuality.D;
            lockpicker.AddToSubShop(ItemBuilder.ShopType.Cursula, 1f);
            lockpicker.AddToSubShop(ItemBuilder.ShopType.Goopton, 1f);
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:soul_in_a_jar"
            };
            List <string> optionalConsoleID1s = new List <string>
            {
                "shotgun_full_of_hate",
                "ghost_bullets",
                "skull_spitter",
                "bullet_idol",
                "clear_guon_stone",
                "gun_soul",
                "sixth_chamber",
                "cursed_bullets"
            };

            CustomSynergies.Add("Go! Go! Go!", mandatoryConsoleIDs1, optionalConsoleID1s, true);
        }
        public static void Init()
        {
            string itemName     = "Prismatic Guon Stone";                    //The name of the item
            string resourceName = "BleakMod/Resources/prismatic_guon_stone"; //Refers to an embedded png in the project. Make sure to embed your resources!

            GameObject obj = new GameObject();

            var item = obj.AddComponent <PrismaticGuonStone>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            string shortDesc = "First Prism";
            string longDesc  = "Press E or your interact button in combat to shoot a colorful, devastating laser from this guon stone.\n\nA legendary guon stone which is said to hold great power. It is able to refract light into a powerful laser.";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bb");
            item.quality = PickupObject.ItemQuality.S;

            BuildPrefab();
            BuildSynergyPrefab();
            item.OrbitalPrefab = orbitalPrefab;

            item.HasAdvancedUpgradeSynergy    = true;                      //This allows you to have a synergy that upgrades the guon to a new prefab, like the 'Greener Guon Stone' or the 'Redder Guon Stone' etc
            item.AdvancedUpgradeSynergy       = "Prismatismer Guon Stone"; //Name of the synergy to check for
            item.AdvancedUpgradeOrbitalPrefab = PrismaticGuonStone.upgradeOrbitalPrefab.gameObject;
            CustomSynergies.Add("Prismatismer Guon Stone", new List <string>
            {
                "bb:prismatic_guon_stone"
            }, new List <string>
            {
                "+1_bullets",
                "amulet_of_the_pit_lord",
                "bullet_time"
            }, true);
        }
Example #3
0
        public static void Init()
        {
            string     itemName     = "Personal Guard";
            string     resourceName = "BunnyMod/Resources/personalguard";
            GameObject obj          = new GameObject(itemName);
            var        item         = obj.AddComponent <PersonalGuard>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Reformed Knights";
            string longDesc  = "An unlikely union between gungeoneer and gun knights.\n\n Use to call in extra support. Watch for friendly fire.";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bny");
            ItemBuilder.SetCooldownType(item, ItemBuilder.CooldownType.Damage, 850f);
            item.consumable = false;
            item.quality    = PickupObject.ItemQuality.C;
            item.AddToSubShop(ItemBuilder.ShopType.Cursula, 1f);
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:personal_guard"
            };
            List <string> optionalConsoleID1s = new List <string>
            {
                "shotgun_full_of_hate",
                "fightsabre",
                "skull_spitter",
                "vorpal_gun",
                "ghost_bullets",
                "shadow_bullets",
                "vorpal_bullets"
            };

            CustomSynergies.Add("Protector From The Curtain", mandatoryConsoleIDs1, optionalConsoleID1s, true);
        }
Example #4
0
        public static void Init()
        {
            string     itemName     = "Ibzans Lighter";
            string     resourceName = "BunnyMod/Resources/ibzanslighter";
            GameObject obj          = new GameObject(itemName);
            var        item         = obj.AddComponent <FreezeLighter>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Ashes to Ashes, to Ashes";
            string longDesc  = "The lighter of Ibzan, the first employed by the Flames. The remainder of his life was cold and miserable, lacking companionship the Flames did not grant.";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bny");
            ItemBuilder.SetCooldownType(item, ItemBuilder.CooldownType.Damage, 650);
            item.consumable = false;
            item.quality    = PickupObject.ItemQuality.B;
            List <string> mandatoryConsoleIDs = new List <string>
            {
                "bny:ibzans_lighter"
            };
            List <string> optionalConsoleIDs = new List <string>
            {
                "hot_lead",
                "copper_ammolet",
                "flame_hand",
                "dragunfire",
                "pitchfork"
            };

            CustomSynergies.Add("The Flames' Embrace", mandatoryConsoleIDs, optionalConsoleIDs, true);
        }
Example #5
0
        public static void Init()
        {
            string itemName = "Broken Core";

            string               resourceName = "BunnyMod/Resources/brokencore";
            GameObject           obj          = new GameObject(itemName);
            OnPlayerItemUsedItem brokenCore   = obj.AddComponent <OnPlayerItemUsedItem>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Old Bio-Machinery";
            string longDesc  = "An old core of a cyborg who died in the halls of the Gungeon, forgetting that there are no power outlets here.\n\n" +
                               "Maybe if some power runs through it, it could do something.";

            brokenCore.SetupItem(shortDesc, longDesc, "bny");
            brokenCore.AddToSubShop(ItemBuilder.ShopType.Trorc, 1f);
            brokenCore.AddPassiveStatModifier(PlayerStats.StatType.MovementSpeed, 1.05f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            brokenCore.quality = PickupObject.ItemQuality.D;
            List <string> mandatoryConsoleIDs = new List <string>
            {
                "bny:broken_core"
            };
            List <string> optionalConsoleIDs = new List <string>
            {
                "shock_rounds",
                "battery_bullets",
                "shock_rifle",
                "thunderclap"
            };

            CustomSynergies.Add("Overload", mandatoryConsoleIDs, optionalConsoleIDs, true);
        }
        //public static PlayerOrbital upgradeOrbitalPrefab;
        public static void Init()
        {
            string itemName     = "Goon Stone";                    //The name of the item
            string resourceName = "BleakMod/Resources/goon_stone"; //Refers to an embedded png in the project. Make sure to embed your resources!

            GameObject obj = new GameObject();

            var item = obj.AddComponent <GoonStone>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            string shortDesc = "Get Down, Mr. President!";
            string longDesc  = "A legendary guon stone which is said to hold great power. yeah that's about it";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bb");
            item.quality = PickupObject.ItemQuality.A;

            BuildPrefab();
            //BuildSynergyPrefab();
            item.OrbitalPrefab = orbitalPrefab;

            item.HasAdvancedUpgradeSynergy = true;                //This allows you to have a synergy that upgrades the guon to a new prefab, like the 'Greener Guon Stone' or the 'Redder Guon Stone' etc
            item.AdvancedUpgradeSynergy    = "Gooner Guon Stone"; //Name of the synergy to check for
            //item.AdvancedUpgradeOrbitalPrefab = GoonStone.upgradeOrbitalPrefab.gameObject;
            CustomSynergies.Add("Gooner Guon Stone", new List <string>
            {
                "bb:goon_stone"
            }, new List <string>
            {
                "+1_bullets",
                "amulet_of_the_pit_lord",
                "bullet_time"
            }, true);
        }
        //Call this method from the Start() method of your ETGModule extension
        public static void Register()
        {
            //The name of the item
            string itemName = "Cheese Ammolet";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it
            string resourceName = "BleakMod/Resources/cheese_ammolet";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a PassiveItem component to the object
            var item = obj.AddComponent <CheeseAmmolet>();

            //Adds a sprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Blanks Encheese";
            string longDesc  = "Blanks have a chance to encheese enemies.\n\nMade from a hunk of cheese found deep within the Resourceful Rat's lair, this ammolet will make for a quick way to neutralize enemies - as well as a tasty snack.";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //Do this after ItemBuilder.AddSpriteToObject!
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bb");
            item.quality = PickupObject.ItemQuality.B;
            item.AddToSubShop(ItemBuilder.ShopType.OldRed, 1f);
            CustomSynergies.Add("Dangerously Cheesy", new List <string>
            {
                "bb:cheese_ammolet"
            }, new List <string>
            {
                "elimentaler"
            }, true);
        }
Example #8
0
        public static void Init()
        {
            string     itemName     = "Cool Robes";
            string     resourceName = "BunnyMod/Resources/coolrobes";
            GameObject obj          = new GameObject(itemName);
            var        item         = obj.AddComponent <Coolrobes>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Worn by cool Wardens";
            string longDesc  = "A cool robe only worn by the coolest of people. Originally worn by a warden of a prison containing a god, these robes were passed down to the coolest in the family.\n\n" +
                               "You WISH you were as cool as that. Hell, they're so cool, you don't even wanna take them off!";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bny");
            ItemBuilder.AddPassiveStatModifier(item, PlayerStats.StatType.Coolness, 3f, StatModifier.ModifyMethod.ADDITIVE);
            item.quality = PickupObject.ItemQuality.B;
            item.AddToSubShop(ItemBuilder.ShopType.Cursula, 1f);
            Coolrobes.CoolRobesID = item.PickupObjectId;
            List <string> mandatoryConsoleIDs2 = new List <string>
            {
                "bny:cool_robes",
                "bny:effigy_of_chaosgod"
            };

            CustomSynergies.Add("Relics Of The Past", mandatoryConsoleIDs2, null, true);
        }
        public static void Init()
        {
            string         itemName       = "Counterproductive Chamber";
            string         resourceName   = "BunnyMod/Resources/counterproductivechamber";
            GameObject     obj            = new GameObject(itemName);
            CounterChamber counterChamber = obj.AddComponent <CounterChamber>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            string shortDesc = "It just works";
            string longDesc  = "A lazy gungeoneer was once met with the dilemma of having to reload their chambers fully.\n\n" + "Their soultion?\n\n" + "'Half fill 'em clips!!\n\n" +
                               "Even after their death, the eccentricity of the supposed genius lives on.";

            counterChamber.SetupItem(shortDesc, longDesc, "bny");
            counterChamber.AddPassiveStatModifier(PlayerStats.StatType.ReloadSpeed, 0.5f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            counterChamber.AddPassiveStatModifier(PlayerStats.StatType.RateOfFire, .1f, StatModifier.ModifyMethod.ADDITIVE);
            counterChamber.AddPassiveStatModifier(PlayerStats.StatType.ProjectileSpeed, .2f, StatModifier.ModifyMethod.ADDITIVE);
            counterChamber.AddPassiveStatModifier(PlayerStats.StatType.AdditionalClipCapacityMultiplier, 0.5f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            counterChamber.quality = PickupObject.ItemQuality.B;
            counterChamber.AddToSubShop(ItemBuilder.ShopType.Trorc, 1f);
            List <string> mandatoryConsoleIDs14 = new List <string>
            {
                "bny:counterproductive_chamber"
            };
            List <string> optionalConsoleIDs = new List <string>
            {
                "oiled_cylinder",
                "sixth_chamber",
                "yellow_chamber"
            };

            CustomSynergies.Add("(6/2)+6 = Chamber has 9 Holes???", mandatoryConsoleIDs14, optionalConsoleIDs, true);
        }
        public static void Init()
        {
            string     itemName     = "Resurrection Bullets";
            string     resourceName = "BunnyMod/Resources/resurrectionbullets";
            GameObject obj          = new GameObject(itemName);
            var        item         = obj.AddComponent <ResurrectionBullets>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Get living again, maggots!";
            string longDesc  = "Bullets enchanted with the ability to change a gundead corpse so fast that they come back to life.\n\n" +
                               "These bullets were originally used to find gundead suffering from Resurrectile Dysfunction, a lead-based disease which prevented gundead from coming back to life. Surprisingly common.";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bny");
            ItemBuilder.AddPassiveStatModifier(item, PlayerStats.StatType.RateOfFire, .1f, StatModifier.ModifyMethod.ADDITIVE);
            item.quality = PickupObject.ItemQuality.C;
            item.AddToSubShop(ItemBuilder.ShopType.Cursula, 1f);
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:resurrection_bullets",
                "zombie_bullets"
            };

            CustomSynergies.Add("Revitalization", mandatoryConsoleIDs1, null, true);
            List <string> mandatoryConsoleIDs2 = new List <string>
            {
                "bny:resurrection_bullets",
                "ghost_bullets"
            };

            CustomSynergies.Add("Souls", mandatoryConsoleIDs2, null, true);
        }
Example #11
0
        public static void Init()
        {
            string     itemName     = "Micro Scope";
            string     resourceName = "BunnyMod/Resources/microscope";
            GameObject obj          = new GameObject(itemName);
            var        item         = obj.AddComponent <Microscope>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Laymans terms";
            string longDesc  = "An ineffective attachment made for the sole reason that it functions as a pun.\n\nAt least in the Gungeon it finds new life.";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bny");
            ItemBuilder.AddPassiveStatModifier(item, PlayerStats.StatType.Accuracy, .80f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            ItemBuilder.AddPassiveStatModifier(item, PlayerStats.StatType.AdditionalShotPiercing, 1f, StatModifier.ModifyMethod.ADDITIVE);
            ItemBuilder.AddPassiveStatModifier(item, PlayerStats.StatType.ProjectileSpeed, .2f, StatModifier.ModifyMethod.ADDITIVE);
            item.quality = PickupObject.ItemQuality.D;
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:micro_scope",
            };
            List <string> optionalConsoleID1s = new List <string>
            {
                "scope",
                "laser_sight",
                "sniper_rifle",
                "awp"
            };

            CustomSynergies.Add("Macro Scope", mandatoryConsoleIDs1, optionalConsoleID1s, true);
        }
Example #12
0
        public static void Init()
        {
            string        itemName      = "Static Clips";
            string        resourceName  = "BunnyMod/Resources/staticclips";
            GameObject    obj           = new GameObject(itemName);
            StaticCharger staticCharger = obj.AddComponent <StaticCharger>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "OoOoOoh that tickles!";
            string longDesc  = "An unusual pair of ammo clips that are designed to gather static energy created from reloading.\n\n" +
                               "Despite how it may look like, a LOT of potential energy is wasted. Watch your ears.";

            staticCharger.SetupItem(shortDesc, longDesc, "bny");
            staticCharger.AddPassiveStatModifier(PlayerStats.StatType.ReloadSpeed, .90f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            staticCharger.quality = PickupObject.ItemQuality.B;
            staticCharger.AddToSubShop(ItemBuilder.ShopType.Trorc, 1f);
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:static_clips",
            };
            List <string> optionalConsoleID1s = new List <string>
            {
                "shock_rounds",
                "battery_bullets",
                "shock_rifle",
                "thunderclap"
            };

            CustomSynergies.Add("Like putting a fork in a socket!", mandatoryConsoleIDs1, optionalConsoleID1s, true);
        }
Example #13
0
        public static void Init()
        {
            string            itemName        = "The G.I.P";
            string            resourceName    = "BunnyMod/Resources/gungeonmonetaryprogram.png";
            GameObject        obj             = new GameObject(itemName);
            GungeonInvestment greandeParasite = obj.AddComponent <GungeonInvestment>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Invest, Adapt, Overcome";
            string longDesc  = "This quick and easy investment program makes sure that every floor your balance grows. Though some money may be skimmed off the top.";

            greandeParasite.SetupItem(shortDesc, longDesc, "bny");
            greandeParasite.quality = PickupObject.ItemQuality.C;
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:the_g.i.p"
            };
            List <string> optionalConsoleID1s = new List <string>
            {
                "gilded_hydra",
                "coin_crown",
                "gold_ammolet",
                "gilded_bullets",
                "gold_junk"
            };

            CustomSynergies.Add("$$ Cash Money $$", mandatoryConsoleIDs1, optionalConsoleID1s, true);
        }
Example #14
0
        public static void Init()
        {
            string           itemName     = "Broken Lockpicker";
            string           resourceName = "BunnyMod/Resources/lockpickbot";
            GameObject       obj          = new GameObject(itemName);
            BrokenLockpicker lockpicker   = obj.AddComponent <BrokenLockpicker>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Tries its best";
            string longDesc  = "A lockpicking machine that in it's prime would fire out nanobot swarms to open locks nearly instantly.\n\nHowever due to incredible clumsiness, this machine is broken and fails to interpret what a lock is.";

            lockpicker.SetupItem(shortDesc, longDesc, "bny");
            lockpicker.SetCooldownType(ItemBuilder.CooldownType.Damage, 1000f);
            lockpicker.consumable = false;
            lockpicker.quality    = PickupObject.ItemQuality.B;
            lockpicker.AddToSubShop(ItemBuilder.ShopType.Flynt, 1f);
            List <string> mandatoryConsoleIDs = new List <string>
            {
                "bny:broken_lockpicker",
            };
            List <string> optionalConsoleIDs = new List <string>
            {
                "akey47",
                "shelleton_key",
                "master_of_unlocking"
            };

            CustomSynergies.Add("Not like you'll need it...", mandatoryConsoleIDs, optionalConsoleIDs, true);
        }
Example #15
0
        public static void Init()
        {
            string        itemName      = "Table Tech Bomb";
            string        resourceName  = "BunnyMod/Resources/tabletechbomb.png";
            GameObject    obj           = new GameObject(itemName);
            TableTechBomb minigunrounds = obj.AddComponent <TableTechBomb>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "Reactive Flips";
            string longDesc  = "This ancient technique allows the user to create bombs by flipping tables.\n\n Chapter 8-1 of the Table Sutra. Those who imbue reaction into their flips shall project it onto the flipped.";

            minigunrounds.SetupItem(shortDesc, longDesc, "bny");
            minigunrounds.AddToSubShop(ItemBuilder.ShopType.Trorc, 1f);
            minigunrounds.quality = PickupObject.ItemQuality.C;
            List <string> mandatoryConsoleIDs14 = new List <string>
            {
                "bny:table_tech_bomb"
            };
            List <string> optionalConsoleIDs = new List <string>
            {
                "air_strike",
                "proximity_mine",
                "big_boy",
                "portable_turret",
                "blast_helmet",
                "hegemony_carbine",
                "hegemony_rifle",
                "rc_rocket"
            };

            CustomSynergies.Add("Hidden Tech Landmine", mandatoryConsoleIDs14, optionalConsoleIDs, true);
        }
Example #16
0
        public override void Start()
        {
            ItemBuilder.Init();
            CrossChamber.Init();
            LichsBookItem.Init();
            LichsGun.Init();
            CustomSynergies.Add("Master of Gungeon", new List <string> {
                "spapi:lichs_gun", "spapi:lichs_book", "lichs_eye_bullets"
            });
            CustomSynergies.Add("Baby Peacemaker", new List <string> {
                "spapi:cross_chamber", "magnum"
            });
            Hook getNicknamehook = new Hook(
                typeof(StringTableManager).GetMethod("GetTalkingPlayerNick", BindingFlags.NonPublic | BindingFlags.Static),
                typeof(LichModule).GetMethod("GetTalkingPlayerNickHook")
                );

            Hook getNamehook = new Hook(
                typeof(StringTableManager).GetMethod("GetTalkingPlayerName", BindingFlags.NonPublic | BindingFlags.Static),
                typeof(LichModule).GetMethod("GetTalkingPlayerNameHook")
                );

            Hook getValueHook = new Hook(
                typeof(dfLanguageManager).GetMethod("GetValue", BindingFlags.Public | BindingFlags.Instance),
                typeof(LichModule).GetMethod("GetValueHook")
                );

            ETGMod.StartGlobalCoroutine(this.DelayedStartCR());
        }
        public static void Init()
        {
            //The name of the item
            string itemName = "Nitroglycylinder";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it
            string resourceName = "NevernamedsItems/Resources/nitroglycylinder_icon";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a PassiveItem component to the object
            var item = obj.AddComponent <Nitroglycylinder>();

            //Adds a tk2dSprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Reloader 'sploder";
            string longDesc  = "Explodes safely (for you at least) upon reloading." + "\n\nThis attatchment was favoured by a masochistic gungeoneer who liked the smell of burnt hair just a little too much. After his inevitable death, it was modified to not actually hurt it's bearer.";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //Do this after ItemBuilder.AddSpriteToObject!
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn");

            //Adds the actual passive effect to the item

            //Set the rarity of the item
            item.quality = PickupObject.ItemQuality.D;

            item.AddToSubShop(ItemBuilder.ShopType.Trorc);

            List <string> mandatorySynergyItems = new List <string>()
            {
                "nn:nitroglycylinder"
            };
            List <string> optionalSynergyItems = new List <string>()
            {
                "nn:nitro_bullets", "explosive_rounds"
            };

            CustomSynergies.Add("Bomb Voyage!", mandatorySynergyItems, optionalSynergyItems);

            List <string> mandatorySynergyItems2 = new List <string>()
            {
                "nn:nitro_bullets"
            };
            List <string> optionalSynergyItems2 = new List <string>()
            {
                "nn:nitroglycylinder", "explosive_rounds",
            };

            CustomSynergies.Add("...Badda Boom!", mandatorySynergyItems2, optionalSynergyItems2);

            NitroglycylinderID = item.PickupObjectId;
        }
Example #18
0
        // Token: 0x060002CF RID: 719 RVA: 0x00019418 File Offset: 0x00017618
        public static void DoInitialisation()
        {
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:chaos_chamber",
                "bny:chaos_revolver"
            };

            CustomSynergies.Add("Reunion", mandatoryConsoleIDs1, null, true);
        }
        // Token: 0x060002CF RID: 719 RVA: 0x00019418 File Offset: 0x00017618
        public static void DoInitialisation()
        {
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:chaos_chamber",
                "bny:chaos_revolver",
                "bny:chaos_trigger",
                "bny:chaos_hammer"
            };

            CustomSynergies.Add("Reunion", mandatoryConsoleIDs1, null, true);
            List <string> mandatoryConsoleIDs2 = new List <string>
            {
                "bny:death",
                "bny:taxes"
            };

            CustomSynergies.Add("Death & Taxes", mandatoryConsoleIDs2, null, true);
            List <string> mandatoryConsoleIDs3 = new List <string>
            {
                "bny:gunthemimic",
                "gunther"
            };

            CustomSynergies.Add("Imposter Syndrome", mandatoryConsoleIDs3, null, true);
            List <string> mandatoryConsoleIDs4 = new List <string>
            {
                "bny:mimikey47",
                "akey47"
            };

            CustomSynergies.Add("One Locks, Other Unlocks", mandatoryConsoleIDs4, null, true);
            List <string> mandatoryConsoleIDs5 = new List <string>
            {
                "bny:casemimic",
                "casey"
            };

            CustomSynergies.Add("Suspicion On #ff0000", mandatoryConsoleIDs5, null, true);
            List <string> mandatoryConsoleIDs6 = new List <string>
            {
                "bny:blasphemimic",
                "blasphemy"
            };

            CustomSynergies.Add("Double-Edged Sword", mandatoryConsoleIDs6, null, true);
            List <string> mandatoryConsoleIDs7 = new List <string>
            {
                "bny:chambemimic_gun",
                "chamber_gun"
            };

            CustomSynergies.Add("Russian Roulette", mandatoryConsoleIDs7, null, true);
        }
Example #20
0
        public static void Add()
        {
            Gun pocketpistol = ETGMod.Databases.Items.NewGun("Pocket Pistol", "pocketpistol");

            Game.Items.Rename("outdated_gun_mods:pocket_pistol", "bny:pocket_pistol");
            pocketpistol.gameObject.AddComponent <PocketPistol>();
            GunExt.SetShortDescription(pocketpistol, "Happy to see me?");
            GunExt.SetLongDescription(pocketpistol, "An incredibly small firearm. How do bullets even fit in there?");
            GunExt.SetupSprite(pocketpistol, null, "pocketpistol_idle_001", 19);
            GunExt.SetAnimationFPS(pocketpistol, pocketpistol.shootAnimation, 15);
            GunExt.SetAnimationFPS(pocketpistol, pocketpistol.reloadAnimation, 7);
            GunExt.SetAnimationFPS(pocketpistol, pocketpistol.idleAnimation, 1);
            GunExt.AddProjectileModuleFrom(pocketpistol, "magnum", true, false);
            pocketpistol.gunSwitchGroup              = (PickupObjectDatabase.GetById(79) as Gun).gunSwitchGroup;
            pocketpistol.DefaultModule.ammoCost      = 1;
            pocketpistol.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.SemiAutomatic;
            pocketpistol.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            pocketpistol.reloadTime = 0.9f;
            pocketpistol.barrelOffset.transform.localPosition = new Vector3(.5f, 0.25f, 0f);
            pocketpistol.DefaultModule.cooldownTime           = .3f;
            pocketpistol.DefaultModule.numberOfShotsInClip    = 6;
            pocketpistol.SetBaseMaxAmmo(327);
            pocketpistol.quality = PickupObject.ItemQuality.D;
            pocketpistol.DefaultModule.angleVariance = 4f;
            pocketpistol.AddPassiveStatModifier(PlayerStats.StatType.AmmoCapacityMultiplier, .1f, StatModifier.ModifyMethod.ADDITIVE);
            pocketpistol.encounterTrackable.EncounterGuid = "The Small Gun Hell Yeah Brother";
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(pocketpistol.DefaultModule.projectiles[0]);

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            pocketpistol.DefaultModule.projectiles[0] = projectile;
            projectile.shouldRotate              = true;
            projectile.baseData.damage           = 7.5f;
            projectile.baseData.speed           *= 1.5f;
            projectile.AdditionalScaleMultiplier = 0.7f;
            projectile.transform.parent          = pocketpistol.barrelOffset;
            ETGMod.Databases.Items.Add(pocketpistol, null, "ANY");
            List <string> mandatoryConsoleIDs1 = new List <string>
            {
                "bny:pocket_pistol"
            };
            List <string> optionalConsoleID1s = new List <string>
            {
                "stout_bullets",
                "fat_bullets",
                "+1_bullets",
                "flak_bullets"
            };

            CustomSynergies.Add("How do these even fit in?", mandatoryConsoleIDs1, optionalConsoleID1s, true);
            pocketpistol.AddToSubShop(ItemBuilder.ShopType.Trorc, 1f);
        }
Example #21
0
		public static void Init()
		{
			string name = "Guon-Geon";
			string resourcePath = "BunnyMod/Resources/GuonGeon/guongeon.png";
			GameObject gameObject = new GameObject();
			GuonGeon boomGuon = gameObject.AddComponent<GuonGeon>();
			ItemBuilder.AddSpriteToObject(name, resourcePath, gameObject);
			string shortDesc = "Enter The Guon-Geon";
			string longDesc = "A miniature replica of the Gungeon in the form of a Guon Stone. Placing your ear onto the mouth part lets you hear gun-based rap.";
			boomGuon.SetupItem(shortDesc, longDesc, "bny");
			boomGuon.quality = PickupObject.ItemQuality.S;
			boomGuon.AddToSubShop(ItemBuilder.ShopType.Trorc, 1f);
			GuonGeon.BuildPrefab();
			boomGuon.OrbitalPrefab = GuonGeon.orbitalPrefab;
			boomGuon.Identifier = IounStoneOrbitalItem.IounStoneIdentifier.GENERIC;
			List<string> mandatoryConsoleIDs = new List<string>
			{
				"bny:guon-geon",
			};
			List<string> optionalConsoleIDs = new List<string>
			{
				"tangler",
				"shotgun_full_of_hate",
				"cold_45",
				"grasschopper",
				"pea_shooter",
				"blooper",
				"bee_hive",
				"zorgun",
				"glacier",
				"the_judge",
				"plague_pistol",
				"gunbow",
				"ice_breaker",
				"dungeon_eagle",
				"gungeon_ant",
				"zilla_shotgun",
				"vertebraek47"
			};
			CustomSynergies.Add("You made the cut!", mandatoryConsoleIDs, optionalConsoleIDs, true);
			List<string> mandatoryConsoleID1s = new List<string>
			{
				"bny:guon-geon",
			};
			List<string> optionalConsoleID1s = new List<string>
			{
				"disintegrator",
				"demon_head",
				"unicorn_horn"
			};
			CustomSynergies.Add("You didn't make the cut...", mandatoryConsoleID1s, optionalConsoleID1s, true);

		}
        //Call this method from the Start() method of your ETGModule extension class
        public static void Init()
        {
            //The name of the item
            string itemName = "Heart Padlock";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it.
            string resourceName = "NevernamedsItems/Resources/heartpadlock_icon";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a ActiveItem component to the object
            var item = obj.AddComponent <HeartPadlock>();

            //Adds a tk2dSprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Locked Life";
            string longDesc  = "Spend keys to heal." + "\n\nLocks such as these are commonly used by powerful Gunjurers to secure their souls to their bodies in case of catastrophic injury.";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //"kts" here is the item pool. In the console you'd type kts:sweating_bullets
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn");

            //Set the cooldown type and duration of the cooldown
            ItemBuilder.SetCooldownType(item, ItemBuilder.CooldownType.Timed, 2);

            //Adds a passive modifier, like curse, coolness, damage, etc. to the item. Works for passives and actives.

            //Set some other fields
            item.consumable = false;
            item.quality    = ItemQuality.D;

            item.AddToSubShop(ItemBuilder.ShopType.Flynt);

            List <string> mandatorySynergyItems = new List <string>()
            {
                "nn:heart_padlock", "heart_locket"
            };

            CustomSynergies.Add("All Locked Up", mandatorySynergyItems);
            List <string> mandatorySynergyItems2 = new List <string>()
            {
                "nn:heart_padlock", "shelleton_key"
            };

            CustomSynergies.Add("Key Death", mandatorySynergyItems2);

            HeartPadlockID = item.PickupObjectId;
        }
Example #23
0
        //Call this method from the Start() method of your ETGModule extension
        public static void Register()
        {
            //The name of the item
            string itemName = "Showoff Bullets";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it
            string resourceName = "BleakMod/Resources/showoff_bullets";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a PassiveItem component to the object
            var item = obj.AddComponent <ShowoffBullets>();

            //Adds a sprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Look at me!";
            string longDesc  = "Adds multiple shot modifiers to your bullets, at the cost of a small amount of damage.\n\nThey say he's got it all. The teeth, the hair, the looks... but deep down he knows that he just isn't all that exciting.";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //Do this after ItemBuilder.AddSpriteToObject!
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bb");

            //Adds the actual passive effect to the item
            item.AddPassiveStatModifier(PlayerStats.StatType.AdditionalShotPiercing, 1f, StatModifier.ModifyMethod.ADDITIVE);
            item.AddPassiveStatModifier(PlayerStats.StatType.AdditionalShotBounces, 2f, StatModifier.ModifyMethod.ADDITIVE);
            item.AddPassiveStatModifier(PlayerStats.StatType.ProjectileSpeed, 0.5f, StatModifier.ModifyMethod.ADDITIVE);

            //Set the rarity of the item
            item.quality = PickupObject.ItemQuality.A;
            CustomSynergies.Add("Radical!", new List <string>
            {
                "bb:showoff_bullets"
            }, new List <string>
            {
                "rad_gun",
                "sunglasses",
                "bb:trick_shot"
            }, true);
            CustomSynergies.Add("Flashy", new List <string>
            {
                "bb:showoff_bullets"
            }, new List <string>
            {
                "camera"
            }, true);
        }
Example #24
0
        public static void Init()
        {
            //The name of the item
            string itemName = "Flame Chamber";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it
            string resourceName = "NevernamedsItems/Resources/flamechamber_icon";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a PassiveItem component to the object
            var item = obj.AddComponent <FlameChamber>();

            //Adds a tk2dSprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Hotshot";
            string longDesc  = "Reloading on an empty clip ignites nearby enemies!." + "\n\nThis artefact seems strangely familiar to you, but you've never seen anything like it... yet.";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //Do this after ItemBuilder.AddSpriteToObject!
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn");

            //Adds the actual passive effect to the item

            //Set the rarity of the item
            item.quality = PickupObject.ItemQuality.D;

            item.AddToSubShop(ItemBuilder.ShopType.Cursula);

            //LIST OF SYNERGIES
            // 'Burning With Passion' - Flamechamber + Charmed Bow, Charmed Horn, or Charming Rounds --> Item spawns charm creep instead.
            List <string> mandatorySynergyItems = new List <string>()
            {
                "nn:flame_chamber"
            };
            List <string> optionalSynergyItems = new List <string>()
            {
                "charmed_bow", "charm_horn", "charming_rounds"
            };

            CustomSynergies.Add("Burning With Passion", mandatorySynergyItems, optionalSynergyItems);

            ID = item.PickupObjectId;
        }
        //Call this method from the Start() method of your ETGModule extension
        public static void Register()
        {
            //The name of the item
            string itemName = "Strawberry Jam";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it
            string resourceName = "BleakMod/Resources/strawberry_jam";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a PassiveItem component to the object
            var item = obj.AddComponent <StrawberryJam>();

            //Adds a sprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Dread and butter";
            string longDesc  = "Jammed enemies have a high chance of being instantly charmed.\n\nStrangely, jammed enemies have a knack for the gooey, sweet substance known as jam." +
                               " Maybe you can use it to your advantage and keep them in place...";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //Do this after ItemBuilder.AddSpriteToObject!
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bb");

            //Adds the actual passive effect to the item
            item.AddPassiveStatModifier(PlayerStats.StatType.Curse, 1.5f, StatModifier.ModifyMethod.ADDITIVE);

            //Set the rarity of the item
            item.quality = PickupObject.ItemQuality.D;
            item.AddToSubShop(ItemBuilder.ShopType.Cursula, 1f);
            item.AddToSubShop(ItemBuilder.ShopType.Goopton, 1f);
            CustomSynergies.Add("Ooey Gooey", new List <string>
            {
                "bb:strawberry_jam"
            }, new List <string>
            {
                "shotga_cola",
                "shotgun_coffee",
                "double_vision",
                "potion_of_gun_friendship",
                "potion_of_lead_skin",
                "old_knights_flask",
                "orange"
            }, true);
        }
Example #26
0
        public static void Init()
        {
            //The name of the item
            string itemName = "Cyclone Boots";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it
            string resourceName = "NevernamedsItems/Resources/cycloneboots_icon";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a PassiveItem component to the object
            var item = obj.AddComponent <CycloneCylinder>();

            //Adds a tk2dSprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Gusty Dodges";
            string longDesc  = "Dodge rolling releases a magical gust of wind that pushes all enemies around you back." + "\n\nThe magical wind is stored in the boots themselves, and it feels oddly tickly on your toes.";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //Do this after ItemBuilder.AddSpriteToObject!
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn");

            //Adds the actual passive effect to the item

            //Set the rarity of the item
            item.quality = PickupObject.ItemQuality.D;

            //Synergy with the Balloon Gun --> Double Radius.
            //Synergy with Armour of Thorns --> Deal damage to all enemies pushed. dam = dodgerolldam * 3.
            List <string> mandatorySynergyItems = new List <string>()
            {
                "nn:cyclone_boots", "balloon_gun"
            };

            CustomSynergies.Add("Let Loose", mandatorySynergyItems);
            List <string> mandatorySynergyItems2 = new List <string>()
            {
                "nn:cyclone_boots", "armor_of_thorns"
            };

            CustomSynergies.Add("Scytheclone", mandatorySynergyItems2);
        }
        //Call this method from the Start() method of your ETGModule extension class
        public static void Init()
        {
            //The name of the item
            string itemName = "Lucky Coin";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it.
            string resourceName = "NevernamedsItems/Resources/luckycoin_icon";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a ActiveItem component to the object
            var item = obj.AddComponent <LuckyCoin>();

            //Adds a tk2dSprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Heads or Tails";
            string longDesc  = "50/50 change for a temporary stat bonus or a temporary stat penalty when used.\n\n" + "Legends tell of a time when coins such as this one were commonplace in the gungeon. They've since been exchanged for more...modern currency.";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //"kts" here is the item pool. In the console you'd type kts:sweating_bullets
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn");

            //Set the cooldown type and duration of the cooldown
            ItemBuilder.SetCooldownType(item, ItemBuilder.CooldownType.Damage, 500);

            //Adds a passive modifier, like curse, coolness, damage, etc. to the item. Works for passives and actives.

            //Set some other fields
            item.consumable = false;
            item.quality    = ItemQuality.C;

            item.AddToSubShop(ItemBuilder.ShopType.Cursula);

            List <string> mandatorySynergyItems = new List <string>()
            {
                "nn:lucky_coin", "seven_leaf_clover"
            };

            CustomSynergies.Add("Even Luckier!", mandatorySynergyItems);

            LuckyCoinID = item.PickupObjectId;
        }
        //Call this method from the Start() method of your ETGModule extension class
        public static void Init()
        {
            //The name of the item
            string itemName = "The Shellactery";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it.
            string resourceName = "NevernamedsItems/Resources/theshellactery_icon";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a ActiveItem component to the object
            var item = obj.AddComponent <TheShellactery>();

            //Adds a tk2dSprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Firearm Immortality";
            string longDesc  = "Generates ammunition." + "\n\nThis ancient relic allows you to reach right through the Curtain and pluck ammo directly from the great beyond." + "\n\nTorn from the gut of an ancient Gungeoneer who was ripped back from the jaws of death, despite his best attempts...";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //"kts" here is the item pool. In the console you'd type kts:sweating_bullets
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "nn");

            //Set the cooldown type and duration of the cooldown
            ItemBuilder.SetCooldownType(item, ItemBuilder.CooldownType.Damage, 1600);

            ItemBuilder.AddPassiveStatModifier(item, PlayerStats.StatType.Curse, 2f, StatModifier.ModifyMethod.ADDITIVE);
            //Adds a passive modifier, like curse, coolness, damage, etc. to the item. Works for passives and actives.

            //Set some other fields
            item.consumable = false;
            item.AddToSubShop(ItemBuilder.ShopType.Cursula);
            item.quality = ItemQuality.S;

            //SYNERGY WITH BLACK HOLE GUN --> "Black Paradox"
            List <string> mandatorySynergyItems = new List <string>()
            {
                "nn:the_shellactery", "black_hole_gun"
            };

            CustomSynergies.Add("Black Paradox", mandatorySynergyItems);
        }
        public static void Init()
        {
            string           itemName     = "Jammed Guillotine";
            string           resourceName = "BunnyMod/Resources/jammedguillotine.png";
            GameObject       obj          = new GameObject(itemName);
            JammedGuillotine glassSyringe = obj.AddComponent <JammedGuillotine>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
            string shortDesc = "The Executioner";
            string longDesc  = "Those weakened in combat suffer consequences.\n\nAn ancient guillotine used by gundead to perform ritualistic executions. Though obsolete, the souls of those wronged by it still empower it to seek revenge.";

            ItemBuilder.SetupItem(glassSyringe, shortDesc, longDesc, "bny");
            ItemBuilder.SetCooldownType(glassSyringe, ItemBuilder.CooldownType.PerRoom, 1);
            glassSyringe.AddPassiveStatModifier(PlayerStats.StatType.Curse, 2f, StatModifier.ModifyMethod.ADDITIVE);
            glassSyringe.consumable = false;
            glassSyringe.quality    = PickupObject.ItemQuality.A;
            List <string> mandatoryConsoleIDs = new List <string>
            {
                "bny:jammed_guillotine"
            };
            List <string> optionalConsoleIDs = new List <string>
            {
                "bny:guillotine_rounds",
                "gunslingers_ashes",
                "huntsman",
                "skull_spitter"
            };

            CustomSynergies.Add("Judge, Jury and...", mandatoryConsoleIDs, optionalConsoleIDs, true);
            List <string> mandatoryConsole1IDs = new List <string>
            {
                "bny:jammed_guillotine"
            };
            List <string> optionalConsole1IDs = new List <string>
            {
                "melted_rock",
                "pitchfork",
                "cursed_bullets",
                "melted_rock",
                "shotgun_full_of_hate"
            };

            CustomSynergies.Add("Lost Humanity", mandatoryConsole1IDs, optionalConsole1IDs, true);
        }
        //Call this method from the Start() method of your ETGModule extension
        public static void Register()
        {
            //The name of the item
            string itemName = "Trick Shot";

            //Refers to an embedded png in the project. Make sure to embed your resources! Google it
            string resourceName = "BleakMod/Resources/trick_shot";

            //Create new GameObject
            GameObject obj = new GameObject(itemName);

            //Add a PassiveItem component to the object
            var item = obj.AddComponent <TrickShot>();

            //Adds a sprite component to the object and adds your texture to the item sprite collection
            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            //Ammonomicon entry variables
            string shortDesc = "Total Mayhem";
            string longDesc  = "Adds 5 bounces and a bit of projectile speed to the player's shots. Decreases base damage slightly, but each bounce of a projectile increases its damage.\n\nThe elder brother of Bouncy Bullets. The story goes that Trick Shot left his hometown, put on some bling, and went to make a name for himself in the big city.";

            //Adds the item to the gungeon item list, the ammonomicon, the loot table, etc.
            //Do this after ItemBuilder.AddSpriteToObject!
            ItemBuilder.SetupItem(item, shortDesc, longDesc, "bb");

            //Adds the actual passive effect to the item
            item.AddPassiveStatModifier(PlayerStats.StatType.Damage, 0.8f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            item.AddPassiveStatModifier(PlayerStats.StatType.ProjectileSpeed, 1.33f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            item.AddPassiveStatModifier(PlayerStats.StatType.RangeMultiplier, 5f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            item.AddPassiveStatModifier(PlayerStats.StatType.AdditionalShotBounces, 5f);
            //Set the rarity of the item
            item.quality = PickupObject.ItemQuality.B;
            CustomSynergies.Add("Heart-Piercingly Cool", new List <string>
            {
                "bb:trick_shot"
            }, new List <string>
            {
                "rad_gun",
                "ice_cube",
                "ballot",
                "heart_of_ice"
            }, true);
        }