/// <summary> /// Returns an ItemIndex when provided with a partial/invariant. /// </summary> /// <param name="name">Matches in order: (int)Index, Exact Alias, Exact Index, Partial Index, Partial Invariant</param> /// <returns>Returns the ItemIndex if a match is found, or returns ItemIndex.None</returns> public ItemIndex GetItemFromPartial(string name) { string langInvar; foreach (KeyValuePair <string, string[]> dictEnt in ItemAlias) { foreach (string alias in dictEnt.Value) { if (alias.ToUpper().Equals(name.ToUpper())) { name = dictEnt.Key.ToString(); } } } if (Enum.TryParse(name, true, out ItemIndex foundItem) && ItemCatalog.IsIndexValid(foundItem)) { Log.MessageInfo("RETURNED EXACT MATCH!"); return(foundItem); } StringBuilder s = new StringBuilder(); foreach (var item in ItemCatalog.allItems) { langInvar = GetLangInvar("ITEM_" + item.ToString().ToUpper() + "_NAME"); s.AppendLine(item.ToString() + ":" + langInvar + ":" + name.ToUpper()); if (item.ToString().ToUpper().Contains(name.ToUpper()) || langInvar.ToUpper().Contains(name.ToUpper())) { Log.MessageInfo(s); return(item); } } Log.MessageInfo(s); return(ItemIndex.None); }
public static ItemIndex ItemNameToIndex(string name) { if (Enum.TryParse(name, true, out ItemIndex foundItem) && ItemCatalog.IsIndexValid(foundItem)) { return(foundItem); } foreach (var itemIndex in ItemCatalog.allItems) { var item = ItemCatalog.GetItemDef(itemIndex); if (item.name.ToUpper().Contains(name.ToUpper())) { return(item.itemIndex); } } return(ItemIndex.None); }
private static void CCEvoSetItem(ConCommandArgs args) { if (args.Count < 1) { TILER2Plugin._logger.LogError("evo_setitem: missing argument 1 (item ID)!"); return; } int icnt; if (args.Count > 1) { int?icntArg = args.TryGetArgInt(1); if (!icntArg.HasValue || icntArg < 0) { TILER2Plugin._logger.LogError("evo_setitem: argument 2 (item count) must be a positive integer!"); return; } icnt = (int)icntArg; } else { icnt = 1; } ItemIndex item; string itemSearch = args.TryGetArgString(0); if (itemSearch == null) { TILER2Plugin._logger.LogError("evo_setitem: could not read argument 1 (item ID)!"); return; } else if (int.TryParse(itemSearch, out int itemInd)) { item = (ItemIndex)itemInd; if (!ItemCatalog.IsIndexValid(item)) { TILER2Plugin._logger.LogError("evo_setitem: argument 1 (item ID as integer ItemIndex) is out of range; no item with that ID exists!"); return; } } else { var results = ItemCatalog.allItems.Where((ind) => { var iNameToken = ItemCatalog.GetItemDef(ind).nameToken; var iName = Language.GetString(iNameToken); return(iName.ToUpper().Contains(itemSearch.ToUpper())); }); if (results.Count() < 1) { TILER2Plugin._logger.LogError("evo_setitem: argument 1 (item ID as string ItemName) not found in ItemCatalog; no item with a name containing that string exists!"); return; } else { if (results.Count() > 1) { TILER2Plugin._logger.LogWarning("evo_setitem: argument 1 (item ID as string ItemName) matched multiple items; using first."); } item = results.First(); } } Inventory inv = MonsterTeamGainsItemsArtifactManager.monsterTeamInventory; if (inv == null) { TILER2Plugin._logger.LogError("evo_setitem: Artifact of Evolution must be enabled!"); return; } int diffCount = icnt - inv.GetItemCount(item); inv.GiveItem(item, diffCount); TILER2Plugin._logger.LogMessage("evo_setitem: " + (diffCount > 0 ? "added " : "removed ") + Mathf.Abs(diffCount) + "x " + Language.GetString(ItemCatalog.GetItemDef(item).nameToken)); }
private static void ConCmdYeet(ConCommandArgs args) { if (!args.senderBody) { _logger.LogError("ConCmdYeet: called by nonexistent player!"); return; } if (args.Count < 1) { _logger.LogError("ConCmdYeet: not enough arguments! Need at least 1 (item ID), received 0."); return; } bool isEquipment = args.TryGetArgBool(1) ?? false; if (isEquipment ? preventEquipment : preventItems) { return; } int rawInd; string itemSearch = args.TryGetArgString(0); if (itemSearch == null) { _logger.LogError("ConCmdYeet: could not read first argument (item ID)!"); return; } else if (int.TryParse(itemSearch, out rawInd)) { if (isEquipment) { if (!EquipmentCatalog.IsIndexValid((EquipmentIndex)rawInd)) { _logger.LogError("ConCmdYeet: first argument (equipment ID as integer EquipmentIndex) is out of range; no equipment with that ID exists!"); return; } } else { if (!ItemCatalog.IsIndexValid((ItemIndex)rawInd)) { _logger.LogError("ConCmdYeet: first argument (item ID as integer ItemIndex) is out of range; no item with that ID exists!"); return; } } } else { if (isEquipment) { var results = EquipmentCatalog.allEquipment.Where((searchInd) => { var iNameToken = EquipmentCatalog.GetEquipmentDef(searchInd).nameToken; var iName = Language.GetString(iNameToken); return(iName.ToUpper().Contains(itemSearch.ToUpper())); }); if (results.Count() < 1) { _logger.LogError("ConCmdYeet: first argument (equipment ID as string EquipmentName) not found in EquipmentCatalog; no equipment with a name containing that string exists!"); return; } else { if (results.Count() > 1) { _logger.LogWarning("ConCmdYeet: first argument (item ID as string EquipmentName) matched multiple equipments; using first."); } rawInd = (int)results.First(); } } else { var results = ItemCatalog.allItems.Where((searchInd) => { var iNameToken = ItemCatalog.GetItemDef(searchInd).nameToken; var iName = Language.GetString(iNameToken); return(iName.ToUpper().Contains(itemSearch.ToUpper())); }); if (results.Count() < 1) { _logger.LogError("ConCmdYeet: first argument (item ID as string ItemName) not found in ItemCatalog; no item with a name containing that string exists!"); return; } else { if (results.Count() > 1) { _logger.LogWarning("ConCmdYeet: first argument (item ID as string ItemName) matched multiple items; using first."); } rawInd = (int)results.First(); } } } float throwForce = Mathf.Lerp(lowThrowForce, highThrowForce, Mathf.Clamp01(args.TryGetArgFloat(2) ?? 0f)); if (isEquipment) { if (args.senderBody.inventory.GetEquipmentIndex() != (EquipmentIndex)rawInd) { _logger.LogWarning("ConCmdYeet: someone's trying to drop an equipment they don't have"); return; } var edef = EquipmentCatalog.GetEquipmentDef((EquipmentIndex)rawInd); args.senderBody.inventory.SetEquipmentIndex(EquipmentIndex.None); args.senderBody.inventory.RemoveItem((ItemIndex)rawInd); PickupDropletController.CreatePickupDroplet( PickupCatalog.FindPickupIndex((EquipmentIndex)rawInd), args.senderBody.inputBank.aimOrigin, args.senderBody.inputBank.aimDirection * throwForce); } else { int count; if (Compat_TILER2.enabled) { count = Compat_TILER2.GetRealItemCount(args.senderBody.inventory, (ItemIndex)rawInd); } else { count = args.senderBody.inventory.GetItemCount((ItemIndex)rawInd); } if (count < 1) { _logger.LogWarning("ConCmdYeet: someone's trying to drop an item they don't have any of"); return; } var idef = ItemCatalog.GetItemDef((ItemIndex)rawInd); if (idef.hidden || !idef.canRemove || (idef.tier == ItemTier.Lunar && preventLunar) || idef.tier == ItemTier.NoTier) { return; } args.senderBody.inventory.RemoveItem((ItemIndex)rawInd); var obj = GameObject.Instantiate(PickupDropletController.pickupDropletPrefab, args.senderBody.inputBank.aimOrigin, Quaternion.identity); obj.AddComponent <PickupDropletNoCommandFlag>(); obj.GetComponent <PickupDropletController>().NetworkpickupIndex = PickupCatalog.FindPickupIndex((ItemIndex)rawInd); var rbdy = obj.GetComponent <Rigidbody>(); rbdy.velocity = args.senderBody.inputBank.aimDirection * throwForce; rbdy.AddTorque(Random.Range(150f, 120f) * Random.onUnitSphere); NetworkServer.Spawn(obj); } }