Esempio n. 1
0
        private void On_ToolbotDashExit(On.EntityStates.Toolbot.ToolbotDash.orig_OnExit orig, EntityStates.Toolbot.ToolbotDash self)
        {
            orig(self);
            var cpt = self.outer.commonComponents.characterBody.GetComponent <ScepterToolbotDashTracker>();

            if (!cpt || !cpt.enabled)
            {
                return;
            }
            new BlastAttack {
                attacker          = self.outer.commonComponents.characterBody.gameObject,
                attackerFiltering = AttackerFiltering.NeverHitSelf,
                baseDamage        = cpt.trackedDamageTaken * 2f,
                baseForce         = 1000f,
                bonusForce        = Vector3.up * 500f,
                crit             = self.outer.commonComponents.characterBody.RollCrit(),
                damageColorIndex = default,
Esempio n. 2
0
        private void On_ToolbotDashEnter(On.EntityStates.Toolbot.ToolbotDash.orig_OnEnter orig, EntityStates.Toolbot.ToolbotDash self)
        {
            orig(self);
            if (!self.outer.commonComponents.characterBody)
            {
                return;
            }
            if (Scepter.instance.GetCount(self.outer.commonComponents.characterBody) < 1)
            {
                return;
            }
            var cpt = self.outer.commonComponents.characterBody.GetComponent <ScepterToolbotDashTracker>();

            if (!cpt)
            {
                cpt = self.outer.commonComponents.characterBody.gameObject.AddComponent <ScepterToolbotDashTracker>();
            }
            cpt.enabled            = true;
            cpt.trackedDamageTaken = 0f;
            self.baseDuration     *= 2f;
        }
Esempio n. 3
0
        private Vector3 ToolbotDash_GetIdealVelocity(On.EntityStates.Toolbot.ToolbotDash.orig_GetIdealVelocity orig, EntityStates.Toolbot.ToolbotDash self)
        {
            var retv = orig(self);
            var cpt  = self.GetComponent <ToolbotDashBoostTracker>();

            if (cpt && cpt.boosting)
            {
                retv *= 1f + buffFrac * toolbotReacBoostFrac * cpt.maxBoosts;
            }
            return(retv);
        }
Esempio n. 4
0
        private void ToolbotDash_FixedUpdate(On.EntityStates.Toolbot.ToolbotDash.orig_FixedUpdate orig, EntityStates.Toolbot.ToolbotDash self)
        {
            orig(self);
            var count = GetCount(self.characterBody);

            //todo: add contextual skill override
            if (count > 0)
            {
                var cpt = self.GetComponent <ToolbotDashBoostTracker>();
                if (!cpt)
                {
                    return;
                }
                var isDown = self.hasInputBank && self.inputBank.skill3.down;
                if (!isDown)
                {
                    cpt.retrigProtection = false;
                }
                if (!cpt.boosting && isDown && cpt.TryBoost())
                {
                    self.duration += toolbotReacTime;
                    Util.PlaySound(EntityStates.Toolbot.ToolbotDash.endSoundString, self.gameObject);
                }
            }
        }
Esempio n. 5
0
        private void ToolbotDash_OnEnter(On.EntityStates.Toolbot.ToolbotDash.orig_OnEnter orig, EntityStates.Toolbot.ToolbotDash self)
        {
            orig(self);
            var count = GetCount(self.characterBody);

            if (count > 0)
            {
                var cpt = self.GetComponent <ToolbotDashBoostTracker>();
                if (!cpt)
                {
                    cpt = self.gameObject.AddComponent <ToolbotDashBoostTracker>();
                }
                cpt.maxBoosts  = count * toolbotReacBoostCount;
                cpt.boostsUsed = 0;
            }
        }
Esempio n. 6
0
        private void On_ToolbotDashExit(On.EntityStates.Toolbot.ToolbotDash.orig_OnExit orig, EntityStates.Toolbot.ToolbotDash self)
        {
            orig(self);
            var cpt = self.outer.commonComponents.characterBody.GetComponent <ScepterToolbotDashTracker>();

            if (!cpt || !cpt.enabled)
            {
                return;
            }
            new BlastAttack
            {
                attacker          = self.outer.commonComponents.characterBody.gameObject,
                attackerFiltering = AttackerFiltering.NeverHit,
                baseDamage        = cpt.trackedDamageTaken * 2f,
                baseForce         = 1000f,
                bonusForce        = Vector3.up * 500f,
                crit             = self.outer.commonComponents.characterBody.RollCrit(),
                damageColorIndex = DamageColorIndex.Default,
                damageType       = DamageType.Stun1s,
                falloffModel     = BlastAttack.FalloffModel.Linear,
                losType          = BlastAttack.LoSType.None,
                position         = self.outer.commonComponents.transform.position,
                procCoefficient  = 1f,
                radius           = 20f,
                teamIndex        = self.outer.commonComponents.teamComponent?.teamIndex ?? TeamIndex.Count
            }.Fire();
            EffectManager.SpawnEffect(Resources.Load <GameObject>("prefabs/effects/omnieffect/OmniExplosionVFX"),
                                      new EffectData
            {
                origin = self.outer.commonComponents.transform.position,
                scale  = 20f
            }, true);

            cpt.enabled = false;
        }