private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     try
     {
         if (self.name.StartsWith(CharBodyStrings.Engineer))
         {
             if (TurretStockIncreasesWithBackup.Value)
             {
                 self.GetComponent <SkillLocator>().special.SetBonusStockFromBody(self.inventory.GetItemCount(ItemIndex.SecondarySkillMagazine));
             }
         }
         if (self.name.StartsWith(CharBodyStrings.Mage))
         {
             if (PrimaryIncreasesWitBackup.Value)
             {
                 self.GetComponent <SkillLocator>().primary.SetBonusStockFromBody(self.inventory.GetItemCount(ItemIndex.SecondarySkillMagazine));
             }
         }
     }
     catch (System.Exception ex)
     {
         Logger.LogError(ex);
     }
     orig(self);
 }
예제 #2
0
        public static void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (self)
            {
                if (self.HasBuff(Survivor.Buffs.enrageBuff))
                {
                    self.armor += Core.Config.specialBonusArmor.Value;
                }
                if (self.HasBuff(Survivor.Buffs.earthshockBuff))
                {
                    float bonusSpeed      = self.moveSpeed * Core.Config.utilityBonusMoveSpeed.Value;
                    float bonusJumpHeight = self.jumpPower * Core.Config.utilityBonusJumpPower.Value;
                    self.moveSpeed += bonusSpeed;
                    self.jumpPower += bonusJumpHeight;
                }
                if (self.HasBuff(Survivor.Buffs.earthshockDebuff))
                {
                    self.moveSpeed *= States.Earthshock.debuffSlow;
                    if (!self.gameObject.GetComponent <Miscellaneous.AntiFlyingComponent>())
                    {
                        self.gameObject.AddComponent <Miscellaneous.AntiFlyingComponent>();
                    }
                }
            }
        }
예제 #3
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (self)
            {
                if (self.HasBuff(Modules.Buffs.warcryBuff))
                {
                    float damageBuff = StaticValues.warcryDamageMultiplier * self.damage;
                    self.damage      += damageBuff;
                    self.attackSpeed += StaticValues.warcryAttackSpeedBuff;
                }

                if (self.HasBuff(Modules.Buffs.scepterWarcryBuff))
                {
                    float damageBuff = StaticValues.scepterWarcryDamageMultiplier * self.damage;
                    self.damage      += damageBuff;
                    self.attackSpeed += StaticValues.scepterWarcryAttackSpeedBuff;
                }

                if (self.HasBuff(Modules.Buffs.torporDebuff))
                {
                    self.moveSpeed   *= (1 - StaticValues.torporSlowAmount);
                    self.attackSpeed *= (1 - StaticValues.torporSlowAmount);
                }

                if (self.HasBuff(Modules.Buffs.scepterTorporDebuff))
                {
                    self.moveSpeed   *= (1 - StaticValues.scepterTorporSlowAmount);
                    self.attackSpeed *= (1 - StaticValues.scepterTorporSlowAmount);
                }
            }
        }
예제 #4
0
        private void OnRecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody body)
        {
            orig(body);

            if (body.master == null)
            {
                return;
            }

            var component = body.master.GetComponent <PlayerCharacterMasterController>();

            if (component == null)
            {
                return;
            }

            var player = Players.GetOrAdd(component.networkUser.id, id => new PlayerData(id, component.networkUser.userName));

            // body.master.luck

            Logger.LogInfo($"{Players.Count} - {player.UserName}");

            // body.SetPropertyValue("crit", (float) 100);

            // body.master.GiveMoney(1000);
            // body.master.GiveExperience(1000);
        }
예제 #5
0
 private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     if (self.HasBuff(Sundial.solarBuff))
     {
         self.baseArmor += 10;
     }
     orig(self);
 }
예제 #6
0
 private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     orig(self);
     if (self && self.HasBuff(shrinkDebuff))
     {
         self.damage *= 0.5f;
     }
 }
 private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "lobby")
     {
         return;
     }
     orig(self);
 }
예제 #8
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            int vialCount = GetCount(self);

            self.regen += ((self.baseRegen + self.levelRegen * (self.level - 1))) + (vialRegen * vialCount);
        }
