예제 #1
0
    public UnitStatsModifier GetModifierByEquipmentMass(UnitStats.EquipmentWeight equipmentMass)
    {
        var res = new UnitStatsModifier();

        switch (equipmentMass)
        {
        case UnitStats.EquipmentWeight.VERY_LIGHT:
            res = veryLightWeightUnit.Modifier;
            break;

        case UnitStats.EquipmentWeight.LIGHT:
            res = lightWeightUnit.Modifier;
            break;

        case UnitStats.EquipmentWeight.MEDIUM:
            res = mediumWeightUnit.Modifier;
            break;

        case UnitStats.EquipmentWeight.HEAVY:
            res = heavyWeightUnit.Modifier;
            break;

        case UnitStats.EquipmentWeight.VERY_HEAVY:
            res = veryHeavyWeightUnit.Modifier;
            break;
        }
        return(res);
    }
예제 #2
0
    public UnitStatsModifier Reset()
    {
        var res = new UnitStatsModifier();

        res.uiInfo = this.uiInfo;
        return(res);
    }
 private void SquadToFollow_OnBeginCharge(UnitStatsModifier obj)
 {
     directionDefault.SetActive(false);
     directionCharge.SetActive(true);
 }
예제 #4
0
 void ReserModifiers()
 {
     modifier = modifier.Reset();
 }
