private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.equipmentSlot && sender.equipmentSlot.equipmentIndex == equipmentDef.equipmentIndex)
     {
         args.critAdd += baseCrit.Value;
     }
 }
示例#2
0
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.inventory && sender.inventory.GetItemCount(itemDef) > 0)
     {
         args.baseShieldAdd += sender.maxHealth * passiveShield / 100f;
     }
 }
示例#3
0
        /*
         * private void GenericCharacterMain_PerformInputs(On.EntityStates.GenericCharacterMain.orig_PerformInputs orig, EntityStates.GenericCharacterMain self)
         * {
         *  var hasThisItem = GeneralConfigManager.backpackEnableSkillFixes.Value && self.characterBody && self.characterBody.inventory && self.characterBody.inventory.GetItemCount(itemDef) > 0;
         *  if (hasThisItem)
         *  {
         *      for (var i = 0; i < skillDefsToFix.Count; i++)
         *      {
         *          var kvp = skillDefsToFix.ElementAt(i);
         *          skillDefsToFix[kvp.Key] = kvp.Key.mustKeyPress;
         *          kvp.Key.mustKeyPress = true;
         *      }
         *  }
         *  orig(self);
         *  if (hasThisItem)
         *  {
         *      for (var i = 0; i < skillDefsToFix.Count; i++)
         *      {
         *          var kvp = skillDefsToFix.ElementAt(i);
         *          kvp.Key.mustKeyPress = skillDefsToFix[kvp.Key];
         *      }
         *  }
         * }
         *
         * public static Dictionary<RoR2.Skills.SkillDef, bool> skillDefsToFix = new Dictionary<RoR2.Skills.SkillDef, bool>();
         *
         * private void SkillCatalog_SetSkillDefs(On.RoR2.Skills.SkillCatalog.orig_SetSkillDefs orig, RoR2.Skills.SkillDef[] newSkillDefs)
         * {
         *  orig(newSkillDefs);
         *  if (GeneralConfigManager.backpackEnableSkillFixes.Value)
         *  {
         *      var skillsToFix = new List<string>()
         *      {
         *          "ResetRevolver", "SkullRevolver",
         *          "ThrowGrenade", "ThrowStickyGrenade", "CommandoBodySweepBarrage", "CommandoBodyBarrage",
         *          "CrocoDisease",
         *          "HuntressBodyArrowRain", "FireArrowSnipe", "AimArrowSnipe",
         *          "MageBodyFlyUp", "MageBodyFlamethrower",
         *          "MercBodyEvisProjectile", "MercBodyEvis",
         *          "ToolbotDualWield", "ToolbotCancelDualWield",
         *          "LunarDetonatorSpecialReplacement"
         *      };
         *      foreach (var skillDef in newSkillDefs)
         *      {
         *          if (skillsToFix.Contains(RoR2.Skills.SkillCatalog.GetSkillName(skillDef.skillIndex)) && !skillDef.mustKeyPress)
         *          {
         *              if (!skillDefsToFix.ContainsKey(skillDef))
         *                  skillDefsToFix.Add(skillDef, false);
         *          }
         *      }
         *  }
         * }
         */

        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            if (sender.inventory)
            {
                int itemCount = sender.inventory.GetItemCount(itemDef);
                if (itemCount > 0)
                {
                    args.cooldownMultAdd -= cdr / 100f;
                }

                var skills = new GenericSkill[]
                {
                    sender.skillLocator.primary,
                    sender.skillLocator.secondary,
                    sender.skillLocator.utility,
                    sender.skillLocator.special
                };
                foreach (var skill in skills)
                {
                    if (skill)
                    {
                        skill.SetBonusStockFromBody(0);
                    }
                }
            }
        }
示例#4
0
 private void Mustache_StatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender && sender.HasBuff(Buffs.MustacheBuff))
     {
         args.baseRegenAdd += RegenAmount.Value + RegenAmountPerStack.Value * (GetCount(sender) - 1);
     }
 }
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.HasBuff(buffDef))
     {
         args.moveSpeedRootCount++;
     }
 }
示例#6
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            if (!sender || !sender.master)
            {
                return;
            }
            var cpt = sender.GetComponent <GoldenGunComponent>();

            if (cpt)
            {
                var icnt = GetCount(sender.master.inventory);
                if (icnt == 0)
                {
                    return;
                }
                var moneyFac = sender.master.money;
                if (inclDeploys)
                {
                    var dplc = sender.master.GetComponent <Deployable>();
                    if (dplc)
                    {
                        moneyFac += dplc.ownerMaster.money;
                    }
                }
                var moneyCoef = moneyFac / (Run.instance.GetDifficultyScaledCost(goldAmt) * Mathf.Pow(goldReduc, icnt - 1));
                args.damageMultAdd += Mathf.Lerp(0, damageBoost, moneyCoef);
            }
        }
示例#7
0
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.HasBuff(buffDef))
     {
         var itemCount = sender.inventory ? sender.inventory.GetItemCount(MysticsItemsContent.Items.MysticsItems_Rhythm) : 0;
         args.critAdd += (comboCrit + comboCritPerStack * (itemCount - 1)) * sender.GetBuffCount(buffDef);
     }
 }
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.HasBuff(buffDef))
     {
         args.attackSpeedMultAdd += attackSpeed / 100f;
         args.damageMultAdd      += damage / 100f;
     }
 }
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.HasBuff(buffDef))
     {
         args.moveSpeedMultAdd   += boostPower / 100f * sender.GetBuffCount(buffDef);
         args.attackSpeedMultAdd += boostPower / 100f * sender.GetBuffCount(buffDef);
     }
 }
示例#10
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            var resolvedItemCount = GetCount(sender) - expectedMaxStacks;

            if (resolvedItemCount > 0)
            {
                args.damageMultAdd += resolvedItemCount * cfgDamageMultiplierPerStack.Value;
            }
        }
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            var itemCount = GetCount(sender);

            if (itemCount > 0)
            {
                args.damageMultAdd += cfgBaseDamageMultiplier.Value + cfgStackDamageMultiplier.Value * (itemCount - 1);
            }
        }
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            var itemCount = Util.GetItemCountForTeam(sender.teamComponent.teamIndex, itemDef.itemIndex, true);

            if (itemCount > 0)
            {
                args.baseRegenAdd += baseRegenIncrease.Value + baseRegenIncreasePerStack.Value * (float)(itemCount - 1);
            }
        }
示例#13
0
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (!sender)
     {
         return;
     }
     args.moveSpeedMultAdd += sender.GetBuffCount(engiSpeedBoostBuff) * engiSharedBuffFrac * buffFrac;
     args.moveSpeedMultAdd += sender.GetBuffCount(genericSpeedBoostBuff) * unhandledFrac * buffFrac;
 }
示例#14
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            var component = sender.GetComponent <MysticsItemsFragileMaskBehaviour>();

            if (component && component.maskActive)
            {
                args.damageMultAdd += damageMultiplier - 1f;
            }
        }
示例#15
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            if (!sender.HasBuff(RoR2Content.Buffs.ElephantArmorBoost))
            {
                return;
            }
            var boost = Embryo.CheckLastEmbryoProc(sender);

            args.armorAdd += boost * 500f;
        }
示例#16
0
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.inventory)
     {
         var itemCount = sender.inventory.GetItemCount(itemDef);
         if (itemCount > 0)
         {
             args.critDamageMultAdd += critDamageIncrease.Value / 100f + critDamageIncreasePerStack.Value / 100f * (float)(itemCount - 1);
         }
     }
 }
示例#17
0
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.inventory)
     {
         int itemCount = sender.inventory.GetItemCount(itemDef);
         if (itemCount > 0)
         {
             args.moveSpeedMultAdd += passiveSpeed / 100f;
         }
     }
 }
示例#18
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            if (!sender)
            {
                return;
            }
            var buffCount = sender.GetBuffCount(loomBuff);

            args.attackSpeedMultAdd -= buffCount * stackAttack;
            args.damageMultAdd      += buffCount * stackDamage;
        }
示例#19
0
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (!sender)
     {
         return;
     }
     args.armorAdd           += sender.GetBuffCount(armorBuff) * buffArmorAmt;
     args.attackSpeedMultAdd += sender.GetBuffCount(attackBuff) * buffAttackAmt;
     args.damageMultAdd      += sender.GetBuffCount(damageBuff) * buffDamageAmt;
     args.moveSpeedMultAdd   += sender.GetBuffCount(moveBuff) * buffMoveAmt;
 }
        ////// Hooks //////

        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            if (!sender)
            {
                return;
            }
            if (sender.HasBuff(speedBuff) && sender.isSprinting)
            {
                args.moveSpeedMultAdd += 0.5f;
                args.jumpPowerMultAdd += 0.25f;
            }
        }
