Пример #1
0
        private static void BiscoLeashAsRedTierItem()
        {
            BiscoLeashItemDef = new ItemDef
            {
                name = "BiscosLeash", // its the internal name, no spaces, apostrophes and stuff like that
                tier = ItemTier.Tier3,
                pickupModelPrefab = BiscoLeashPrefab,
                pickupIconSprite  = BiscoLeashIcon,
                nameToken         = "BISCOLEASH_NAME", // stylised name
                pickupToken       = "BISCOLEASH_PICKUP",
                descriptionToken  = "BISCOLEASH_DESC",
                loreToken         = "BISCOLEASH_LORE",
                tags = new[]
                {
                    ItemTag.Utility,
                    ItemTag.Damage
                }
            };

            var itemDisplayRules = new ItemDisplayRule[1];                         // keep this null if you don't want the item to show up on the survivor 3d model. You can also have multiple rules !

            itemDisplayRules[0].followerPrefab = BiscoLeashPrefab;                 // the prefab that will show up on the survivor
            itemDisplayRules[0].childName      = "Chest";                          // this will define the starting point for the position of the 3d model, you can see what are the differents name available in the prefab model of the survivors
            itemDisplayRules[0].localScale     = new Vector3(0.15f, 0.15f, 0.15f); // scale the model
            itemDisplayRules[0].localAngles    = new Vector3(0f, 180f, 0f);        // rotate the model
            itemDisplayRules[0].localPos       = new Vector3(-0.35f, -0.1f, 0f);   // position offset relative to the childName, here the survivor Chest

            var biscoLeash = new R2API.CustomItem(BiscoLeashItemDef, itemDisplayRules);

            ItemAPI.Add(biscoLeash); // ItemAPI sends back the ItemIndex of your item
        }