예제 #9
0
 private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     orig(self);
     if (self.inventory && self.HasBuff(MustacheHealBuff))
     {
         self.regen += RegenAddAmount + (RegenAddAmountPerStack * (GetCount(self) - 1));
     }
 }
예제 #10
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (self.HasBuff(ThalliumBuff))
            {
                self.moveSpeed = ((float)((self.baseMoveSpeed + (self.levelMoveSpeed * (self.level - 1))) * 0.1));
            }
        }
예제 #11
0
        ////// Hooks //////

        private void On_CBRecalcStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);
            if (IsActiveAndEnabled())
            {
                cbDamageSetter.Invoke(self, new object[] { self.damage / 20f });
                cbAttackSetter.Invoke(self, new object[] { self.attackSpeed * 10f });
            }
        }
예제 #12
0
 private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     orig(self);
     if (self == this.body && self.HasBuff(Modules.Buffs.kaminaBuff))
     {
         var kaminBuffCount = self.GetBuffCount(Modules.Buffs.kaminaBuff);
         self.damage *= (1 + (Modules.Buffs.kaminaBuffDmgModifier * kaminBuffCount));
     }
 }
예제 #13
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (self == this.body && self.HasBuff(Modules.Buffs.canopyBuff))
            {
                self.armor += LagannToggleCanopy.armorBuffAmount;
            }
        }
예제 #14
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (self)
            {
                Modules.Buffs.HandleBuffs(self);
                Modules.Buffs.HandleDebuffs(self);
            }
        }
예제 #15
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);
            var component = self.GetComponent <MysticsItemsFragileMaskBehaviour>();

            if (component && component.maskActive)
            {
                self.isGlass = true;
            }
        }
예제 #16
0
        private void On_CBRecalcStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (!NetworkServer.active || (!inclDeploys && self.master?.GetComponent <Deployable>()))
            {
                return;
            }
            UpdateBarbedWard(self);
        }
예제 #17
0
 private static void EliteBuffsOnYellow(On.RoR2.CharacterBody.orig_RecalculateStats orig, RoR2.CharacterBody self)
 {
     for (int i = 0; i < NewDefsList.Count; i++)
     {
         if (self.inventory && self.inventory.GetItemCount(NewDefsList[i].itemIndex) > 0)
         {
             self.AddBuff(OldDefsList[i].passiveBuffDef);
         }
     }
     orig(self);
 }
예제 #18
0
 void hook_CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     orig(self);
     if (self.inventory)
     {
         if (self.inventory.GetItemCount(this.ItemIndex) > 0)
         {
             self.crit += 5;
         }
     }
 }
예제 #19
0
        private void Annex(On.RoR2.CharacterBody.orig_RecalculateStats orig, RoR2.CharacterBody self)
        {
            //Yeet orig(self);
            float oldHealth = self.maxHealth;
            float oldShield = self.maxShield;

            self.isElite = self.eliteBuffCount > 1;
            bool glasArtifact = RunArtifactManager.instance.IsArtifactEnabled(RoR2Content.Artifacts.glassArtifactDef);

            self.hasOneShotProtection = self.isPlayerControlled && !glasArtifact;
            self.isGlass = ItemIndex.LunarDagger.GetCount(self) > 0;
        }
예제 #20
0
        private void CheckBuffAndAddArmor(On.RoR2.CharacterBody.orig_RecalculateStats orig, RoR2.CharacterBody self)
        {
            orig(self);
            if (self.HasBuff(meleeArmorBuff))
            {
                Reflection.SetPropertyValue <float>(self, "armor", self.armor + (self.GetBuffCount(meleeArmorBuff) * armorPerBuff));
#if DEBUG
                Chat.AddMessage("Turbo Edition: " + ItemName + " CheckBuffAndAddArmor run, " + self + "'s armor is now " + self.armor);
                Chat.AddMessage("Turbo Edition: " + ItemName + " Increased armor by " + (self.GetBuffCount(meleeArmorBuff) * armorPerBuff) + ".");
#endif
            }
        }
예제 #21
0
        public static void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (self)
            {
                if (self.HasBuff(Survivor.Buffs.sacrificeBuff))
                {
                    self.moveSpeed += self.moveSpeed * Survivor.States.Sacrifice.moveSpeedBoost;
                }
            }
        }
