7 namespace Loot.ILEditing
12 internal class ItemPrefixPatch : ILEdit
14 public override void Apply(
bool dedServ)
16 IL.Terraria.Item.Prefix += ItemOnPrefix;
19 private void ItemOnPrefix(ILContext il)
21 var cursor =
new ILCursor(il);
24 if (!cursor.TryGotoNext(MoveType.Before,
26 i => i.MatchLdfld(
"Terraria.Item",
"accessory")))
30 cursor.Emit(OpCodes.Ldarg_0);
31 cursor.EmitDelegate<Func<Item, bool>>(IsArmor);
34 var retCursor = cursor.Clone();
39 retCursor.TryGotoNext(MoveType.After, i => i.OpCode == OpCodes.Ret || i.OpCode == OpCodes.Br);
42 cursor.Emit(OpCodes.Brtrue, retCursor.MarkLabel());
46 private bool IsArmor(Item item) => item.IsArmor();