Пример #1
0
 private void Awake()
 {
     _material         = new Material(HailstormAssets.DarknessShader);
     Distance          = new AnimatedFloat();
     Distance.Accel    = 20;
     Distance.MaxSpeed = 50;
     Distance.Setpoint = 80;
     Distance.Position = 80;
     _breathTimeRef    = Time.time;
 }
Пример #2
0
        public DarkElitesManager()
        {
            _rng = new Xoroshiro128Plus((ulong)DateTime.Now.Ticks);

            var eliteDef = new EliteDef
            {
                modifierToken = EliteName,
                color         = new Color32(0, 0, 0, 255),
            };
            var equipDef = new EquipmentDef
            {
                cooldown         = 10f,
                pickupModelPath  = "",
                pickupIconPath   = HailstormAssets.IconDarkElite,
                nameToken        = EquipName,
                pickupToken      = "Darkness",
                descriptionToken = "Night-bringer",
                canDrop          = false,
                enigmaCompatible = false
            };
            var buffDef = new BuffDef
            {
                buffColor = new Color32(255, 255, 255, 255),
                iconPath  = HailstormAssets.IconDarkElite,
                canStack  = false
            };

            var equip = new CustomEquipment(equipDef, new ItemDisplayRule[0]);
            var buff  = new CustomBuff(BuffName, buffDef);
            var elite = new CustomElite(EliteName, eliteDef, equip, buff, 1);

            _eliteIndex = (EliteIndex)ItemAPI.AddCustomElite(elite);
            _buffIndex  = (BuffIndex)ItemAPI.AddCustomBuff(buff);
            _equipIndex = (EquipmentIndex)ItemAPI.AddCustomEquipment(equip);
            eliteDef.eliteEquipmentIndex = _equipIndex;
            equipDef.passiveBuff         = _buffIndex;
            buffDef.eliteIndex           = _eliteIndex;

            //When the camera starts up, hook in our darkness effect
            On.RoR2.CameraRigController.Start += CameraRigControllerOnStart;

            //Update elite materials
            On.RoR2.CharacterModel.InstanceUpdate += CharacterModelOnInstanceUpdate;

            //Dark elites spawn much less frequently, but are only slightly stronger/costlier than tier 1s
            var card = new EliteAffixCard
            {
                spawnWeight      = 0.3f,
                costMultiplier   = 10.0f,
                damageBoostCoeff = 2.0f,
                healthBoostCoeff = 6.0f,
                eliteType        = _eliteIndex
            };

            //Register the card for spawning if ESO is enabled
            EsoLib.Cards.Add(card);
            Card = card;

            //Create random walk trackers for dark elite material texture animation
            _walkerU = new AnimatedFloat
            {
                Accel    = 0.3f,
                MaxSpeed = 0.6f
            };
            _walkerV = new AnimatedFloat
            {
                Accel    = 0.3f,
                MaxSpeed = 0.6f
            };

            //Whenever scene changes, stop the breathing sound
            SceneManager.sceneUnloaded += s => AkSoundEngine.PostEvent(SoundEvents.StopLargeBreathing, null);
        }