Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Linq;
- using SharpDX;
- using Turbo.Plugins.Default;
- namespace Turbo.Plugins.User
- {
- internal class ElementalExposure : BasePlugin, IInGameWorldPainter
- {
- public IFont[] TextFont { get; set; } = new IFont[5];
- public float TextX => 5.0f;
- public float TextY => Hud.Window.Size.Height * 0.82f;
- public ElementalExposure() { Enabled = true; Order = 1000; }
- public override void Load(IController hud)
- {
- base.Load(hud);
- var textColor = Color.PaleTurquoise;
- TextFont[0] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
- textColor = Color.Blue;
- TextFont[1] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
- textColor = Color.Red;
- TextFont[2] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
- textColor = Color.Yellow;
- TextFont[3] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
- textColor = Color.Green;
- TextFont[4] = hud.Render.CreateFont("consolas", 10f, textColor.A, textColor.R, textColor.G, textColor.B, true, false, 255, 0, 0, 0, true);
- }
- public void PaintWorld(WorldLayer layer)
- {
- if (TextFont != null)
- {
- var text = checkForElementalExposure(out var index);
- TextFont[index].DrawText(text, TextX, TextY);
- }
- }
- private string checkForElementalExposure(out int index)
- {
- index = 0;
- var hasElementalExposure = Hud.Game.Me.Powers.PassiveSlots.Any(x => x.Sno == Hud.Sno.SnoPowers.Wizard_Passive_ElementalExposure.Sno);
- if (!hasElementalExposure)
- {
- return "No Elemental Exposure passive";
- }
- // https://www.ownedcore.com/forums/diablo-3/turbohud/turbohud-support/785766-elemental-exposure-passive.html
- var mod = Hud.Sno.SnoPowers.Wizard_Passive_ElementalExposure.Sno;
- var arcane = 0u;
- var cold = 0u;
- var fire = 0u;
- var lightning = 0u;
- var stacks = new uint[5];
- var monsterCount = 0u;
- foreach (var monster in Hud.Game.Monsters.Where(x => x.IsAlive))
- {
- var ar = monster.GetAttributeValueAsUInt(Hud.Sno.Attributes.Power_Buff_1_Visual_Effect_None, mod, 0);
- var co = monster.GetAttributeValueAsUInt(Hud.Sno.Attributes.Power_Buff_2_Visual_Effect_None, mod, 0);
- var fi = monster.GetAttributeValueAsUInt(Hud.Sno.Attributes.Power_Buff_3_Visual_Effect_None, mod, 0);
- var li = monster.GetAttributeValueAsUInt(Hud.Sno.Attributes.Power_Buff_4_Visual_Effect_None, mod, 0);
- var stackCount = ar + co + fi + li;
- stacks[stackCount] += 1;
- arcane += ar;
- cold += co;
- fire += fi;
- lightning += li;
- monsterCount += 1;
- }
- for (var i = 4; i > 0; --i)
- {
- if (stacks[i] > 0)
- {
- index = i;
- break;
- }
- }
- var total = arcane + cold + fire + lightning;
- var stackText = string.Format("5%={0,-2} 10%={1,-2} 15%={2,-2} 20%={3,-2} ", stacks[1], stacks[2], stacks[3], stacks[4]);
- 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);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement