static bool Prefix(PLPawnItem __instance, ref uint __result) { uint num; uint num2; if (__instance.SubType > 63) { ItemPluginManager.Instance.GetActualMainAndSubTypesFromSubtype(__instance.SubType, out int MainType, out int SubType); num = (uint)(MainType & 63); num2 = (uint)((uint)(SubType & 63) << 6); if (Global.DebugLogging) { Logger.Info($"GetHash found subtype greater than 63 ({__instance.SubType}). output is {MainType}, {SubType}"); } } else { num = (uint)(__instance.PawnItemType & (EPawnItemType)63); num2 = (uint)((uint)(__instance.SubType & 63) << 6); } uint num3 = (uint)((uint)(__instance.Level & 15) << 12); __result = (num | num2 | num3); return(false); }
static bool Prefix(PLPawnInventoryBase __instance, int inNetID, int inType, int inSubType, int inLevel, int inEquipID) { PLPawnItem itemAtNetID = __instance.GetItemAtNetID(inNetID); if (itemAtNetID != null) { itemAtNetID.EquipID = inEquipID; itemAtNetID.Level = inLevel; itemAtNetID.SubType = inSubType; } else { PLPawnItem plpawnItem = ItemPluginManager.CreatePawnItem(inType, inSubType, inLevel); if (plpawnItem != null) { plpawnItem.NetID = inNetID; plpawnItem.EquipID = inEquipID; __instance.GetType().GetMethod("AddItem_Internal", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { inNetID, plpawnItem }); } } if (PLNetworkManager.Instance.IsInternalBuild) { Logger.Info("UpdateItem: player: " + ((__instance.PlayerOwner != null) ? __instance.PlayerOwner.GetPlayerName(false) : "null") + " equipID: " + inEquipID.ToString()); } if (PLTabMenu.Instance != null) { PLTabMenu.Instance.ShouldRecreateLocalInventory = true; } return(false); }
/// <summary> /// Creates Vanilla and Modded PLPawnItems /// </summary> /// <param name="Maintype">Maintype</param> /// <param name="Subtype">Subtype</param> /// <param name="level">Level</param> /// <returns>Vanilla or Modded PLPawnItem</returns> public static PLPawnItem CreatePawnItem(int Maintype, int Subtype, int level) { PLPawnItem InItem = null; if (Subtype > 63) { Instance.GetActualMainAndSubTypesFromSubtype(Subtype, out Maintype, out Subtype); } if (Maintype >= Instance.VanillaItemMaxType) { int MainTypeformodded = (Maintype - Instance.VanillaItemMaxType) * 64 + Subtype; if (MainTypeformodded <= Instance.ItemTypes.Count && MainTypeformodded > -1) { ItemMod ItemType = Instance.ItemTypes[MainTypeformodded]; InItem = ItemType.PLPawnItem; InItem.Level = level; InItem.SubType = 64 + ((Maintype - Instance.VanillaItemMaxType) * 64) + Subtype; Logger.Info($"CreatePawnItem gave item subtype {InItem.SubType}"); } } if (InItem == null) { InItem = PLPawnItem.CreateFromInfo((EPawnItemType)Maintype, Subtype, level); } return(InItem); }
public void GetActualMainAndSubTypesFromPawnItem(PLPawnItem InItem, out int MainType, out int SubType) { int InSubType = InItem.SubType; if (InSubType > 63) { SubType = InSubType % 64; MainType = ((InSubType - 64 - SubType) / 64) + Instance.VanillaItemMaxType; } else { MainType = (int)InItem.PawnItemType; SubType = InSubType; } }
static bool Prefix(PLPawnItem __instance, ref uint __result) { uint num; uint num2; if (__instance.SubType > 63) { ItemModManager.Instance.GetActualMainAndSubTypesFromSubtype(__instance.SubType, out int MainType, out int SubType); num = (uint)(MainType & 63); num2 = (uint)((uint)(SubType & 63) << 6); } else { num = (uint)(__instance.PawnItemType & (EPawnItemType)63); num2 = (uint)((uint)(__instance.SubType & 63) << 6); } uint num3 = (uint)((uint)(__instance.Level & 15) << 12); __result = (num | num2 | num3); return(false); }
/// <summary> /// Creates Vanilla and Modded PLPawnItems /// </summary> /// <param name="Maintype">Maintype</param> /// <param name="Subtype">Subtype</param> /// <param name="level">Level</param> /// <returns>Vanilla or Modded PLPawnItem</returns> public static PLPawnItem CreatePawnItem(int Maintype, int Subtype, int level) { PLPawnItem InItem = null; if (Subtype > 63) { if (Global.DebugLogging) { Logger.Info("UpdateItem insubtype > 63"); } Instance.GetActualMainAndSubTypesFromSubtype(Subtype, out Maintype, out Subtype); } if (Maintype >= Instance.VanillaItemMaxType) { int MainTypeformodded = (Maintype - Instance.VanillaItemMaxType) * 64 + Subtype; if (Global.DebugLogging) { Logger.Info($"MainType for modded is {MainTypeformodded}"); } if (MainTypeformodded <= Instance.ItemTypes.Count && MainTypeformodded > -1) { if (Global.DebugLogging) { Logger.Info("Creating Item from list info"); } ItemPlugin ItemType = Instance.ItemTypes[MainTypeformodded]; InItem = ItemType.PLPawnItem; InItem.Level = level; InItem.SubType = 64 + ((Maintype - Instance.VanillaItemMaxType) * 64) + Subtype; Logger.Info($"CreatePawnItem gave item subtype {InItem.SubType}"); } } if (InItem == null) { InItem = PLPawnItem.CreateFromInfo((EPawnItemType)Maintype, Subtype, level); } return(InItem); }
static bool Prefix(int inHash, ref PLPawnItem __result) { PLPawnItem.GetPawnInfoFromHash(inHash, out uint inType, out uint inSubType, out uint inLevel); __result = ItemPluginManager.CreatePawnItem((int)inType, (int)inSubType, (int)inLevel); return(false); }
public static int Compare(PLPawnItem x, PLPawnItem y) { if (x == null) { if (y == null) { return(0); } else { return(-1); } } else { if (y == null) { return(1); } else { if (Global.sortmode == 0) { if ((int)x.PawnItemType == (int)y.PawnItemType) { if (x.SubType == y.SubType) { if (x.Level == y.Level) { return(0); } else if (x.Level > y.Level) { return(1); } else { return(-1); } } else if (x.SubType > y.SubType) { return(1); } else { return(-1); } } else if ((int)x.PawnItemType > (int)y.PawnItemType) { return(1); } else { return(-1); } } else if (Global.sortmode == 1) { return(x.GetItemName().CompareTo(y.GetItemName())); } else { if (x.PawnItemType == y.PawnItemType) { if (x.SubType == y.SubType) { if (x.Level == y.Level) { return(0); } else if (x.Level > y.Level) { return(1); } else { return(-1); } } else if (x.SubType > y.SubType) { return(1); } else { return(-1); } } else if (Global.ModifiedTypeOrder.IndexOf(x.PawnItemType) > Global.ModifiedTypeOrder.IndexOf(y.PawnItemType)) { return(1); } else { return(-1); } } } } }