Even More Modifiers  1.0.0.0
A mod for rolling various bonus stats on items
ModifierCacheVanilla.cs
Go to the documentation of this file.
1 using Loot.Api.Core;
2 using Loot.Hacks;
3 using Terraria;
4 
5 namespace Loot.Caching
6 {
7  public sealed partial class ModifierCachePlayer
8  {
9  private void UpdateVanityCache()
10  {
11  // vanity
12  for (int i = 13; i < 18 + player.extraAccessorySlots; i++)
13  {
14  var oldEquip = _oldVanityEquips[i - 13];
15  var newEquip = player.armor[i];
16 
17  // If equip slot needs an update
18  if (!_forceEquipUpdate && oldEquip != null && newEquip == oldEquip)
19  continue;
20 
21  Ready = false;
22 
23  // detach old first
24  if (oldEquip != null && !oldEquip.IsAir && CheatedItemHackGlobalItem.GetInfo(oldEquip).IsCheated)
25  {
26  foreach (Modifier m in LootModItem.GetActivePool(oldEquip))
27  {
28  AddDetachItem(oldEquip, m);
29  }
30  }
31 
32  // attach new
33  if (newEquip != null && !newEquip.IsAir && CheatedItemHackGlobalItem.GetInfo(newEquip).IsCheated)
34  {
35  foreach (Modifier m in LootModItem.GetActivePool(newEquip))
36  {
37  AddAttachItem(newEquip, m);
38  }
39  }
40 
41  _oldVanityEquips[i - 13] = newEquip;
42  }
43  }
44 
45  private void UpdateHeldItemCache()
46  {
47  // If held item needs an update
48  if (_oldSelectedItem == player.selectedItem)
49  return;
50 
51  Ready = false;
52 
53  // detach old held item
54  Item oldSelectedItem = player.inventory[_oldSelectedItem];
55  if (oldSelectedItem != null && !oldSelectedItem.IsAir && IsMouseUsable(oldSelectedItem))
56  {
57  foreach (Modifier m in LootModItem.GetActivePool(oldSelectedItem))
58  {
59  AddDetachItem(oldSelectedItem, m);
60  }
61  }
62 
63  // attach new held item
64  if (player.HeldItem != null && !player.HeldItem.IsAir && IsMouseUsable(player.HeldItem))
65  {
66  foreach (Modifier m in LootModItem.GetActivePool(player.HeldItem))
67  {
68  AddAttachItem(player.HeldItem, m);
69  }
70  }
71 
72  _oldSelectedItem = player.selectedItem;
73  }
74 
75  private bool UpdateMouseItemCache()
76  {
77  // If held item needs an update
78  if (_oldMouseItem != null && _oldMouseItem == Main.mouseItem)
79  return false;
80 
81  Ready = false;
82 
83  // detach old mouse item
84  if (_oldMouseItem != null && !_oldMouseItem.IsAir && IsMouseUsable(_oldMouseItem))
85  {
86  foreach (Modifier m in LootModItem.GetActivePool(_oldMouseItem))
87  {
88  AddDetachItem(_oldMouseItem, m);
89  }
90  }
91 
92  // attach new held item
93  if (Main.mouseItem != null && !Main.mouseItem.IsAir && IsMouseUsable(Main.mouseItem))
94  {
95  foreach (Modifier m in LootModItem.GetActivePool(player.HeldItem))
96  {
97  AddAttachItem(Main.mouseItem, m);
98  }
99  }
100 
101  _oldMouseItem = Main.mouseItem;
102  return Main.mouseItem != null && !Main.mouseItem.IsAir;
103  }
104 
105  private void UpdateEquipsCache()
106  {
107  for (int i = 0; i < 8 + player.extraAccessorySlots; i++)
108  {
109  var oldEquip = _oldEquips[i];
110  var newEquip = player.armor[i];
111 
112  // If equip slot needs an update
113  if (!_forceEquipUpdate && oldEquip != null && newEquip == oldEquip)
114  continue;
115 
116  Ready = false;
117 
118  // detach old first
119  if (oldEquip != null && !oldEquip.IsAir)
120  {
121  foreach (Modifier m in LootModItem.GetActivePool(oldEquip))
122  {
123  AddDetachItem(oldEquip, m);
124  }
125  }
126 
127  // attach new
128  if (newEquip != null && !newEquip.IsAir)
129  {
130  foreach (Modifier m in LootModItem.GetActivePool(newEquip))
131  {
132  AddAttachItem(newEquip, m);
133  }
134  }
135 
136  _oldEquips[i] = newEquip;
137  }
138  }
139  }
140 }
Defines a modifier, which is an unloaded GlobalItem Making it a GlobalItem gives easy access to all h...
Definition: Modifier.cs:21
Can detect if an item was activated via cheats
Defines an item that may be modified by modifiers from mods
Definition: LootModItem.cs:21
static List< Modifier > GetActivePool(Item item)
static CheatedItemHackGlobalItem GetInfo(Item item)
bool IsCheated
Keeps track of if the item was activated (by another mod) In this case activated means giving its reg...