RNNCode

LevelItemRequired

Apr 11th, 2024 (edited)
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.83 KB | None | 0 0
  1. using Turbo.Plugins.Default;
  2. using System.Text;
  3. using System.Linq;
  4. using System.Collections.Generic;
  5.  
  6. namespace Turbo.Plugins.RNN
  7. {
  8.     public class LevelItemRequired : BasePlugin, IInGameTopPainter
  9.     {
  10.         private IUiElement HoveredItem2;
  11.         private IUiElement HoveredItem2ScrollerBottom;
  12.         public IFont TextFont { get; set; }
  13.  
  14.         public string textShow { get; set; }
  15.         public bool showAlways { get; set; }
  16.         public bool ApplyLevelReductionStat { get; set; }
  17.         public float xPos { get; set; }
  18.         public float yPos { get; set; }
  19.  
  20.         private Dictionary<ActorSnoEnum,double> FixItems { get; set; } = new Dictionary<ActorSnoEnum,double>() // fixes for some blacksmith sets (level < 70)
  21.         {
  22.             { ActorSnoEnum._pants_norm_unique_046, 23 }, { ActorSnoEnum._gloves_norm_unique_046, 23 }, { ActorSnoEnum._helm_norm_set_02, 23 }, { ActorSnoEnum._boots_norm_unique_046, 23 }, // Cain
  23.             { ActorSnoEnum._shoulderpads_norm_set_01, 21 }, { ActorSnoEnum._chestarmor_norm_unique_044, 21 }, { ActorSnoEnum._sword_norm_set_01, 21 }, // Born
  24.             { ActorSnoEnum._belt_norm_unique_12, 31 }, { ActorSnoEnum._boots_norm_unique_043, 31 }, { ActorSnoEnum._pants_norm_unique_043, 31 }, // crimson
  25.             { ActorSnoEnum._bracers_norm_unique_09, 42 }, { ActorSnoEnum._chestarmor_norm_unique_043, 42 }, { ActorSnoEnum._shoulderpads_norm_set_02, 42 }, { ActorSnoEnum._helm_norm_set_03, 42 }, // aughild
  26.         };
  27.  
  28.         public LevelItemRequired()
  29.         {
  30.           Enabled = true;
  31.         }
  32.  
  33.         public override void Load(IController hud)
  34.         {
  35.             base.Load(hud);
  36.  
  37.             textShow = "Level: {0} ({1} required)";     // Text to show. {0} Level, {1} = required level.
  38.             showAlways = true;                          // Always show or only when both values are different.
  39.             ApplyLevelReductionStat = true;
  40.             xPos = 0.05f;   // 0f.... 1f
  41.             yPos = 0.02f;   // 0f ... 1f
  42.  
  43.             HoveredItem2 = Hud.Render.RegisterUiElement("Root.TopLayer.item 2.stack.frame body.scrollbox.stack.wrapper.reqs", null, null);
  44.             HoveredItem2ScrollerBottom = Hud.Render.RegisterUiElement("Root.TopLayer.item 2.stack.frame body.scrollbox._scrollerBottom", null, null);
  45.             TextFont = Hud.Render.CreateFont("arial", 8, 255, 255, 255, 255, false, false, true);
  46.         }
  47.  
  48.         public void PaintTopInGame(ClipState clipState)
  49.         {
  50.             if (!Hud.Game.IsInGame || clipState != ClipState.AfterClip)  return;
  51.             if (Hud.Inventory.InventoryMainUiElement.Visible)
  52.             {
  53.                 var item = Hud.Inventory.HoveredItem;
  54.                 if (item != null)
  55.                 {
  56.                     if (HoveredItem2.Visible && !HoveredItem2ScrollerBottom.Visible)
  57.                     {
  58.                         var stat = item.StatList.FirstOrDefault(i => i.Id == "Requirement#57");
  59.                         if (stat != null)
  60.                         {
  61.                             var levelRequired = stat.DoubleValue; double levelItem = item.SnoItem.RequiredLevel;
  62.  
  63.                             stat = item.StatList.FirstOrDefault(i => i.Id == "Item_LegendaryItem_Level_Override#1048575");
  64.                             if (stat != null) levelItem = stat.DoubleValue;
  65.                             else if (levelItem < 70 && FixItems.TryGetValue(item.SnoActor.Sno, out var data)) levelItem = data;
  66.                             if (ApplyLevelReductionStat)
  67.                             {
  68.                                 stat = item.StatList.FirstOrDefault(i => i.Id == "lvlreqred"); // Item_Level_Requirement_Reduction#1048575
  69.                                 if (stat != null) levelRequired -= stat.DoubleValue;
  70.                             }
  71.  
  72.                             if (showAlways || levelItem != levelRequired)   // if (showAlways || item.StatList.FirstOrDefault(i => i.Id == "RemoveLevelReq#1048575")?.DobleValue == 1)
  73.                             {
  74.                                 var layout = TextFont.GetTextLayout(string.Format(textShow, levelItem, levelRequired));
  75.                                 //TextFont.DrawText(layout, HoveredItem2.Rectangle.X + HoveredItem2.Rectangle.Width/2.0f - layout.Metrics.Width, HoveredItem2.Rectangle.Y + (HoveredItem2.Rectangle.Height - layout.Metrics.Height)/2.0f );
  76.                                 TextFont.DrawText(layout, HoveredItem2.Rectangle.X + HoveredItem2.Rectangle.Width * xPos, HoveredItem2.Rectangle.Y + HoveredItem2.Rectangle.Height * yPos );
  77.                             }
  78.                         }
  79.                     }
  80.                 }
  81.             }
  82.         }
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment