private static bool ExecuteSellAllItems(SPInventoryVM __instance, ref InventoryLogic ____inventoryLogic, ref CharacterObject ____currentCharacter) { var golds = 0; var leftGold = __instance.LeftInventoryOwnerGold; __instance.IsRefreshed = false; for (int i = __instance.RightItemListVM.Count - 1; i >= 0; i--) { SPItemVM spitemVM = __instance.RightItemListVM[i]; if (spitemVM != null && !spitemVM.IsFiltered && !spitemVM.IsLocked) { golds += spitemVM.ItemCost * spitemVM.ItemRosterElement.Amount; if (__instance.IsTrading && golds > leftGold) { break; } TransferCommand command = TransferCommand.Transfer(spitemVM.ItemRosterElement.Amount, InventoryLogic.InventorySide.PlayerInventory, InventoryLogic.InventorySide.OtherInventory, spitemVM.ItemRosterElement, EquipmentIndex.None, EquipmentIndex.None, ____currentCharacter, !__instance.IsInWarSet); ____inventoryLogic.AddTransferCommand(command); } } Traverse.Create(__instance).Method("RefreshInformationValues").GetValue(); Traverse.Create(__instance).Method("ExecuteRemoveZeroCounts").GetValue(); __instance.IsRefreshed = true; return(false); }
/// <summary> /// Equips the character's equipment with the best equipment /// </summary> /// <param name="equipment">character's equipment</param> /// <param name="isCivilian">equipment civilian type</param> private void EquipCharacterEquipment(Equipment equipment, bool isCivilian) { // Loops through the character's equipment to equip the character with the best items for (EquipmentIndex equipmentIndex = EquipmentIndex.WeaponItemBeginSlot; equipmentIndex < EquipmentIndex.NumEquipmentSetSlots; equipmentIndex++) { if (equipment[equipmentIndex].IsEmpty && equipmentIndex < EquipmentIndex.NonWeaponItemBeginSlot || equipment[EquipmentIndex.Horse].IsEmpty && equipmentIndex == EquipmentIndex.HorseHarness) { continue; } EquipmentElement bestLeftEquipmentElement; EquipmentElement bestRightEquipmentElement; // Gets the best item from sides that are unlocked if (!SettingsLoader.Instance.Settings.IsLeftPanelLocked) { bestLeftEquipmentElement = GetBetterItemFromSide(_inventory.LeftItemListVM, equipment[equipmentIndex], equipmentIndex, isCivilian); } if (!SettingsLoader.Instance.Settings.IsRightPanelLocked) { bestRightEquipmentElement = GetBetterItemFromSide(_inventory.RightItemListVM, equipment[equipmentIndex], equipmentIndex, isCivilian); } // Unequip character's current equipment item if (!equipment[equipmentIndex].IsEmpty && (bestLeftEquipmentElement.Item != null || bestRightEquipmentElement.Item != null)) { TransferCommand transferCommand = TransferCommand.Transfer( 1, InventoryLogic.InventorySide.Equipment, InventoryLogic.InventorySide.PlayerInventory, new ItemRosterElement(equipment[equipmentIndex], 1), equipmentIndex, EquipmentIndex.None, _characterData.GetCharacterObject(), isCivilian ); _inventoryLogic.AddTransferCommand(transferCommand); } if (bestLeftEquipmentElement.Item != null || bestRightEquipmentElement.Item != null) { if (ItemIndexCalculation(bestLeftEquipmentElement, equipmentIndex) > ItemIndexCalculation(bestRightEquipmentElement, equipmentIndex)) { TransferCommand equipCommand = TransferCommand.Transfer( 1, InventoryLogic.InventorySide.OtherInventory, InventoryLogic.InventorySide.Equipment, new ItemRosterElement(bestLeftEquipmentElement, 1), EquipmentIndex.None, equipmentIndex, _characterData.GetCharacterObject(), isCivilian ); EquipMessage(equipmentIndex); _inventoryLogic.AddTransferCommand(equipCommand); } else { TransferCommand equipCommand = TransferCommand.Transfer( 1, InventoryLogic.InventorySide.PlayerInventory, InventoryLogic.InventorySide.Equipment, new ItemRosterElement(bestRightEquipmentElement, 1), EquipmentIndex.None, equipmentIndex, _characterData.GetCharacterObject(), isCivilian ); EquipMessage(equipmentIndex); _inventoryLogic.AddTransferCommand(equipCommand); } } _inventory.ExecuteRemoveZeroCounts(); } _inventory.GetMethod("RefreshInformationValues"); }