//
// Get Ratios ---------------------------------------------------------------------------
//
    public static Stats AttributesToStats(Attributes attributes)
    {
        if (!initialized)
        {
            SetupSingleton();
        }


        AspectStats aspectStats = new AspectStats();
        CombatStats power       = new CombatStats();
        CombatStats resistance  = new CombatStats();


        foreach (AttributeEnum ae in System.Enum.GetValues(typeof(AttributeEnum)))
        {
            foreach (CombatStatEnum cse in System.Enum.GetValues(typeof(CombatStatEnum)))
            {
                power[cse]      += powerRatio[ae][cse] * attributes[ae];
                resistance[cse] += resistanceRatio[ae][cse] * attributes[ae];
            }

            foreach (AspectStatEnum aspectEnum in System.Enum.GetValues(typeof(AspectStatEnum)))
            {
                aspectStats[aspectEnum] += aspectRatio[ae][aspectEnum] * attributes[ae];
            }
        }


        return(new Stats(aspectStats, power, resistance));
    }
Exemple #2
0
 //=====
 //=====
 //=====		Private Helper Methods ----------------------------------------
 //=====
 //=====
 void AddAspect <T>(AspectStatEnum ae, Stats precursorStats, List <T> effectList, ref AspectStats aspect) where T : AbstractEffect
 {
     foreach (AbstractEffect e in effectList)
     {
         aspect[ae] += e.AspectValue(ae);
         aspect[ae] += e.PercentAspectValue(ae) * precursorStats.AspectValue(ae) / 100;
     }
 }
Exemple #3
0
    public Stats CalculateStats(Stats precursorStats)
    {
        AspectStats aspect     = new AspectStats();
        CombatStats power      = new CombatStats();
        CombatStats resistance = new CombatStats();


        //TODO: recalculate active lists into stackResolved lists
        List <ActiveBuff>  stackResolvedActiveBuffs  = ResolvedBuffStack(activeBuffs);
        List <ActiveCurse> stackResolvedActiveCurses = ResolvedCurseStack(activeCurses);


        foreach (AspectStatEnum ae in System.Enum.GetValues(typeof(AspectStatEnum)))
        {
            AddAspect(ae, precursorStats, characterBuffs, ref aspect);
            AddAspect(ae, precursorStats, gearBuffs, ref aspect);
            AddAspect(ae, precursorStats, stackResolvedActiveBuffs, ref aspect);
            AddAspect(ae, precursorStats, instantBuffs, ref aspect);
            AddAspect(ae, precursorStats, toggleBuffs, ref aspect);

            SubtractAspect(ae, precursorStats, gearCurses, ref aspect);
            SubtractAspect(ae, precursorStats, stackResolvedActiveCurses, ref aspect);
            SubtractAspect(ae, precursorStats, instantCurses, ref aspect);
            SubtractAspect(ae, precursorStats, toggleCurses, ref aspect);
        }



        foreach (CombatStatEnum cse in System.Enum.GetValues(typeof(CombatStatEnum)))
        {
            AddPowerResistance(cse, precursorStats, ref power, ref resistance, characterBuffs);

            AddPowerResistance(cse, precursorStats, ref power, ref resistance, gearBuffs);
            AddPowerResistance(cse, precursorStats, ref power, ref resistance, stackResolvedActiveBuffs);
            AddPowerResistance(cse, precursorStats, ref power, ref resistance, instantBuffs);
            AddPowerResistance(cse, precursorStats, ref power, ref resistance, toggleBuffs);

            SubtractPowerResistance(cse, precursorStats, ref power, ref resistance, gearCurses);
            SubtractPowerResistance(cse, precursorStats, ref power, ref resistance, stackResolvedActiveCurses);
            SubtractPowerResistance(cse, precursorStats, ref power, ref resistance, instantCurses);
            SubtractPowerResistance(cse, precursorStats, ref power, ref resistance, toggleCurses);
        }


        return(new Stats(aspect, power, resistance));
    }
Exemple #4
0
    public static Stats operator *(float multiplier, Stats s)
    {
        AspectStats aspect     = new AspectStats();
        CombatStats power      = new CombatStats();
        CombatStats resistance = new CombatStats();


        foreach (AspectStatEnum ae in System.Enum.GetValues(typeof(AspectStatEnum)))
        {
            aspect[ae] = s.aspectStats[ae] * multiplier;
        }

        foreach (CombatStatEnum cse in System.Enum.GetValues(typeof(CombatStatEnum)))
        {
            power[cse]      = s.power[cse] * multiplier;
            resistance[cse] = s.resistance[cse] * multiplier;
        }


        return(new Stats(aspect, power, resistance));
    }
Exemple #5
0
    public static Stats operator +(Stats s1, Stats s2)
    {
        AspectStats aspect     = new AspectStats();
        CombatStats power      = new CombatStats();
        CombatStats resistance = new CombatStats();


        foreach (AspectStatEnum ae in System.Enum.GetValues(typeof(AspectStatEnum)))
        {
            aspect[ae] = s1.aspectStats[ae] + s2.aspectStats[ae];
        }

        foreach (CombatStatEnum cse in System.Enum.GetValues(typeof(CombatStatEnum)))
        {
            power[cse]      = s1.power[cse] + s2.power[cse];
            resistance[cse] = s1.resistance[cse] + s2.resistance[cse];
        }


        return(new Stats(aspect, power, resistance));
    }
Exemple #6
0
 public Stats(AspectStats aspectStats, CombatStats power, CombatStats resistance)
 {
     this.aspectStats = aspectStats;
     this.power       = power;
     this.resistance  = resistance;
 }
Exemple #7
0
 public Stats()
 {
     aspectStats = new AspectStats();
     power       = new CombatStats();
     resistance  = new CombatStats();
 }