Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using Turbo.Plugins.Default;
- namespace Turbo.Plugins.DAV
- {
- public class DAV_SetPowerPlugin : BasePlugin, IInGameTopPainter {
- public float IconSize_Ext { get; set; } = 25f;
- public float offsetX { get; set; } = 5f;
- public float offsetY1 { get; set; } = 0f; // for Nemesis Bracers
- public float offsetY2 { get; set; } = 0f; // for Flavor of Time
- public float offsetY3 { get; set; } = 0f; // for Set Powers
- public bool showExtend { get; set; } = true; // show 4 customize power
- public bool showXpBonus { get; set; } = true; // show bonus pool
- public ITexture[] Icon_PowerExtend { get; set; } = new ITexture[4];
- public Func<IPlayer, bool>[] Func_PowerExtend { get; set; } = new Func<IPlayer, bool>[4];
- public ITexture Texture_BG { get; set; }
- public ITexture Texture_ZDPS { get; set; }
- public ITexture Texture_XpBonus { get; set; }
- public IFont poolFont { get; set; }
- public float offsetPool { get; set; } = 3;
- public float BGopacity { get; set; } = 0.9f;
- private ITexture[] Texture_Power { get; set; } = new ITexture[4];
- private Dictionary<HeroClass, Dictionary<uint, ITexture>> HeroPowerSet { get; set; }
- public DAV_SetPowerPlugin() {
- Enabled = true;
- }
- public override void Load(IController hud) {
- base.Load(hud);
- poolFont = Hud.Render.CreateFont("Arial", 6.5f, 255, 51, 255, 51, false, false, 255, 51, 51, 51, true);
- Texture_BG = Hud.Texture.InventorySetBackgroundLarge;
- Texture_ZDPS = Hud.Texture.GetTexture(3012169026); // Hud.Sno.SnoItems.Unique_Shield_009_x1
- Texture_XpBonus = Hud.Texture.GetTexture(2631068636);
- Func_PowerExtend[0] = (p) => { return p.Offense.AreaDamageBonus > 0; }; // Area Damage
- Icon_PowerExtend[0] = Hud.Texture.GetTexture(415710583);
- Func_PowerExtend[1] = (p) => { return p.Powers.BuffIsActive(428348); }; // Bane of the Stricken 殤擊之殃
- Icon_PowerExtend[1] = Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Gem_018_x1);
- Func_PowerExtend[2] = (p) => { return p.Powers.BuffIsActive(359560); }; // Death's Breath Set
- Icon_PowerExtend[2] = Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Crafting_Looted_Reagent_01);
- Func_PowerExtend[3] = (p) => { return p.Powers.BuffIsActive(483516); }; // The Executioner 劊子手
- Icon_PowerExtend[3] = Hud.Texture.GetTexture(1736325614);
- Texture_Power[0] = Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Bracer_106_x1); // Nemesis Bracers 死敵護腕
- Texture_Power[1] = Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Amulet_001_x1); // Flavor of Time 逝水年華
- Texture_Power[2] = Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Gem_023_x1); // Legacy of Dreams 夢魘遺產
- Texture_Power[3] = Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Ring_014_x1); // Legacy of Nightmares 夢魘者的遺禮
- HeroPowerSet = new Dictionary<HeroClass, Dictionary<uint, ITexture>> {
- { HeroClass.DemonHunter, new Dictionary<uint, ITexture>() },
- { HeroClass.Barbarian, new Dictionary<uint, ITexture>() },
- { HeroClass.Wizard, new Dictionary<uint, ITexture>() },
- { HeroClass.WitchDoctor, new Dictionary<uint, ITexture>() },
- { HeroClass.Monk, new Dictionary<uint, ITexture>() },
- { HeroClass.Crusader, new Dictionary<uint, ITexture>() },
- { HeroClass.Necromancer, new Dictionary<uint, ITexture>() },
- };
- HeroPowerSet[HeroClass.DemonHunter].Add(484291, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P69_Unique_Helm_Set_06)); // Gears of Dreadlands 恐懼戰裝
- HeroPowerSet[HeroClass.DemonHunter].Add(444522, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_14_x1)); // The Shadow's Mantle 暗影裝束
- HeroPowerSet[HeroClass.DemonHunter].Add(423228, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_03_p2)); // Unhallowed Essence 邪瀆精華
- HeroPowerSet[HeroClass.DemonHunter].Add(318832, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_07_x1)); // Embodiment of the Marauder 掠奪者的化身
- HeroPowerSet[HeroClass.DemonHunter].Add(434964, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_009_x1)); // Natalya's Vengeance 娜塔亞的復仇
- HeroPowerSet[HeroClass.Barbarian].Add(484146, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P68_Unique_Helm_Set_05)); // Horde of the Ninety Savages 九十蠻夷
- HeroPowerSet[HeroClass.Barbarian].Add(423226, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_01_p2)); // Wrath of the Wastes 荒野之怒
- HeroPowerSet[HeroClass.Barbarian].Add(444521, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_15_x1)); // Might of the Earth 地之力量
- HeroPowerSet[HeroClass.Barbarian].Add(430684, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_008_x1)); // Immortal King's Call 不朽之王的呼喚
- HeroPowerSet[HeroClass.Barbarian].Add(429673, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_05_x1)); // The Legacy of Raekor 蕾蔻爾的傳奇
- HeroPowerSet[HeroClass.Wizard].Add(484122, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P68_Unique_Helm_Set_03)); // The Typhon's Veil 堤豐罩衣
- HeroPowerSet[HeroClass.Wizard].Add(437843, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_13_x1)); // Vyr's Amazing Arcana 維爾的神妙奧秘
- HeroPowerSet[HeroClass.Wizard].Add(445814, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_06_x1)); // Firebird's Finery 不死鳥的華服
- HeroPowerSet[HeroClass.Wizard].Add(423236, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_02_p2)); // Delsere's Magnum Opus 德瑟雷的至高傑作
- HeroPowerSet[HeroClass.Wizard].Add(429855, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_010_x1)); // Tal Rasha's Elements 塔拉夏的法理
- HeroPowerSet[HeroClass.WitchDoctor].Add(484130, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P68_Unique_Helm_Set_04)); // Mundunugu's Regalia 蒙杜奴古戰裝
- HeroPowerSet[HeroClass.WitchDoctor].Add(429857, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_VoodooMask_007_x1)); // Zunimassa's Haunt 祖妮瑪莎的縈繞
- HeroPowerSet[HeroClass.WitchDoctor].Add(437711, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_16_x1)); // Helltooth Harness 獄牙戰裝
- HeroPowerSet[HeroClass.WitchDoctor].Add(359573, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_09_x1)); // Raiment of the Jade Harvester 玉魂師的戰甲
- HeroPowerSet[HeroClass.WitchDoctor].Add(439309, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_02_p3)); // Spirit of Arachyr 厄拉祈爾之魂
- HeroPowerSet[HeroClass.Monk].Add(483664, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P67_Unique_Helm_Set_02)); // Patterns of Justice 正義楷模
- HeroPowerSet[HeroClass.Monk].Add(449252, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_SpiritStone_009_x1)); // Inna's Mantra 殷娜的真言
- HeroPowerSet[HeroClass.Monk].Add(478511, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_11_x1)); // Monkey King's Garb 猴王戰服
- HeroPowerSet[HeroClass.Monk].Add(430228, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_08_x1)); // Raiment of a Thousand Storms 千颶戰甲
- HeroPowerSet[HeroClass.Monk].Add(439312, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_01_p3)); // Uliana's Stratagem 烏蓮娜的策略
- HeroPowerSet[HeroClass.Crusader].Add(483639, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P67_Unique_Helm_Set_01)); // Aegis of Valor 英勇聖禦
- HeroPowerSet[HeroClass.Crusader].Add(446511, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_12_x1)); // Thorns of the Invoker 召魔者的棘刺
- HeroPowerSet[HeroClass.Crusader].Add(445942, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_10_x1)); // Armor of Akkhan 阿克漢的戰鎧
- HeroPowerSet[HeroClass.Crusader].Add(409428, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_01_p1)); // Roland's Legacy 羅蘭的遺產
- HeroPowerSet[HeroClass.Crusader].Add(436427, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.Unique_Helm_Set_03_p3)); // Seeker of the Light 聖光追尋者
- HeroPowerSet[HeroClass.Necromancer].Add(484303, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P69_Necro_Set_5_Helm)); // Masquerade of Burning Carnival 烈焰祭典的面具
- HeroPowerSet[HeroClass.Necromancer].Add(467465, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P6_Necro_Set_1_Helm)); // Bones of Rathma 拉斯瑪的骨骸
- HeroPowerSet[HeroClass.Necromancer].Add(472274, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P6_Necro_Set_4_Helm)); // Pestilence Master's Shroud 惡疫之王的裹尸布
- HeroPowerSet[HeroClass.Necromancer].Add(472268, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P6_Necro_Set_2_Helm)); // Trag'Oul's Avatar 塔格奧的化身
- HeroPowerSet[HeroClass.Necromancer].Add(472271, Hud.Texture.GetItemTexture(Hud.Sno.SnoItems.P6_Necro_Set_3_Helm)); // Grace of Inarius 伊納瑞斯的恩澤
- }
- public void PaintTopInGame(ClipState clipState) {
- if (clipState != ClipState.BeforeClip) return;
- foreach (var player in Hud.Game.Players) {
- var portrait = player.PortraitUiElement.Rectangle;
- var width = portrait.Height / 4.5f;
- // Nemesis Bracers 死敵護腕
- if (player.Powers.BuffIsActive(318820))
- Texture_Power[0].Draw(offsetX, portrait.Top + offsetY1, width, 2*width);
- // Flavor of Time 逝水年華
- if (player.Powers.BuffIsActive(483515))
- Texture_Power[1].Draw(offsetX, portrait.Top + 1.5f*width + offsetY2, width, width);
- if (showExtend) {
- for (var i = 0; i < 4; i++)
- if (Func_PowerExtend[i] != null && Func_PowerExtend[i](player))
- Icon_PowerExtend[i]?.Draw(portrait.Right - IconSize_Ext, portrait.Bottom - (4 - i) * IconSize_Ext, IconSize_Ext, IconSize_Ext);
- }
- if (Hud.Window.CursorInsideRect(portrait.X, portrait.Y, portrait.Width, portrait.Height)) {
- var grLvl = player.GetAttributeValueAsInt(Hud.Sno.Attributes.Highest_Unlocked_Rift_Level, 2147483647, 0);
- var grIcon = Hud.Texture.GetTexture((uint)grLvl + 23 * (uint)(grLvl / 10) + (uint)(grLvl < 100 ? 795145286 : 469991469));
- grIcon?.Draw(portrait.X + (portrait.Width - width) / 2f, portrait.Y + 0.16f * portrait.Height, width, width);
- }
- if (showXpBonus) {
- var xref = portrait.X + (portrait.Width - width) / 2f;
- var yref = portrait.Bottom - 2 * width;
- var bonus = ((float)player.BonusPoolRemaining / player.ParagonExpToNextLevel) * 10f;
- Texture_XpBonus?.Draw(xref, yref, width, width);
- if (bonus > 0.06f) {
- var layout = poolFont.GetTextLayout(bonus.ToString("0.#"));
- poolFont.DrawText(layout, xref + (width - layout.Metrics.Width) / 2f, yref + width - layout.Metrics.Height - offsetPool);
- }
- }
- Texture_BG?.Draw(offsetX, portrait.Top + 2.5f * width + offsetY3, width, 2 * width, BGopacity);
- // Legacy of Dreams 夢魘遺產
- if (player.Powers.BuffIsActive(483319)) {
- Texture_Power[2].Draw(offsetX, portrait.Top + 3f * width + offsetY3, width, width);
- continue;
- }
- // Legacy of Nightmares 夢魘者的遺禮
- if (player.Powers.BuffIsActive(445798)) {
- Texture_Power[3].Draw(offsetX, portrait.Top + 3f * width + offsetY3, width, width);
- continue;
- }
- var ZDPS = true;
- var classSet = HeroPowerSet[player.HeroClassDefinition.HeroClass];
- foreach (KeyValuePair<uint, ITexture> mainSet in classSet) {
- if (player.Powers.BuffIsActive(mainSet.Key, 0)) {
- mainSet.Value.Draw(offsetX, portrait.Top + 2.5f * width + offsetY3, width, 2 * width);
- ZDPS = false;
- break;
- }
- }
- if (ZDPS)
- Texture_ZDPS?.Draw(offsetX, portrait.Top + 2.5f * width + offsetY3, width, 2 * width);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment