static void EquipmentStats_ColdProtection_Post(EquipmentStats __instance, ref float __result) => TryApplyEffectiveness(ref __result, __instance);
static void EquipmentStats_StaminaUsePenalty_Post(EquipmentStats __instance, ref float __result) => TryApplyEffectiveness(ref __result, __instance, true);
static void EquipmentStats_ManaUseModifier_Post(EquipmentStats __instance, ref float __result) => TryApplyEffectiveness(ref __result, __instance, true);
private void UpdateTotalEquipmentStats(EquipmentStats stats) { equipmentStats = stats; }
static bool EquipmentStats_ImpactResistance_Pre(EquipmentStats __instance) { __instance.m_impactResistEfficiencyAffected = _effectivenessAffectsAllStats || __instance.m_item.TryAs(out Weapon weapon) && weapon.Type == Weapon.WeaponType.Shield; return(true); }
public static ItemMod ReRollArmour(Item item) { Debug.Log("Rerolling armor"); int statTypes = (int)ArmourModType.COUNT - 1; int rollStatType = UnityEngine.Random.Range(0, statTypes); ArmourModType statTypeEnum = (ArmourModType)rollStatType; int rollQuality = RollHelper.RollForQuality(); Debug.Log("Armor Stat Chosen is " + statTypeEnum.ToString() + " value is " + rollQuality); //Component References EquipmentStats itemEquipStats = item.GetComponent <EquipmentStats>(); ArmorBaseData armorBaseData = item.GetComponent <ArmorBaseData>(); ItemStats itemStats = item.GetComponent <ItemStats>(); switch (statTypeEnum) { case ArmourModType.HEALTH_BONUS: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(EquipmentStats), itemEquipStats, "m_maxHealthBonus", rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "m_maxHealthBonus", "HEALTH_BONUS")); case ArmourModType.POUCH_BONUS: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(EquipmentStats), itemEquipStats, "m_pouchCapacityBonus", rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "m_pouchCapacityBonus", "POUCH_BONUS")); case ArmourModType.HEAT_PROTECTION: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(EquipmentStats), itemEquipStats, "m_heatProtection", rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "m_heatProtection", "HEAT_PROTECTION")); case ArmourModType.COLD_PROTECTION: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(EquipmentStats), itemEquipStats, "m_coldProtection", rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "m_coldProtection", "COLD_PROTECTION")); case ArmourModType.WATER_PROOF: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(EquipmentStats), itemEquipStats, "m_waterproof", rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "m_waterproof", "WATER_PROOF")); case ArmourModType.MANA_USE_MODIFIER: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(EquipmentStats), itemEquipStats, "m_manaUseModifier", rollQuality * 3); return(CreateItemModFor <Armor>(item, rollQuality, "m_manaUseModifier", "MANA_USE_MODIFIER")); case ArmourModType.SPEED: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(EquipmentStats), itemEquipStats, "m_movementPenalty", rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "m_movementPenalty", "SPEED")); case ArmourModType.WEIGHT: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(ItemStats), itemStats, "m_rawWeight", -rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "m_rawWeight", "WEIGHT")); case ArmourModType.STAMINA_USE_MODIFIER: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(EquipmentStats), itemEquipStats, "m_staminaUsePenalty", -rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "m_staminaUsePenalty", "STAMINA_USE_MODIFIER")); case ArmourModType.DAMAGE_PROTECTION: WeaponModDamageType chosenType = RollHelper.RollForDamageType(); break; case ArmourModType.DAMAGE_RESISTANCE: break; case ArmourModType.DURABILITY: outwardUTILS.ReflectionUpdateOrSetFloat(typeof(ItemStats), itemStats, "MaxDurability", -rollQuality); return(CreateItemModFor <Armor>(item, rollQuality, "MaxDurability", "DURABILITY")); default: Debug.Log("Unimplemented Type"); break; } return(null); }
//Roll for MOd Type //Roll For Quality //if Damage //Roll For Damage Type //Apply Mod public static ItemMod ReRollWeapon(Item item) { Debug.Log("Rerolling weapon"); int statTypes = (int)WeaponModType.COUNT - 1; int rollStatType = UnityEngine.Random.Range(0, statTypes); WeaponModType statTypeEnum = (WeaponModType)rollStatType; int rollQuality = RollHelper.RollForQuality(); Debug.Log("Weapon Stat Chosen is " + statTypeEnum.ToString() + " value is " + rollQuality); EquipmentStats itemEquipStats = item.GetComponent <EquipmentStats>(); WeaponStats itemWeaponStats = item.GetComponent <WeaponStats>(); WeaponBaseData weaponBaseData = item.GetComponent <WeaponBaseData>(); Debug.Log("Weapon stats"); Debug.Log(itemWeaponStats); switch (statTypeEnum) { //check the weapon damage type exists first case WeaponModType.DAMAGE: WeaponModDamageType type = RollHelper.RollForDamageType(); Debug.Log("Damage type chosen is " + type.ToString()); switch (type) { case WeaponModDamageType.Physical: if (WeaponHelper.CheckWeaponHasDamageType(item, type)) { //add to the current damage Debug.Log("Weapon already has this damage type NotYetImplemented"); } else { Debug.Log("Adding Physical damage"); WeaponHelper.AddWeaponDamage(item, DamageType.Types.Physical, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "physical", "damage")); } break; case WeaponModDamageType.Ethereal: if (WeaponHelper.CheckWeaponHasDamageType(item, type)) { Debug.Log("Weapon already has this damage type NotYetImplemented"); } else { Debug.Log("Adding Ethereal damage"); WeaponHelper.AddWeaponDamage(item, DamageType.Types.Ethereal, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "ethereal", "damage")); } break; case WeaponModDamageType.Decay: if (WeaponHelper.CheckWeaponHasDamageType(item, type)) { Debug.Log("Weapon already has this damage type NotYetImplemented"); } else { Debug.Log("Adding Decay damage"); WeaponHelper.AddWeaponDamage(item, DamageType.Types.Decay, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "decay", "damage")); } break; case WeaponModDamageType.Electric: if (WeaponHelper.CheckWeaponHasDamageType(item, type)) { Debug.Log("Weapon already has this damage type NotYetImplemented"); } else { Debug.Log("Adding Electric damage"); WeaponHelper.AddWeaponDamage(item, DamageType.Types.Electric, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "electric", "damage")); } break; case WeaponModDamageType.Frost: if (WeaponHelper.CheckWeaponHasDamageType(item, type)) { Debug.Log("Weapon already has this damage type NotYetImplemented"); } else { Debug.Log("Adding Frost damage"); WeaponHelper.AddWeaponDamage(item, DamageType.Types.Frost, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "frost", "damage")); } break; case WeaponModDamageType.Fire: if (WeaponHelper.CheckWeaponHasDamageType(item, type)) { Debug.Log("Weapon already has this damage type NotYetImplemented"); } else { Debug.Log("Adding Fire damage"); WeaponHelper.AddWeaponDamage(item, DamageType.Types.Fire, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "fire", "damage")); } break; } break; case WeaponModType.SPEED: WeaponHelper.UpdateAttackSpeed(item, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "speed", "SPEED")); case WeaponModType.REACH: WeaponHelper.UpdateAttackReach(item, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "reach", "REACH")); case WeaponModType.DURABILITY: WeaponHelper.UpdateDurability(item, rollQuality); //outwardUTILS.ReflectionUpdateOrSetFloat(typeof(WeaponBaseData), weaponBaseData, "Durability", rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "Durability", "DURABILITY")); case WeaponModType.IMPACT: WeaponHelper.UpdateImpact(item, rollQuality); //WeaponHelper.SetAttackStepKnockback(itemWeaponStats.Attacks, rollQuality); return(CreateItemModFor <Weapon>(item, rollQuality, "Impact", "IMPACT")); } return(null); }
public void UpdateTotalEquipmentStats(EquipmentStats stats) { OnUpdateTotalEquipmentStats?.Invoke(stats); }
public bool Equals(EquipmentStats eqS) { return(type == eqS.type && id == eqS.id && durability == eqS.durability); }
public Description GetDescription() { Description res = new Description(); if (!Empty) { string desc; DescriptionItem d; List <DescriptionItem> constraints = new List <DescriptionItem>(); if (!canReformToFhalanx) { d = new DescriptionItem() { Name = LocalizedStrings.attention, Description = LocalizedStrings.weaponConstraint_cantReformPhalanx, ItPositiveDesc = canReformToFhalanx }; constraints.Add(d); } else { if (!canReformToPhalanxInFight) { d = new DescriptionItem() { Name = LocalizedStrings.attention, Description = LocalizedStrings.weaponConstraint_cantReformPhalanxInFight, ItPositiveDesc = canReformToPhalanxInFight }; constraints.Add(d); } } if (!canUseWithShield) { d = new DescriptionItem() { Name = LocalizedStrings.attention, Description = LocalizedStrings.weaponConstraint_cantUseShield, ItPositiveDesc = canUseWithShield }; constraints.Add(d); } List <DescriptionItem> stats = new List <DescriptionItem>(); d = new DescriptionItem() { Name = LocalizedStrings.mass, Description = Mass.ToString(StringFormats.floatNumber), ItPositiveDesc = true }; stats.Add(d); if (AttackDistance > 0) { d = new DescriptionItem() { Name = LocalizedStrings.attackDistance, Description = AttackDistance.ToString(StringFormats.floatNumber), ItPositiveDesc = true }; stats.Add(d); } if (AddAttack != 0) { d = new DescriptionItem() { Name = LocalizedStrings.attack, Description = AddAttack.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = AddAttack > 0 }; stats.Add(d); } if (AddDefence != 0) { d = new DescriptionItem() { Name = LocalizedStrings.defence, Description = AddDefence.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = AddDefence > 0 }; stats.Add(d); } if (AddDefenceHalfSector != 0) { d = new DescriptionItem() { Name = LocalizedStrings.defenceHalfSector, Description = AddDefenceHalfSector.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = AddDefenceHalfSector > 0 }; stats.Add(d); } if (AddSpeed != 0) { d = new DescriptionItem() { Name = LocalizedStrings.speed, Description = AddSpeed.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = AddSpeed > 0 }; stats.Add(d); } if (AddAcceleretion != 0) { d = new DescriptionItem() { Name = LocalizedStrings.acceleration, Description = AddAcceleretion.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = AddAcceleretion > 0 }; stats.Add(d); } if (AddRotationSpeed != 0) { d = new DescriptionItem() { Name = LocalizedStrings.rotationSpeed, Description = AddRotationSpeed.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = AddRotationSpeed > 0 }; stats.Add(d); } if (ChargeImpact != 0) { d = new DescriptionItem() { Name = LocalizedStrings.chargeImpact, Description = ChargeImpact.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = ChargeImpact > 0 }; stats.Add(d); } if (ChargeDeflect != 0) { d = new DescriptionItem() { Name = LocalizedStrings.chargeDeflect, Description = ChargeDeflect.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = ChargeDeflect > 0 }; stats.Add(d); } if (Armour > 0) { d = new DescriptionItem() { Name = LocalizedStrings.armour, Description = Armour.ToString(StringFormats.floatNumber), ItPositiveDesc = true }; stats.Add(d); } if (Damag.BaseDamage > 0) { d = new DescriptionItem() { Name = LocalizedStrings.baseDamage, Description = Damag.BaseDamage.ToString(StringFormats.floatNumber), ItPositiveDesc = true }; stats.Add(d); } if (Damag.ArmourDamage > 0) { d = new DescriptionItem() { Name = LocalizedStrings.armourDamage, Description = Damag.ArmourDamage.ToString(StringFormats.floatNumber), ItPositiveDesc = true }; stats.Add(d); } if (MissileBlock != 0) { d = new DescriptionItem() { Name = LocalizedStrings.missileBlock, Description = MissileBlock.ToString(StringFormats.floatNumberPercent), ItPositiveDesc = MissileBlock > 0 }; stats.Add(d); } if (AddChargeDamage != 0) { d = new DescriptionItem() { Name = LocalizedStrings.chargeDamage, Description = AddChargeDamage.ToString(StringFormats.floatSignNumberPercent) + LocalizedStrings.baseValue, ItPositiveDesc = AddChargeDamage > 0 }; stats.Add(d); } EquipmentStats st = this; res.Condition = new Description.ConditionsInfo() { Name = Tools.Extensions.GetNameLocalise(ItemDurability), Value = (Description.ConditionsInfo.Conditions)Enum.GetNames(typeof(Durability)).ToList().FindIndex((s) => { return(Enum.GetName(typeof(Durability), st.ItemDurability) == s); }) }; res.Cost = new Description.CostInfo() { CostPerOne = Cost }; res.Constraints = constraints.ToArray(); res.Stats = stats.ToArray(); } return(res); }
public EquipmentStack(Equipment item, int count = 1) { this.equipmentMainProperties = item.MainPropertie; this.equipmentStats = item.Stats; this.count = count; }
public EquipmentStack(Item.MainProperties equipmentMainProperties, EquipmentStats equipmentStats, int count = 1) { this.equipmentMainProperties = equipmentMainProperties; this.equipmentStats = equipmentStats; this.count = count; }