private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args) { if (sender.equipmentSlot && sender.equipmentSlot.equipmentIndex == equipmentDef.equipmentIndex) { args.critAdd += baseCrit.Value; } }
private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args) { if (sender.inventory && sender.inventory.GetItemCount(itemDef) > 0) { args.baseShieldAdd += sender.maxHealth * passiveShield / 100f; } }
/* * 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); } } } }
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++; } }
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); } }
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); } }
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); } }
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; }
private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, RecalculateStatsAPI.StatHookEventArgs args) { var component = sender.GetComponent <MysticsItemsFragileMaskBehaviour>(); if (component && component.maskActive) { args.damageMultAdd += damageMultiplier - 1f; } }
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; }
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); } } }
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; } } }
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; }
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; } }
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; } } }
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; } } }
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; } } }
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; }
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; } } } }
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; } }
////// 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; }
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]; } } }
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); } }