Even More Modifiers  1.0.0.0
A mod for rolling various bonus stats on items
Loot.Caching.ModifierCachePlayer Class Reference

Caches the item held and items equipped by players. When equips and held items change, their respective modifiers' effects are automatically called to detach and attach their delegations. More...

+ Inheritance diagram for Loot.Caching.ModifierCachePlayer:
+ Collaboration diagram for Loot.Caching.ModifierCachePlayer:

Public Member Functions

override void Initialize ()
 
override void PostUpdate ()
 

Private Member Functions

void AddAttachItem (Item item, Modifier modifier)
 
void AddDetachItem (Item item, Modifier modifier)
 
void CacheItemModifierEffects (Item item)
 
void CacheModifierEffects ()
 
IEnumerable< ModifierEffectGetModifierEffectsForDelegations (IEnumerable<(Item item, Modifier modifier)> list, ModifierDelegatorPlayer modDelegatorPlayer, Func< ModifierEffect, bool > conditionFunc)
 This method will return a list of ModifierEffects based on Modifiers passed to it More...
 
IEnumerable<(MethodInfo methodInfo, ModifierEffect effect)> OrderDelegationList (IEnumerable<(Item item, Modifier modifier)> list, ModifierDelegatorPlayer modDelegatorPlayer)
 This method orders delegation entries following the rules of DelegationPrioritizationAttribute which orders by Early/Late prioritization and a level ranging from 0-999 which indicates how much that prioritization should be enforced. More...
 
void UpdateAttachments ()
 This method handles updating all delegations First, it will perform 'manual' detachments calling ModifierEffect.DetachDelegations(ModifierDelegatorPlayer) then it will perform 'manual' attachments calling ModifierEffect.AttachDelegations(ModifierDelegatorPlayer) These will unbind/bind ModifierEffect.ResetEffects to ModifierDelegatorPlayer.OnResetEffects and set ModifierEffect.IsBeingDelegated to false or true. More...
 
void UpdateCheatSheetCache ()
 
void UpdateEquipsCache ()
 
void UpdateHeldItemCache ()
 
bool UpdateMouseItemCache ()
 
void UpdateVanityCache ()
 

Static Private Member Functions

static bool IsMouseUsable (Item item)
 

Private Attributes

List<(Item, Modifier)> _attachList
 
List<(Item, Modifier)> _detachList
 
bool _forceEquipUpdate
 
List< Type > _modifierEffects
 
Item[] _oldCheatSheetEquips
 
Item[] _oldEquips
 
Item _oldMouseItem
 
int _oldSelectedItem
 
Item[] _oldVanityEquips
 

Detailed Description

Caches the item held and items equipped by players. When equips and held items change, their respective modifiers' effects are automatically called to detach and attach their delegations.

Definition at line 7 of file ModifierCacheCheatSheet.cs.

Member Function Documentation

void Loot.Caching.ModifierCachePlayer.AddAttachItem ( Item  item,
Modifier  modifier 
)
private

Definition at line 230 of file ModifierCachePlayer.cs.

References Loot.LootModItem.GetInfo(), and Loot.LootModItem.IsActivated.

231  {
232  LootModItem.GetInfo(item).IsActivated = true;
233  _attachList.Add((item, modifier));
234  }
List<(Item, Modifier)> _attachList

+ Here is the call graph for this function:

void Loot.Caching.ModifierCachePlayer.AddDetachItem ( Item  item,
Modifier  modifier 
)
private

Definition at line 224 of file ModifierCachePlayer.cs.

References Loot.LootModItem.GetInfo(), and Loot.LootModItem.IsActivated.

225  {
226  LootModItem.GetInfo(item).IsActivated = false;
227  _detachList.Add((item, modifier));
228  }
List<(Item, Modifier)> _detachList

+ Here is the call graph for this function:

void Loot.Caching.ModifierCachePlayer.CacheItemModifierEffects ( Item  item)
private

Definition at line 274 of file ModifierCachePlayer.cs.

References Loot.LootModItem.GetActivePool(), Loot.Api.Delegators.ModifierDelegatorPlayer.GetEffect(), and Loot.Api.Delegators.ModifierDelegatorPlayer.GetPlayer().