예제 #22
0
 private void AffixHauntedBuffChanges(On.RoR2.CharacterBody.orig_RecalculateStats orig, RoR2.CharacterBody self)
 {
     orig(self);
     if (self.HasBuff(Resources.Load <BuffDef>("AffixHauntedRecipient")))
     {
         self.armor       += 50f;
         self.attackSpeed *= 1.25f;
     }
     if (self.HasBuff(Resources.Load <BuffDef>("AffixHaunted")))
     {
         self.moveSpeed *= 1.25f;
     }
 }
예제 #23
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            // a simple stat hook, adds armor after stats are recalculated
            if (self)
            {
                if (self.HasBuff(Modules.Buffs.armorBuff))
                {
                    self.armor += 300f;
                }
            }
        }
예제 #24
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, RoR2.CharacterBody self)
        {
            orig.Invoke(self);

            if (self.HasBuff(BanditSpeedBuff))
            {
                Reflection.SetPropertyValue <float>(self, "moveSpeed", self.moveSpeed + self.GetBuffCount(BanditSpeedBuff));

                //TODO: Integrate this to From The Shadows alternate skill mod
                //Chat.AddMessage("Shadow buff count: " + self.GetBuffCount(BanditSkills.BanditShadowsBuff));
                //Reflection.SetPropertyValue<float>(self, "moveSpeed", self.moveSpeed + self.GetBuffCount(BanditShadowsBuff));
            }
        }
예제 #25
0
 private static void OnArmorAdd(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     orig(self);
     if (self && self.inventory)
     {
         int   count1         = self.inventory.GetItemCount(ToughTimesItemIndex);
         float ArmorIncrement = 0f;
         if (count1 > 0)
         {
             ArmorIncrement += 14f * count1;
         }
         Reflection.SetPropertyValue(self, "armor", self.armor + ArmorIncrement);
     }
 }
예제 #26
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (self)
            {
                if (self.HasBuff(Modules.Buffs.hiddenJetBuff))
                {
                    self.moveSpeed    = self.moveSpeed * StatValues.jetMoveMulti;
                    self.acceleration = self.acceleration * (StatValues.jetMoveMulti * 2);
                }
            }
            Modules.Buffs.HandleDebuffs(self);
        }
예제 #27
0
 private static void OnRegenAdd(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
 {
     orig(self);
     if (self && self.inventory)
     {
         int   count1         = self.inventory.GetItemCount(VialItemIndex);
         float RegenIncrement = 0f;
         float LevelScale     = self.level - 1f;
         if (count1 > 0)
         {
             RegenIncrement += 1.2f * count1 * (1f + LevelScale * 0.2f);
         }
         Reflection.SetPropertyValue(self, "regen", self.regen + RegenIncrement);
     }
 }
예제 #28
0
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            // a simple stat hook, adds armor after stats are recalculated
            if (self && self == this.body)
            {
                this.body.damage    += (this.body.damage * (this.energy / 100));
                this.body.regen     += (this.body.regen * (this.energy / 300));
                this.body.moveSpeed += (this.body.moveSpeed * (this.energy / 500));
                if (this.body.HasBuff(Modules.Buffs.maxSpiralPowerBuff))
                {
                    this.body.armor += 300f;
                }
            }
        }
        private void CharacterBody_RecalculateStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);

            if (self)
            {
                if (self.HasBuff(Modules.Buffs.scaredDebuff))
                {
                }
                if (self.HasBuff(Modules.Buffs.scaredBuildingDebuff))
                {
                    self.attackSpeed = 0f;
                    self.moveSpeed   = 0f;
                }
            }
        }
예제 #30
0
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member

        private void On_CBRecalcStats(On.RoR2.CharacterBody.orig_RecalculateStats orig, CharacterBody self)
        {
            orig(self);
            if (!IsActiveAndEnabled())
            {
                return;
            }
            HealthComponent hc = self.healthComponent;

            if (!hc || !hc.alive || hc.fullHealth <= 0 || hc.health <= 0 || self.moveSpeed < 0 || hc.health > hc.fullHealth)
            {
                return;
            }
            self.moveSpeed   += self.moveSpeed * maximumPossibleSpeedMultiplier * (1 - (hc.health / hc.fullHealth));
            self.acceleration = self.moveSpeed * (self.baseAcceleration / self.baseMoveSpeed);
        }