Advertisement
jarppaaja

ElementalExposure

Jun 5th, 2019
550
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.88 KB | None | 0 0
  1. using System.Linq;
  2. using SharpDX;
  3. using Turbo.Plugins.Default;
  4.  
  5. namespace Turbo.Plugins.User
  6. {
  7.     internal class ElementalExposure : BasePlugin, IInGameWorldPainter
  8.     {
  9.         public IFont[] TextFont { get; set; } = new IFont[5];
  10.         public float TextX => 5.0f;
  11.         public float TextY => Hud.Window.Size.Height * 0.82f;
  12.  
  13.         public ElementalExposure() { Enabled = true; Order = 1000; }
  14.  
  15.         public override void Load(IController hud)
  16.         {
  17.             base.Load(hud);
  18.             var textColor = Color.PaleTurquoise;
  19.             TextFont[0] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
  20.             textColor = Color.Blue;
  21.             TextFont[1] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
  22.             textColor = Color.Red;
  23.             TextFont[2] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
  24.             textColor = Color.Yellow;
  25.             TextFont[3] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
  26.             textColor = Color.Green;
  27.             TextFont[4] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
  28.         }
  29.  
  30.         public void PaintWorld(WorldLayer layer)
  31.         {
  32.             if (TextFont != null)
  33.             {
  34.                 var text = checkForElementalExposure(out var index);
  35.                 TextFont[index].DrawText(text, TextX, TextY);
  36.             }
  37.         }
  38.  
  39.         private string checkForElementalExposure(out int index)
  40.         {
  41.             index = 0;
  42.             var hasElementalExposure = Hud.Game.Me.Powers.PassiveSlots.Any(x => x.Sno == Hud.Sno.SnoPowers.Wizard_Passive_ElementalExposure.Sno);
  43.             if (!hasElementalExposure)
  44.             {
  45.                 return "No Elemental Exposure passive";
  46.             }
  47.             // https://www.ownedcore.com/forums/diablo-3/turbohud/turbohud-support/785766-elemental-exposure-passive.html
  48.             var mod = Hud.Sno.SnoPowers.Wizard_Passive_ElementalExposure.Sno;
  49.             var arcane = 0u;
  50.             var cold = 0u;
  51.             var fire = 0u;
  52.             var lightning = 0u;
  53.             var stacks = new uint[5];
  54.             var monsterCount = 0u;
  55.             foreach (var monster in Hud.Game.Monsters.Where(x => x.IsAlive))
  56.             {
  57.                 var ar = monster.GetAttributeValueAsUInt(Hud.Sno.Attributes.Power_Buff_1_Visual_Effect_None, mod, 0);
  58.                 var co = monster.GetAttributeValueAsUInt(Hud.Sno.Attributes.Power_Buff_2_Visual_Effect_None, mod, 0);
  59.                 var fi = monster.GetAttributeValueAsUInt(Hud.Sno.Attributes.Power_Buff_3_Visual_Effect_None, mod, 0);
  60.                 var li = monster.GetAttributeValueAsUInt(Hud.Sno.Attributes.Power_Buff_4_Visual_Effect_None, mod, 0);
  61.                 var stackCount = ar + co + fi + li;
  62.                 stacks[stackCount] += 1;
  63.                 arcane += ar;
  64.                 cold += co;
  65.                 fire += fi;
  66.                 lightning += li;
  67.                 monsterCount += 1;
  68.             }
  69.             for (var i = 4; i > 0; --i)
  70.             {
  71.                 if (stacks[i] > 0)
  72.                 {
  73.                     index = i;
  74.                     break;
  75.                 }
  76.             }
  77.             var total = arcane + cold + fire + lightning;
  78.             var stackText = string.Format("5%={0,-2} 10%={1,-2} 15%={2,-2} 20%={3,-2} ", stacks[1], stacks[2], stacks[3], stacks[4]);
  79.             return string.Format("arca={0,-2} cold={1,-2} fire={2,-2} lightn={3,-2} total={4,-2} monsters={5,-2} STACKS {6}", arcane, cold, fire, lightning, total, monsterCount, stackText);
  80.         }
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement