Advertisement
Guest User

UrshisGiftPlugin.cs

a guest
Sep 10th, 2017
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.88 KB | None | 0 0
  1. // http://www.ownedcore.com/forums/diablo-3/turbohud/turbohud-plugin-review-zone/636940-v7-3-international-resu-urshisgiftplugin.html
  2.  
  3. using System;
  4. using System.Diagnostics;
  5. using System.Globalization;
  6. using System.Linq;
  7. using Turbo.Plugins.Default;
  8. using System.Collections.Generic;
  9.  
  10. namespace Turbo.Plugins.Resu
  11. {
  12.     public class UrshisGiftPlugin : BasePlugin, IInGameTopPainter
  13.     {
  14.         public bool InventoryNumbers { get; set; }
  15.         public bool HoveredNumbers { get; set; }
  16.        
  17.         public IBrush ShadowBrush { get; set; }
  18.         public IBrush InventoryLockBorderBrush { get; set; }
  19.         public IFont GRupgradeChanceFont { get; set; }
  20.         public int GRlevel { get; set; }
  21.         public int ChanceWantedPercentage { get; set; }
  22.         public int NumberOfAttempts { get; set; }
  23.         public int AddPerc
  24.         {
  25.             get
  26.             {
  27.                 if (ChanceWantedPercentage == 100) return 10;
  28.                 if (ChanceWantedPercentage == 90) return 9;
  29.                 if (ChanceWantedPercentage == 80) return 8;
  30.                 if (ChanceWantedPercentage == 70) return 7;
  31.                 if (ChanceWantedPercentage == 60) return 0;
  32.                 if (ChanceWantedPercentage == 30) return -1;
  33.                 if (ChanceWantedPercentage == 15) return -2;
  34.                 if (ChanceWantedPercentage == 8) return -3;
  35.                 if (ChanceWantedPercentage == 4) return -4;
  36.                 if (ChanceWantedPercentage == 2) return -5;
  37.                 if (ChanceWantedPercentage == 1) return -15;
  38.                
  39.                 return 500;
  40.             }
  41.         }
  42.        
  43.         private HashSet<int> Chances = new HashSet<int> {100,90,80,70,60,30,15,8,4,2,1};
  44.         private HashSet<int> Attemps = new HashSet<int> {1,2,3,4,5};
  45.        
  46.         public Func<float> LeftFunc { get; set; }
  47.         public Func<float> TopFunc { get; set; }
  48.        
  49.         public IFont UpgradeFont { get; set; }
  50.         public string UpgradeText { get; set; }
  51.        
  52.         public UrshisGiftPlugin()
  53.         {
  54.             Enabled = true;
  55.            
  56.             InventoryNumbers = true;        //show numbers in inventory, stash
  57.             HoveredNumbers = true;          //show upgrad hint on item hovered
  58.         }
  59.  
  60.         public override void Load(IController hud)
  61.         {
  62.             base.Load(hud);
  63.             ChanceWantedPercentage = 100;
  64.             NumberOfAttempts = 1;
  65.  
  66.             ShadowBrush = Hud.Render.CreateBrush(175, 0, 0, 0, -1.6f);
  67.             GRupgradeChanceFont = Hud.Render.CreateFont("arial", 7, 255, 0, 0, 0, true, false, false);
  68.             GRupgradeChanceFont.SetShadowBrush(128, 39, 229, 224, true);
  69.            
  70.             LeftFunc = () =>
  71.             {
  72.                 var uicMain = Hud.Inventory.GetHoveredItemMainUiElement();
  73.                 return uicMain.Rectangle.X + uicMain.Rectangle.Width * 0.23f;
  74.             };
  75.             TopFunc = () =>
  76.             {
  77.                 var uicTop = Hud.Inventory.GetHoveredItemTopUiElement();
  78.                 return uicTop.Rectangle.Bottom + (40f / 1200.0f * Hud.Window.Size.Height);
  79.             };
  80.            
  81.             UpgradeFont = Hud.Render.CreateFont("tahoma", 7, 255, 200, 200, 200, false, false, false);
  82.             UpgradeText = "GR {0}+ for a {1}% upgrade chance";  //for other languages
  83.         }
  84.  
  85.         private int stashTabAbs;
  86.  
  87.         public void PaintTopInGame(ClipState clipState)
  88.         {
  89.             if (!Chances.Contains(ChanceWantedPercentage)) return;      //false settings
  90.             if (!Attemps.Contains(NumberOfAttempts)) return;            //false settings
  91.            
  92.             if (clipState == ClipState.Inventory && InventoryNumbers)
  93.             {
  94.                 stashTabAbs = Hud.Inventory.SelectedStashTabIndex + Hud.Inventory.SelectedStashPageIndex * Hud.Inventory.MaxStashTabCountPerPage;
  95.  
  96.                 foreach (var item in Hud.Game.Items)
  97.                 {
  98.                     if (item.SnoItem.MainGroupCode != "gems_unique") continue;
  99.                     if (item.Location == ItemLocation.Stash)
  100.                     {
  101.                         if ((item.InventoryY / 10) != stashTabAbs) continue;
  102.                     }
  103.                     if ((item.InventoryX < 0) || (item.InventoryY < 0)) continue;
  104.      
  105.                     var rect = Hud.Inventory.GetItemRect(item);
  106.                     if (rect == System.Drawing.RectangleF.Empty) continue;
  107.      
  108.                     DrawItemGRupgradeChance(item, rect);
  109.                 }
  110.             }
  111.            
  112.             if (clipState == ClipState.AfterClip && HoveredNumbers)
  113.                 DrawTextLine();
  114.         }
  115.  
  116.         private void DrawItemGRupgradeChance(IItem item, System.Drawing.RectangleF rect)
  117.         {
  118.             var jewelRank = item.JewelRank;
  119.             if (jewelRank == -1) {jewelRank = 0;}
  120.            
  121.             if (item.SnoItem.Sno == 3249876973 && jewelRank == 100 ||   // 3249876973 - Esoteric Alteration
  122.                 item.SnoItem.Sno == 3249984784 && jewelRank == 100 ||   // 3249984784 - Mutilation Guard
  123.                 item.SnoItem.Sno == 3248762926 && jewelRank == 150 ||   // 3248762926 - Gogok of Swiftness
  124.                 item.SnoItem.Sno == 3250883209 && jewelRank == 50 ||    // 3250883209 - Iceblink
  125.                 item.SnoItem.Sno == 3249805099 && jewelRank == 50)      // 3249805099 - Boon of the Hoarder
  126.             {
  127.                 var layout = GRupgradeChanceFont.GetTextLayout("max");
  128.                 GRupgradeChanceFont.DrawText(layout, rect.X+24, rect.Y+33);
  129.                
  130.                 return;
  131.             }
  132.            
  133.             GRlevel = jewelRank + AddPerc + (NumberOfAttempts - 1);
  134.             var text = GRlevel.ToString("D", CultureInfo.InvariantCulture);
  135.              
  136.             if (GRlevel < 100)
  137.             {
  138.                 var layout = GRupgradeChanceFont.GetTextLayout(text);
  139.                 GRupgradeChanceFont.DrawText(layout, rect.X+33, rect.Y+33);
  140.             }
  141.             else if (GRlevel >= 100 )
  142.             {
  143.                 var layout = GRupgradeChanceFont.GetTextLayout(text);
  144.                 GRupgradeChanceFont.DrawText(layout, rect.X+27, rect.Y+33);
  145.             }
  146.         }
  147.        
  148.         private void DrawTextLine()
  149.         {
  150.             var item = Hud.Inventory.HoveredItem;
  151.             if (item == null) return;
  152.             if (!item.IsLegendary) return;
  153.             if (item.SnoItem.MainGroupCode != "gems_unique") return;
  154.            
  155.             var jewelRank = item.JewelRank;
  156.             if (jewelRank == -1) jewelRank = 0;
  157.            
  158.             GRlevel = jewelRank + AddPerc;  //just for 1 upgrade
  159.            
  160.             var text = string.Format(UpgradeText, GRlevel, ChanceWantedPercentage);
  161.             var layout = UpgradeFont.GetTextLayout(text);
  162.             UpgradeFont.DrawText(layout, LeftFunc(), TopFunc());
  163.         }
  164.     }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement