コード例 #1
0
        ////// Hooks //////

        private string CharacterBody_GetDisplayName(On.RoR2.CharacterBody.orig_GetDisplayName orig, CharacterBody self)
        {
            var retv = orig(self);

            if (self.name == "ItemDroneBody(Clone)")
            {
                var ward = self.GetComponent <ItemWard>();
                if (!ward || ward.itemcounts.Count == 0)
                {
                    return(retv);
                }
                var idef = ItemCatalog.GetItemDef(ward.itemcounts.First().Key);
                if (idef == null)
                {
                    return(retv);
                }

                var color = "FFFFFF";
                var itd   = ItemTierCatalog.GetItemTierDef(idef.tier);
                if (itd)
                {
                    color = ColorCatalog.GetColorHexString(itd.colorIndex);
                }
                return($"{retv} (<color=#{color}>{Language.GetString(idef.nameToken)}</color>)");
            }
            return(retv);
        }
コード例 #2
0
        ////// Non-Public Methods //////

        private static int GetTotalItemTypes(Inventory inv)
        {
            if (validItemTypeCache == null)
            {
                validItemTypeCache = new HashSet <int>();
                for (var i = 0; i < inv.itemStacks.Length; i++)
                {
                    var idef = ItemCatalog.GetItemDef((ItemIndex)i);
                    if (idef == null || idef.hidden)
                    {
                        continue;
                    }
                    var itier = ItemTierCatalog.GetItemTierDef(idef.tier);
                    if (itier != null && itier.isDroppable)
                    {
                        validItemTypeCache.Add(i);
                    }
                }
            }

            int retv = 0;

            for (var i = 0; i < inv.itemStacks.Length; i++)
            {
                if (inv.itemStacks[i] > 0 && validItemTypeCache.Contains(i))
                {
                    retv++;
                }
            }

            return(retv);
        }
コード例 #3
0
        public void OnPointerClick(PointerEventData eventData)
        {
            KookehsDropItemMod.Logger.LogDebug("KDI: Pointer click, trying to send network message");
            var master = getMaster();

            if (!master.inventory.hasAuthority)
            {
                return;
            }

            var pickupIndex = getPickupIndex();
            var identity    = master.GetBody().gameObject.GetComponent <NetworkIdentity>();
            var pickupDef   = PickupCatalog.GetPickupDef(pickupIndex);

            if (pickupDef.itemIndex != ItemIndex.None)
            {
                if (!ItemTierCatalog.GetItemTierDef(pickupDef.itemTier).isDroppable)
                {
                    return;
                }
            }

            KookehsDropItemMod.Logger.LogDebug("KDI: Sending network message");

            DropItemMessage itemDropMessage = new DropItemMessage(identity.netId, pickupIndex);

            itemDropMessage.Send(NetworkDestination.Server);
        }
コード例 #4
0
 private Dictionary <string, string> GetItemOptions()
 {
     return(ItemCatalog.itemDefs
            .Where(el =>
     {
         if (el.hidden)
         {
             return false;
         }
         var tier = ItemTierCatalog.GetItemTierDef(el.tier);
         return tier && tier.isDroppable;
     })
            .ToDictionary(el => el.name, el => Language.GetString(el.nameToken)));
 }