Пример #2
0
    public BrokenScepter()
    {
        {
            LanguageAPI.Add("BROKENSCEPTER_ITEM_TOKEN", "Broken scepter");
            LanguageAPI.Add("BROKENSCEPTER_ITEM_DESCRIPTION_TOKEN", "Gain unique benefits on level up.");
            LanguageAPI.Add("BROKENSCEPTER_ITEM_LORE_TOKEN", "Boy, her march is on the horizon. I ask of you, before my time is due, to unite the broken pieces, and return to me. Let the wrongs of the past be right.");
            LanguageAPI.Add("BROKENSCEPTER_ITEM_PICKUP_TOKEN", "Unite the broken pieces.");
            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupSoda",
                pickupIconPath   = "Textures/ItemIcons/texbirdeyeicon",
                pickupToken      = "BROKENSCEPTER_ITEM_PICKUP_TOKEN",
                nameToken        = "BROKENSCEPTER_ITEM_TOKEN",
                descriptionToken = "BROKENSCEPTER_ITEM_DESCRIPTION_TOKEN",
                loreToken        = "BROKENSCEPTER_ITEM_LORE_TOKEN",
                name             = "BrokenScepter",
                tier             = ItemTier.Tier3
            };

            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupSoda");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0.15f, 0.15f, 0.15f),
                localAngles    = new Vector3(0f, 180f, 0f),
                localPos       = new Vector3(-0.35f, -0.1f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #3
0
        private static void LoadMagnifingGlass()
        {
            MagnifingGlassItemDef = new ItemDef
            {
                name = "MagnifyingGlass",
                tier = ItemTier.Tier3,
                pickupModelPrefab = MagnifingGlassPrefab,
                pickupIconSprite  = MagnifingGlassIcon,
                nameToken         = "MAGGLASS_NAME",
                pickupToken       = "MAGGLASS_PICKUP",
                descriptionToken  = "MAGGLASS_DESC",
                loreToken         = "MAGGLASS_LORE",
                tags = new[]
                {
                    ItemTag.AIBlacklist,
                    ItemTag.Utility
                }
            };

            var itemDisplayRules = new ItemDisplayRule[1];

            itemDisplayRules[0].followerPrefab = MagnifingGlassPrefab;
            itemDisplayRules[0].childName      = "Chest";
            itemDisplayRules[0].localScale     = new Vector3(0.15f, 0.15f, 0.15f);
            itemDisplayRules[0].localAngles    = new Vector3(0f, 180f, 0f);
            itemDisplayRules[0].localPos       = new Vector3(-0.35f, -0.1f, 0f);

            var biscoLeash = new R2API.CustomItem(MagnifingGlassItemDef, itemDisplayRules);

            ItemAPI.Add(biscoLeash);
        }
Пример #4
0
        private static void BiscoLeashAsEquipment()
        {
            BiscoLeashEquipmentDef = new EquipmentDef
            {
                name              = "BiscosLeashEquipment", // its the internal name, no spaces, apostrophes and stuff like that
                cooldown          = 5f,
                pickupModelPrefab = BiscoLeashPrefab,
                pickupIconSprite  = BiscoLeashIcon,
                nameToken         = "BISCOLEASH_NAME", // stylised name
                pickupToken       = "BISCOLEASH_PICKUP",
                descriptionToken  = "BISCOLEASH_DESC",
                loreToken         = "BISCOLEASH_LORE",
                canDrop           = true,
                enigmaCompatible  = false
            };

            var itemDisplayRules = new ItemDisplayRule[1];                         // keep this null if you don't want the item to show up on the survivor 3d model. You can also have multiple rules !

            itemDisplayRules[0].followerPrefab = BiscoLeashPrefab;                 // the prefab that will show up on the survivor
            itemDisplayRules[0].childName      = "Chest";                          // this will define the starting point for the position of the 3d model, you can see what are the differents name available in the prefab model of the survivors
            itemDisplayRules[0].localScale     = new Vector3(0.15f, 0.15f, 0.15f); // scale the model
            itemDisplayRules[0].localAngles    = new Vector3(0f, 180f, 0f);        // rotate the model
            itemDisplayRules[0].localPos       = new Vector3(-0.35f, -0.1f, 0f);   // position offset relative to the childName, here the survivor Chest

            var biscoLeash = new CustomEquipment(BiscoLeashEquipmentDef, itemDisplayRules);

            ItemAPI.Add(biscoLeash);
        }
Пример #5
0
        private static void AddExtraItemPickupItem()
        {
            var ExtraItemPickupItemDef = new ItemDef
            {
                name             = "ExtraItemPickup",
                tier             = ItemTier.Tier3,
                pickupModelPath  = LuckyItems.ModPrefix + "Assets/Items/OnPickupItem/pickup_item.prefab",
                pickupIconPath   = LuckyItems.ModPrefix + "Assets/Items/OnPickupItem/pickup_item_pic.png",
                nameToken        = "EXTRAITEMPICKUP_NAME",
                pickupToken      = "EXTRAITEMPICKUP_PICKUP",
                descriptionToken = "EXTRAITEMPICKUP_DESC",
                loreToken        = "EXTRAITEMPICKUP_LORE",
                tags             = new[]
                {
                    ItemTag.Utility,
                    ItemTag.AIBlacklist
                }
            };

            ItemDisplayRule[] itemDisplayRules = new ItemDisplayRule[0];

            var ExtraItemPickup = new R2API.CustomItem(ExtraItemPickupItemDef, itemDisplayRules);

            ExtraItemPickupItemIndex = ItemAPI.Add(ExtraItemPickup);
        }
Пример #6
0
        private static void LoadExtMag()
        {
            ExtendedMagItemDef = new ItemDef
            {
                name = "ExtMag",
                tier = ItemTier.Tier2,
                pickupModelPrefab = ExtendedMagPrefab,
                pickupIconSprite  = ExtendedMagIcon,
                nameToken         = "EXTMAG_NAME",
                pickupToken       = "EXTMAG_PICKUP",
                descriptionToken  = "EXTMAG_DESC",
                loreToken         = "EXTMAG_LORE",
                tags = new[]
                {
                    ItemTag.AIBlacklist,
                    ItemTag.Utility
                }
            };

            var itemDisplayRules = new ItemDisplayRule[1];

            itemDisplayRules[0].followerPrefab = ExtendedMagPrefab;
            itemDisplayRules[0].childName      = "Waist";
            itemDisplayRules[0].localScale     = new Vector3(0.15f, 0.15f, 0.15f);
            itemDisplayRules[0].localAngles    = new Vector3(0f, 180f, 0f);
            itemDisplayRules[0].localPos       = new Vector3(-0.35f, -0.1f, 0f);

            var bagoMoney = new R2API.CustomItem(ExtendedMagItemDef, itemDisplayRules);

            ItemAPI.Add(bagoMoney);
        }
Пример #7
0
        public JestersDice()
        {
            _rng = new Xoroshiro128Plus((ulong)DateTime.Now.Ticks);

            var equipDef = new EquipmentDef
            {
                cooldown         = 30f,
                pickupModelPath  = UmbrellaAssets.PrefabJestersDice,
                pickupIconPath   = UmbrellaAssets.IconJestersDice,
                pickupToken      = "Jester's Dice",
                nameToken        = EquipNames.JestersDice,
                descriptionToken = "Jester's Dice",
                canDrop          = true,
                enigmaCompatible = true,
                isLunar          = true
            };

            var prefab = UmbrellaAssets.JestersDicePrefab;
            var rule   = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0.15f, 0.15f, 0.15f),
                localAngles    = new Vector3(0f, 180f, 0f),
                localPos       = new Vector3(-0.35f, -0.1f, 0f)
            };

            var equip = new CustomEquipment(equipDef, new[] { rule });

            EquipIndex = (EquipmentIndex)ItemAPI.AddCustomEquipment(equip);
        }
Пример #8
0
        private static void AddExtraShrineRollItem()
        {
            var ExtraShrineRollItemDef = new ItemDef
            {
                name             = "ExtraShrineRoll",
                tier             = ItemTier.Tier2,
                pickupModelPath  = LuckyItems.ModPrefix + "Assets/Items/ShrineItem/shrine_item.prefab",
                pickupIconPath   = LuckyItems.ModPrefix + "Assets/Items/ShrineItem/shrine_item_pic.png",
                nameToken        = "EXTRASHRINEROLL_NAME",
                pickupToken      = "EXTRASHRINEROLL_PICKUP",
                descriptionToken = "EXTRASHRINEROLL_DESC",
                loreToken        = "EXTRASHRINEROLL_LORE",
                tags             = new[]
                {
                    ItemTag.Utility,
                    ItemTag.AIBlacklist
                }
            };

            ItemDisplayRule[] itemDisplayRules = new ItemDisplayRule[0];

            var extraShrineRoll = new R2API.CustomItem(ExtraShrineRollItemDef, itemDisplayRules);

            ExtraShrineRollItemIndex = ItemAPI.Add(extraShrineRoll); // ItemAPI sends back the ItemIndex of your item
        }
Пример #9
0
    public SCP()
    {
        {
            LanguageAPI.Add("SCP_ITEM_LORE_TOKEN", "Order: \u201C[REDACTED]\u201D\r\nTracking Number: [REDACTED]\r\nEstimated Delivery: [REDACTED]\r\nShipping Method: [REDACTED]\r\nShipping Address: [REDACTED], [REDACTED]\r\nShipping Details:\r\n\r\nSecure, contain, protect.\r\n");
            LanguageAPI.Add("SCP_ITEM_TOKEN", "[REDACTED]");
            LanguageAPI.Add("SCP_ITEM_DESCRIPTION_TOKEN", "[REDACTED]");
            LanguageAPI.Add("SCP_ITEM_PICKUP_TOKEN", "[REDACTED]");
            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                pickupToken      = "SCP_ITEM_PICKUP_TOKEN",
                nameToken        = "SCP_ITEM_TOKEN",
                descriptionToken = "SCP_ITEM_DESCRIPTION_TOKEN",
                name             = "SCP",
                loreToken        = "SCP_ITEM_LORE_TOKEN",
                tier             = ItemTier.Tier3
            };

            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0f, 0, 0f),
                localAngles    = new Vector3(0f, 0f, 0f),
                localPos       = new Vector3(0, 0f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #10
0
        public BulletTimer()
        {
            var equipDef = new EquipmentDef
            {
                cooldown         = 40f,
                pickupModelPath  = UmbrellaAssets.PrefabBulletTimer,
                pickupIconPath   = UmbrellaAssets.IconBulletTimer,
                nameToken        = EquipNames.BulletTimer,
                descriptionToken = "Bullet Timer",
                pickupToken      = "Bullet Timer",
                canDrop          = true,
                enigmaCompatible = true
            };

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = UmbrellaAssets.BulletTimerPrefab,
                childName      = "Chest",
                localScale     = new Vector3(0.15f, 0.15f, 0.15f),
                localAngles    = new Vector3(0f, 180f, 0f),
                localPos       = new Vector3(-0.35f, -0.1f, 0f)
            };

            var equip = new CustomEquipment(equipDef, new[] { rule });

            EquipIndex = (EquipmentIndex)ItemAPI.AddCustomEquipment(equip);

            IL.RoR2.Projectile.ProjectileManager.FireProjectileServer += ProjectileManagerOnFireProjectileServer;
            _startTime = float.NaN;
        }
Пример #11
0
 public void AddBodyPrefabRule(ItemDisplayRule itemDisplayRule, String bodyPrefabName = "")
 {
     if (!bodyPrefabItemDisplayRuleDict.ContainsKey(bodyPrefabName))
     {
         bodyPrefabItemDisplayRuleDict.Add(bodyPrefabName, new List <ItemDisplayRule>());
     }
     bodyPrefabItemDisplayRuleDict[bodyPrefabName].Add(itemDisplayRule);
 }
Пример #12
0
 public void AddDefaultRule(ItemDisplayRule itemDisplayRule)
 {
     if (!characterModelItemDisplayRuleDict.ContainsKey(""))
     {
         characterModelItemDisplayRuleDict.Add("", new List <ItemDisplayRule>());
     }
     characterModelItemDisplayRuleDict[""].Add(itemDisplayRule);
 }
Пример #13
0
 public void AddCharacterModelRule(ItemDisplayRule itemDisplayRule, String characterModelName = "")
 {
     if (!characterModelItemDisplayRuleDict.ContainsKey(characterModelName))
     {
         characterModelItemDisplayRuleDict.Add(characterModelName, new List <ItemDisplayRule>());
     }
     characterModelItemDisplayRuleDict[characterModelName].Add(itemDisplayRule);
 }