275  {
276  var mods = LootModItem.GetActivePool(item);
277  foreach (var modifier in mods)
278  {
279  var effectsAttribute = modifier
280  .GetType()
281  .GetCustomAttribute<UsesEffectAttribute>();
282 
283  if (effectsAttribute == null)
284  continue;
285 
286  ModifierDelegatorPlayer modDelegatorPlayer = ModifierDelegatorPlayer.GetPlayer(player);
287  foreach (Type effect in effectsAttribute.Effects)
288  {
289  var modEffect = modDelegatorPlayer.GetEffect(effect);
290  if (modEffect != null && !_modifierEffects.Contains(modEffect.GetType()))
291  {
292  _modifierEffects.Add(modEffect.GetType());
293  }
294  }
295  }
296  }
static ModifierDelegatorPlayer GetPlayer(Player player)
Holds player-entity data and handles it
This attribute is used to attach a certain Modifier to given ModifierEffects (can be attached to more...

+ Here is the call graph for this function:

void Loot.Caching.ModifierCachePlayer.CacheModifierEffects ( )
private

Definition at line 236 of file ModifierCachePlayer.cs.

References Loot.Hacks.CheatedItemHackGlobalItem.GetInfo(), and Loot.Hacks.CheatedItemHackGlobalItem.IsCheated.

237  {
238  if (!_forceEquipUpdate && Ready)
239  return;
240 
241  _modifierEffects.Clear();
242 
243  for (int i = 0; i < 8 + player.extraAccessorySlots; i++)
244  {
245  var equip = player.armor[i];
246  if (equip != null && !equip.IsAir)
247  {
249  }
250  }
251 
252  // vanity
253  for (int k = 13; k < 18 + player.extraAccessorySlots; k++)
254  {
255  var equip = player.armor[k];
256  if (equip != null
257  && !equip.IsAir
259  {
261  }
262  }
263 
264  if (Main.mouseItem != null && !Main.mouseItem.IsAir && Main.mouseItem.IsWeapon())
265  {
266  CacheItemModifierEffects(Main.mouseItem);
267  }
268  else if (player.HeldItem != null && !player.HeldItem.IsAir && player.HeldItem.IsWeapon())
269  {
270  CacheItemModifierEffects(player.HeldItem);
271  }
272  }
Can detect if an item was activated via cheats
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...

+ Here is the call graph for this function:

IEnumerable<ModifierEffect> Loot.Caching.ModifierCachePlayer.GetModifierEffectsForDelegations ( IEnumerable<(Item item, Modifier modifier)>  list,
ModifierDelegatorPlayer  modDelegatorPlayer,
Func< ModifierEffect, bool >  conditionFunc 
)
private

This method will return a list of ModifierEffects based on Modifiers passed to it

Definition at line 61 of file ModifierCachePlayer.cs.

62  {
63  var tempList = new List<ModifierEffect>();
64  foreach (var delegationTuple in list)
65  {
66  var effectsAttribute =
67  delegationTuple.modifier
68  .GetType()
69  .GetCustomAttribute<UsesEffectAttribute>();
70 
71  if (effectsAttribute == null) continue;
72  tempList.AddRange(effectsAttribute.Effects
73  .Select(modDelegatorPlayer.GetEffect)
74  .Where(modEffect => modEffect != null && conditionFunc.Invoke(modEffect)));
75  }
76 
77  return tempList;
78  }
This attribute is used to attach a certain Modifier to given ModifierEffects (can be attached to more...
override void Loot.Caching.ModifierCachePlayer.Initialize ( )

Definition at line 44 of file ModifierCachePlayer.cs.

45  {
46  _oldSelectedItem = player.selectedItem;
47  _oldMouseItem = null;
48  _oldEquips = new Item[8];
49  _oldVanityEquips = new Item[8];
50  _forceEquipUpdate = false;
51  _oldCheatSheetEquips = new Item[6]; // MaxExtraAccessories = 6
52  _modifierEffects = new List<Type>();
53  _detachList = new List<(Item, Modifier)>();
54  _attachList = new List<(Item, Modifier)>();
55  Ready = false;
56  }
List<(Item, Modifier)> _detachList
List<(Item, Modifier)> _attachList
static bool Loot.Caching.ModifierCachePlayer.IsMouseUsable ( Item  item)
staticprivate
IEnumerable<(MethodInfo methodInfo, ModifierEffect effect)> Loot.Caching.ModifierCachePlayer.OrderDelegationList ( IEnumerable<(Item item, Modifier modifier)>  list,
ModifierDelegatorPlayer  modDelegatorPlayer 
)
private

This method orders delegation entries following the rules of DelegationPrioritizationAttribute which orders by Early/Late prioritization and a level ranging from 0-999 which indicates how much that prioritization should be enforced.

Definition at line 146 of file ModifierCachePlayer.cs.

147  {
148  var delegationEntries = new List<(MethodInfo, ModifierEffect)>();
149  var effects = GetModifierEffectsForDelegations(list, modDelegatorPlayer, e => true);
150 
151  foreach (var modEffect in effects)
152  {
153  (MethodInfo, ModifierEffect) MakeEntry((MethodInfo, DelegationPrioritizationAttribute) tuple)
154  => (tuple.Item1, modEffect);
155 
156  var delegatedMethods = modEffect
157  .GetType()
158  .GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
159  .Where(x => x.GetCustomAttributes(typeof(AutoDelegation), false).Length > 0)
160  .Select(x => (methodInfo: x, attribute: (DelegationPrioritizationAttribute) x.GetCustomAttribute(typeof(DelegationPrioritizationAttribute))))
161  .ToList();
162 
163  delegationEntries.AddRange(
164  delegatedMethods
165  .Where(x => x.attribute?.DelegationPrioritization == DelegationPrioritization.Early)
166  .OrderByDescending(x => x.attribute.DelegationLevel)
167  .Select(MakeEntry));
168 
169  delegationEntries.AddRange(
170  delegatedMethods
171  .Where(x => x.attribute == null)
172  .Select(MakeEntry));
173 
174  delegationEntries.AddRange(
175  delegatedMethods
176  .Where(x => x.attribute?.DelegationPrioritization == DelegationPrioritization.Late)
177  .OrderByDescending(x => x.attribute.DelegationLevel)
178  .Select(MakeEntry));
179  }
180 
181  return delegationEntries;
182  }
This attribute may be used to skip usage of AttachDelegations and DetachDelegations Which is a cumber...
A ModifierEffect signifies the effect of a modifier on a player It should house the implementation...
IEnumerable< ModifierEffect > GetModifierEffectsForDelegations(IEnumerable<(Item item, Modifier modifier)> list, ModifierDelegatorPlayer modDelegatorPlayer, Func< ModifierEffect, bool > conditionFunc)
This method will return a list of ModifierEffects based on Modifiers passed to it ...
DelegationPrioritization
Specify when you want your delegation to happen in the chain
This attribute is used to set a custom prioritization for a delegation It allows you to customize at ...
override void Loot.Caching.ModifierCachePlayer.PostUpdate ( )

Definition at line 184 of file ModifierCachePlayer.cs.

185  {
186  // If our equips cache is not the right size we resize it and force an update
187  if (_oldEquips.Length != 8 + player.extraAccessorySlots)
188  {
189  Ready = false;
190  _forceEquipUpdate = true;
191  Array.Resize(ref _oldEquips, 8 + player.extraAccessorySlots);
192  }
193 
194  if (_oldVanityEquips.Length != 8 + player.extraAccessorySlots)
195  {
196  Ready = false;
197  _forceEquipUpdate = true;
198  Array.Resize(ref _oldVanityEquips, 8 + player.extraAccessorySlots);
199  }
200 
201  _detachList.Clear();
202  _attachList.Clear();
203 
205  if (ModSupportTunneler.GetModSupport<CheatSheetSupport>().ModIsLoaded)
206  {
208  }
209 
211 
212  if (!UpdateMouseItemCache())
213  {
215  }
216 
219 
220  _forceEquipUpdate = false;
221  Ready = true;
222  }
List<(Item, Modifier)> _detachList
void UpdateAttachments()
This method handles updating all delegations First, it will perform &#39;manual&#39; detachments calling Modi...
List<(Item, Modifier)> _attachList
void Loot.Caching.ModifierCachePlayer.UpdateAttachments ( )
private

This method handles updating all delegations First, it will perform 'manual' detachments calling ModifierEffect.DetachDelegations(ModifierDelegatorPlayer) then it will perform 'manual' attachments calling ModifierEffect.AttachDelegations(ModifierDelegatorPlayer) These will unbind/bind ModifierEffect.ResetEffects to ModifierDelegatorPlayer.OnResetEffects and set ModifierEffect.IsBeingDelegated to false or true.

After this, the automatic detachments/attachments are done which will bind any methods to whichever method noted in their AutoDelegation attribute.

Definition at line 90 of file ModifierCachePlayer.cs.

References Loot.Api.Attributes.AutoDelegation.Attach(), Loot.Api.Attributes.AutoDelegation.Detach(), and Loot.Api.Delegators.ModifierDelegatorPlayer.GetPlayer().

91  {
92  ModifierDelegatorPlayer modDelegatorPlayer = ModifierDelegatorPlayer.GetPlayer(player);
93 
94  // Manual detach
95  var detachEffects = GetModifierEffectsForDelegations(_detachList, modDelegatorPlayer, (e) => e.IsBeingDelegated && !_modifierEffects.Contains(e.GetType()));
96  var attachEffects = GetModifierEffectsForDelegations(_attachList, modDelegatorPlayer, (e) => !e.IsBeingDelegated);
97  // Automatic delegation lists
98  var orderedDetachList = OrderDelegationList(_detachList, modDelegatorPlayer)
99  .Where(x => x.effect.IsBeingDelegated && !_modifierEffects.Contains(x.effect.GetType()))
100  .GroupBy(x => x.methodInfo)
101  .Select(x => x.First())
102  .ToList();
103 
104  var orderedAttachList = OrderDelegationList(_attachList, modDelegatorPlayer)
105  .Where(x => !x.effect.IsBeingDelegated)
106  .GroupBy(x => x.methodInfo)
107  .Select(x => x.First())
108  .ToList();
109 
110  // Manual detach
111  foreach (var effect in detachEffects.Distinct())
112  {
113  modDelegatorPlayer.ResetEffectsEvent -= effect.ResetEffects;
114  effect._DetachDelegations(modDelegatorPlayer);
115  effect.IsBeingDelegated = false;
116  }
117 
118  // Manual attach
119  foreach (var effect in attachEffects.Distinct())
120  {
121  modDelegatorPlayer.ResetEffectsEvent += effect.ResetEffects;
122  effect.AttachDelegations(modDelegatorPlayer);
123  effect.IsBeingDelegated = true;
124  }
125 
126  // Auto delegation detach
127  foreach (var (methodInfo, effect) in orderedDetachList)
128  {
129  var attr = methodInfo.GetCustomAttribute<AutoDelegation>();
130  attr.Detach(modDelegatorPlayer, methodInfo, effect);
131  }
132 
133  // Auto delegation attach
134  foreach (var (methodInfo, effect) in orderedAttachList)
135  {
136  var attr = methodInfo.GetCustomAttribute<AutoDelegation>();
137  attr.Attach(modDelegatorPlayer, methodInfo, effect);
138  }
139  }
This attribute may be used to skip usage of AttachDelegations and DetachDelegations Which is a cumber...
List<(Item, Modifier)> _detachList
void Detach(ModifierDelegatorPlayer delegatorPlayer, MethodInfo method, ModifierEffect effect)
IEnumerable< ModifierEffect > GetModifierEffectsForDelegations(IEnumerable<(Item item, Modifier modifier)> list, ModifierDelegatorPlayer modDelegatorPlayer, Func< ModifierEffect, bool > conditionFunc)
This method will return a list of ModifierEffects based on Modifiers passed to it ...
void Attach(ModifierDelegatorPlayer delegatorPlayer, MethodInfo method, ModifierEffect effect)
static ModifierDelegatorPlayer GetPlayer(Player player)
IEnumerable<(MethodInfo methodInfo, ModifierEffect effect)> OrderDelegationList(IEnumerable<(Item item, Modifier modifier)> list, ModifierDelegatorPlayer modDelegatorPlayer)
This method orders delegation entries following the rules of DelegationPrioritizationAttribute which ...
List<(Item, Modifier)> _attachList
Holds player-entity data and handles it

+ Here is the call graph for this function:

void Loot.Caching.ModifierCachePlayer.UpdateCheatSheetCache ( )
private

Definition at line 11 of file ModifierCacheCheatSheet.cs.

References Loot.LootModItem.GetActivePool().

12  {
13  // get cheat sheet slots
14  var curEquips = CheatSheetInterface.GetEnabledExtraAccessories(player).Take(_oldCheatSheetEquips.Length).ToArray();
15 
16  // go over enabled slots
17  for (int i = 0; i < curEquips.Length; i++)
18  {
19  var oldEquip = _oldCheatSheetEquips[i];
20  var newEquip = curEquips[i];
21 
22  // update delegations
23  if (oldEquip != null && newEquip == oldEquip)
24  {
25  continue;
26  }
27 
28  Ready = false;
29 
30  // detach old first
31  if (oldEquip != null && !oldEquip.IsAir)
32  {
33  foreach (Modifier m in LootModItem.GetActivePool(oldEquip))
34  {
35  AddDetachItem(oldEquip, m);
36  }
37  }
38 
39  // attach new
40  if (newEquip != null && !newEquip.IsAir)
41  {
42  foreach (Modifier m in LootModItem.GetActivePool(newEquip))
43  {
44  AddAttachItem(newEquip, m);
45  }
46  }
47 
48  _oldCheatSheetEquips[i] = newEquip;
49  }
50 
51  // current enabled is smaller than total
52  if (curEquips.Length >= _oldCheatSheetEquips.Count(x => x != null))
53  {
54  return;
55  }
56 
57  var outOfDateEquips = _oldCheatSheetEquips.Skip(curEquips.Length);
58  // for all disabled slots but still had a registered item, detach it
59  foreach (var item in outOfDateEquips.Where(x => x != null && !x.IsAir))
60  {
61  Ready = false;
62  foreach (Modifier m in LootModItem.GetActivePool(item))
63  {
64  AddDetachItem(item, m);
65  }
66  }
67  }
Defines a modifier, which is an unloaded GlobalItem Making it a GlobalItem gives easy access to all h...
Definition: Modifier.cs:21
void AddAttachItem(Item item, Modifier modifier)
void AddDetachItem(Item item, Modifier modifier)

+ Here is the call graph for this function:

void Loot.Caching.ModifierCachePlayer.UpdateEquipsCache ( )
private

Definition at line 105 of file ModifierCacheVanilla.cs.

References Loot.LootModItem.GetActivePool().

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  }
Defines a modifier, which is an unloaded GlobalItem Making it a GlobalItem gives easy access to all h...
Definition: Modifier.cs:21
void AddAttachItem(Item item, Modifier modifier)
void AddDetachItem(Item item, Modifier modifier)

+ Here is the call graph for this function:

void Loot.Caching.ModifierCachePlayer.UpdateHeldItemCache ( )
private

Definition at line 45 of file ModifierCacheVanilla.cs.

References Loot.LootModItem.GetActivePool().

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  }
Defines a modifier, which is an unloaded GlobalItem Making it a GlobalItem gives easy access to all h...
Definition: Modifier.cs:21
void AddAttachItem(Item item, Modifier modifier)
static bool IsMouseUsable(Item item)
void AddDetachItem(Item item, Modifier modifier)

+ Here is the call graph for this function:

bool Loot.Caching.ModifierCachePlayer.UpdateMouseItemCache ( )
private

Definition at line 75 of file ModifierCacheVanilla.cs.

References Loot.LootModItem.GetActivePool().

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  {
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  }
Defines a modifier, which is an unloaded GlobalItem Making it a GlobalItem gives easy access to all h...
Definition: Modifier.cs:21
void AddAttachItem(Item item, Modifier modifier)
static bool IsMouseUsable(Item item)
void AddDetachItem(Item item, Modifier modifier)

+ Here is the call graph for this function:

void Loot.Caching.ModifierCachePlayer.UpdateVanityCache ( )
private

Definition at line 9 of file ModifierCacheVanilla.cs.

References Loot.LootModItem.GetActivePool(), Loot.Hacks.CheatedItemHackGlobalItem.GetInfo(), and Loot.Hacks.CheatedItemHackGlobalItem.IsCheated.

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  }
Defines a modifier, which is an unloaded GlobalItem Making it a GlobalItem gives easy access to all h...
Definition: Modifier.cs:21
void AddAttachItem(Item item, Modifier modifier)
void AddDetachItem(Item item, Modifier modifier)
Can detect if an item was activated via cheats
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...

