kotwin

Cosyapors detector v.0.1

Jul 25th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.13 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.IO;
  5. using System.Linq;
  6.  
  7. namespace SistersVuln
  8. {
  9.     class Program
  10.     {
  11.         static Dictionary<string, int> cosyapors = new Dictionary<string, int>();
  12.  
  13.         static void Main(string[] args)
  14.         {
  15.             var pathToCsv = @"D:\11\24july_sisters_astral_things1.csv";
  16.             var format = "HH:mm:ss.fff";
  17.  
  18.             var data = File.ReadAllLines(pathToCsv)
  19.                          .Skip(1)
  20.                          .Select(x => x.Split(','))
  21.                          .Select(x => new
  22.                          {
  23.                              Time = DateTime.ParseExact(x[0].Replace("\"", ""), format, CultureInfo.InvariantCulture),
  24.                              Name = x[1].Replace("\"", "").Split(' ')[0]
  25.                          }).ToList();
  26.  
  27.  
  28.             var stack = new
  29.             {
  30.                 acceptable = 4,
  31.                 achtung = 6,
  32.                 duration = 2000,
  33.                 badRefresh = 1000,
  34.                 reactionTime = 250
  35.             };
  36.             int currentStack = 1;
  37.             var failStartTime = data[0].Time;
  38.             var lastBeforeFail = data[0].Time;
  39.  
  40.             for (int i = 1; i < data.Count; i++)
  41.             {
  42.                 var timeFromPrevStack = (data[i].Time - data[i - 1].Time).TotalMilliseconds;
  43.  
  44.                 if (timeFromPrevStack < stack.duration)
  45.                 {
  46.                     currentStack++;
  47.  
  48.                     if (currentStack > stack.achtung) // Refreshed at high stacks => fail
  49.                     {
  50.                         AddCosyapor(data[i].Name);
  51.                         continue;
  52.                     }
  53.  
  54.                     if (currentStack > stack.acceptable)
  55.                     {
  56.                         if (timeFromPrevStack > stack.badRefresh) // Refreshed debuff at <1 sec at mid stacks
  57.                         {
  58.                             failStartTime = data[i].Time;
  59.                             lastBeforeFail = data[i - 1].Time;
  60.                             AddCosyapor(data[i].Name);
  61.                         }
  62.                         else
  63.                         {
  64.                             if ((data[i].Time - lastBeforeFail).TotalMilliseconds < stack.duration
  65.                                   && (data[i].Time - failStartTime).TotalMilliseconds < stack.reactionTime) // Would have refreshed debuff at <1 sec at mid stacks
  66.                                 AddCosyapor(data[i].Name);
  67.                         }
  68.                     }
  69.                 }
  70.                 else
  71.                     currentStack = 1;
  72.             }
  73.             var cosyaporsList = cosyapors.ToList();
  74.             cosyaporsList.Sort((pair1, pair2) => pair2.Value.CompareTo(pair1.Value));
  75.             File.WriteAllText(@"D:\11\cosyapors.txt", String.Join(Environment.NewLine, cosyaporsList.Select(kv => $"{kv.Key} = {kv.Value}")));
  76.         }
  77.  
  78.         static void AddCosyapor(string name)
  79.         {
  80.             if (cosyapors.Keys.Contains(name))
  81.                 cosyapors[name]++;
  82.             else
  83.                 cosyapors.Add(name, 1);
  84.         }
  85.     }
  86. }
Add Comment
Please, Sign In to add comment