Esempio n. 1
0
 public void Init()
 {
     attack         = new SubStat(0);
     meleeCritPower = new SubStat(0);
     defense        = new SubStat(0);
     maxHP          = new SubStat(0);
 }
Esempio n. 2
0
 public void Init()
 {
     abilityAttack    = new SubStat(0);
     abilityCritPower = new SubStat(0);
     abilityCritRate  = new SubStat(0);
     maxAP            = new SubStat(0);
 }
    static string GetEndingBySubStat(SubStat stat)
    {
        switch (stat)
        {
        case SubStat.Mana:
        case SubStat.Health:
        case SubStat.Armor:
        case SubStat.Speed:
        case SubStat.HealthRegen:
        case SubStat.ManaRegen:
            return(string.Empty);

        case SubStat.Dodge:
        case SubStat.PhysicalDamage:
        case SubStat.CriticalDamage:
        case SubStat.MagicalDamage:
        case SubStat.CriticalMagic:
        case SubStat.CriticalChance:
        case SubStat.FireResistance:
        case SubStat.IceResistance:
        case SubStat.LightningResistance:
        case SubStat.Weight:
            return("%");

        case SubStat.None:
            break;
        }
        return(string.Empty);
    }
Esempio n. 4
0
 public BuffInfo(SubStat stat, int turnCount, int changeFlat, float changePerc, float changePerLifeLost)
 {
     AffectedStat      = stat;
     TurnCount         = turnCount;
     FlatChange        = changeFlat;
     PercentageChange  = changePerc;
     ChangePerLifeLost = changePerLifeLost;
 }
    public static float ConvertBySubStat(SubStat stat, int value)
    {
        switch (stat)
        {
        case SubStat.Health:
            return(value / HealthConversion);

        case SubStat.Mana:
            return(value / ManaConversion);

        case SubStat.HealthRegen:
            return(value / HealthRegenConversion);

        case SubStat.ManaRegen:
            return(value / ManaRegenConversion);

        case SubStat.Armor:
            return(value / ArmorConversion);

        case SubStat.Dodge:
            return(value / DodgeConversion);

        case SubStat.Speed:
            return(value / SpeedConversion);

        case SubStat.PhysicalDamage:
            return(value / PhysDmgConversion);

        case SubStat.CriticalDamage:
            return(value / CritDmgConversion);

        case SubStat.MagicalDamage:
            return(value / MagicDmgConversion);

        case SubStat.CriticalMagic:
            return(value / CritMagicConversion);

        case SubStat.CriticalChance:
            return(value / CritChanceConversion);

        case SubStat.FireResistance:
            return(value / FireResConversion);

        case SubStat.IceResistance:
            return(value / IceResConversion);

        case SubStat.LightningResistance:
            return(value / LightResConversion);

        case SubStat.Weight:
            return(value / WeightConversion);
        }
        return(value);
    }
Esempio n. 6
0
 public Artifact()
 {
     Rarity            = -1;
     GearSlot          = null;
     MainStat          = null;
     Level             = -1;
     SubStats          = new SubStat[4];
     SubStatsCount     = 4;
     SetName           = null;
     EquippedCharacter = null;
     Lock = false;
     Id   = 0;
 }
 public BuffDisplay GetDataByType(SubStat type)
 {
     return(buffData.FirstOrDefault(data => data.type == type));
 }
Esempio n. 8
0
 public ItemSubStatValue(SubStat subStat, int amount)
 {
     stat  = subStat;
     value = amount;
 }
Esempio n. 9
0
        private static List <SubStat> ScanArtifactSubStats(Bitmap artifactImage, ref string setName)
        {
            Bitmap bm = (Bitmap)artifactImage.Clone();

            Scraper.SetBrightness(-30, ref bm);
            Scraper.SetContrast(85, ref bm);
            var n    = Scraper.ConvertToGrayscale(bm);
            var text = Scraper.AnalyzeText(n, Tesseract.PageSegMode.Auto).ToLower();

            List <string> lines = new List <string>(text.Split('\n'));

            lines.RemoveAll(line => string.IsNullOrWhiteSpace(line));

            var index = lines.FindIndex(line => line.Contains("piece") || line.Contains("set") || line.Contains("2-"));

            if (index >= 0)
            {
                lines.RemoveRange(index, lines.Count - index);
            }

            n.Dispose();
            bm.Dispose();
            SubStat[]             substats = new SubStat[4];
            List <Task <string> > tasks    = new List <Task <string> >();

            for (int i = 0; i < lines.Count; i++)
            {
                int j    = i;
                var task = Task.Factory.StartNew(() =>
                {
                    var line = Regex.Replace(lines[j], @"(?:^[^a-zA-Z]*)", string.Empty).Replace(" ", string.Empty);

                    if (line.Any(char.IsDigit))
                    {
                        SubStat substat = new SubStat();
                        Regex re        = new Regex(@"([\w]+\W*)(\d+.*\d+)");
                        var result      = re.Match(line);
                        var stat        = Regex.Replace(result.Groups[1].Value, @"[^\w]", string.Empty);
                        var value       = result.Groups[2].Value;

                        string name = line.Contains("%") ? stat + "%" : stat;

                        substat.stat = Scraper.FindClosestStat(name) ?? "";

                        // Remove any non digits.
                        value = Regex.Replace(value, @"[^0-9]", string.Empty);

                        var cultureInfo = new CultureInfo("en-US");
                        if (!decimal.TryParse(value, NumberStyles.Number, cultureInfo, out substat.value))
                        {
                            substat.value = -1;
                        }

                        // Need to retain the decimal place for percent boosts
                        if (substat.stat.Contains("_"))
                        {
                            substat.value /= 10;
                        }

                        substats[j] = substat;
                        return(null);
                    }
                    else                     // if (line.Contains(":")) // Sometimes Tesseract wouldn't detect a ':' making this check troublesome
                    {
                        var name = line.Trim().ToLower();

                        name = Regex.Replace(name, @"[^\w]", string.Empty);

                        name = Scraper.FindClosestSetName(name);

                        return(!string.IsNullOrWhiteSpace(name) ? name : null);
                    }
                });
                tasks.Add(task);
            }
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            while (tasks.Count > 0 && stopwatch.Elapsed.TotalSeconds < 10)
            {
                for (int i = 0; i < tasks.Count; i++)
                {
                    Task <string> task = tasks[i];
                    if (!task.IsCompleted)
                    {
                        continue;
                    }
                    setName = string.IsNullOrWhiteSpace(setName) ? task.Result : setName;
                    tasks.Remove(task);
                    break;
                }
            }
            return(substats.ToList());
        }
Esempio n. 10
0
 public void Init()
 {
     meleeCritRate = new SubStat(0);
     dodgeRate     = new SubStat(0);
     movementSpeed = new SubStat(0);
 }
Esempio n. 11
0
 public static string GetSimpleString(SubStat stat, int value)
 {
     return($"{ConvertBySubStat(stat, value):N0}{GetEndingBySubStat(stat)}");
 }
Esempio n. 12
0
 public void RemoveBuff(SubStat st)
 {
     OnBuffsChanged.Invoke(_appliedBuffs[st]);
     _appliedBuffs.Remove(st);
 }