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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        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);
 }
Ejemplo n.º 8
0
 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);
                 }
             }
         }
     }
 }