示例#21
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            var inventory = sender.inventory;

            if (inventory)
            {
                var itemCount = inventory.GetItemCount(itemDef);
                if (itemCount > 0)
                {
                    args.critAdd += baseCrit;
                }
            }
        }
示例#22
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            Inventory inventory = sender.inventory;

            if (inventory)
            {
                int itemCount = inventory.GetItemCount(itemDef);
                if (itemCount > 0)
                {
                    args.armorAdd += armor;
                }
            }
        }
示例#23
0
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.inventory && sender.master)
     {
         int itemCount = sender.inventory.GetItemCount(itemDef);
         if (itemCount > 0)
         {
             var idolBonus = CalculateIdolBonus(sender.master, itemCount);
             args.healthMultAdd += healthBonus / 100f * idolBonus;
             args.armorAdd      += armorBonus * idolBonus;
         }
     }
 }
示例#24
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            if (!sender)
            {
                return;
            }
            var cpt = sender.GetComponent <MoustacheDamageTracker>();

            if (!cpt)
            {
                return;
            }
            sender.SetBuffCount(moustacheBuff.buffIndex, Mathf.FloorToInt(GetCount(sender) * cpt.lastEnemyScoreTracked));
            args.damageMultAdd += cpt.lastEnemyScoreTracked * GetCount(sender) * stackingDamageFrac;
        }
示例#25
0
 private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.inventory)
     {
         var itemCount = sender.inventory.GetItemCount(itemDef);
         if (itemCount > 0)
         {
             var component = sender.inventory.GetComponent <MysticsItemsMysticSwordBehaviour>();
             if (component)
             {
                 args.damageMultAdd += component.damageBonus;
             }
         }
     }
 }
示例#26
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            if (!sender)
            {
                return;
            }
            var count = GetCount(sender);
            var cpt   = sender.GetComponent <SkeinTracker>();

            if (count > 0 && cpt)
            {
                var fac = cpt.GetMovementScalar() * count * lowMassFrac;
                args.moveSpeedMultAdd   += fac;
                args.attackSpeedMultAdd += fac;
            }
        }
示例#27
0
        ////// Hooks //////

        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            if (!sender)
            {
                return;
            }
            var multCount  = GetCount(sender);
            var baseCount  = GetConsumedItemCountByTier(sender.inventory);
            var totalBonus = multCount * (baseCount.t1 * tier1Bonus + baseCount.t2 * tier2Bonus + baseCount.t3plus * tier3Bonus);

            args.attackSpeedMultAdd += totalBonus;
            args.damageMultAdd      += totalBonus;
            args.moveSpeedMultAdd   += totalBonus;
            args.jumpPowerMultAdd   += totalBonus;
            args.regenMultAdd       += totalBonus;
            args.critAdd            += totalBonus;
            args.armorAdd           += totalBonus;
        }
示例#28
0
        private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
        {
            Inventory inventory = sender.inventory;

            if (inventory)
            {
                MysticsItemsManuscript component = inventory.GetComponent <MysticsItemsManuscript>();
                if (component)
                {
                    args.healthMultAdd      += statBonus / 100f * component.buffStacks[MysticsItemsManuscript.BuffType.MaxHealth];
                    args.regenMultAdd       += statBonus / 100f * component.buffStacks[MysticsItemsManuscript.BuffType.Regen];
                    args.damageMultAdd      += statBonus / 100f * component.buffStacks[MysticsItemsManuscript.BuffType.Damage];
                    args.moveSpeedMultAdd   += statBonus / 100f * component.buffStacks[MysticsItemsManuscript.BuffType.MoveSpeed];
                    args.attackSpeedMultAdd += statBonus / 100f * component.buffStacks[MysticsItemsManuscript.BuffType.AttackSpeed];
                    args.critAdd            += statBonus * component.buffStacks[MysticsItemsManuscript.BuffType.Crit];
                    args.armorAdd           += statBonus * component.buffStacks[MysticsItemsManuscript.BuffType.Armor];
                }
            }
        }
示例#29
0
 private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args)
 {
     if (sender.inventory?.GetItemCount(GeneTokens.blockerDef) == 0)
     {
         args.baseHealthAdd      += GetStatValueToAdd(sender, GeneStat.MaxHealth);
         args.baseMoveSpeedAdd   += GetStatValueToAdd(sender, GeneStat.MoveSpeed);
         args.baseAttackSpeedAdd += GetStatValueToAdd(sender, GeneStat.AttackSpeed);
         args.baseDamageAdd      += GetStatValueToAdd(sender, GeneStat.AttackDamage);
     }
 }