public void Init() { attack = new SubStat(0); meleeCritPower = new SubStat(0); defense = new SubStat(0); maxHP = new SubStat(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); }
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); }
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)); }
public ItemSubStatValue(SubStat subStat, int amount) { stat = subStat; value = amount; }
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()); }
public void Init() { meleeCritRate = new SubStat(0); dodgeRate = new SubStat(0); movementSpeed = new SubStat(0); }
public static string GetSimpleString(SubStat stat, int value) { return($"{ConvertBySubStat(stat, value):N0}{GetEndingBySubStat(stat)}"); }
public void RemoveBuff(SubStat st) { OnBuffsChanged.Invoke(_appliedBuffs[st]); _appliedBuffs.Remove(st); }