public void Awake()
        {
            instance = this;

            ReadConfig();
            Assets.PopulateAssets();
            RegisterStates();
            RegisterCharacter();
            ItemDisplays.RegisterDisplays();
            Skins.RegisterSkins();
            RegisterProjectiles();
            CreateMaster();
        }
Exemplo n.º 2
0
        public static void RegisterDisplays()
        {
            GameObject bodyPrefab = GrovetenderPlugin.myCharacter;

            GameObject     model          = bodyPrefab.GetComponentInChildren <ModelLocator>().modelTransform.gameObject;
            CharacterModel characterModel = model.GetComponent <CharacterModel>();

            PopulateDisplays();

            //apply displays here

            ItemDisplayRuleSet itemDisplayRuleSet = ScriptableObject.CreateInstance <ItemDisplayRuleSet>();

            List <ItemDisplayRuleSet.NamedRuleGroup> list  = new List <ItemDisplayRuleSet.NamedRuleGroup>();
            List <ItemDisplayRuleSet.NamedRuleGroup> list2 = new List <ItemDisplayRuleSet.NamedRuleGroup>();

            ItemDisplayRuleSet original = Resources.Load <GameObject>("Prefabs/CharacterBodies/GravekeeperBody").GetComponentInChildren <CharacterModel>().itemDisplayRuleSet;
            ItemDisplayRuleSet loader   = Resources.Load <GameObject>("Prefabs/CharacterBodies/LoaderBody").GetComponentInChildren <CharacterModel>().itemDisplayRuleSet;

            //add item displays here

            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Jetpack",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayBugWings"),
                            childName      = "Head",
                            localPos       = new Vector3(0, 1, -2),
                            localAngles    = new Vector3(45, 0, 0),
                            localScale     = new Vector3(1, 1, 1),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "GoldGat",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayGoldGat"),
                            childName      = "MuzzleJar",
                            localPos       = new Vector3(0, -9, 0),
                            localAngles    = new Vector3(180, 270, 180),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "AffixRed",
                displayRuleGroup = original.FindEquipmentDisplayRuleGroup("AffixRed")
            });
            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "AffixBlue",
                displayRuleGroup = original.FindEquipmentDisplayRuleGroup("AffixBlue")
            });
            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "AffixWhite",
                displayRuleGroup = original.FindEquipmentDisplayRuleGroup("AffixWhite")
            });
            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "AffixPoison",
                displayRuleGroup = original.FindEquipmentDisplayRuleGroup("AffixPoison")
            });
            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "AffixHaunted",
                displayRuleGroup = original.FindEquipmentDisplayRuleGroup("AffixHaunted")
            });
            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "IncreaseHealing",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayAntler"),
                            childName      = "Head",
                            localPos       = new Vector3(1.5f, 2, 0.017f),
                            localAngles    = new Vector3(358.0388f, 93.19246f, 1.436809f),
                            localScale     = new Vector3(3, 3, 3),
                            limbMask       = LimbFlags.None
                        },
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayAntler"),
                            childName      = "Head",
                            localPos       = new Vector3(-1.5f, 2, 0.017f),
                            localAngles    = new Vector3(358.030f, 266.808f, 1.436998f),
                            localScale     = new Vector3(-3, 3, 3),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });
            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "NovaOnHeal",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayDevilHorns"),
                            childName      = "Head",
                            localPos       = new Vector3(1.25f, -1, 0),
                            localAngles    = new Vector3(3.536957f, 0.01489126f, 14.99564f),
                            localScale     = new Vector3(5, 5, 5),
                            limbMask       = LimbFlags.None
                        },
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayDevilHorns"),
                            childName      = "Head",
                            localPos       = new Vector3(-1.25f, -1, 0),
                            localAngles    = new Vector3(3.536963f, 0.0149023f, 344.9955f),
                            localScale     = new Vector3(-5, 5, 5),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });
            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "KillEliteFrenzy",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayBrainstalk"),
                            childName      = "Head",
                            localPos       = new Vector3(0, 1.5f, 0),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });
            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Clover",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayClover"),
                            childName      = "Head",
                            localPos       = new Vector3(-1.5f, 3, 0),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(4, 4, 4),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "CritGlasses",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayGlasses"),
                            childName      = "Mask",
                            localPos       = new Vector3(0, 0, 0.5f),
                            localAngles    = new Vector3(-90, 180, 0),
                            localScale     = new Vector3(4, 4, 4),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });
            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "GhostOnKill",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayMask"),
                            childName      = "Head",
                            localPos       = new Vector3(0, 1, 2),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(4, 4, 4),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "AttackSpeedOnCrit",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayWolfPelt"),
                            childName      = "Head",
                            localPos       = new Vector3(0, 2, 1),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(4, 4, 4),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "GoldOnHit",
                displayRuleGroup = loader.FindItemDisplayRuleGroup("GoldOnHit")
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "ShieldOnly",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayShieldBug"),
                            childName      = "Head",
                            localPos       = new Vector3(0.75f, -0.2f, 0.5f),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(4, 4, 4),
                            limbMask       = LimbFlags.None
                        },
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayShieldBug"),
                            childName      = "Head",
                            localPos       = new Vector3(-0.75f, -0.2f, 0.5f),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(-4, 4, 4),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });
            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "HeadHunter",
                displayRuleGroup = loader.FindItemDisplayRuleGroup("HeadHunter")
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "JumpBoost",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayWaxBird"),
                            childName      = "Head",
                            localPos       = new Vector3(0, -0.5f, -1),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(5, 5, 5),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Bandolier",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayBandolier"),
                            childName      = "MuzzleJar",
                            localPos       = new Vector3(0, 0, 0),
                            localAngles    = new Vector3(90, 0, 0),
                            localScale     = new Vector3(7, 8, 10),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "DeathMark",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayDeathMark"),
                            childName      = "MuzzleJar",
                            localPos       = new Vector3(0, 0, 0),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(0.75f, 0.75f, 0.75f),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "WarCryOnMultiKill",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayPauldron"),
                            childName      = "Head",
                            localPos       = new Vector3(0, 1, 2),
                            localAngles    = new Vector3(-90, 180, 0),
                            localScale     = new Vector3(5, 5, 5),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Mushroom",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayMushroom"),
                            childName      = "Mask",
                            localPos       = new Vector3(0.5f, -0.5f, 2.4f),
                            localAngles    = new Vector3(90, 25, 0),
                            localScale     = new Vector3(0.5f, 0.5f, 0.5f),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "BarrierOnOverHeal",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayAegis"),
                            childName      = "MuzzleJar",
                            localPos       = new Vector3(3.5f, -2, 0),
                            localAngles    = new Vector3(90, -90, 0),
                            localScale     = new Vector3(3, 3, 3),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Behemoth",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayBehemoth"),
                            childName      = "MuzzleJar",
                            localPos       = new Vector3(0, -2, -5),
                            localAngles    = new Vector3(180, 0, 0),
                            localScale     = new Vector3(1, 1, 1),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "NearbyDamageBonus",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayDiamond"),
                            childName      = "HandL",
                            localPos       = new Vector3(0, 0, -2.75f),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(0.7f, 0.7f, 0.7f),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "FireRing",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayFireRing"),
                            childName      = "HandL",
                            localPos       = new Vector3(0.25f, 0, 0),
                            localAngles    = new Vector3(90, 0, 0),
                            localScale     = new Vector3(4, 4, 4),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "IceRing",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayIceRing"),
                            childName      = "HandR",
                            localPos       = new Vector3(-0.25f, 0, 0),
                            localAngles    = new Vector3(90, 0, 0),
                            localScale     = new Vector3(4, 4, 4),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "ArmorPlate",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayRepulsionArmorPlate"),
                            childName      = "Head",
                            localPos       = new Vector3(0, 1.5f, -2),
                            localAngles    = new Vector3(-25, 0, 180),
                            localScale     = new Vector3(3, 3, 3),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Bear",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayBear"),
                            childName      = "Head",
                            localPos       = new Vector3(-1.9f, 0.5f, -1.5f),
                            localAngles    = new Vector3(0, -90, 0),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Medkit",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayMedkit"),
                            childName      = "Head",
                            localPos       = new Vector3(2, 0, 0),
                            localAngles    = new Vector3(-90, 90, 0),
                            localScale     = new Vector3(3, 3, 3),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Dagger",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayDagger"),
                            childName      = "Head",
                            localPos       = new Vector3(0, 0, 0),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(6, 6, 6),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "ChainLightning",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayUkulele"),
                            childName      = "MuzzleJar",
                            localPos       = new Vector3(-3.2f, -2.5f, 1),
                            localAngles    = new Vector3(0, -90, 180),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Syringe",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplaySyringeCluster"),
                            childName      = "Head",
                            localPos       = new Vector3(0, 2, 0),
                            localAngles    = new Vector3(300, 0, 0),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "ArmorReductionOnHit",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayWarhammer"),
                            childName      = "MuzzleJar",
                            localPos       = new Vector3(0, -4, -3),
                            localAngles    = new Vector3(90, 0, 0),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "FallBoots",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayGravBoots"),
                            childName      = "FootL",
                            localPos       = new Vector3(0, -0.05f, 0),
                            localAngles    = new Vector3(45, 0, 0),
                            localScale     = new Vector3(0.25f, 0.25f, 0.25f),
                            limbMask       = LimbFlags.None
                        },
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayGravBoots"),
                            childName      = "FootR",
                            localPos       = new Vector3(0, -0.05f, 0),
                            localAngles    = new Vector3(70, 0, 0),
                            localScale     = new Vector3(0.25f, 0.25f, 0.25f),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "BounceNearby",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayHook"),
                            childName      = "HandR",
                            localPos       = new Vector3(0, 0, -0.25f),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(1, 1, 1),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "SprintWisp",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayBrokenMask"),
                            childName      = "Mask",
                            localPos       = new Vector3(0, 0.25f, 1.5f),
                            localAngles    = new Vector3(-110, 0, 180),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Hoof",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayHoof"),
                            childName      = "FootL",
                            localPos       = new Vector3(0, 0.25f, 0.75f),
                            localAngles    = new Vector3(20, 0, 180),
                            localScale     = new Vector3(0.75f, 0.5f, 0.25f),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Incubator",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayAncestralIncubator"),
                            childName      = "MuzzleJar",
                            localPos       = new Vector3(0, -4.5f, 0),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(1.25f, 1, 1.25f),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "ExplodeOnDeath",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayWilloWisp"),
                            childName      = "Head",
                            localPos       = new Vector3(-8.5f, 2.75f, 0),
                            localAngles    = new Vector3(0, 0, 45),
                            localScale     = new Vector3(1, 1, 1),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "ExecuteLowHealthElite",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayGuillotine"),
                            childName      = "Head",
                            localPos       = new Vector3(8.5f, 2.75f, 0),
                            localAngles    = new Vector3(0, 0, -45),
                            localScale     = new Vector3(1, 1, 1),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });


            //something something

            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Meteor",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayMeteor"),
                            childName      = "Root",
                            localPos       = new Vector3(0, 10.5f, -12),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Saw",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplaySawmerang"),
                            childName      = "Root",
                            localPos       = new Vector3(0, 10.5f, -12),
                            localAngles    = new Vector3(-90, 0, 0),
                            localScale     = new Vector3(0.4f, 0.4f, 0.4f),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list2.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Blackhole",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayGravCube"),
                            childName      = "Root",
                            localPos       = new Vector3(0, 16, -6),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(1, 1, 1),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Icicle",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayFrostRelic"),
                            childName      = "Root",
                            localPos       = new Vector3(-2, 13, -4),
                            localAngles    = new Vector3(90, 0, 0),
                            localScale     = new Vector3(2, 2, 2),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "Talisman",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayTalisman"),
                            childName      = "Root",
                            localPos       = new Vector3(4, 12, -6),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(1, 1, 1),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });

            /*list.Add(new ItemDisplayRuleSet.NamedRuleGroup
             * {
             *  name = "LaserTurbine",
             *  displayRuleGroup = new DisplayRuleGroup
             *  {
             *      rules = new ItemDisplayRule[]
             *      {
             *          new ItemDisplayRule
             *          {
             *              ruleType = ItemDisplayRuleType.ParentedPrefab,
             *              followerPrefab = ItemDisplays.LoadDisplay("DisplayLaserTurbine"),
             *              childName = "Root",
             *              localPos = new Vector3(0, 0, 0),
             *              localAngles = new Vector3(0, 0, 0),
             *              localScale = new Vector3(1, 1, 1),
             *              limbMask = LimbFlags.None
             *          }
             *      }
             *  }
             * });*/

            list.Add(new ItemDisplayRuleSet.NamedRuleGroup
            {
                name             = "FocusConvergence",
                displayRuleGroup = new DisplayRuleGroup
                {
                    rules = new ItemDisplayRule[]
                    {
                        new ItemDisplayRule
                        {
                            ruleType       = ItemDisplayRuleType.ParentedPrefab,
                            followerPrefab = ItemDisplays.LoadDisplay("DisplayFocusedConvergence"),
                            childName      = "Root",
                            localPos       = new Vector3(0, 16, -12),
                            localAngles    = new Vector3(0, 0, 0),
                            localScale     = new Vector3(0.25f, 0.25f, 0.25f),
                            limbMask       = LimbFlags.None
                        }
                    }
                }
            });


            BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;

            ItemDisplayRuleSet.NamedRuleGroup[] value  = list.ToArray();
            ItemDisplayRuleSet.NamedRuleGroup[] value2 = list2.ToArray();
            typeof(ItemDisplayRuleSet).GetField("namedItemRuleGroups", bindingAttr).SetValue(itemDisplayRuleSet, value);
            typeof(ItemDisplayRuleSet).GetField("namedEquipmentRuleGroups", bindingAttr).SetValue(itemDisplayRuleSet, value2);

            characterModel.itemDisplayRuleSet = itemDisplayRuleSet;
        }