Ejemplo n.º 1
0
 static void EquipmentStats_ColdProtection_Post(EquipmentStats __instance, ref float __result)
 => TryApplyEffectiveness(ref __result, __instance);
Ejemplo n.º 2
0
 static void EquipmentStats_StaminaUsePenalty_Post(EquipmentStats __instance, ref float __result)
 => TryApplyEffectiveness(ref __result, __instance, true);
Ejemplo n.º 3
0
 static void EquipmentStats_ManaUseModifier_Post(EquipmentStats __instance, ref float __result)
 => TryApplyEffectiveness(ref __result, __instance, true);
Ejemplo n.º 4
0
 private void UpdateTotalEquipmentStats(EquipmentStats stats)
 {
     equipmentStats = stats;
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        //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);
        }
Ejemplo n.º 8
0
 public void UpdateTotalEquipmentStats(EquipmentStats stats)
 {
     OnUpdateTotalEquipmentStats?.Invoke(stats);
 }
Ejemplo n.º 9
0
 public bool Equals(EquipmentStats eqS)
 {
     return(type == eqS.type && id == eqS.id && durability == eqS.durability);
 }
Ejemplo n.º 10
0
    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);
    }
Ejemplo n.º 11
0
 public EquipmentStack(Equipment item, int count = 1)
 {
     this.equipmentMainProperties = item.MainPropertie;
     this.equipmentStats          = item.Stats;
     this.count = count;
 }
Ejemplo n.º 12
0
 public EquipmentStack(Item.MainProperties equipmentMainProperties, EquipmentStats equipmentStats, int count = 1)
 {
     this.equipmentMainProperties = equipmentMainProperties;
     this.equipmentStats          = equipmentStats;
     this.count = count;
 }