Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.IO;
- using System.Linq;
- namespace SistersVuln
- {
- class Program
- {
- static Dictionary<string, int> cosyapors = new Dictionary<string, int>();
- static void Main(string[] args)
- {
- var pathToCsv = @"D:\11\24july_sisters_astral_things1.csv";
- var format = "HH:mm:ss.fff";
- var data = File.ReadAllLines(pathToCsv)
- .Skip(1)
- .Select(x => x.Split(','))
- .Select(x => new
- {
- Time = DateTime.ParseExact(x[0].Replace("\"", ""), format, CultureInfo.InvariantCulture),
- Name = x[1].Replace("\"", "").Split(' ')[0]
- }).ToList();
- var stack = new
- {
- acceptable = 4,
- achtung = 6,
- duration = 2000,
- badRefresh = 1000,
- reactionTime = 250
- };
- int currentStack = 1;
- var failStartTime = data[0].Time;
- var lastBeforeFail = data[0].Time;
- for (int i = 1; i < data.Count; i++)
- {
- var timeFromPrevStack = (data[i].Time - data[i - 1].Time).TotalMilliseconds;
- if (timeFromPrevStack < stack.duration)
- {
- currentStack++;
- if (currentStack > stack.achtung) // Refreshed at high stacks => fail
- {
- AddCosyapor(data[i].Name);
- continue;
- }
- if (currentStack > stack.acceptable)
- {
- if (timeFromPrevStack > stack.badRefresh) // Refreshed debuff at <1 sec at mid stacks
- {
- failStartTime = data[i].Time;
- lastBeforeFail = data[i - 1].Time;
- AddCosyapor(data[i].Name);
- }
- else
- {
- if ((data[i].Time - lastBeforeFail).TotalMilliseconds < stack.duration
- && (data[i].Time - failStartTime).TotalMilliseconds < stack.reactionTime) // Would have refreshed debuff at <1 sec at mid stacks
- AddCosyapor(data[i].Name);
- }
- }
- }
- else
- currentStack = 1;
- }
- var cosyaporsList = cosyapors.ToList();
- cosyaporsList.Sort((pair1, pair2) => pair2.Value.CompareTo(pair1.Value));
- File.WriteAllText(@"D:\11\cosyapors.txt", String.Join(Environment.NewLine, cosyaporsList.Select(kv => $"{kv.Key} = {kv.Value}")));
- }
- static void AddCosyapor(string name)
- {
- if (cosyapors.Keys.Contains(name))
- cosyapors[name]++;
- else
- cosyapors.Add(name, 1);
- }
- }
- }
Add Comment
Please, Sign In to add comment