예제 #5
0
    public static UnitStats ModifyStats(UnitStats baseStats, UnitStatsModifier modifyer, UnitStatsModifier.UseType usetype = UnitStatsModifier.UseType.APPLY)
    {
        if (usetype == UnitStatsModifier.UseType.APPLY)
        {
            if (modifyer.Attack.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.attack += modifyer.Attack.Value;
            }
            else
            {
                baseStats.attack *= 1 + modifyer.Attack.Value;
            }

            if (modifyer.Defence.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.defence += modifyer.Defence.Value;
            }
            else
            {
                baseStats.defence *= 1 + modifyer.Defence.Value;
            }

            if (modifyer.Armour.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.armour += modifyer.Armour.Value;
            }
            else
            {
                baseStats.armour *= 1 + modifyer.Armour.Value;
            }

            if (modifyer.MissileBlock.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.missileBlock += modifyer.MissileBlock.Value;
            }
            else
            {
                baseStats.missileBlock *= 1 + modifyer.MissileBlock.Value;
            }

            float armDmg = baseStats.damage.ArmourDamage;
            if (modifyer.ArmourDamage.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                armDmg += modifyer.ArmourDamage.Value;
            }
            else
            {
                armDmg *= 1 + modifyer.ArmourDamage.Value;
            }

            float baseDmg = baseStats.damage.BaseDamage;
            if (modifyer.BaseDamage.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseDmg += modifyer.BaseDamage.Value;
            }
            else
            {
                baseDmg *= 1 + modifyer.BaseDamage.Value;
            }

            baseStats.damage = new Damage(baseDmg, armDmg);

            if (modifyer.DefenceHalfSector.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.defenceHalfSector += modifyer.DefenceHalfSector.Value;
            }
            else
            {
                baseStats.defenceHalfSector *= 1 + modifyer.DefenceHalfSector.Value;
            }

            if (modifyer.Speed.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.speed += modifyer.Speed.Value;
            }
            else
            {
                baseStats.speed *= 1 + modifyer.Speed.Value;
            }

            if (modifyer.Acceleration.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.acceleration += modifyer.Acceleration.Value;
            }
            else
            {
                baseStats.acceleration *= 1 + modifyer.Acceleration.Value;
            }

            if (modifyer.RotationSpeed.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.rotationSpeed += modifyer.RotationSpeed.Value;
            }
            else
            {
                baseStats.rotationSpeed *= 1 + modifyer.RotationSpeed.Value;
            }

            if (modifyer.ChargeImpact.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.chargeImpact += modifyer.ChargeImpact.Value;
            }
            else
            {
                baseStats.chargeImpact *= 1 + modifyer.ChargeImpact.Value;
            }

            if (modifyer.ChargeDeflect.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.chargeDeflect += modifyer.ChargeDeflect.Value;
            }
            else
            {
                baseStats.chargeDeflect *= 1 + modifyer.ChargeDeflect.Value;
            }

            if (modifyer.ChargeAddDamage.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.unitChargeAddDamage += modifyer.ChargeAddDamage.Value;
            }
            else
            {
                baseStats.unitChargeAddDamage *= 1 + modifyer.ChargeAddDamage.Value;
            }
        }
        else
        {
            if (modifyer.Attack.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.attack -= modifyer.Attack.Value;
            }
            else
            {
                baseStats.attack /= 1 + modifyer.Attack.Value;
            }

            if (modifyer.Defence.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.defence -= modifyer.Defence.Value;
            }
            else
            {
                baseStats.defence /= 1 + modifyer.Defence.Value;
            }

            if (modifyer.Armour.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.armour -= modifyer.Armour.Value;
            }
            else
            {
                baseStats.armour /= 1 + modifyer.Armour.Value;
            }

            if (modifyer.MissileBlock.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.missileBlock -= modifyer.MissileBlock.Value;
            }
            else
            {
                baseStats.missileBlock /= 1 + modifyer.MissileBlock.Value;
            }

            float armDmg = baseStats.damage.ArmourDamage;
            if (modifyer.ArmourDamage.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                armDmg -= modifyer.ArmourDamage.Value;
            }
            else
            {
                armDmg /= 1 + modifyer.ArmourDamage.Value;
            }

            float baseDmg = baseStats.damage.BaseDamage;
            if (modifyer.BaseDamage.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseDmg -= modifyer.BaseDamage.Value;
            }
            else
            {
                baseDmg /= 1 + modifyer.BaseDamage.Value;
            }

            baseStats.damage = new Damage(baseDmg, armDmg);

            if (modifyer.DefenceHalfSector.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.defenceHalfSector -= modifyer.DefenceHalfSector.Value;
            }
            else
            {
                baseStats.defenceHalfSector /= 1 + modifyer.DefenceHalfSector.Value;
            }

            if (modifyer.Speed.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.speed -= modifyer.Speed.Value;
            }
            else
            {
                baseStats.speed /= 1 + modifyer.Speed.Value;
            }

            if (modifyer.Acceleration.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.acceleration -= modifyer.Acceleration.Value;
            }
            else
            {
                baseStats.acceleration /= 1 + modifyer.Acceleration.Value;
            }

            if (modifyer.RotationSpeed.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.rotationSpeed -= modifyer.RotationSpeed.Value;
            }
            else
            {
                baseStats.rotationSpeed /= 1 + modifyer.RotationSpeed.Value;
            }

            if (modifyer.ChargeImpact.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.chargeImpact -= modifyer.ChargeImpact.Value;
            }
            else
            {
                baseStats.chargeImpact /= 1 + modifyer.ChargeImpact.Value;
            }

            if (modifyer.ChargeDeflect.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.chargeDeflect -= modifyer.ChargeDeflect.Value;
            }
            else
            {
                baseStats.chargeDeflect /= 1 + modifyer.ChargeDeflect.Value;
            }

            if (modifyer.ChargeAddDamage.VType == UnitStatsModifier.Modifyer.ValueType.ADD)
            {
                baseStats.unitChargeAddDamage -= modifyer.ChargeAddDamage.Value;
            }
            else
            {
                baseStats.unitChargeAddDamage /= 1 + modifyer.ChargeAddDamage.Value;
            }
        }

        return(baseStats);
    }
예제 #6
0
 private void PlayerSquad_OnEndCharge(UnitStatsModifier m)
 {
     thisCg.alpha        = 1;
     thisCg.interactable = true;
     canUse = true;
 }
예제 #7
0
 private void PlayerSquad_OnBeginCharge(UnitStatsModifier m)
 {
     thisCg.alpha        = 0.7f;
     thisCg.interactable = false;
     canUse = false;
 }