@@ -68,6 +68,9 @@ public abstract class GearAnalyzer<TType>
68
68
69
69
protected string ItemTypeDescriptor ;
70
70
71
+ protected Dictionary < string , ILeveledItemGetter > GeneratedLeveledItemsCache { get ; init ; }
72
+
73
+ protected Dictionary < string , TType > GeneratedItemCache { get ; init ; }
71
74
72
75
public void Analyze ( )
73
76
{
@@ -157,7 +160,7 @@ public void Generate()
157
160
var levelForName = ench . Entry . Data . Level ;
158
161
var topLevelListEditorId = $ "HAL_TOP_LList_{ ench . Resolved . EditorID } _Level_{ levelForName } ";
159
162
LeveledItem topLevelList ;
160
- if ( State . LinkCache . TryResolve < ILeveledItemGetter > ( topLevelListEditorId , out var topLeveledListGetter ) )
163
+ if ( GeneratedLeveledItemsCache . TryGetValue ( topLevelListEditorId , out var topLeveledListGetter ) )
161
164
{
162
165
topLevelList = State . PatchMod . LeveledItems . GetOrAddAsOverride ( topLeveledListGetter ) ;
163
166
}
@@ -168,6 +171,8 @@ public void Generate()
168
171
topLevelList . Entries = [ ] ;
169
172
topLevelList . EditorID = topLevelListEditorId ;
170
173
topLevelList . Flags = GetLeveledItemFlags ( ) ;
174
+
175
+ GeneratedLeveledItemsCache . Add ( topLevelList . EditorID , topLevelList ) ;
171
176
172
177
for ( var i = 0 ; i < GearSettings . BaseItemChanceWeight ; i ++ )
173
178
{
@@ -183,7 +188,7 @@ public void Generate()
183
188
var leveledItemEditorId =
184
189
$ "HAL_SUB_LList_{ rarityClass . Label } _{ ench . Resolved . EditorID } _Level_{ levelForName } ";
185
190
LeveledItem leveledItem ;
186
- if ( State . LinkCache . TryResolve < ILeveledItemGetter > ( leveledItemEditorId ,
191
+ if ( GeneratedLeveledItemsCache . TryGetValue ( leveledItemEditorId ,
187
192
out var leveledItemGetter ) )
188
193
{
189
194
leveledItem = State . PatchMod . LeveledItems . GetOrAddAsOverride ( leveledItemGetter ) ;
@@ -195,6 +200,8 @@ public void Generate()
195
200
leveledItem . Entries = [ ] ;
196
201
leveledItem . EditorID = leveledItemEditorId ;
197
202
leveledItem . Flags = GetLeveledItemFlags ( ) ;
203
+
204
+ GeneratedLeveledItemsCache [ leveledItem . EditorID ] = leveledItem ;
198
205
199
206
for ( var i = 0 ; i < VarietyCountPerRarity ; i ++ )
200
207
{
@@ -247,11 +254,6 @@ protected FormKey GenerateEnchantment(int rarity)
247
254
var objectEffectEditorId = EditorIdPrefix + "ENCH_" + RarityClasses [ rarity ] . Label . ToUpper ( ) + "_" +
248
255
GetEnchantmentsStringForName ( effects , true ) ;
249
256
250
- if ( State . LinkCache . TryResolve < IObjectEffectGetter > ( objectEffectEditorId , out var objectEffectGetter ) )
251
- {
252
- return objectEffectGetter . FormKey ;
253
- }
254
-
255
257
var newObjectEffectGetter = State . PatchMod . ObjectEffects . AddNewLocking ( State . PatchMod . GetNextFormKey ( ) ) ;
256
258
newObjectEffectGetter . DeepCopyIn ( effects . First ( ) . Enchantment ) ;
257
259
newObjectEffectGetter . EditorID = objectEffectEditorId ;
@@ -264,6 +266,7 @@ protected FormKey GenerateEnchantment(int rarity)
264
266
ChosenRpgEnchants [ rarity ] . Add ( RarityClasses [ rarity ] . Label + " " + GetEnchantmentsStringForName ( effects ) ,
265
267
newObjectEffectGetter . FormKey ) ;
266
268
ChosenRpgEnchantEffects [ rarity ] . Add ( newObjectEffectGetter . FormKey , effects ) ;
269
+
267
270
return newObjectEffectGetter . FormKey ;
268
271
}
269
272
0 commit comments