예제 #1
0
        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));
            }
        }
예제 #2
0
 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())}");
 }
예제 #3
0
 static void ListInventoryDefs()
 {
     ConsoleModule.WriteLine(InventoryModel.GetDefsList());
 }
예제 #4
0
 static void PrintInventoryModel(string model)
 {
     ConsoleModule.WriteLine(DebugUtils.JsonStringify(InventoryModel.GetModel(model)));
 }
예제 #5
0
 private void LoadInventoryModels()
 {
     InventoryModel.Load();
 }