Пример #1
0
    public static StatAttr GetBestFor(StatGen stats, StatRank rank)
    {
        List <Tuple <StatAttr, int> > t = new List <Tuple <StatAttr, int> >();

        t.Add(new Tuple <StatAttr, int>(StatAttr.STR, CalcForStat(stats, StatAttr.STR)));
        t.Add(new Tuple <StatAttr, int>(StatAttr.DEX, CalcForStat(stats, StatAttr.DEX)));
        t.Add(new Tuple <StatAttr, int>(StatAttr.CON, CalcForStat(stats, StatAttr.CON)));
        t.Add(new Tuple <StatAttr, int>(StatAttr.INT, CalcForStat(stats, StatAttr.INT)));
        t.Add(new Tuple <StatAttr, int>(StatAttr.WIS, CalcForStat(stats, StatAttr.WIS)));
        t.Add(new Tuple <StatAttr, int>(StatAttr.CHA, CalcForStat(stats, StatAttr.CHA)));

        t.Sort((x, y) => y.Item2.CompareTo(x.Item2));
        switch (rank)
        {
        case StatRank.KEY:
            return(t[0].Item1);

        case StatRank.SECONDARY:
            return(t[1].Item1);

        case StatRank.TERTIARY:
            return(t[2].Item1);

        case StatRank.NICE:
            return(t[2].Item1);

        case StatRank.DUMP:
            return(t[3].Item1);
        }
        return(t[0].Item1);
    }
Пример #2
0
 public static StatAttr GetSecondaryStat(Character chr, StatRank rank)
 {
     switch (rank)
     {
     case StatRank.KEY:
         return(chr.classStat);
     }
     return(StatGen.GetBestFor(chr.statGen, rank, chr.classStat));
 }
Пример #3
0
    public static int CalcForStatRaw(StatGen allStats, StatAttr stat)
    {
        bool[] arr = GetArray(allStats, stat);
        int    val = 10;

        for (int i = 0; i < 9; i++)
        {
            if (i == 1 && arr[i])
            {
                val -= 2;
            }
            else if (val < 18 && arr[i])
            {
                val += 2;
            }
            else if (arr[i])
            {
                val += 1;
            }
        }
        return(val);
    }
Пример #4
0
    private static bool[] GetArray(StatGen allStats, StatAttr stat)
    {
        switch (stat)
        {
        case StatAttr.STR:
            return(allStats.STR);

        case StatAttr.DEX:
            return(allStats.DEX);

        case StatAttr.CON:
            return(allStats.CON);

        case StatAttr.INT:
            return(allStats.INT);

        case StatAttr.WIS:
            return(allStats.WIS);

        case StatAttr.CHA:
            return(allStats.CHA);
        }
        return(new bool[9]);
    }
Пример #5
0
 public static int CalcForStat(StatGen allStats, StatAttr stat)
 {
     return((CalcForStatRaw(allStats, stat) - 10) / 2);
 }
Пример #6
0
 public static int GetRawAttributeValue(Character chr, StatAttr stat, ItemBonusMode mode)
 {
     //TODO: items by level
     return(StatGen.CalcForStatRaw(chr.statGen, stat) + (stat == chr.classStat ? GetItemBonus(chr, mode, ItemBonusType.ATTRIBUTE) : 0));
 }
Пример #7
0
 public static StatAttr GetSecondaryStat(Character chr, StatRank rank, StatAttr not)
 {
     return(StatGen.GetBestFor(chr.statGen, rank, not));
 }