Пример #14
0
    public Sundial()
    {
        {
            LanguageAPI.Add("SUNDIAL_ITEM_TOKEN", "Rechargable Quantum Core");
            LanguageAPI.Add("SUNDIAL_ITEM_DESCRIPTION_TOKEN", "Chance to become elite upon interaction. +5% chance per stack.");
            LanguageAPI.Add("SUNDIAL_ITEM_PICKUP_TOKEN", "Chance to become elite upon interaction.");

            ItemTag[] tags = new ItemTag[2]
            {
                ItemTag.Utility,
                ItemTag.AIBlacklist
            };

            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                pickupToken      = "SUNDIAL_ITEM_PICKUP_TOKEN",
                nameToken        = "SUNDIAL_ITEM_TOKEN",
                name             = "WeirdSundial",
                descriptionToken = "SUNDIAL_ITEM_DESCRIPTION_TOKEN",
                tier             = ItemTier.Tier2,
                tags             = tags
            };

            BuffDef solarBuffDef = new BuffDef
            {
                buffColor  = new Color(235, 182, 92),
                buffIndex  = BuffIndex.Count,
                canStack   = false,
                eliteIndex = EliteIndex.None,
                iconPath   = "Textures/BuffIcons/texbuffpulverizeicon",
                isDebuff   = false,
                name       = "SolarGain"
            };
            solarBuff = BuffAPI.Add(new CustomBuff(solarBuffDef));
            //solarBuff = ItemAPI.Add(new CustomBuff(solarbuff.name, solarbuff));

            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0f, 0, 0f),
                localAngles    = new Vector3(0f, 0f, 0f),
                localPos       = new Vector3(0, 0f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #15
0
        public void Assets()
        {
            const string ModPrefix  = "@CustomItem:";
            const string PrefabPath = ModPrefix + "Assets/Import/belt/belt.prefab";
            const string IconPath   = ModPrefix + "Assets/Import/belt_icon/belt_icon.png";

            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ModItem.rampage"))
            {
                var bundle   = AssetBundle.LoadFromStream(stream);
                var provider = new AssetBundleResourcesProvider(ModPrefix.TrimEnd(':'), bundle);
                ResourcesAPI.AddProvider(provider);

                BiscoLeashPrefab = bundle.LoadAsset <GameObject>("Assets/Import/belt/belt.prefab");
            }

            ItemDef itemDef = new ItemDef
            {
                name             = "ThornsPotion",
                tier             = ItemTier.Tier2,
                pickupModelPath  = PrefabPath,
                pickupIconPath   = IconPath,
                nameToken        = "Thorn's Potion",
                pickupToken      = "Return to sender",
                descriptionToken = "Have a 30% chance to return the damage delt to you (+100%)",
                loreToken        = "Empty",
                tags             = new[]
                {
                    ItemTag.Utility,
                    ItemTag.Damage
                }
            };

            ItemDisplayRule[] itemDisplayRules = new ItemDisplayRule[1];           // keep this null if you don't want the item to show up on the survivor 3d model. You can also have multiple rules !
            itemDisplayRules[0].followerPrefab = BiscoLeashPrefab;                 // the prefab that will show up on the survivor
            itemDisplayRules[0].childName      = "Chest";                          // this will define the starting point for the position of the 3d model, you can see what are the differents name available in the prefab model of the survivors
            itemDisplayRules[0].localScale     = new Vector3(0.15f, 0.15f, 0.15f); // scale the model
            itemDisplayRules[0].localAngles    = new Vector3(0f, 180f, 0f);        // rotate the model
            itemDisplayRules[0].localPos       = new Vector3(-0.35f, -0.1f, 0f);   // position offset relative to the childName, here the survivor Chest

            var thornsPotion = new CustomItem(itemDef, itemDisplayRules);

            Class1.ThornsPotion = ItemAPI.Add(thornsPotion); // ItemAPI sends back the ItemIndex of your item
        }
Пример #16
0
        private static void AddHealthBoostItem()
        {
            ItemDef Def = new ItemDef
            {
                name             = "AspectOfVitality",
                nameToken        = "HEALTH_BOOST_NAME",
                pickupToken      = "HEALTH_BOOST_DESC",
                descriptionToken = "HEALTH_BOOST_DESC",
                loreToken        = null,
                pickupIconPath   = "@WDBP:Assets/WDBP/HealthItem.png",
                pickupModelPath  = null,
                tier             = ItemTier.NoTier,
                tags             = new ItemTag[] { ItemTag.Healing }
            };

            ItemDisplayRule[] DisplayRules = new ItemDisplayRule[0];
            CustomItem        Item         = new CustomItem(Def, DisplayRules);

            HealthBoostIndex = ItemAPI.Add(Item);
        }
Пример #17
0
        private static void AddSpeedBoostItem()
        {
            ItemDef Def = new ItemDef
            {
                name             = "AspectOfSpeed",
                nameToken        = "SPEED_BOOST_NAME",
                pickupToken      = "SPEED_BOOST_DESC",
                descriptionToken = "SPEED_BOOST_DESC",
                loreToken        = null,
                pickupIconPath   = "@WDBP:Assets/WDBP/SpeedItem.png",
                pickupModelPath  = null,
                tier             = ItemTier.NoTier,
                tags             = new ItemTag[] { ItemTag.Utility }
            };

            ItemDisplayRule[] DisplayRules = new ItemDisplayRule[0];
            CustomItem        Item         = new CustomItem(Def, DisplayRules);

            SpeedBoostIndex = ItemAPI.Add(Item);
        }
Пример #18
0
        private static void AddDexBoostItem()
        {
            ItemDef Def = new ItemDef
            {
                name             = "AspectOfFury",
                nameToken        = "DEX_BOOST_NAME",
                pickupToken      = "DEX_BOOST_DESC",
                descriptionToken = "DEX_BOOST_DESC",
                loreToken        = null,
                pickupIconPath   = "@WDBP:Assets/WDBP/DexItem.png",
                pickupModelPath  = null,
                tier             = ItemTier.NoTier,
                tags             = new ItemTag[] { ItemTag.Damage }
            };

            ItemDisplayRule[] DisplayRules = new ItemDisplayRule[0];
            CustomItem        Item         = new CustomItem(Def, DisplayRules);

            DexBoostIndex = ItemAPI.Add(Item);
        }
Пример #19
0
    public Pillow()
    {
        {
            LanguageAPI.Add("PILLOW_ITEM_TOKEN", "Odd Armpiece");
            LanguageAPI.Add("PILLOW_ITEM_DESCRIPTION_TOKEN", "Become cloaked when picking up an item. +2 seconds per stack.");
            LanguageAPI.Add("PILLOW_ITEM_PICKUP_TOKEN", "Become cloaked when picking up an item.");

            ItemTag[] tags = new ItemTag[2]
            {
                ItemTag.AIBlacklist,
                ItemTag.Utility
            };

            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                pickupToken      = "PILLOW_ITEM_PICKUP_TOKEN",
                nameToken        = "PILLOW_ITEM_TOKEN",
                descriptionToken = "PILLOW_ITEM_DESCRIPTION_TOKEN",
                name             = "Pillow",
                tier             = ItemTier.Tier2,
                tags             = tags
            };

            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0f, 0, 0f),
                localAngles    = new Vector3(0f, 0f, 0f),
                localPos       = new Vector3(0, 0f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #20
0
    public UnstableForcePressurePipe()
    {
        {
            LanguageAPI.Add("FORCEPRESSURER_ITEM_TOKEN", "Pressure Pipe");
            LanguageAPI.Add("FORCEPRESSURER_ITEM_DESCRIPTION_TOKEN", "Apply additional force to enemies who are midair. +7% to proc per stack.");
            LanguageAPI.Add("FORCEPRESSURER_ITEM_PICKUP_TOKEN", "Apply additional force to enemies who are midair.");

            ItemTag[] tags = new ItemTag[2]
            {
                ItemTag.Utility,
                ItemTag.AIBlacklist
            };

            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                pickupToken      = "FORCEPRESSURER_ITEM_PICKUP_TOKEN",
                nameToken        = "FORCEPRESSURER_ITEM_TOKEN",
                descriptionToken = "FORCEPRESSURER_ITEM_DESCRIPTION_TOKEN",
                name             = "ForcePressure",
                tier             = ItemTier.Tier1,
                tags             = tags
            };

            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0f, 0, 0f),
                localAngles    = new Vector3(0f, 0f, 0f),
                localPos       = new Vector3(0, 0f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #21
0
        public Item()
        {
            {
                LanguageAPI.Add("PORTABLEGRINDER_ITEM_TOKEN", "Portable Grinder");
                LanguageAPI.Add("PORTABLEGRINDER_ITEM_DESCRIPTION_TOKEN", "15% chance for bosses to drop a random boss item when killed");
                LanguageAPI.Add("PORTABLEGRINDER_ITEM_PICKUP_TOKEN", "Chance for bosses to drop boss items when killed");

                ItemTag[] tags = new ItemTag[2]
                {
                    ItemTag.OnKillEffect,
                    ItemTag.AIBlacklist
                };

                var itemDef = new ItemDef
                {
                    pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                    pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                    pickupToken      = "PORTABLEGRINDER_ITEM_DESCRIPTION_TOKEN",
                    nameToken        = "PORTABLEGRINDER_ITEM_TOKEN",
                    descriptionToken = "PORTABLEGRINDER_ITEM_DESCRIPTION_TOKEN",
                    loreToken        = "",
                    name             = "PortableGrinder",
                    tier             = ItemTier.Tier3
                };

                var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

                var rule = new ItemDisplayRule
                {
                    ruleType       = ItemDisplayRuleType.ParentedPrefab,
                    followerPrefab = prefab,
                    childName      = "Chest",
                    localScale     = new Vector3(0f, 0, 0f),
                    localAngles    = new Vector3(0f, 0f, 0f),
                    localPos       = new Vector3(0, 0f, 0f)
                };

                var item = new CustomItem(itemDef, new[] { rule });
                itemIndex = ItemAPI.Add(item);
            };
        }
Пример #22
0
    public MechanicalTrinket()
    {
        {
            LanguageAPI.Add("TRINKET_ITEM_TOKEN", "Mechanical Trinket");
            LanguageAPI.Add("TRINKET_ITEM_DESCRIPTION_TOKEN", "Increase teleporter radius.");
            LanguageAPI.Add("TRINKET_ITEM_PICKUP_TOKEN", "Increase teleporter radius.");

            ItemTag[] tags = new ItemTag[2]
            {
                ItemTag.AIBlacklist,
                ItemTag.Utility
            };

            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                pickupToken      = "TRINKET_ITEM_PICKUP_TOKEN",
                nameToken        = "TRINKET_ITEM_TOKEN",
                descriptionToken = "TRINKET_ITEM_DESCRIPTION_TOKEN",
                name             = "MechanicalTrinket",
                tier             = ItemTier.Tier2,
                tags             = tags
            };

            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0f, 0, 0f),
                localAngles    = new Vector3(0f, 0f, 0f),
                localPos       = new Vector3(0, 0f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #23
0
    public BrokenKeycard()
    {
        {
            LanguageAPI.Add("BROKENKEY_ITEM_TOKEN", "Broken Keycard");
            LanguageAPI.Add("BROKENKEY_ITEM_DESCRIPTION_TOKEN", "Chance to gain money upon opening a chest. 3 dollars chance per stack.");
            LanguageAPI.Add("BROKENKEY_ITEM_PICKUP_TOKEN", "Chance to gain money upon interaction");

            ItemTag[] tags = new ItemTag[2]
            {
                ItemTag.Utility,
                ItemTag.AIBlacklist
            };

            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                pickupToken      = "BROKENKEY_ITEM_PICKUP_TOKEN",
                nameToken        = "BROKENKEY_ITEM_TOKEN",
                descriptionToken = "BROKENKEY_ITEM_DESCRIPTION_TOKEN",
                name             = "Keycard",
                tier             = ItemTier.Tier2,
                tags             = tags
            };

            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0f, 0, 0f),
                localAngles    = new Vector3(0f, 0f, 0f),
                localPos       = new Vector3(0, 0f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #24
0
    public Root()
    {
        {
            LanguageAPI.Add("ROOT_ITEM_TOKEN", "Crippling Root");
            LanguageAPI.Add("ROOT_ITEM_DESCRIPTION_TOKEN", "Chance to cripple enemies for 3 seconds. +3 seconds per stack.");
            LanguageAPI.Add("ROOT_ITEM_PICKUP_TOKEN", "Chance to cripple enemies.");

            ItemTag[] tags = new ItemTag[1]
            {
                ItemTag.Damage,
            };

            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                pickupToken      = "ROOT_ITEM_PICKUP_TOKEN",
                nameToken        = "ROOT_ITEM_TOKEN",
                descriptionToken = "ROOT_ITEM_DESCRIPTION_TOKEN",
                name             = "Root",
                tier             = ItemTier.Tier1,
                tags             = tags
            };

            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0f, 0, 0f),
                localAngles    = new Vector3(0f, 0f, 0f),
                localPos       = new Vector3(0, 0f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #25
0
    public Nokia()
    {
        {
            LanguageAPI.Add("NOKIA_ITEM_TOKEN", "Interstellar Nokia");
            LanguageAPI.Add("NOKIA_ITEM_DESCRIPTION_TOKEN", "Chance to gain an item on level up. +5% chance to gain a green item per stack");
            LanguageAPI.Add("NOKIA_ITEM_PICKUP_TOKEN", "Chance to gain an item on level up");

            ItemTag[] tags = new ItemTag[2]
            {
                ItemTag.AIBlacklist,
                ItemTag.Utility
            };

            var itemDef = new ItemDef
            {
                pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                pickupToken      = "NOKIA_ITEM_PICKUP_TOKEN",
                nameToken        = "NOKIA_ITEM_TOKEN",
                descriptionToken = "NOKIA_ITEM_DESCRIPTION_TOKEN",
                name             = "Nokia",
                tier             = ItemTier.Tier3,
                tags             = tags
            };
            var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

            var rule = new ItemDisplayRule
            {
                ruleType       = ItemDisplayRuleType.ParentedPrefab,
                followerPrefab = prefab,
                childName      = "Chest",
                localScale     = new Vector3(0f, 0, 0f),
                localAngles    = new Vector3(0f, 0f, 0f),
                localPos       = new Vector3(0, 0f, 0f)
            };

            var item = new CustomItem(itemDef, new[] { rule });
            itemIndex = ItemAPI.Add(item);
        };
    }
Пример #26
0
        public Lumpkin()
        {
            {
                LanguageAPI.Add("LUMPKIN_ITEM_LORE_TOKEN", "\"Lumpkin, one of the many commanders in the War of 2019, possessed a scream that could deafen his oppenents, and allies. It was unknown how he could scream so loudly, until he was killed in the final battle of WW19 and had his lungs ripped from his chest. \r\n\r\nHis lungs, pictured above, allowed him to scream loudly without injuring himself.\"\r\n\r\n-Exhibit at The National WW19 Museum");
                LanguageAPI.Add("LUMPKIN_ITEM_TOKEN", "The Lumpkin");
                LanguageAPI.Add("LUMPKIN_ITEM_DESCRIPTION_TOKEN", "Release a Brazilian scream, stunning enemies within the immediate vicinity.");
                LanguageAPI.Add("LUMPKIN_ITEM_PICKUP_TOKEN", "And his screams were Brazilian...");
                //yo
                var equipDef = new EquipmentDef
                {
                    cooldown         = 45,
                    pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                    pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                    pickupToken      = "LUMPKIN_ITEM_PICKUP_TOKEN",
                    nameToken        = "LUMPKIN_ITEM_TOKEN",
                    descriptionToken = "LUMPKIN_ITEM_DESCRIPTION_TOKEN",
                    canDrop          = true,
                    isLunar          = false,
                    enigmaCompatible = true,
                    name             = "Lumpkin",
                    loreToken        = "LUMPKIN_ITEM_LORE_TOKEN",
                };

                var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

                var rule = new ItemDisplayRule
                {
                    ruleType       = ItemDisplayRuleType.ParentedPrefab,
                    followerPrefab = prefab,
                    childName      = "Chest",
                    localScale     = new Vector3(0f, 0, 0f),
                    localAngles    = new Vector3(0f, 0f, 0f),
                    localPos       = new Vector3(0, 0f, 0f)
                };

                var equip = new CustomEquipment(equipDef, new[] { rule });
                EquipIndex = ItemAPI.Add(equip);
            };
        }
Пример #27
0
        internal static void Init()
        {
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("PocketPrinter.printer"))
            {
                var bundle   = AssetBundle.LoadFromStream(stream);
                var provider = new AssetBundleResourcesProvider(ModPrefix.TrimEnd(':'), bundle);
                ResourcesAPI.AddProvider(provider);

                PocketPrinterPrefab = bundle.LoadAsset <GameObject>(PrefabPath);
            }

            bool isRedItem = PocketPrinter.FilamentAsRedItem.Value;

            // Register pocket printer as item
            var pocketPrinterItemDef = new ItemDef
            {
                name             = "PocketPrinter",
                tier             = isRedItem ? ItemTier.Tier3 : ItemTier.Tier2,
                pickupModelPath  = PrefabPath,
                pickupIconPath   = isRedItem ? AltIconPath : IconPath,
                nameToken        = "Adaptive Filament",
                pickupToken      = "Duplicates the next item you pick up.\nOnly usable once",
                descriptionToken = "<style=cIsUtility>Turns into a copy</style> of the next item you pick up before being destroyed.",
                loreToken        = "",
                tags             = new[]
                {
                    ItemTag.Utility,
                    ItemTag.AIBlacklist
                }
            };

            // For now, we just won't render it - this might change in the future
            var itemDisplayRules = new ItemDisplayRule[1];
            var pocketPrinter    = new R2API.CustomItem(pocketPrinterItemDef, itemDisplayRules);

            PocketPrinterItemIndex = ItemAPI.Add(pocketPrinter);
        }
Пример #28
0
        // Define the item when it is created as a Lunar item
        private static void SpaceSpinachAsLunarItem()
        {
            // Create the item instance and populate it
            SpaceSpinachItemDef = ScriptableObject.CreateInstance <ItemDef>();
            var Spin = SpaceSpinachItemDef;

            Spin.name              = "SpaceSpinach";
            Spin.tier              = ItemTier.Lunar;
            Spin.pickupIconSprite  = SpaceSpinachIcon;
            Spin.pickupModelPrefab = SpaceSpinachPrefab;
            Spin.nameToken         = "Space Spinach";
            Spin.pickupToken       = "Grow in size. Gain bonuses to health, damage, and mobility.";
            Spin.descriptionToken  = "Grow in size. Gain bonuses to health, damage, speed, and jump height.";
            Spin.loreToken         = "Said to be grown with a special bonemeal fertilizer on the rouge planet of Lumena, the exact nutritional contents remain a mystery as the back has been scratched off...";
            Spin.tags              = new[] {
                ItemTag.Damage,
                ItemTag.Utility
            };

            // TODO: Add new item display rules on a per-survivor basis
            var itemDisplayRules = new ItemDisplayRule[1];

            itemDisplayRules[0].followerPrefab = SpaceSpinachPrefab;
            itemDisplayRules[0].childName      = "Chest";
            itemDisplayRules[0].localScale     = new Vector3(0.15f, 0.15f, 0.15f);
            itemDisplayRules[0].localAngles    = new Vector3(0f, 90f, 0f);
            itemDisplayRules[0].localPos       = new Vector3(-0.25f, -0.1f, 0f);

            var spaceSpinach = new CustomItem(SpaceSpinachItemDef, itemDisplayRules);

            // Add item, log if there is an error
            if (!ItemAPI.Add(spaceSpinach))
            {
                SpaceSpinachItemDef = null;
                Logger.LogError("Unable to add Space Spinach");
            }
        }
Пример #29
0
        public Equipment()
        {
            {
                LanguageAPI.Add("HERETICSBOX_ITEM_TOKEN", "Heretic's box");
                LanguageAPI.Add("HERETICSBOX_ITEM_DESCRIPTION_TOKEN", "its dead");
                LanguageAPI.Add("HERETICSBOX_ITEM_PICKUP_TOKEN", "The heretic's box...?");
                var equipDef = new EquipmentDef
                {
                    cooldown         = 145,
                    pickupModelPath  = "Prefabs/PickupModels/PickupMystery",
                    pickupIconPath   = "Textures/MiscIcons/texMysteryIcon",
                    pickupToken      = "HERETICSBOX_ITEM_PICKUP_TOKEN",
                    nameToken        = "HERETICSBOX_ITEM_TOKEN",
                    descriptionToken = "HERETICSBOX_ITEM_DESCRIPTION_TOKEN",
                    canDrop          = true,
                    enigmaCompatible = true,
                    isLunar          = true,
                    name             = "HereticBox",
                };

                var prefab = Resources.Load <GameObject>("Prefabs/PickupModels/PickupMystery");

                var rule = new ItemDisplayRule
                {
                    ruleType       = ItemDisplayRuleType.ParentedPrefab,
                    followerPrefab = prefab,
                    childName      = "Chest",
                    localScale     = new Vector3(0f, 0, 0f),
                    localAngles    = new Vector3(0f, 0f, 0f),
                    localPos       = new Vector3(0, 0f, 0f)
                };

                var equip = new CustomEquipment(equipDef, new[] { rule });
                EquipIndex = ItemAPI.Add(equip);
            };
        }
Пример #30
0
 public static void AddLocation(Items.CharacterItemDisplayRuleSet rules)
 {
     if (!Hbisos.Value)
     {
         GameObject followerPrefab = Her_Burden.bundle.LoadAsset <GameObject>(Hbiiv.Value + "violether_burden");
         followerPrefab.AddComponent <FakePanicPrefabSizeScript>();
         Vector3 generalScale = new Vector3(.0125f, .0125f, .0125f);
         _ = new ItemDisplayRule[]
         {
             new ItemDisplayRule
             {
                 ruleType       = ItemDisplayRuleType.ParentedPrefab,
                 followerPrefab = followerPrefab,
                 childName      = "Pelvis",
                 localPos       = new Vector3(0f, 0.1f, 0.1f),
                 localAngles    = new Vector3(180f, -0.05f, 0f),
                 localScale     = generalScale
             }
         };
     }
     if (Hbisos.Value)
     {
         GameObject followerPrefab = Her_Burden.bundle.LoadAsset <GameObject>(Hbiiv.Value + "violether_burden");
         if (Hbvos.Value == "Panic")
         {
             followerPrefab.AddComponent <PrefabSizeScript>();
         }
         if (Hbvos.Value != "Panic")
         {
             followerPrefab.AddComponent <FakePanicPrefabSizeScript>();
         }
         Vector3 generalScale = new Vector3(.0125f, .0125f, .0125f);
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(0f, 0.1f, 0.1f),
             localAngles    = new Vector3(180f, -0.05f, 0f),
             localScale     = generalScale
         }, "mdlCommandoDualies"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(0f, 0.1f, 0.1f),
             localAngles    = new Vector3(180f, -0.05f, 0f),
             localScale     = generalScale
         }, "mdlHuntress"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "LowerArmR",
             localPos       = new Vector3(0f, 5.5f, 0f),
             localAngles    = new Vector3(45f, -90f, 0f),
             localScale     = generalScale * 10
         }, "mdlToolbot"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(0f, 0.1f, 0.1f),
             localAngles    = new Vector3(180f, -0.05f, 0f),
             localScale     = generalScale
         }, "mdlEngi"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(0f, 0.1f, 0.1f),
             localAngles    = new Vector3(180f, -0.05f, 0f),
             localScale     = generalScale
         }, "mdlMage"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(0f, 0.25f, 0.05f),
             localAngles    = new Vector3(180f, -0.05f, 0f),
             localScale     = generalScale
         }, "mdlMerc"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "WeaponPlatform",
             localPos       = new Vector3(0.2f, 0.05f, 0.2f),
             localAngles    = new Vector3(-45f, 0f, 0f),
             localScale     = generalScale * 2
         }, "mdlTreebot"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(0f, 0.2f, 0.2f),
             localAngles    = new Vector3(180f, -0.05f, 0f),
             localScale     = generalScale
         }, "mdlLoader"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Hip",
             localPos       = new Vector3(0f, 3.5f, 0f),
             localAngles    = new Vector3(135f, -0.05f, 0f),
             localScale     = generalScale * 10
         }, "mdlCroco"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(0f, 0.1f, 0.1f),
             localAngles    = new Vector3(180f, -0.05f, 0f),
             localScale     = generalScale
         }, "mdlCaptain"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(0f, 0.1f, 0.1f),
             localAngles    = new Vector3(180f, -0.05f, 0f),
             localScale     = generalScale
         }, "mdlBandit2"
                                     );
         rules.AddCharacterModelRule(new ItemDisplayRule
         {
             ruleType       = ItemDisplayRuleType.ParentedPrefab,
             followerPrefab = followerPrefab,
             childName      = "Pelvis",
             localPos       = new Vector3(.3f, -.15f, 0f),
             localAngles    = new Vector3(20f, -120f, -36f),
             localScale     = generalScale
         }, "mdlHeretic"
                                     );
     }
 }