+ Here is the call graph for this function:

Member Data Documentation

List<(Item, Modifier)> Loot.Caching.ModifierCachePlayer._attachList
private

Definition at line 42 of file ModifierCachePlayer.cs.

List<(Item, Modifier)> Loot.Caching.ModifierCachePlayer._detachList
private

Definition at line 41 of file ModifierCachePlayer.cs.

bool Loot.Caching.ModifierCachePlayer._forceEquipUpdate
private

Definition at line 38 of file ModifierCachePlayer.cs.

List<Type> Loot.Caching.ModifierCachePlayer._modifierEffects
private

Definition at line 40 of file ModifierCachePlayer.cs.

Item [] Loot.Caching.ModifierCachePlayer._oldCheatSheetEquips
private

Definition at line 39 of file ModifierCachePlayer.cs.

Item [] Loot.Caching.ModifierCachePlayer._oldEquips
private

Definition at line 36 of file ModifierCachePlayer.cs.

Item Loot.Caching.ModifierCachePlayer._oldMouseItem
private

Definition at line 35 of file ModifierCachePlayer.cs.

int Loot.Caching.ModifierCachePlayer._oldSelectedItem
private

Definition at line 34 of file ModifierCachePlayer.cs.

Item [] Loot.Caching.ModifierCachePlayer._oldVanityEquips
private

Definition at line 37 of file ModifierCachePlayer.cs.