private void UnequipItem(InventoryItemInstance item, bool postMessage) { if (!item.Equipped) { throw new InvalidOperationException(); } EquipSlot slot = InventoryModel.GetItemSlot(item.ItemModel); if (slot != EquipSlot.None) { Equipped.Remove(slot); } //allow continuing even if it's not actually equippable, for fixing bugs //magazine logic if (item.ItemModel is RangedWeaponItemModel rwim && rwim.UseMagazine) { Inventory.AddItem(rwim.AType.ToString(), AmmoInMagazine[slot]); AmmoInMagazine[slot] = 0; } item.Equipped = false; if (!string.IsNullOrEmpty(item?.ItemModel?.Scripts?.OnUnequip)) { ScriptingModule.Call(item?.ItemModel?.Scripts?.OnUnequip, new ScriptExecutionContext() { Caller = this }, item.ItemModel, item); } UpdateStats(); if (postMessage) { QdmsMessageBus.Instance.PushBroadcast(new QdmsKeyValueMessage("RpgChangeWeapon", "Slot", slot)); } }
public override string GetStatsString() { return($"<b>Ranged Weapon ({SkillType})</b>\n" + base.GetStatsString() + $"\nSpeed: {(1 / FireInterval):F1}\nMagazine: {MagazineSize}\nAmmo Type{InventoryModel.GetNiceName(AType.ToString())}"); }
static void ListInventoryDefs() { ConsoleModule.WriteLine(InventoryModel.GetDefsList()); }
static void PrintInventoryModel(string model) { ConsoleModule.WriteLine(DebugUtils.JsonStringify(InventoryModel.GetModel(model))); }
private void LoadInventoryModels() { InventoryModel.Load(); }