////// 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); }
////// 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); }
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); }
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))); }