using System;
using System.Collections.Generic;
using DarkTonic.MasterAudio;
using PixelCrushers.DialogueSystem;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.InputSystem;
using UnityEngine.UI;

// Token: 0x020000B3 RID: 179
public class Inventory : MonoBehaviour
{
	// Token: 0x06001094 RID: 4244 RVA: 0x0013C108 File Offset: 0x0013A308
	public void Setup()
	{
		this.GetGrid();
		this.ToggleEquipmentHover(false);
		GameObject gameObject = new GameObject("Inventory Look At");
		this.lookAt = gameObject.transform;
		this.lookAt.SetParent(Links.x.camera3D.gameObject.transform, true);
		this.groundItems = this.groundBag.worldItems;
		if (this.allSockets.Count == 0)
		{
			this.GetSockets();
		}
		this.splitter.CloseMenu();
		Links.x.arrowKit.gameObject.SetActive(false);
		this.peddlerFX.gameObject.SetActive(false);
	}

	// Token: 0x06001095 RID: 4245 RVA: 0x0013C1B0 File Offset: 0x0013A3B0
	public void GetSockets()
	{
		int count = Links.x.library.sockets.Count;
		List<Library.Sockets> list = Links.x.library.sockets;
		for (int i = 0; i < count; i++)
		{
			this.allSockets.Add(list[i]);
			if (this.allSockets[i]._SocketLevel >= 1)
			{
				if (this.allSockets[i]._Category == "Gun")
				{
					this.socketLevel1Range.Add(this.allSockets[i]);
				}
				else if (this.allSockets[i]._Category == "Melee")
				{
					this.socketLevel1Melee.Add(this.allSockets[i]);
				}
				else
				{
					this.socketLevel1Armor.Add(this.allSockets[i]);
				}
			}
			if (this.allSockets[i]._SocketLevel >= 2)
			{
				if (this.allSockets[i]._Category == "Gun")
				{
					this.socketLevel2Range.Add(this.allSockets[i]);
				}
				else if (this.allSockets[i]._Category == "Melee")
				{
					this.socketLevel2Melee.Add(this.allSockets[i]);
				}
				else
				{
					this.socketLevel2Armor.Add(this.allSockets[i]);
				}
			}
			if (this.allSockets[i]._SocketLevel >= 3)
			{
				if (this.allSockets[i]._Category == "Range")
				{
					this.socketLevel3Range.Add(this.allSockets[i]);
				}
				else if (this.allSockets[i]._Category == "Melee")
				{
					this.socketLevel3Melee.Add(this.allSockets[i]);
				}
				else
				{
					this.socketLevel3Armor.Add(this.allSockets[i]);
				}
			}
		}
	}

	// Token: 0x06001096 RID: 4246 RVA: 0x0013C3D8 File Offset: 0x0013A5D8
	public void GetGrid()
	{
		if (this.gridImg.Count == 0)
		{
			foreach (object obj in this.gridTr)
			{
				Transform transform = (Transform)obj;
				if (transform != this.gridTr)
				{
					this.gridImg.Add(transform.gameObject.GetComponent<Image>());
					this.gridTrs.Add(transform);
					this.gridState.Add(false);
					transform.gameObject.GetComponent<Image>().sprite = this.emptySprite;
				}
			}
		}
	}

	// Token: 0x06001097 RID: 4247 RVA: 0x0013C48C File Offset: 0x0013A68C
	public global::Item GetBagItem(int index)
	{
		return this.bagItems[index];
	}

	// Token: 0x06001098 RID: 4248 RVA: 0x0013C49C File Offset: 0x0013A69C
	public global::Item GetBagItem(int index, Character party)
	{
		InventoryContainer inventoryContainer = null;
		this.tempBagItems = this.bagItems;
		if (party == this.bag1.character)
		{
			inventoryContainer = this.bag1;
		}
		if (party == this.bag2.character)
		{
			inventoryContainer = this.bag2;
		}
		if (party == this.bag3.character)
		{
			inventoryContainer = this.bag3;
		}
		if (party == this.bag4.character)
		{
			inventoryContainer = this.bag4;
		}
		this.bagItems = inventoryContainer.bagItems;
		global::Item item = this.bagItems[index];
		this.bagItems = this.tempBagItems;
		return item;
	}

	// Token: 0x06001099 RID: 4249 RVA: 0x0013C543 File Offset: 0x0013A743
	public int GetBagIndex(global::Item item)
	{
		return this.bagItems.IndexOf(item);
	}

	// Token: 0x0600109A RID: 4250 RVA: 0x0013C554 File Offset: 0x0013A754
	public int GetBagIndex(global::Item item, Character party)
	{
		InventoryContainer inventoryContainer = null;
		this.tempBagItems = this.bagItems;
		if (party == this.bag1.character)
		{
			inventoryContainer = this.bag1;
		}
		if (party == this.bag2.character)
		{
			inventoryContainer = this.bag2;
		}
		if (party == this.bag3.character)
		{
			inventoryContainer = this.bag3;
		}
		if (party == this.bag4.character)
		{
			inventoryContainer = this.bag4;
		}
		this.bagItems = inventoryContainer.bagItems;
		int num = this.bagItems.IndexOf(item);
		this.bagItems = this.tempBagItems;
		return num;
	}

	// Token: 0x0600109B RID: 4251 RVA: 0x0013C5FC File Offset: 0x0013A7FC
	public void SetBagSockets(global::Item item)
	{
		int num = this.bagItems.IndexOf(item);
		this.socketA[num] = item.socketA;
		this.socketB[num] = item.socketB;
	}

	// Token: 0x0600109C RID: 4252 RVA: 0x0013C63C File Offset: 0x0013A83C
	public void SetBagSocketsEquipped(ItemEquipped itemEquipped)
	{
		int equipIndex = itemEquipped.equipIndex;
		this.socketA[equipIndex] = itemEquipped.socketA;
		this.socketB[equipIndex] = itemEquipped.socketB;
	}

	// Token: 0x0600109D RID: 4253 RVA: 0x0013C674 File Offset: 0x0013A874
	public int GetEquippedID(ItemEquipped itemEquipped)
	{
		return itemEquipped.equipIndex;
	}

	// Token: 0x0600109E RID: 4254 RVA: 0x0013C67C File Offset: 0x0013A87C
	public int GetBagAmt(int index)
	{
		if (index < this.bagAmount.Count)
		{
			return 0;
		}
		return this.bagAmount[index];
	}

	// Token: 0x0600109F RID: 4255 RVA: 0x0013C69A File Offset: 0x0013A89A
	public void SetBagAmt(int index, int num, Character character)
	{
		if (character.inventoryBag)
		{
			character.inventoryBag.SetBagAmt(index, num);
		}
	}

	// Token: 0x060010A0 RID: 4256 RVA: 0x0013C6B6 File Offset: 0x0013A8B6
	public void SetBagAmt(global::Item item, int num, Character character)
	{
		if (character.inventoryBag)
		{
			character.inventoryBag.SetBagAmt(item, num);
		}
	}

	// Token: 0x060010A1 RID: 4257 RVA: 0x0013C6D4 File Offset: 0x0013A8D4
	public void SwitchCharacter()
	{
		if (this.openBag)
		{
			this.openBag.Close();
		}
		this.bag1.Close();
		this.bag2.Close();
		this.bag3.Close();
		this.bag4.Close();
		this.ReleaseGroundList();
		this.UpdateMisc();
		this.GetBagLists(Links.x.characterSheet.character);
		if (this.openBag)
		{
			this.openBag.Open();
			this.openBag.UpdateItemInteractableState(true);
		}
		this.CheckForExtras();
		for (int i = 0; i < this.equipImages.Length; i++)
		{
			if (this.equipImages[i])
			{
				this.equipImages[i].enabled = false;
			}
		}
		this.DeleteRacks();
		this.repairing = false;
		this.repairItem = null;
		this.repairType = "";
		if (Links.x.characterSheet.repairInstructions)
		{
			Links.x.characterSheet.repairInstructions.enabled = false;
		}
		this.OpenGroundList();
		if (this.selectedPlayer.inventoryTime > 0f && Records.x.InCombat(false))
		{
			this.selectedPlayer.characterSheetPortrait.time.SetActive(true);
			this.selectedPlayer.characterSheetPortrait.timeText.text = this.selectedPlayer.inventoryTime.ToString();
			return;
		}
		this.selectedPlayer.characterSheetPortrait.time.SetActive(false);
	}

	// Token: 0x060010A2 RID: 4258 RVA: 0x0013C864 File Offset: 0x0013AA64
	public void DeleteRacks()
	{
		if (this.slotAmmo1.childCount > 0)
		{
			GameObject gameObject = this.slotAmmo1.GetChild(0).gameObject;
			ItemEquipped component = gameObject.GetComponent<ItemEquipped>();
			string text = component.invRow._CharacterModel;
			text += "_clump";
			component.ReturnToArchives();
			Links.x.archives.RecycleItemBody(gameObject, text);
		}
		if (this.slotAmmo2.childCount > 0)
		{
			GameObject gameObject2 = this.slotAmmo2.GetChild(0).gameObject;
			ItemEquipped component2 = gameObject2.GetComponent<ItemEquipped>();
			string text2 = component2.invRow._CharacterModel;
			text2 += "_clump";
			component2.ReturnToArchives();
			Links.x.archives.RecycleItemBody(gameObject2, text2);
		}
		if (this.slotAmmo3.childCount > 0)
		{
			GameObject gameObject3 = this.slotAmmo3.GetChild(0).gameObject;
			ItemEquipped component3 = gameObject3.GetComponent<ItemEquipped>();
			string text3 = component3.invRow._CharacterModel;
			text3 += "_clump";
			component3.ReturnToArchives();
			Links.x.archives.RecycleItemBody(gameObject3, text3);
		}
		if (this.slotAlt1.childCount > 0)
		{
			GameObject gameObject4 = this.slotAlt1.GetChild(0).gameObject;
			ItemEquipped component4 = gameObject4.GetComponent<ItemEquipped>();
			string characterModel = component4.invRow._CharacterModel;
			component4.ReturnToArchives();
			Links.x.archives.RecycleItemBody(gameObject4, characterModel);
		}
		if (this.slotAlt2.childCount > 0)
		{
			GameObject gameObject5 = this.slotAlt2.GetChild(0).gameObject;
			ItemEquipped component5 = gameObject5.GetComponent<ItemEquipped>();
			string characterModel2 = component5.invRow._CharacterModel;
			component5.ReturnToArchives();
			Links.x.archives.RecycleItemBody(gameObject5, characterModel2);
		}
		if (this.slotAlt3.childCount > 0)
		{
			GameObject gameObject6 = this.slotAlt3.GetChild(0).gameObject;
			ItemEquipped component6 = gameObject6.GetComponent<ItemEquipped>();
			string characterModel3 = component6.invRow._CharacterModel;
			component6.ReturnToArchives();
			Links.x.archives.RecycleItemBody(gameObject6, characterModel3);
		}
	}

	// Token: 0x060010A3 RID: 4259 RVA: 0x0013CA5B File Offset: 0x0013AC5B
	public void CreateFist(int equipIndex, bool getlists, Character party, Transform par, bool updateCharacter)
	{
		if (party.inventoryBag)
		{
			party.inventoryBag.CreateFist(equipIndex, par, updateCharacter);
		}
	}

	// Token: 0x060010A4 RID: 4260 RVA: 0x0013CA7A File Offset: 0x0013AC7A
	public void UpdateEquipmentSlots()
	{
	}

	// Token: 0x060010A5 RID: 4261 RVA: 0x0013CA7C File Offset: 0x0013AC7C
	public void UpdateGroundListGrid()
	{
		this.groundGrid.cellSize = new Vector2(22.1f, 31f);
		this.groundGrid.cellSize = new Vector2(22f, 31f);
	}

	// Token: 0x060010A6 RID: 4262 RVA: 0x0013CAB4 File Offset: 0x0013ACB4
	private void Update()
	{
		if (!Records.x.removeControls && Links.x.gaia.sceneLoaded)
		{
			Vector2 vector = new Vector2(Input.mousePosition.x / (float)Screen.width, Input.mousePosition.y / (float)Screen.height);
			float num = 0.01f;
			if (Input.GetMouseButtonDown(0))
			{
				this.movedMouse = true;
				this.clickCount++;
				if (this.clickCount == 2)
				{
					if (Time.realtimeSinceStartup < this.clickTime + 0.3f && Vector2.Distance(vector, this.prevClickPosition) < num)
					{
						this.doubleClick = true;
						this.clickTime = Time.realtimeSinceStartup;
					}
					else
					{
						this.clickCount = 0;
						this.doubleClick = false;
					}
				}
				else if (this.clickCount == 1)
				{
					this.clickTime = Time.realtimeSinceStartup;
					this.prevClickPosition = vector;
				}
			}
			if (Vector2.Distance(vector, this.prevClickPosition) >= num && Input.GetMouseButton(0))
			{
				this.movedMouse = true;
			}
			if ((this.clickCount > 0 || this.doubleClick) && (Time.realtimeSinceStartup >= this.clickTime + 0.3f || Vector2.Distance(vector, this.prevClickPosition) >= num))
			{
				this.doubleClick = false;
				this.clickCount = 0;
			}
			if (this.selectedPlayer && !Links.x.characterSheet.levelingUp && !Links.x.characterSheet.minstrel)
			{
				global::Item item = null;
				if (Links.x.joy)
				{
					bool flag = false;
					GameObject currentEventObject = Links.x.gameplay.currentEventObject;
					global::Item item2 = null;
					if (currentEventObject)
					{
						string name = Links.x.gameplay.currentEventObject.name;
						bool flag2 = false;
						if (name.Contains("_Grid_"))
						{
							if (Links.x.gameplay.currentEventObject.transform.parent.gameObject.name.Contains("Merchant") && this.gridTrsMisc != null)
							{
								flag2 = true;
								int num2 = this.gridTrsMisc.IndexOf(currentEventObject.transform);
								if (num2 > -1)
								{
									this.merchantItems = Links.x.merchant.items;
									for (int i = 0; i < this.merchantItems.Count; i++)
									{
										if (!flag && this.merchantItems[i])
										{
											this.localImg = this.merchantItems[i].gridImg;
											for (int j = 0; j < this.localImg.Count; j++)
											{
												if (this.localImg[j] == num2)
												{
													flag = true;
													item2 = this.merchantItems[i];
													break;
												}
											}
										}
									}
								}
							}
							else
							{
								int num3 = this.gridTrs.IndexOf(currentEventObject.transform);
								if (num3 > -1)
								{
									for (int k = 0; k < this.bagItems.Count; k++)
									{
										if (!flag && this.bagItems[k])
										{
											this.localImg = this.bagItems[k].gridImg;
											for (int l = 0; l < this.localImg.Count; l++)
											{
												if (this.localImg[l] == num3)
												{
													flag = true;
													item2 = this.bagItems[k];
													break;
												}
											}
										}
									}
								}
							}
						}
						item = item2;
						if (item2)
						{
							bool flag3 = true;
							if (this.dragging && this.dragItem)
							{
								flag3 = false;
								if (item2.isEquipped)
								{
									flag3 = true;
								}
								if (this.draggingSocket && !this.fromSecondaryBag && this.CheckSocket(this.dragItem, item2))
								{
									Debug.Log("Can drag hover");
									flag3 = true;
								}
								if (this.dragItem.invRow._Stackable && item2.invRow._Stackable && !this.dragItem.forSale && !item2.forSale && item2.ID == this.dragItem.ID && item2.stackSize + this.dragItem.stackSize <= item2.invRow._MaxStackSize && !item2.inGroundMenu && !item2.forSale)
								{
									flag3 = true;
								}
							}
							if (!flag3)
							{
								item2 = null;
							}
							if (item2)
							{
								this.hitItem = item2;
								if ((this.mineralizing || this.repairing) && (Links.x.characterSheet.pagan || Links.x.characterSheet.blacksmith))
								{
									this.SetRepairMessage();
								}
								if (this.hitItem != this.prevHitItem && !this.hitItem.noDrag)
								{
									if (this.hitItem != this.prevDragItem)
									{
										this.prevDragItem = null;
									}
									if (this.prevHitItem != null)
									{
										this.prevHitItem.InventoryHoverOut(this.prevHitItem.forSale);
										if (!this.prevHitItem.inGroundMenu)
										{
											Color color = this.prevHitItem.backImage.color;
											color.a = 0.4f;
											this.prevHitItem.backImage.color = color;
										}
									}
									Links.x.inventory.SetDragMessageText("Hover", this.hitItem);
									this.hitItem.InventoryHoverIn(this.hitItem.forSale);
									if (!this.hitItem.inGroundMenu)
									{
										Color color2 = this.hitItem.backImage.color;
										color2.a = 0.55f;
										this.hitItem.backImage.color = color2;
									}
									if (item2 != this.prevDragItem)
									{
										this.OpenTooltip(this.hitItem);
									}
								}
								else
								{
									this.prevDragItem = null;
								}
								this.prevHitItem = this.hitItem;
								Links.x.gameplay.uiCanClick = true;
								if (!this.dragging && Links.x.gameplay.actionStart && !this.repairing && !this.mineralizing && !this.splitter.open)
								{
									if (!flag2)
									{
										this.startDragObjectScript = this.hitItem.bag;
										this.fromSecondaryBag = false;
									}
									else
									{
										this.startDragObjectScript = this.merchantBag;
										this.fromSecondaryBag = true;
									}
									this.PrepareDrag();
									this.swapping = false;
									this.repairing = false;
									this.mineralizing = false;
								}
							}
							else
							{
								this.hitItem = null;
								this.prevHitItem = null;
							}
						}
						else
						{
							this.hitItem = null;
							if (this.prevHitItem)
							{
								if (this.dragging)
								{
									this.SetDragMessageText("Dragging", this.prevHitItem);
								}
								else
								{
									this.SetDragMessageText("", this.prevHitItem);
								}
								this.prevHitItem.InventoryHoverOut(this.prevHitItem.forSale);
								if (!this.prevHitItem.inGroundMenu)
								{
									Color color3 = this.prevHitItem.backImage.color;
									color3.a = 0.4f;
									this.prevHitItem.backImage.color = color3;
								}
								this.CloseTooltip();
								this.prevHitItem = null;
							}
						}
					}
					else
					{
						if (this.prevHitItem)
						{
							if (Links.x.inventory.dragging)
							{
								Links.x.inventory.SetDragMessageText("Dragging", this.prevHitItem);
							}
							else
							{
								Links.x.inventory.SetDragMessageText("", this.prevHitItem);
							}
							this.prevHitItem.InventoryHoverOut(this.prevHitItem.forSale);
							if (!this.prevHitItem.inGroundMenu)
							{
								Color color4 = this.prevHitItem.backImage.color;
								color4.a = 0.4f;
								this.prevHitItem.backImage.color = color4;
							}
							Links.x.inventory.CloseTooltip();
						}
						this.hitItem = null;
					}
					if (Links.x.joy)
					{
						if (!this.dragging && !this.hitItem && !this.hitEquipped && Links.x.joy)
						{
							Links.x.inventory.SetDragMessageText("", null);
						}
						float num4 = Links.x.fellowship.direction.x;
						if (Mathf.Abs(num4) > 0.2f && !this.inSlider)
						{
							float num5 = 150f;
							num4 *= -4f;
							num5 *= num4;
							Links.x.characterSheet.body.transform.Rotate(new Vector3(0f, num5 * Time.unscaledDeltaTime, 0f));
						}
					}
				}
				if (Links.x.mk || Links.x.joy)
				{
					if (Links.x.mk)
					{
						if (EventSystem.current.IsPointerOverGameObject() && !this.splitter.open && !this.spinning && !Links.x.characterSheet.rulesetOpen && !Links.x.characterSheet.statusEffectsOpen)
						{
							global::Item item3 = this.CheckGridHover();
							if (!item3 && this.hitGroundItem)
							{
								item3 = this.hitGroundItem;
							}
							if (item3)
							{
								this.hitItem = item3;
								if (this.hitItem != this.prevHitItem && !this.hitItem.noDrag)
								{
									if (this.hitItem != this.prevDragItem)
									{
										this.prevDragItem = null;
									}
									if (this.prevHitItem != null)
									{
										this.prevHitItem.HoverOut();
									}
									this.hitItem.HoverIn();
									if ((this.mineralizing || this.repairing) && (Links.x.characterSheet.pagan || Links.x.characterSheet.blacksmith))
									{
										this.SetRepairMessage();
									}
									if (item3 != this.prevDragItem && !this.dragging)
									{
										this.str.Clear();
										this.OpenTooltip(this.hitItem);
									}
								}
								else
								{
									this.prevDragItem = null;
								}
								this.prevHitItem = this.hitItem;
								Links.x.gameplay.uiCanClick = true;
							}
							else
							{
								if (this.waitToEndHover == 0f && this.prevHitItem)
								{
									this.waitToEndHover = Time.realtimeSinceStartup;
								}
								this.hitItem = null;
							}
						}
						else
						{
							if (this.waitToEndHover == 0f && this.prevHitItem)
							{
								this.waitToEndHover = Time.realtimeSinceStartup;
							}
							this.hitItem = null;
							this.prevDragItem = null;
						}
						if (this.waitToEndHover > 0f && Time.realtimeSinceStartup > this.waitToEndHover + 0.05f)
						{
							Links.x.gameplay.uiCanClick = false;
							if (!this.hitItem)
							{
								this.CloseTooltip();
							}
							this.waitToEndHover = 0f;
							if (this.prevHitItem)
							{
								this.SetBackSprite("Normal", this.prevHitItem.backImage, this.prevHitItem);
							}
							this.prevHitItem = null;
						}
						bool flag4 = false;
						if (this.hitItem && (this.hitItem.invRow._Tag == "Weapon" || (this.hitItem.invRow._Tag == "Jewelry" && !this.hitItem.invRow._Effect.Contains("Cure"))) && this.hitItem.socketA.x <= 0f && Links.x.characterSheet.enchanting)
						{
							flag4 = true;
						}
						if (Input.GetMouseButtonDown(0))
						{
							this.downClickTime = Time.realtimeSinceStartup;
							if (this.hitItem && !this.mineralizing && !this.repairing && !flag4)
							{
								Vector3 vector2 = Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition);
								this.offset = this.hitItem.transform.position - vector2;
								this.itemToDrag = this.hitItem;
								if (!this.hitItem.onGround && !this.hitItem.forSale)
								{
									this.startDragObjectScript = this.hitItem.bag;
								}
							}
						}
					}
					this.hitEquipped = null;
					if (((EventSystem.current.IsPointerOverGameObject() && Links.x.mk) || Links.x.joy) && !this.splitter.open && !this.spinning)
					{
						this.currentHover = Links.x.gameplay.currentEventObject;
						if (Links.x.mk)
						{
							this.pointer = new PointerEventData(EventSystem.current);
							this.pointer.position = Input.mousePosition;
							this.raycastResults.Clear();
							EventSystem.current.RaycastAll(this.pointer, this.raycastResults);
							if (this.raycastResults.Count > 0)
							{
								int num6 = 0;
								foreach (RaycastResult raycastResult in this.raycastResults)
								{
									if (num6 == 0)
									{
										this.currentHover = raycastResult.gameObject;
									}
									if (Input.GetKey(KeyCode.T) && Records.x.editor)
									{
										Debug.Log(raycastResult.gameObject);
									}
									num6++;
								}
							}
						}
						if (this.currentHover)
						{
							this.hitEquipped = this.currentHover.GetComponent<ItemEquipped>();
							if (this.hitEquipped)
							{
								if (this.hitWeaponRack)
								{
									this.rack.sharedMaterial = this.rackNormalMaterial;
									this.hitWeaponRack = false;
								}
								if (this.hitArrowRack)
								{
									this.arrowRack.sharedMaterial = this.rackNormalMaterial;
									this.hitArrowRack = false;
								}
								if ((this.mineralizing || this.repairing) && (Links.x.characterSheet.pagan || Links.x.characterSheet.blacksmith))
								{
									this.SetRepairMessage();
								}
								if (this.hitEquipped != this.prevHitEquipped)
								{
									this.hitEquippedIndex = this.hitEquipped.equipIndex;
									if (this.hitEquipped.invRow != null)
									{
										if (this.hitEquipped.invRow._EquipSlotID != 9)
										{
											if (this.hitEquipped.buddyItemEquipped3D && this.hitEquipped.buddyItemEquipped3D.itemRenderer)
											{
												this.hitEquipped.buddyItemEquipped3D.itemRenderer.material.SetFloat("_Hover", 1f);
											}
										}
										else if (this.hitEquipped.invRow._ArmorID != -1)
										{
											Links.x.characterSheet.body.HoverArmor(true);
										}
										this.str.Clear();
										this.str.Append(this.hitEquipped.invRow._DisplayName);
										this.str.Append("     <cspace=-1.15em><voffset=.4em><size=40><sprite=");
										int keyIconIndex = Links.x.keyControl.GetKeyIconIndex("LMB");
										this.str.Append(keyIconIndex);
										this.str.Append("></size></voffset> </cspace>");
										this.str.Append("See Details");
										if (this.hitEquipped.invRow._RightClickAction != "" || this.hitEquipped.invRow._Tag == "Note" || this.hitEquipped.invRow._Tag == "ArrowKit" || (this.repairing && (this.hitEquipped.invRow._Tag == "Shield" || this.hitEquipped.invRow._Tag == "Weapon")))
										{
											this.str.Append("     <cspace=-1.15em><voffset=.4em><size=40><sprite=");
											int keyIconIndex2 = Links.x.keyControl.GetKeyIconIndex("RMB");
											this.str.Append(keyIconIndex2);
											this.str.Append("></size></voffset> </cspace>");
											if (this.repairing)
											{
												this.str.Append("Repair");
											}
											else if (this.hitEquipped.invRow._Tag == "Open")
											{
												this.str.Append("Use");
											}
											else
											{
												this.str.Append("Use");
											}
										}
										this.SetDragMessageText(this.str.ToString(), null);
									}
									if (this.prevHitEquipped)
									{
										if (this.prevHitEquipped.invRow._EquipSlotID != 9)
										{
											if (this.prevHitEquipped.buddyItemEquipped3D && this.prevHitEquipped.buddyItemEquipped3D.itemRenderer)
											{
												this.prevHitEquipped.buddyItemEquipped3D.itemRenderer.material.SetFloat("_Hover", 0f);
											}
										}
										else if (this.prevHitEquipped.invRow._ArmorID != -1)
										{
											Links.x.characterSheet.body.HoverArmor(false);
										}
									}
								}
								if (this.hitEquipped != this.prevHitEquipped && this.hitEquipped.buddyItemEquipped3D)
								{
									this.OpenTooltip(this.hitEquipped);
								}
								Links.x.gameplay.uiCanClick = true;
								this.prevHitEquipped = this.hitEquipped;
								bool flag5 = this.dragging;
								bool flag6 = false;
								if (this.hitEquipped && this.hitEquipped.invRow != null && (this.hitEquipped.invRow._Tag == "Weapon" || (this.hitEquipped.invRow._Tag == "Jewelry" && !this.hitEquipped.invRow._Effect.Contains("Cure"))) && this.hitEquipped.socketA.x <= 0f && Links.x.characterSheet.enchanting)
								{
									flag6 = true;
								}
								if (((Links.x.mk && Input.GetMouseButtonDown(0)) || (Links.x.joy && Links.x.gameplay.interactStart)) && !this.dragging && !this.repairing && !this.mineralizing && flag6 && this.hitEquipped.invRow != null)
								{
									this.enchantMenu.SelectedItem(null, this.hitEquipped);
								}
								if (((Links.x.mk && Input.GetMouseButtonDown(1)) || (Links.x.joy && Links.x.gameplay.interactStart)) && !this.dragging && this.hitEquipped.invRow != null && this.hitEquipped.invRow._RightClickAction != "" && this.hitEquipped.invRow._RightClickAction == "Consume" && !Records.x.InCombat(false))
								{
									this.UseItem(null, this.hitEquipped, this.selectedPlayer);
								}
								if (((!flag6 && !this.mineralizing && !this.repairing && Input.GetMouseButtonDown(0) && !Links.x.characterSheet.rulesetOpen && !Links.x.characterSheet.statusEffectsOpen) || (Links.x.joy && Links.x.gameplay.actionStart)) && this.hitEquipped.invRow != null)
								{
									this.downClickTime = Time.realtimeSinceStartup;
									if (this.hitEquipped)
									{
										this.itemEquippedToDrag = this.hitEquipped;
									}
								}
							}
						}
					}
					bool flag7 = false;
					if (this.hitEquipped && !this.hitEquipped.buddyItemEquipped3D && this.itemTooltipOpen)
					{
						flag7 = true;
					}
					if ((!this.hitEquipped && this.prevHitEquipped) || flag7)
					{
						this.ToggleEquipmentHover(false);
						if (this.prevHitEquipped.invRow._EquipSlotID != 9)
						{
							if (this.prevHitEquipped.buddyItemEquipped3D && this.prevHitEquipped.buddyItemEquipped3D.itemRenderer)
							{
								this.prevHitEquipped.buddyItemEquipped3D.itemRenderer.material.SetFloat("_Hover", 0f);
							}
						}
						else if (this.prevHitEquipped.invRow._ArmorID != -1)
						{
							Links.x.characterSheet.body.HoverArmor(false);
						}
						this.prevHitEquipped = null;
						this.CloseTooltip();
						Links.x.gameplay.uiCanClick = false;
					}
					if (this.itemEquippedToDrag && ((Links.x.mk && Input.GetMouseButton(0) && !Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.RightShift)) || (Links.x.joy && Links.x.gameplay.actionStart && !this.repairing && !this.mineralizing)) && (Links.x.joy || this.movedMouse || Time.realtimeSinceStartup > this.downClickTime + 0.3f) && this.itemEquippedToDrag && !this.dragging && !this.repairing && !this.mineralizing)
					{
						this.hitEquipped = this.itemEquippedToDrag;
						if (this.hitEquipped.buddyItemEquipped3D)
						{
							this.PrepareDragEquipped();
						}
						this.itemEquippedToDrag = null;
					}
					if (this.itemToDrag && Input.GetMouseButton(0) && !Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.RightShift) && (this.movedMouse || Time.realtimeSinceStartup > this.downClickTime + 0.3f) && !this.spinning && !this.dragging && this.itemToDrag != null && !this.itemToDrag.noDrag)
					{
						this.hitItem = this.itemToDrag;
						this.itemToDrag = null;
						if (!this.repairing && !this.mineralizing)
						{
							this.PrepareDrag();
							this.swapping = false;
						}
					}
					if (Input.GetMouseButtonUp(0))
					{
						this.itemEquippedToDrag = null;
						this.itemToDrag = null;
					}
				}
				if (Links.x.joy)
				{
					if ((item || this.hitEquipped) && !this.dragging)
					{
						if (Links.x.gameplay.actionStart)
						{
							Library.Inventory inventory;
							if (item)
							{
								inventory = item.invRow;
							}
							else
							{
								inventory = this.hitEquipped.invRow;
							}
							if (this.repairing && (inventory._Tag == "Weapon" || inventory._Tag == "Shield" || (inventory._Tag == "Armor" && (Links.x.characterSheet.blacksmith || Links.x.characterSheet.pagan))))
							{
								if (Links.x.characterSheet.blacksmith || Links.x.characterSheet.pagan)
								{
									if (item)
									{
										this.RepairFromMerchant(item, null);
									}
									else
									{
										this.RepairFromMerchant(null, this.hitEquipped);
									}
								}
								else if (item)
								{
									this.RepairItem(item, null);
								}
								else
								{
									this.RepairItem(null, this.hitEquipped);
								}
							}
							else if (this.mineralizing && this.IsGemMatch(inventory._Name))
							{
								this.GrindGem(item);
							}
						}
						else
						{
							Library.Inventory inventory2;
							if (item)
							{
								inventory2 = item.invRow;
							}
							else
							{
								inventory2 = this.hitEquipped.invRow;
							}
							if (Links.x.gameplay.interactStart)
							{
								if (inventory2._RightClickAction == "Repair" && item && !this.repairing && !this.mineralizing)
								{
									this.repairing = true;
									this.repairItem = item;
									Links.x.hudControl.MenuText();
								}
								if (inventory2._RightClickAction == "GemRepair" && item && !this.repairing && !this.mineralizing)
								{
									this.mineralizing = true;
									Debug.Log("Mineralizing");
									this.repairItem = item;
									Links.x.hudControl.MenuText();
								}
								else if (inventory2._Tag == "Note" && !this.repairing && !this.mineralizing)
								{
									Links.x.characterSheet.OpenNote(inventory2);
									if (Records.x.InCombat(false))
									{
										Links.x.inventory.AddCombatTime(Links.x.characterSheet.character, "Short");
									}
								}
								else if (!this.repairing && !this.mineralizing)
								{
									if (item)
									{
										this.UseItem(item, null, this.selectedPlayer);
									}
									else
									{
										this.UseItem(null, this.hitEquipped, this.selectedPlayer);
									}
									this.CloseTooltip();
								}
								if (inventory2._Tag == "ArrowKit" && item && !this.repairing && !this.mineralizing && !this.enchantMenu.open && !Links.x.characterSheet.blacksmith && !Links.x.characterSheet.pagan)
								{
									Links.x.arrowKit.OpenMenu(item);
								}
								float num7 = 0f;
								if (item)
								{
									num7 = item.socketA.x;
								}
								if (this.hitEquipped)
								{
									num7 = this.hitEquipped.socketA.x;
								}
								if (!this.repairing && !this.mineralizing && (inventory2._Tag == "Weapon" || inventory2._Tag == "Shield" || (inventory2._Tag == "Jewelry" && !inventory2._Effect.Contains("Cure"))) && num7 <= 0f && Links.x.characterSheet.enchanting)
								{
									if (item)
									{
										this.enchantMenu.SelectedItem(item, null);
									}
									else
									{
										this.enchantMenu.SelectedItem(null, this.hitEquipped);
									}
								}
							}
							else if (item && !this.repairing && !this.mineralizing && inventory2._Stackable && Links.x.gameplay.allMenusStart && !item.forSale && !item.inGroundMenu)
							{
								this.splitter.OpenMenu(item);
							}
						}
					}
					if (this.dragItem || item || this.hitEquipped)
					{
						if (item && !this.dragging && !this.hitEquipped && item.gameObject.activeSelf)
						{
							Links.x.hudControl.SetJoyBox(item.rt, Vector4.zero, true, true);
						}
						if (this.dragItem)
						{
							Links.x.hudControl.SetJoyBox(this.dragItem.rt, Vector4.zero, true, true);
						}
					}
					else
					{
						GameObject currentEventObject2 = Links.x.gameplay.currentEventObject;
						if (currentEventObject2 && (currentEventObject2.transform.parent == this.gridTr || currentEventObject2.transform.parent == Links.x.characterSheet.contentPanel))
						{
							Links.x.hudControl.SetJoyBox(currentEventObject2.GetComponent<RectTransform>(), Vector4.zero, false, true);
						}
					}
				}
				if (this.dragging && this.open)
				{
					this.DragListen();
				}
				else if (this.dragging && !this.open)
				{
					if (this.dragItem)
					{
						this.dragItem.SetSprite(false);
					}
					this.dragging = false;
					this.draggingSocket = false;
					this.dragItem = null;
					this.dragGo = null;
					Debug.Log("null");
				}
				if (!this.dragging && !this.hitEquipped && this.spinning && Links.x.mk)
				{
					float num8 = this.mouseStart.x - Input.mousePosition.x;
					float num9 = 20f;
					if (Records.x.windows)
					{
						num9 *= 2f;
					}
					if (Links.x.characterSheet.body)
					{
						Links.x.characterSheet.body.transform.Rotate(new Vector3(0f, num8 * num9 * Time.unscaledDeltaTime, 0f));
					}
					this.mouseStart = Input.mousePosition;
				}
				if (!this.spinning)
				{
					this.lookAt.position = Links.x.camera3D.ScreenToWorldPoint(Input.mousePosition);
				}
				if (Links.x.mk)
				{
					if (Input.GetMouseButtonDown(1))
					{
						if (this.dragging)
						{
							this.HoverOverGround();
							this.EndDragging(true);
							this.FailedDrag();
							this.dragging = false;
							this.draggingSocket = false;
							this.dragGo = null;
							this.dragItem = null;
						}
						if (this.hitItem && !this.repairing && !this.mineralizing)
						{
							if (this.hitItem.invRow._RightClickAction == "Repair")
							{
								this.repairing = true;
								this.repairItem = this.hitItem;
							}
							if (this.hitItem.invRow._RightClickAction == "GemRepair")
							{
								this.mineralizing = true;
								this.repairItem = this.hitItem;
							}
							else if (this.hitItem.invRow._Tag == "Note")
							{
								Links.x.characterSheet.OpenNote(this.hitItem.invRow);
								if (Records.x.InCombat(false))
								{
									Links.x.inventory.AddCombatTime(Links.x.characterSheet.character, "Short");
								}
							}
							else if (this.hitItem.invRow._Tag == "ArrowKit" && !this.enchantMenu.open && !Links.x.characterSheet.blacksmith && !Links.x.characterSheet.pagan)
							{
								Links.x.arrowKit.OpenMenu(this.hitItem);
							}
							else
							{
								this.UseItem(this.hitItem, null, this.selectedPlayer);
							}
						}
					}
					if (Input.GetMouseButtonDown(0))
					{
						bool flag8 = false;
						if (this.hitItem && (this.hitItem.invRow._Tag == "Weapon" || (this.hitItem.invRow._Effect != "Cure" && this.hitItem.invRow._Tag == "Jewelry")) && this.hitItem.socketA.x <= 0f && Links.x.characterSheet.enchanting)
						{
							flag8 = true;
						}
						if (this.repairing && this.hitItem)
						{
							if (this.repairing && (this.hitItem.invRow._Tag == "Shield" || this.hitItem.invRow._Tag == "Weapon" || (this.hitItem.invRow._Tag == "Armor" && (Links.x.characterSheet.blacksmith || Links.x.characterSheet.pagan))))
							{
								if (Links.x.characterSheet.blacksmith || Links.x.characterSheet.pagan)
								{
									this.RepairFromMerchant(this.hitItem, null);
								}
								else
								{
									this.RepairItem(this.hitItem, null);
								}
							}
						}
						else if (this.repairing && this.hitEquipped)
						{
							if (this.repairing && (this.hitEquipped.invRow._Tag == "Shield" || this.hitEquipped.invRow._Tag == "Weapon" || (this.hitEquipped.invRow._Tag == "Armor" && (Links.x.characterSheet.blacksmith || Links.x.characterSheet.pagan))))
							{
								if (Links.x.characterSheet.blacksmith || Links.x.characterSheet.pagan)
								{
									this.RepairFromMerchant(null, this.hitEquipped);
								}
								else
								{
									this.RepairItem(null, this.hitEquipped);
								}
							}
						}
						else if (this.mineralizing && this.hitItem)
						{
							if (this.mineralizing && this.IsGemMatch(this.hitItem.invRow._Name))
							{
								this.GrindGem(this.hitItem);
							}
						}
						else if (!this.repairing && !this.mineralizing && flag8)
						{
							this.enchantMenu.SelectedItem(this.hitItem, null);
						}
					}
					if (Input.GetMouseButtonUp(0) && !this.dragging && (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)))
					{
						if (this.hitItem && this.hitItem.stackable && this.hitItem.stackSize > 1 && !this.hitItem.forSale && !this.hitItem.inGroundMenu)
						{
							this.splitter.OpenMenu(this.hitItem);
						}
						this.clickStartTime = -2f;
					}
					if ((this.repairing || this.mineralizing) && (Input.GetMouseButtonDown(1) || Input.GetMouseButtonDown(0)) && !this.hitItem && !this.hitEquipped)
					{
						this.doubleClick = false;
						this.repairing = false;
						this.mineralizing = false;
						this.repairItem = null;
						this.repairType = "";
						if (Links.x.characterSheet.repairInstructions)
						{
							Links.x.characterSheet.repairInstructions.enabled = false;
						}
					}
				}
				else if (this.repairing || this.mineralizing)
				{
					bool cancelStart = Links.x.gameplay.cancelStart;
				}
			}
		}
		if (!this.dragging && this.dragItem)
		{
			this.dragItem = null;
		}
	}

	// Token: 0x060010A7 RID: 4263 RVA: 0x0013EE54 File Offset: 0x0013D054
	public global::Item GetNearItem(Vector3 center)
	{
		float num = float.PositiveInfinity;
		int num2 = -1;
		int count = this.bagItems.Count;
		for (int i = 0; i < count; i++)
		{
			if (this.bagItems[i] && this.bagItems[i] != this.hitItem)
			{
				float sqrMagnitude = (this.bagItems[i].tr.position - center).sqrMagnitude;
				if (sqrMagnitude < num)
				{
					num = sqrMagnitude;
					num2 = i;
				}
			}
		}
		if (num2 > -1)
		{
			return this.bagItems[num2];
		}
		return null;
	}

	// Token: 0x060010A8 RID: 4264 RVA: 0x0013EEFC File Offset: 0x0013D0FC
	public void RemovePrevEquipped()
	{
		if (this.prevHitEquipped)
		{
			if (this.prevHitEquipped.invRow._EquipSlotID != 9)
			{
				if (this.prevHitEquipped.buddyItemEquipped3D)
				{
					this.prevHitEquipped.buddyItemEquipped3D.itemRenderer.material.SetFloat("_Hover", 0f);
				}
			}
			else if (this.prevHitEquipped.invRow._ArmorID != -1)
			{
				Links.x.characterSheet.body.HoverArmor(false);
			}
		}
		this.hitEquipped = null;
	}

	// Token: 0x060010A9 RID: 4265 RVA: 0x0013EF94 File Offset: 0x0013D194
	public int EquippedItemNumber()
	{
		int num = this.equippedItems.Length;
		int num2 = 0;
		for (int i = 0; i < num; i++)
		{
			if (this.equippedItems[i])
			{
				num2++;
			}
		}
		return num2;
	}

	// Token: 0x060010AA RID: 4266 RVA: 0x0013EFCC File Offset: 0x0013D1CC
	private int ButtonIndex(Button b)
	{
		int num = this.equippedButtons.Length;
		for (int i = 0; i < num; i++)
		{
			if (this.equippedButtons[i] == b)
			{
				return i;
			}
		}
		return -1;
	}

	// Token: 0x060010AB RID: 4267 RVA: 0x0013F004 File Offset: 0x0013D204
	public void PrepareDragEquipped()
	{
		this.ToggleEquipmentHover(false);
		this.CloseTooltip();
		int equipIndex = this.hitEquipped.equipIndex;
		this.bagItems[equipIndex] = null;
		this.bagID[equipIndex] = 0;
		this.bagAmount[equipIndex] = 0;
		this.socketA[equipIndex] = Vector3.zero;
		this.socketB[equipIndex] = Vector3.zero;
		this.bagPos[equipIndex] = -1;
		this.durabilities[equipIndex] = Vector4.zero;
		this.dragTime = Time.realtimeSinceStartup;
		if (this.hitEquipped.ID == Links.x.library.torchID || this.hitEquipped.ID == Links.x.library.incenseTorchID)
		{
			this.EndTorchTime(this.hitEquipped);
		}
		global::Item item = this.SpawnItem(null, true, this.hitEquipped.ID, this.hitEquipped.stackSize, this.hitEquipped.socketA, this.hitEquipped.socketB, this.hitEquipped.durability, Vector3.zero, this.openBag.transform);
		item.durability = this.hitEquipped.durability;
		item.equipIndex = equipIndex;
		item.bagGridID = -1;
		item.ToggleBackImage(false);
		item.AddSocketImgs();
		item.img.enabled = true;
		this.dragging = true;
		this.ToggleCharacterSheetButtonStateForDrag(true);
		MasterAudio.PlaySoundAndForget("Inventory", Random.Range(0.3f, 0.45f), new float?(1f), 0f, item.invRow._Sound, null);
		this.savedPosition = Vector3.zero;
		Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition);
		this.offset = Vector3.zero;
		if (Links.x.joy)
		{
			this.groundContainerBtn.enabled = true;
			this.groundContainerBtnImg.enabled = true;
		}
		this.canEndDrag = false;
		this.dragFromGround = false;
		item.gameObject.GetComponent<Image>().raycastTarget = false;
		this.dragParent = null;
		item.gameObject.transform.SetParent(this.itemDrag, false);
		this.dragItem = item;
		this.prevItem = item;
		this.prevBagGridID = item.bagGridID;
		this.sizeX = this.dragItem.invRow._SizeX;
		this.sizeY = this.dragItem.invRow._SizeY;
		this.dragGo = item.gameObject;
		this.StartDrag(this.fromSecondaryBag);
		this.openBag.UpdateItemInteractableState(false);
		this.groundContainer.UpdateItemInteractableState(false);
		if (Links.x.joy)
		{
			Links.x.characterSheet.SetSlotButtons(true);
			Links.x.characterSheet.DraggingButtons(true);
			this.SetColorsForEquipButtons(true);
		}
		if (this.clickStartTime == -1f)
		{
			this.clickStartTime = Time.realtimeSinceStartup;
		}
		else
		{
			this.clickStartTime = -1f;
		}
		this.ClearDrag();
		this.selectedPlayer.UpdateListsFromInv(true);
		this.SetupEquippedItems(Links.x.characterSheet.body, false, equipIndex, false);
		this.selectedPlayer.CreateEquippedItems(this.bagID[equipIndex], this.bagAmount[equipIndex], this.socketA[equipIndex], this.socketB[equipIndex], equipIndex * 2, true);
		this.hitEquipped = null;
		this.prevHitEquipped = null;
		Links.x.gameplay.uiCanClick = false;
		this.dragItem.InventoryHoverOut(false);
		this.controllerOffset = Vector3.zero;
		Links.x.characterSheet.body.HoverArmor(false);
		if (Links.x.joy)
		{
			this.startDragObjectScript = Links.x.inventory.equipBag;
		}
	}

	// Token: 0x060010AC RID: 4268 RVA: 0x0013F3E4 File Offset: 0x0013D5E4
	public void EndTorchTime(ItemEquipped torch)
	{
		float z = torch.durability.z;
		float seconds = Links.x.gameplay.seconds;
		torch.durability.z = 0f;
		torch.durability.x = torch.durability.x - (seconds - z);
	}

	// Token: 0x060010AD RID: 4269 RVA: 0x0013F438 File Offset: 0x0013D638
	public void StartDrag(bool inSecondary)
	{
		this.inSecondaryBag = false;
		this.localImg = this.dragItem.gridImg;
		this.dragSaveImg.Clear();
		this.groundContainer.btn.interactable = true;
		this.groundContainer.img.enabled = true;
		this.groundContainer.img.raycastTarget = true;
		if (Links.x.mk)
		{
			for (int i = 0; i < this.groundSlotsList.Count; i++)
			{
				this.groundSlotsList[i].img.raycastTarget = false;
			}
		}
		this.hitGroundItem = null;
		if (inSecondary)
		{
			this.gridTrsMisc = this.secondaryBag.gridTrs;
			this.gridStateMisc = this.secondaryBag.gridState;
			this.gridImgMisc = this.secondaryBag.gridImg;
			for (int j = 0; j < this.localImg.Count; j++)
			{
				this.dragSaveImg.Add(this.localImg[j]);
				this.gridImgMisc[this.localImg[j]].sprite = this.emptySprite;
				this.gridStateMisc[this.localImg[j]] = false;
			}
			this.secondaryDragSave = true;
		}
		else
		{
			for (int k = 0; k < this.localImg.Count; k++)
			{
				this.dragSaveImg.Add(this.localImg[k]);
				this.gridImg[this.localImg[k]].sprite = this.emptySprite;
				this.gridState[this.localImg[k]] = false;
			}
			this.secondaryDragSave = false;
		}
		this.pickUpTiles = new Vector2(0f, 0f);
		if (this.dragItem.invRow._SizeX == 1 && this.dragItem.invRow._SizeY == 1)
		{
			return;
		}
		Vector3 vector = Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition) + this.offset;
		float num = float.PositiveInfinity;
		int num2 = 0;
		int num3 = 0;
		for (int l = 0; l < this.localImg.Count; l++)
		{
			int num4 = this.localImg[l];
			if (inSecondary)
			{
				if (num4 < this.gridTrsMisc.Count)
				{
					this.gridTrsMisc = this.secondaryBag.gridTrs;
					vector.z = this.gridTrsMisc[num4].position.z;
					float num5 = this.SubtractVectors(this.gridTrsMisc[num4].position, vector).sqrMagnitude;
					if (num5 < num)
					{
						num = num5;
						this.pickUpTiles = new Vector2((float)num2, (float)num3);
					}
				}
			}
			else if (num4 < this.gridTrs.Count)
			{
				vector.z = this.gridTrs[num4].position.z;
				float num5 = this.SubtractVectors(this.gridTrs[num4].position, vector).sqrMagnitude;
				if (num5 < num)
				{
					num = num5;
					this.pickUpTiles = new Vector2((float)num2, (float)num3);
				}
			}
			num3++;
			if (num3 > this.dragItem.invRow._SizeX)
			{
				num2++;
				num3 = 0;
			}
		}
		this.dragItem.img.raycastTarget = false;
		if (this.dragItem.isEquipped)
		{
			this.itemCenterOffset = this.OffsetToCornerEquipped(this.dragItem);
			return;
		}
		this.itemCenterOffset = this.OffsetToCornerEquipped(this.dragItem);
	}

	// Token: 0x060010AE RID: 4270 RVA: 0x0013F7EC File Offset: 0x0013D9EC
	public void PrepareDrag()
	{
		this.dragging = true;
		if (!Links.x.mk)
		{
			this.hitItem.ToggleBackImage(false);
		}
		this.ToggleCharacterSheetButtonStateForDrag(true);
		this.SetBackSprite("Normal", this.hitItem.backImage, this.hitItem);
		if (this.hitItem.invRow._Tag.Contains("Socket"))
		{
			this.draggingSocket = true;
		}
		else
		{
			this.draggingSocket = false;
		}
		MasterAudio.PlaySoundAndForget("Inventory", Random.Range(0.3f, 0.45f), new float?(1f), 0f, this.hitItem.invRow._Sound, null);
		this.prevDragItem = this.hitItem;
		this.hitItem.SetSprite(true);
		Links.x.characterTooltip.EndHoverText(this.hitItem.gameObject, false);
		this.savedPosition = this.hitItem.transform.localPosition;
		Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition);
		this.controllerOffset = Vector3.zero;
		if (Links.x.joy)
		{
			if (this.hitItem.forSale)
			{
				if (this.hitItem.bagGridID > -1 && this.hitItem.bagGridID < this.gridTrsMisc.Count)
				{
					this.controllerOffset = this.gridTrsMisc[this.hitItem.bagGridID].position - Links.x.gameplay.currentEventObject.transform.position;
				}
				else
				{
					this.controllerOffset = Vector3.zero;
				}
			}
			else if (this.hitItem.bagGridID > -1 && this.hitItem.bagGridID < this.gridTrs.Count && !this.hitItem.worldItem && Links.x.gameplay.currentEventObject)
			{
				this.controllerOffset = this.gridTrs[this.hitItem.bagGridID].position - Links.x.gameplay.currentEventObject.transform.position;
			}
			else
			{
				this.controllerOffset = Vector3.zero;
			}
		}
		this.canEndDrag = false;
		this.dragFromGround = false;
		this.dragTime = Time.realtimeSinceStartup;
		Image component = this.hitItem.gameObject.GetComponent<Image>();
		if (Links.x.mk)
		{
			component.raycastTarget = false;
		}
		if (Links.x.joy)
		{
			this.groundContainerBtn.enabled = true;
			this.groundContainerBtnImg.enabled = true;
		}
		this.dragParent = this.hitItem.gameObject.transform.parent;
		this.hitItem.gameObject.transform.SetParent(this.itemDrag, false);
		this.dragItem = this.hitItem;
		this.prevItem = this.hitItem;
		this.prevBagGridID = this.hitItem.bagGridID;
		this.sizeX = this.dragItem.invRow._SizeX;
		this.sizeY = this.dragItem.invRow._SizeY;
		this.dragGo = this.hitItem.gameObject;
		this.StartDrag(this.fromSecondaryBag);
		if (this.clickStartTime == -1f)
		{
			this.clickStartTime = Time.realtimeSinceStartup;
		}
		else
		{
			this.clickStartTime = -1f;
		}
		this.ClearDrag();
		this.openBag.UpdateItemInteractableState(false);
		this.groundContainer.UpdateItemInteractableState(false);
		if (Links.x.joy)
		{
			Links.x.characterSheet.SetSlotButtons(true);
			Links.x.characterSheet.DraggingButtons(true);
			this.SetColorsForEquipButtons(true);
		}
		this.localImg = this.dragItem.gridImg;
		this.localImg.Clear();
		if (this.dragItem.inGroundMenu)
		{
			this.startDragObjectScript = this.groundContainer;
			this.dragItem.UpdateSocketLocations();
			this.dragItem.ToggleSockets(true);
		}
		if (this.dragItem.inGroundMenu && Links.x.joy)
		{
			EventSystem.current.SetSelectedGameObject(this.groundContainer.gameObject);
		}
		else
		{
			bool joy = Links.x.joy;
		}
		this.dragItem.InventoryHoverOut(false);
		this.CloseTooltip();
		if (Links.x.joy)
		{
			this.startPos = this.dragItem.transform.position;
		}
	}

	// Token: 0x060010AF RID: 4271 RVA: 0x0013FC80 File Offset: 0x0013DE80
	public void ToggleCharacterSheetButtonStateForDrag(bool drag)
	{
		bool flag = true;
		if (drag)
		{
			flag = false;
		}
		if (Links.x.characterSheet.merchant || Links.x.characterSheet.blacksmith)
		{
			flag = false;
		}
		if (Links.x.mk)
		{
			flag = true;
		}
		if (this.enchantMenu.open)
		{
			flag = false;
		}
		if (Links.x.characterSheet.note.activeSelf)
		{
			flag = false;
		}
		if (Links.x.arrowKit.open)
		{
			flag = false;
		}
		for (int i = 0; i < this.draggingOffBtns.Count; i++)
		{
			this.draggingOffBtns[i].interactable = flag;
		}
	}

	// Token: 0x060010B0 RID: 4272 RVA: 0x0013FD28 File Offset: 0x0013DF28
	public bool CheckGrid(bool mouse, global::Item item, Vector3 pt, Vector2 startTile, int gridSizeX, int gridSizeY, string type)
	{
		Vector3 vector = Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition) + this.offset - this.itemCenterOffset;
		if (Links.x.joy && type != "Hidden" && this.open)
		{
			if (Links.x.gameplay.currentEventObject)
			{
				vector = Links.x.gameplay.currentEventObject.transform.position;
				if (this.dropScript && (this.dropScript.bag || this.dropScript.merchantTake))
				{
					vector += this.controllerOffset;
				}
			}
			else
			{
				vector = this.dragGo.transform.position;
			}
		}
		if (!mouse)
		{
			vector = pt;
		}
		bool flag = false;
		if (Links.x.characterSheet.merchant)
		{
			flag = true;
		}
		if ((type != "Hidden" && this.open && flag) || type == "Secondary")
		{
			this.gridTrsMisc = this.secondaryBag.gridTrs;
			this.gridStateMisc = this.secondaryBag.gridState;
			this.gridImgMisc = this.secondaryBag.gridImg;
		}
		int num = this.gridAmt - this.equippedGridAmt;
		if (this.startDragObjectScript && this.dropScript && type != "Hidden" && flag && !Records.x.selling && Records.x.atMerchant && !this.startDragObjectScript.merchantTake && this.dropScript.merchantTake)
		{
			return false;
		}
		float num2 = this.distThresh * this.distThresh;
		if (!mouse)
		{
			num2 = 100000000f;
		}
		if (this.dropScript && type != "Hidden" && (this.dropScript.portrait || this.dropScript.ground || this.dropScript.equip))
		{
			return false;
		}
		if (!item)
		{
			return false;
		}
		if (this.hitItem && Links.x.mk && type != "Hidden")
		{
			return false;
		}
		this.sizeY = item.invRow._SizeY;
		this.sizeX = item.invRow._SizeX;
		int equipSlotID = item.invRow._EquipSlotID;
		if (this.sizeX == 1 && this.sizeY == 1 && mouse && !Links.x.joy)
		{
			vector = Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition);
		}
		if (this.hitItem && type != "Hidden" && (this.hitItem == this.dragItem || !this.hitItem.active))
		{
			this.hitItem = null;
		}
		if (this.sizeX == 0 || this.sizeY == 0)
		{
			return false;
		}
		if (!mouse)
		{
			this.ClearDrag();
		}
		bool flag2 = true;
		if (type == "Hidden")
		{
			flag2 = false;
		}
		float num3 = float.PositiveInfinity;
		if (type != "Secondary")
		{
			for (int i = 0; i < num; i++)
			{
				vector.z = this.gridTrs[i].position.z;
				if (!this.gridState[i] || flag2)
				{
					float num4 = this.SubtractVectors(this.gridTrs[i].position, vector).sqrMagnitude;
					if (num4 < num3 && num4 < num2)
					{
						bool flag3 = true;
						this.foundTiles.Clear();
						this.sizeY = item.invRow._SizeY;
						this.sizeX = item.invRow._SizeX;
						for (int j = 0; j < this.sizeY; j++)
						{
							if (flag3)
							{
								int num5 = (i + j) % gridSizeY;
								if (num5 != 0 || (num5 == 0 && j == 0))
								{
									if (!this.gridState[i + j] || flag2)
									{
										int num6 = i + j;
										for (int k = 0; k < this.sizeX; k++)
										{
											int num7 = num6 + k * gridSizeY;
											if (num7 < num)
											{
												if (!this.gridState[num7] || flag2)
												{
													if (this.foundTiles.Count == 0)
													{
														this.foundTiles.Add(num7);
													}
													else if (this.foundTiles.Count > 0)
													{
														this.foundTiles.Add(num7);
													}
												}
												else
												{
													flag3 = false;
												}
											}
											else
											{
												flag3 = false;
											}
										}
									}
									else
									{
										flag3 = false;
									}
								}
								else
								{
									flag3 = false;
								}
							}
						}
						if (this.draggingSocket && this.hitItem)
						{
							flag3 = false;
						}
						if (this.hitItem && type != "Hidden")
						{
							flag3 = false;
						}
						if (flag3 && this.foundTiles.Count > 0)
						{
							this.ClearDrag();
							for (int l = 0; l < this.foundTiles.Count; l++)
							{
								this.dragHoverImg.Add(this.foundTiles[l]);
								if (mouse)
								{
									this.gridImg[this.foundTiles[l]].sprite = this.hoverSprite;
								}
							}
							this.inSecondaryBag = false;
							item.bagGridID = this.foundTiles[0];
							num3 = num4;
						}
					}
				}
			}
		}
		if ((type != "Hidden" && flag && this.open) || type == "Secondary")
		{
			gridSizeX = this.secondaryBag.mainBagX;
			gridSizeY = this.secondaryBag.mainBagY;
			for (int m = 0; m < this.secondaryBag.gridAmt; m++)
			{
				if (m < this.gridTrsMisc.Count)
				{
					vector.z = this.gridTrsMisc[m].position.z;
					if (!this.gridStateMisc[m])
					{
						float num4 = this.SubtractVectors(this.gridTrsMisc[m].position, vector).sqrMagnitude;
						if (num4 < num3 && num4 < num2)
						{
							bool flag4 = true;
							this.foundTiles.Clear();
							for (int n = 0; n < this.sizeY; n++)
							{
								if (flag4)
								{
									int num8 = (m + n) % gridSizeY;
									if (num8 != 0 || (num8 == 0 && n == 0))
									{
										if (!this.gridStateMisc[m + n])
										{
											int num9 = m + n;
											for (int num10 = 0; num10 < this.sizeX; num10++)
											{
												int num11 = num9 + num10 * gridSizeY;
												if (num11 < this.secondaryBag.gridAmt)
												{
													if (!this.gridStateMisc[num11])
													{
														this.foundTiles.Add(num11);
													}
													else
													{
														flag4 = false;
													}
												}
												else
												{
													flag4 = false;
												}
											}
										}
										else
										{
											flag4 = false;
										}
									}
									else
									{
										flag4 = false;
									}
								}
							}
							if (this.draggingSocket && this.hitItem)
							{
								flag4 = false;
							}
							if (flag4)
							{
								this.ClearDrag();
								for (int num12 = 0; num12 < this.foundTiles.Count; num12++)
								{
									this.dragHoverImg.Add(this.foundTiles[num12]);
									if (mouse)
									{
										this.gridImgMisc[this.foundTiles[num12]].sprite = this.filledSprite;
									}
								}
								item.bagGridID = this.foundTiles[0];
								num3 = num4;
								this.inSecondaryBag = true;
							}
						}
					}
				}
			}
		}
		if (this.dragHoverImg.Count == this.sizeX * this.sizeY)
		{
			if (this.copyGridList)
			{
				this.dragHoverImgCopy.Clear();
				for (int num13 = 0; num13 < this.dragHoverImg.Count; num13++)
				{
					this.dragHoverImgCopy.Add(this.dragHoverImg[num13]);
				}
				this.copyGridList = false;
			}
			return true;
		}
		this.ClearDrag();
		return false;
	}

	// Token: 0x060010B1 RID: 4273 RVA: 0x00140560 File Offset: 0x0013E760
	public void ClearDrag()
	{
		if (!this.inSecondaryBag)
		{
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		for (int i = 0; i < this.dragHoverImg.Count; i++)
		{
			int num = this.dragHoverImg[i];
			if (!this.inSecondaryBag)
			{
				if (num < this.gridState.Count)
				{
					if (!this.gridState[num])
					{
						if (this.gridImg[num].sprite != this.emptySprite)
						{
							this.gridImg[num].sprite = this.emptySprite;
						}
					}
					else if (this.gridImg[num].sprite != this.filledSprite)
					{
						this.gridImg[num].sprite = this.filledSprite;
					}
				}
			}
			else if (!this.gridStateMisc[num])
			{
				if (this.gridImgMisc[num].sprite != this.emptySprite)
				{
					this.gridImgMisc[num].sprite = this.emptySprite;
				}
			}
			else if (this.gridImgMisc[num].sprite != this.filledSprite)
			{
				this.gridImgMisc[num].sprite = this.filledSprite;
			}
		}
		this.dragHoverImg.Clear();
	}

	// Token: 0x060010B2 RID: 4274 RVA: 0x001406E8 File Offset: 0x0013E8E8
	public void HoverOverGround()
	{
		if (this.inSecondaryBag)
		{
			this.gridTrsMisc = this.secondaryBag.gridTrs;
			this.gridStateMisc = this.secondaryBag.gridState;
			this.gridImgMisc = this.secondaryBag.gridImg;
			this.currGridImg = this.gridImgMisc;
			this.currGridTrs = this.gridTrsMisc;
			this.currGridState = this.gridStateMisc;
		}
		else
		{
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		this.ClearDrag();
	}

	// Token: 0x060010B3 RID: 4275 RVA: 0x00140780 File Offset: 0x0013E980
	public bool SetupGridFromSave(global::Item item, int startRow, int startCol, int gridSizeX, int gridSizeY)
	{
		this.localImg = item.gridImg;
		this.localImg.Clear();
		this.foundTiles.Clear();
		this.sizeX = item.invRow._SizeX;
		this.sizeY = item.invRow._SizeY;
		for (int i = 0; i < this.sizeY; i++)
		{
			if (startRow + i < gridSizeX * (startRow + 1) - 1)
			{
				int num = startRow + i;
				for (int j = 0; j < this.sizeX; j++)
				{
					int num2 = num + j * gridSizeY;
					if (num2 < this.gridAmt)
					{
						this.foundTiles.Add(num2);
					}
				}
			}
		}
		for (int k = 0; k < this.foundTiles.Count; k++)
		{
			this.localImg.Add(this.foundTiles[k]);
			this.gridState[this.foundTiles[k]] = true;
			this.gridImg[this.foundTiles[k]].sprite = this.filledSprite;
		}
		if (this.foundTiles.Count == item.invRow._SizeX * item.invRow._SizeY)
		{
			this.SnapToGrid(item, "Hidden");
			return true;
		}
		return false;
	}

	// Token: 0x060010B4 RID: 4276 RVA: 0x001408C8 File Offset: 0x0013EAC8
	public bool FindOpenSpace(Vector3 pt, global::Item item, int gridSizeX, int gridSizeY, string type, InventoryContainer listBag)
	{
		if (!item)
		{
			return false;
		}
		if (this.open)
		{
			this.ClearDrag();
		}
		if (type != "Secondary" && this.open)
		{
			this.CheckSlotImages();
			this.UpdateSlotStates(listBag);
		}
		this.copyGridList = true;
		bool flag = this.CheckGrid(false, item, pt, new Vector2(0f, 0f), gridSizeX, gridSizeY, type);
		this.localImg = item.gridImg;
		if (type == "Secondary")
		{
			this.gridTrsMisc = this.secondaryBag.gridTrs;
			this.gridStateMisc = this.secondaryBag.gridState;
			this.gridImgMisc = this.secondaryBag.gridImg;
			this.currGridImg = this.gridImgMisc;
			this.currGridTrs = this.gridTrsMisc;
			this.currGridState = this.gridStateMisc;
		}
		else
		{
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		if (this.dragHoverImgCopy.Count == item.invRow._SizeX * item.invRow._SizeY && flag)
		{
			this.localImg.Clear();
			for (int i = 0; i < this.dragHoverImgCopy.Count; i++)
			{
				this.localImg.Add(this.dragHoverImgCopy[i]);
				if (type != "Hidden" || this.open)
				{
					this.currGridImg[this.dragHoverImgCopy[i]].sprite = this.filledSprite;
				}
				this.currGridState[this.dragHoverImgCopy[i]] = true;
			}
			if (this.localImg.Count > 0)
			{
				item.bagGridID = this.localImg[0];
			}
			this.SnapToGrid(item, type);
			return true;
		}
		if (type != "Secondary")
		{
			Links.x.gameFeed.AddFeed("Bag is full. Cannot add item.");
		}
		for (int j = 0; j < this.dragHoverImgCopy.Count; j++)
		{
			this.currGridImg[this.dragHoverImgCopy[j]].sprite = this.emptySprite;
			this.currGridState[this.dragHoverImgCopy[j]] = false;
		}
		if (!this.open && type != "Secondary")
		{
			Links.x.gameFeed.ShowNotice("Bag is full");
			Character character = this.selectedPlayer;
			Debug.Log(((character != null) ? character.ToString() : null) + " bag is full");
		}
		if (Records.x.editor || Records.x.secrets)
		{
			Debug.Log(string.Concat(new string[]
			{
				"item space not found ",
				(item != null) ? item.ToString() : null,
				" ",
				gridSizeX.ToString(),
				" ",
				gridSizeY.ToString(),
				" ",
				type,
				" ",
				this.open.ToString()
			}));
		}
		return false;
	}

	// Token: 0x060010B5 RID: 4277 RVA: 0x00140BF4 File Offset: 0x0013EDF4
	public void SetBackImageSize(Image img, global::Item item)
	{
		img.gameObject.transform.localScale = new Vector3(1f, 1f, 1f);
		if (item)
		{
			Vector3 position = item.transform.position;
			img.gameObject.transform.position = position;
			item.ToggleBackImage(true);
			if (!img.gameObject.activeSelf)
			{
				img.gameObject.SetActive(true);
			}
			if (item.worldItem)
			{
				img.gameObject.GetComponent<RectTransform>().sizeDelta = new Vector3(19f, 19f, 1f);
			}
			else
			{
				img.gameObject.GetComponent<RectTransform>().sizeDelta = new Vector3(19f * (float)item.invRow._SizeY, 19f * (float)item.invRow._SizeX, 1f);
			}
			this.SetBackSprite("Normal", img, item);
		}
	}

	// Token: 0x060010B6 RID: 4278 RVA: 0x00140CF8 File Offset: 0x0013EEF8
	public void SetBackSprite(string type, Image img, global::Item item)
	{
		if (Links.x.characterSheet.merchant && item.durability.w >= 1f)
		{
			img.sprite = this.backUnavailable;
			return;
		}
		if (item.worldItem)
		{
			if (type == "Normal")
			{
				img.sprite = this.backGround;
			}
			if (type == "Hover")
			{
				img.sprite = this.backGroundHover;
			}
			if (type == "Unavailable")
			{
				img.sprite = this.backUnavailable;
				return;
			}
		}
		else
		{
			if (type == "Normal")
			{
				img.sprite = this.backNormal;
			}
			if (type == "Hover")
			{
				img.sprite = this.backHover;
			}
			if (type == "Unavailable")
			{
				img.sprite = this.backUnavailable;
			}
		}
	}

	// Token: 0x060010B7 RID: 4279 RVA: 0x00140DDC File Offset: 0x0013EFDC
	public void SnapToGrid(global::Item item, string type)
	{
		if (item)
		{
			this.localImg = item.gridImg;
			if (this.localImg.Count > 0)
			{
				item.bagGridID = this.localImg[0];
			}
			Vector3 vector = Vector3.zero;
			int num = 0;
			bool flag = false;
			if (this.secondaryDragSave)
			{
				flag = true;
			}
			if ((type != "Hidden" && this.inSecondaryBag && flag) || type == "Secondary")
			{
				this.gridTrsMisc = this.secondaryBag.gridTrs;
				this.gridStateMisc = this.secondaryBag.gridState;
				this.gridImgMisc = this.secondaryBag.gridImg;
				this.currGridImg = this.gridImgMisc;
				this.currGridTrs = this.gridTrsMisc;
				this.currGridState = this.gridStateMisc;
			}
			else
			{
				this.currGridImg = this.gridImg;
				this.currGridTrs = this.gridTrs;
				this.currGridState = this.gridState;
			}
			for (int i = 0; i < this.localImg.Count; i++)
			{
				this.currGridState[this.localImg[i]] = true;
				vector += this.currGridTrs[this.localImg[i]].position;
				if (type != "Hidden" || this.open)
				{
					this.currGridImg[this.localImg[i]].sprite = this.filledSprite;
				}
				num++;
			}
			if (vector != Vector3.zero)
			{
				vector /= (float)num;
			}
			item.gameObject.transform.position = vector;
			this.SetBackImageSize(item.backImage, item);
		}
	}

	// Token: 0x060010B8 RID: 4280 RVA: 0x00140F9C File Offset: 0x0013F19C
	public Vector3 GetLocalGridPosition(global::Item item, int gridIndex, string type)
	{
		if (item)
		{
			bool flag = false;
			if ((type != "Hidden" && this.inSecondaryBag && flag) || type == "Secondary")
			{
				this.currGridTrs = this.gridTrsMisc;
			}
			else
			{
				this.currGridTrs = this.gridTrs;
			}
			this.localImg = item.gridImg;
			bool flag2 = false;
			Vector3 position = item.gameObject.transform.position;
			if (this.localImg.Count == 0 || item.inGroundMenu)
			{
				Vector3 vector = Vector3.zero;
				int num = 0;
				this.localImg = item.gridImg;
				this.localImg.Clear();
				this.currGridImg = this.gridImg;
				this.currGridTrs = this.gridTrs;
				this.currGridState = this.gridState;
				int num2 = item.invRow._SizeX;
				int num3 = item.invRow._SizeY;
				int num4 = 0;
				for (int i = 0; i < item.invRow._SizeY; i++)
				{
					int num5 = (num4 + i) % this.mainBagY;
					if (num5 != 0 || (num5 == 0 && i == 0))
					{
						int num6 = num4 + i;
						for (int j = 0; j < item.invRow._SizeX; j++)
						{
							int num7 = num6 + j * this.mainBagY;
							vector += this.currGridTrs[num7].position;
							this.localImg.Add(num7);
							num++;
						}
					}
				}
				if (vector != Vector3.zero)
				{
					vector /= (float)num;
				}
				item.gameObject.transform.position = vector;
			}
			Vector3 vector2;
			if (gridIndex > -1 && gridIndex < this.currGridTrs.Count)
			{
				if (gridIndex > -1 && gridIndex < this.localImg.Count)
				{
					if (this.localImg[gridIndex] < this.currGridTrs.Count && this.localImg[gridIndex] > -1)
					{
						vector2 = this.currGridTrs[this.localImg[gridIndex]].position;
					}
					else
					{
						vector2 = item.gameObject.transform.position;
					}
				}
				else
				{
					vector2 = item.gameObject.transform.position;
				}
			}
			else
			{
				vector2 = item.gameObject.transform.position;
			}
			if (flag2)
			{
				this.localImg.Clear();
				item.gameObject.transform.position = position;
			}
			return vector2;
		}
		return new Vector3(10000f, 10000f, 0f);
	}

	// Token: 0x060010B9 RID: 4281 RVA: 0x0014122C File Offset: 0x0013F42C
	public Vector3 OffsetToCornerEquipped(global::Item item)
	{
		this.localImg = item.gridImg;
		Vector3 vector = Vector3.zero;
		int num = 0;
		this.currGridImg = this.gridImg;
		this.currGridTrs = this.gridTrs;
		this.currGridState = this.gridState;
		int num2 = item.invRow._SizeX * item.invRow._SizeY;
		int num3 = 0;
		for (int i = 0; i < item.invRow._SizeY; i++)
		{
			int num4 = (num3 + i) % this.mainBagY;
			if (num4 != 0 || (num4 == 0 && i == 0))
			{
				int num5 = num3 + i;
				for (int j = 0; j < item.invRow._SizeX; j++)
				{
					int num6 = num5 + j * this.mainBagY;
					vector += this.currGridTrs[num6].position;
					num++;
				}
			}
		}
		if (vector != Vector3.zero)
		{
			vector /= (float)num;
		}
		if (num2 == 1)
		{
			if (this.localImg.Count == 1)
			{
				vector = this.currGridTrs[this.localImg[0]].position;
			}
			return vector - this.currGridTrs[this.localImg[0]].position;
		}
		return vector - this.currGridTrs[0].position;
	}

	// Token: 0x060010BA RID: 4282 RVA: 0x00141388 File Offset: 0x0013F588
	public Vector3 OffsetToCorner(global::Item item)
	{
		this.localImg = item.gridImg;
		Vector3 vector = Vector3.zero;
		int num = 0;
		if (this.fromSecondaryBag)
		{
			this.currGridImg = this.gridImgMisc;
			this.currGridTrs = this.gridTrsMisc;
			this.currGridState = this.gridStateMisc;
		}
		else
		{
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		for (int i = 0; i < this.localImg.Count; i++)
		{
			vector += this.currGridTrs[this.localImg[i]].position;
			num++;
		}
		if (vector != Vector3.zero)
		{
			vector /= (float)num;
		}
		if (this.localImg.Count == 1)
		{
			vector = this.currGridTrs[this.localImg[0]].position;
		}
		if (this.localImg.Count > 0)
		{
			return Vector3.zero;
		}
		return vector - this.currGridTrs[this.localImg[0]].position;
	}

	// Token: 0x060010BB RID: 4283 RVA: 0x001414B0 File Offset: 0x0013F6B0
	public void EndDragging(bool failed)
	{
		if (this.secondaryDragSave)
		{
			this.currGridImg = this.gridImgMisc;
			this.currGridTrs = this.gridTrsMisc;
			this.currGridState = this.gridStateMisc;
		}
		else
		{
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		if (Links.x.joy)
		{
			Links.x.inventory.SetDragMessageText("", null);
		}
		this.groundContainer.btn.interactable = false;
		this.groundContainer.img.raycastTarget = false;
		this.groundContainer.img.enabled = true;
		if (Links.x.joy)
		{
			this.groundContainerBtn.enabled = false;
			this.groundContainerBtnImg.enabled = false;
		}
		for (int i = 0; i < this.groundSlotsList.Count; i++)
		{
			this.groundSlotsList[i].img.raycastTarget = true;
		}
		if (this.dragItem)
		{
			if (this.dragItem.inGroundMenu)
			{
				if (failed)
				{
					this.dragItem.transform.SetAsFirstSibling();
				}
				else
				{
					if (this.dragItem.transform.parent != this.groundBag.groundItemsParent.transform)
					{
						this.dragItem.LeaveGroundMenuList();
					}
					if (!this.bagItems.Contains(this.dragItem) && this.dragItem.transform.parent != this.groundBag.groundItemsParent.transform)
					{
						this.ListsAddBagItem(this.dragItem);
					}
				}
				this.dragItem.ToggleBackImage(true);
			}
			else
			{
				this.dragItem.ToggleBackImage(true);
			}
		}
		if (this.dragItem)
		{
			Links.x.characterSheet.PlayRandomClick();
		}
		if (failed)
		{
			if (this.dragItem)
			{
				for (int j = 0; j < this.dragSaveImg.Count; j++)
				{
					if (this.dragItem)
					{
						this.currGridImg[this.dragSaveImg[j]].sprite = this.filledSprite;
					}
					else
					{
						this.currGridImg[this.dragSaveImg[j]].sprite = this.filledSprite;
					}
					this.currGridState[this.dragSaveImg[j]] = true;
				}
				if (this.dragSaveImg.Count > 0 && this.dragItem)
				{
					this.dragItem.bagGridID = this.dragSaveImg[0];
				}
			}
		}
		else
		{
			for (int k = 0; k < this.dragSaveImg.Count; k++)
			{
				this.currGridImg[this.dragSaveImg[k]].sprite = this.emptySprite;
				this.currGridState[this.dragSaveImg[k]] = false;
			}
		}
		if (this.inSecondaryBag)
		{
			this.currGridImg = this.gridImgMisc;
			this.currGridTrs = this.gridTrsMisc;
			this.currGridState = this.gridStateMisc;
		}
		else
		{
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		this.dragging = false;
		this.ToggleCharacterSheetButtonStateForDrag(false);
		this.openBag.UpdateItemInteractableState(true);
		this.groundContainer.UpdateItemInteractableState(true);
		if (Links.x.joy)
		{
			Links.x.characterSheet.SetSlotButtons(false);
			Links.x.characterSheet.DraggingButtons(false);
			this.SetColorsForEquipButtons(false);
		}
		if (!failed)
		{
			if (this.dragItem)
			{
				this.localImg = this.dragItem.gridImg;
				this.localImg.Clear();
				for (int l = 0; l < this.dragHoverImg.Count; l++)
				{
					this.localImg.Add(this.dragHoverImg[l]);
					if (this.inSecondaryBag)
					{
						this.currGridImg[this.dragHoverImg[l]].sprite = this.emptySprite;
					}
					else
					{
						this.currGridImg[this.dragHoverImg[l]].sprite = this.emptySprite;
					}
					this.currGridState[this.dragHoverImg[l]] = true;
				}
				if (this.dragHoverImg.Count > 0)
				{
					this.dragItem.bagGridID = this.dragHoverImg[0];
				}
			}
			this.CheckSlotImages();
		}
		else
		{
			for (int m = 0; m < this.dragHoverImg.Count; m++)
			{
				this.currGridImg[this.dragHoverImg[m]].sprite = this.emptySprite;
				this.currGridState[this.dragHoverImg[m]] = false;
			}
		}
		if (Links.x.joy && this.dragItem)
		{
			if (this.dragItem.inGroundMenu)
			{
				EventSystem.current.SetSelectedGameObject(this.dragItem.gameObject);
			}
			else
			{
				bool flag = this.hitEquipped && failed;
			}
		}
		this.ClearDrag();
		this.UpdateMisc();
		if (Links.x.arrowKit.open)
		{
			Links.x.arrowKit.UpdateFromInventoryChange();
		}
		bool flag2 = this.enchantMenu.open;
		if (Links.x.characterSheet.booksMenu.open)
		{
			Links.x.characterSheet.booksMenu.doUpdate = true;
		}
		bool rulesetOpen = Links.x.characterSheet.rulesetOpen;
	}

	// Token: 0x060010BC RID: 4284 RVA: 0x00141A69 File Offset: 0x0013FC69
	public void CheckEquippedState(global::Item item)
	{
	}

	// Token: 0x060010BD RID: 4285 RVA: 0x00141A6C File Offset: 0x0013FC6C
	public void HoveringOverItem(global::Item item, bool state, string type)
	{
		if (item.forSale && !Links.x.merchant.isBoro())
		{
			float num = Mathf.Ceil((float)item.invRow._SellPrice * this.selectedPlayer.stats.PartyDispositionSell(Links.x.diorama.sceneName, Links.x.merchant.merchantCharacter));
			num = Links.x.merchant.GetItemHistoryCount(item.invRow, num);
			if (item.invRow._NeedFullStack)
			{
				num *= 1f;
			}
			else
			{
				num *= (float)item.stackSize;
			}
			if (item.socketA.x > 0f)
			{
				num += item.socketB.y;
			}
			if (num > (float)this.emeralds)
			{
				return;
			}
		}
		this.localImg = item.gridImg;
		if (type == "Secondary")
		{
			this.currGridImg = this.gridImgMisc;
			this.currGridTrs = this.gridTrsMisc;
			this.currGridState = this.gridStateMisc;
		}
		else
		{
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		if (item == this.dragItem)
		{
			return;
		}
		for (int i = 0; i < this.localImg.Count; i++)
		{
			if (state)
			{
				this.currGridImg[this.localImg[i]].sprite = this.hoverSprite;
			}
			else
			{
				this.currGridImg[this.localImg[i]].sprite = this.filledSprite;
			}
		}
	}

	// Token: 0x060010BE RID: 4286 RVA: 0x00141C10 File Offset: 0x0013FE10
	public void RemoveItemSlots(global::Item item, bool overrideSecondary)
	{
		this.dragSaveImg.Clear();
		if (item.forSale || (this.fromSecondaryBag && !overrideSecondary))
		{
			this.currGridImg = this.gridImgMisc;
			this.currGridTrs = this.gridTrsMisc;
			this.currGridState = this.gridStateMisc;
		}
		else
		{
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		this.localImg = item.gridImg;
		for (int i = 0; i < this.localImg.Count; i++)
		{
			if (this.localImg[i] < this.currGridImg.Count)
			{
				this.currGridImg[this.localImg[i]].sprite = this.emptySprite;
				this.currGridState[this.localImg[i]] = false;
			}
			else
			{
				Debug.Log(string.Concat(new string[]
				{
					"trouble with remove item slots: ",
					(item != null) ? item.ToString() : null,
					", from secondary bag: ",
					this.fromSecondaryBag.ToString(),
					", override secondary: ",
					overrideSecondary.ToString()
				}));
			}
		}
		this.localImg.Clear();
	}

	// Token: 0x060010BF RID: 4287 RVA: 0x00141D60 File Offset: 0x0013FF60
	public int GetSocketLine(int index)
	{
		for (int i = 0; i < this.allSockets.Count; i++)
		{
			if (this.allSockets[i]._ItemID == index)
			{
				return i;
			}
		}
		return -1;
	}

	// Token: 0x060010C0 RID: 4288 RVA: 0x00141D9C File Offset: 0x0013FF9C
	public bool CheckSocket(global::Item socketItem, global::Item hoveringItem)
	{
		if (!socketItem || !hoveringItem)
		{
			return false;
		}
		if (hoveringItem.invRow._SocketMax == 0 || hoveringItem.socketMax == 0)
		{
			return false;
		}
		int socketLine = this.GetSocketLine(socketItem.ID);
		if (socketLine <= -1)
		{
			return false;
		}
		Library.Sockets sockets = this.allSockets[socketLine];
		if (hoveringItem.invRow._Tag.Contains("Armor"))
		{
			return !(sockets._Category != "Armor");
		}
		if (hoveringItem.invRow._MainSkill == "Bow" || hoveringItem.invRow._MainSkill == "Sling" || hoveringItem.invRow._MainSkill.Contains("Elixir"))
		{
			return !(sockets._Category != "Range");
		}
		return !(sockets._Category == "Range") && !(sockets._Category == "Armor");
	}

	// Token: 0x060010C1 RID: 4289 RVA: 0x00141EAC File Offset: 0x001400AC
	public void DragListen()
	{
		if (this.pickingEquipItem)
		{
			this.ClearDrag();
			return;
		}
		Vector3 vector = Vector3.zero + this.offset;
		if (Links.x.joy)
		{
			if (this.dragItem)
			{
				this.startPos += new Vector3(Links.x.fellowship.move.x, Links.x.fellowship.move.y, 0f) * Links.x.fellowship.move.magnitude;
				vector = this.startPos;
				if (Links.x.gameplay.currentEventObject == null)
				{
					EventSystem.current.SetSelectedGameObject(this.groundContainer.gameObject);
				}
			}
		}
		else
		{
			vector = Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition) + this.offset;
		}
		if (!this.open)
		{
			return;
		}
		this.addMoney = 0;
		if (Links.x.mk)
		{
			this.dragGo.transform.position = vector;
			if (Input.GetMouseButton(0) && this.dragItem && this.dragging && (this.clickCount == 0 || this.clickCount == 2) && this.dragItem.backImage.enabled)
			{
				this.dragItem.ToggleBackImage(false);
			}
		}
		else if (Links.x.gameplay.currentEventObject != null)
		{
			string name = Links.x.gameplay.currentEventObject.name;
			if (name.Contains("_Grid_"))
			{
				if (Links.x.gameplay.currentEventObject.transform.parent.gameObject.name.Contains("Merchant"))
				{
					this.dropScript = this.merchantBag;
					this.dropObject = this.merchantBag.gameObject;
					this.dropPosition = this.dragItem.transform.position;
				}
				else
				{
					this.dropScript = this.openBag;
					this.dropObject = this.openBag.gameObject;
					this.dropPosition = this.dragItem.transform.position;
				}
			}
			else if (name.Contains("Equip"))
			{
				this.dropScript = this.equipBag;
				this.dropObject = this.equipBag.gameObject;
				this.dropPosition = this.dragItem.transform.position;
			}
			else if (name.Contains("Ground"))
			{
				this.dropScript = this.groundContainer;
				this.dropObject = this.groundContainer.gameObject;
				this.dropPosition = this.dragItem.transform.position;
			}
			else if (name.Contains("Portrait"))
			{
				this.dropScript = Links.x.gameplay.currentEventObject.gameObject.GetComponent<InventoryContainer>();
				this.dropObject = this.dropScript.gameObject;
				this.dropPosition = this.dragItem.transform.position;
			}
			else if (name.Contains("Scrollbar"))
			{
				this.dropScript = null;
				this.dropObject = null;
				this.dropPosition = this.dragItem.transform.position;
			}
			else if (Links.x.gameplay.currentEventObject.transform.parent.gameObject.name == "Equip Slots")
			{
				this.dropScript = this.equipBag;
				this.dropObject = Links.x.gameplay.currentEventObject;
				this.dropPosition = this.dragItem.transform.position;
			}
		}
		this.prevPosition = vector;
		if (Links.x.gameplay.actionStart && Time.realtimeSinceStartup > this.dragTime + 0.2f && Time.realtimeSinceStartup > this.actionSelectTime + 0.2f)
		{
			this.releaseItem = true;
		}
		bool flag = false;
		int num = this.mainBagX;
		int num2 = this.mainBagY;
		string text = "";
		this.hoveringOverEquipmentSlot = false;
		if (this.dropScript)
		{
			if (this.dropScript.merchantTake || this.dropScript.merchantGive)
			{
				num = this.secondaryBagX;
				num2 = this.secondaryBagY;
				text = "Secondary";
			}
			if (this.dropScript.ground)
			{
				this.ClearDrag();
			}
		}
		if (this.dragItem)
		{
			flag = this.CheckGrid(true, this.dragItem, Vector3.zero, this.pickUpTiles, num, num2, text);
		}
		if (Links.x.joy)
		{
			if (flag)
			{
				Vector3 vector2 = Vector3.zero;
				int num3 = 0;
				for (int i = 0; i < this.dragHoverImg.Count; i++)
				{
					if (this.dropScript == this.merchantBag)
					{
						vector2 += this.gridTrsMisc[this.dragHoverImg[i]].position;
					}
					else
					{
						vector2 += this.gridTrs[this.dragHoverImg[i]].position;
					}
					num3++;
				}
				if (vector2 != Vector3.zero)
				{
					vector2 /= (float)num3;
				}
				vector2.z = 0f;
				this.dragItem.gameObject.transform.position = vector2;
			}
			if (this.dropScript && Links.x.gameplay.currentEventObject)
			{
				if (this.dropScript.ground)
				{
					this.dragGo.transform.position = Links.x.gameplay.currentEventObject.transform.position;
				}
				if (this.dropScript.equip)
				{
					this.hoveringOverEquipmentSlot = true;
					this.dragGo.transform.position = Links.x.gameplay.currentEventObject.transform.position;
				}
				if (this.dropScript.portrait)
				{
					this.dragGo.transform.position = Links.x.gameplay.currentEventObject.transform.position;
				}
				if (this.dragItem)
				{
					this.dragItem.SetSprite(false);
				}
			}
			if (this.dropScript != this.merchantBag && this.dropScript != this.openBag)
			{
				this.ClearDrag();
			}
		}
		float num4 = -20f;
		this.dragGo.transform.localPosition = new Vector3(this.dragGo.transform.localPosition.x, this.dragGo.transform.localPosition.y, num4);
		if (!this.dropScript)
		{
			this.HoverOverGround();
			flag = false;
		}
		else if (this.hitItem && this.dropScript.bag)
		{
			if (this.hitItem.bag)
			{
				this.dropScript = this.hitItem.bag;
			}
			flag = false;
			this.ClearDrag();
		}
		if (Links.x.joy && Links.x.gameplay.currentEventObject && Links.x.gameplay.currentEventObject.name.Contains("Grid Item Back Image"))
		{
			flag = false;
			this.hitItem = Links.x.gameplay.currentEventObject.GetComponent<UITriggerButton>().GetItem();
			this.dragGo.transform.position = this.hitItem.tr.position + new Vector3(0.1f, 0.1f, 0f);
			this.ClearDrag();
		}
		if (Links.x.joy)
		{
			Links.x.inventory.SetDragMessageText("Dragging", null);
		}
		bool flag2 = false;
		if ((Links.x.mk && Input.GetMouseButtonUp(0)) || (Links.x.joy && this.releaseItem) || this.closing)
		{
			this.hoveringOverEquipmentSlot = false;
			this.releaseItem = false;
			bool flag3 = false;
			bool flag4 = false;
			if (Records.x.InCombat(false) && Links.x.sensory.CanBeSeen(this.selectedPlayer))
			{
				flag2 = true;
			}
			if (!this.dropObject && this.draggingSocket && this.hitItem && this.CheckSocket(this.dragItem, this.hitItem))
			{
				this.dropScript = this.openBag;
				this.dropObject = this.openBag.gameObject;
				this.dropPosition = this.dragItem.transform.position;
				Debug.Log("Found socket");
			}
			if (this.dropScript && this.startDragObjectScript && this.dropScript.portrait && this.startDragObjectScript.ground)
			{
				flag3 = true;
			}
			if (!this.dropObject || flag3)
			{
				flag3 = true;
				flag4 = false;
			}
			else if (this.dropScript != null)
			{
				global::Item item = null;
				bool flag5 = false;
				if (this.dropScript.bag && !this.hitItem)
				{
					for (int j = 0; j < this.dragHoverImg.Count; j++)
					{
						for (int k = 0; k < this.bagItems.Count; k++)
						{
							if (this.bagItems[k] && this.bagItems[k] != this.dragItem && this.bagItems[k].HasGridSlot(this.dragHoverImg[j]))
							{
								if (Records.x.editor)
								{
									string[] array = new string[8];
									array[0] = "has item in slot ";
									array[1] = this.dragHoverImg[j].ToString();
									array[2] = " ";
									int num5 = 3;
									global::Item item2 = this.bagItems[k];
									array[num5] = ((item2 != null) ? item2.ToString() : null);
									array[4] = " ";
									int num6 = 5;
									InventoryContainer inventoryContainer = this.startDragObjectScript;
									array[num6] = ((inventoryContainer != null) ? inventoryContainer.ToString() : null);
									array[6] = " ";
									int num7 = 7;
									InventoryContainer inventoryContainer2 = this.dropScript;
									array[num7] = ((inventoryContainer2 != null) ? inventoryContainer2.ToString() : null);
									Debug.Log(string.Concat(array));
								}
								if (!item || this.bagItems[k] == item)
								{
									item = this.bagItems[k];
									flag5 = true;
								}
								else
								{
									flag4 = true;
									flag5 = false;
									item = null;
								}
							}
						}
					}
				}
				if (this.startDragObjectScript && ((this.dropScript.portrait && this.startDragObjectScript.merchantTake) || (this.dropScript.portrait && !this.dropScript.character)))
				{
					Debug.Log("Portrait drag");
					this.HoverOverGround();
					this.EndDragging(true);
					this.FailedDrag();
					this.dragging = false;
					this.draggingSocket = false;
					this.dragGo = null;
					this.dragItem = null;
					return;
				}
				if (this.startDragObjectScript && (this.startDragObjectScript.merchantTake && !this.dropScript.merchantTake && flag))
				{
					bool flag6 = Links.x.merchant.isBoro();
					if (this.dragItem.durability.w == 1f && !Links.x.merchant.CanSellContraband() && !flag6)
					{
						string merchantText = Links.x.merchant.GetMerchantText("Contraband");
						Links.x.characterSheet.StartQuip(merchantText, FaceAnimations.AnimationNames.Frown);
						Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
						flag3 = true;
					}
					else if (this.dragItem.durability.w == 3f && !flag6)
					{
						string merchantText2 = Links.x.merchant.GetMerchantText("MerchantGoods");
						Links.x.characterSheet.StartQuip(merchantText2, FaceAnimations.AnimationNames.Frown);
						Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
						flag3 = true;
					}
					else if ((this.dragItem.invRow._ID == Links.x.library.spellbookIndex || this.dragItem.invRow._ID == Links.x.library.songbookIndex) && !flag6)
					{
						string merchantText3 = Links.x.merchant.GetMerchantText("Book");
						Links.x.characterSheet.StartQuip(merchantText3, FaceAnimations.AnimationNames.Frown);
						Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
						flag3 = true;
					}
					else if (this.dragItem.invRow._NeedFullStack && this.dragItem.stackSize < this.dragItem.invRow._MaxStackSize && !flag6)
					{
						string merchantText4 = Links.x.merchant.GetMerchantText("Full Stack");
						Links.x.characterSheet.StartQuip(merchantText4, FaceAnimations.AnimationNames.Frown);
						Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
						flag3 = true;
					}
					else
					{
						if (item || flag4 || flag3)
						{
							this.HoverOverGround();
							this.EndDragging(true);
							this.FailedDrag();
							this.dragging = false;
							this.draggingSocket = false;
							this.dragGo = null;
							this.dragItem = null;
							return;
						}
						bool flag7 = false;
						float num8 = 0f;
						if (!Links.x.merchant.isBoro())
						{
							num8 = Mathf.Ceil((float)this.dragItem.invRow._SellPrice * this.selectedPlayer.stats.PartyDispositionSell(Links.x.diorama.sceneName, Links.x.merchant.merchantCharacter));
							num8 = Links.x.merchant.GetItemHistoryCount(this.dragItem.invRow, num8);
							if (this.dragItem.invRow._NeedFullStack)
							{
								num8 *= 1f;
							}
							else
							{
								num8 *= (float)this.dragItem.stackSize;
							}
							if (this.dragItem.socketA.x > 0f)
							{
								num8 += this.dragItem.socketB.y;
							}
						}
						if ((float)this.emeralds >= num8 || Links.x.merchant.isBoro())
						{
							flag7 = true;
						}
						if (flag7 || !this.dragItem.forSale)
						{
							if (this.dragItem.forSale && !Links.x.merchant.isBoro())
							{
								this.emeralds -= (int)Mathf.Ceil(num8);
								Debug.Log(num8);
							}
							if (!Links.x.merchant.isBoro())
							{
								this.peddlerFX.gameObject.SetActive(true);
								this.peddlerFX.Play("Peddler", -1, 0f);
								this.peddlerSellAmount.text = num8.ToString();
								this.peddlerSellAmount.color = Color.white;
								this.peddlerFX.GetComponent<RectTransform>().position = this.dragItem.gameObject.transform.position;
								MasterAudio.PlaySoundAndForget("Inventory", 1f, new float?(1f), 0.25f, "Coins", null);
								string merchantText5 = Links.x.merchant.GetMerchantText("Sell");
								Links.x.characterSheet.StartQuip(merchantText5, FaceAnimations.AnimationNames.Smile);
								Links.x.characterSheet.PlayVignetteAnimation("Nod Head");
							}
							this.dragItem.forSale = false;
							Links.x.merchant.RemoveItem(this.dragItem);
						}
						else
						{
							string merchantText6 = Links.x.merchant.GetMerchantText("Unavailable");
							Links.x.characterSheet.StartQuip(merchantText6, FaceAnimations.AnimationNames.Frown);
							flag3 = true;
							Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
						}
					}
				}
				if (this.dropScript.equip)
				{
					bool flag8 = false;
					if (this.dragItem.equipSlot >= 0)
					{
						flag8 = true;
					}
					int num9 = 0;
					int num10 = 0;
					Body body = Links.x.characterSheet.body;
					if (Links.x.joy)
					{
						body.HoverArmor(false);
					}
					if (flag8)
					{
						num9 = this.bagItems.IndexOf(this.dragItem);
						num10 = this.dragItem.equipSlot;
						int num11 = num10;
						if (Links.x.mk)
						{
							num10 = this.GetEquipSlot(num11, this.dragItem);
						}
						else
						{
							num10 = this.GetEquipSlot(num11, this.dragItem);
						}
						if (this.hitEquipped)
						{
							int equipIndex = this.hitEquipped.equipIndex;
							int equipSlot = this.dragItem.equipSlot;
							if (equipSlot == 4)
							{
								if (equipIndex == 4 || equipIndex == 5 || equipIndex == 6)
								{
									num10 = this.hitEquipped.equipIndex;
								}
							}
							else if (equipSlot == 0)
							{
								if (equipIndex == 0 || equipIndex == 1 || equipIndex == 2 || equipIndex == 3 || equipIndex == 16 || equipIndex == 17 || equipIndex == 18 || equipIndex == 15)
								{
									num10 = this.hitEquipped.equipIndex;
								}
							}
							else if (equipSlot == 13)
							{
								if (equipIndex == 13)
								{
									num10 = this.hitEquipped.equipIndex;
								}
								if (equipIndex == 14)
								{
									num10 = this.hitEquipped.equipIndex;
								}
								if (equipIndex == 7)
								{
									num10 = this.hitEquipped.equipIndex;
								}
							}
							else if (equipSlot == equipIndex)
							{
								num10 = this.hitEquipped.equipIndex;
							}
						}
						if (this.dropObject.transform.parent.gameObject.name.Contains("Equip Slots"))
						{
							if ((this.dropObject.name == "Alt Hand 1" || this.dropObject.name == "Alt Hand 2") && (this.dragItem.equipSlot == 0 || this.dragItem.equipSlot == 1))
							{
								this.hitWeaponRack = true;
							}
							if (this.dropObject.name.Contains("Ring 1") && this.dragItem.equipSlot == 10)
							{
								num10 = 10;
							}
							if (this.dropObject.name.Contains("Ring 2") && this.dragItem.equipSlot == 10)
							{
								num10 = 11;
							}
							if (this.dropObject.name.Contains("Belt Item 1") && (this.dragItem.equipSlot == 13 || this.dragItem.equipSlot == 7))
							{
								num10 = 7;
							}
							if (this.dropObject.name.Contains("Belt Item 2") && (this.dragItem.equipSlot == 13 || this.dragItem.equipSlot == 7))
							{
								num10 = 13;
							}
							if (this.dropObject.name.Contains("Belt Item 3") && (this.dragItem.equipSlot == 13 || this.dragItem.equipSlot == 7))
							{
								num10 = 14;
							}
							if (this.dropObject.name.Contains("Ammo 1") && this.dragItem.equipSlot == 4)
							{
								num10 = 4;
							}
							if (this.dropObject.name.Contains("Ammo 2") && this.dragItem.equipSlot == 4)
							{
								num10 = 5;
							}
							if (this.dropObject.name.Contains("Ammo 3") && this.dragItem.equipSlot == 4)
							{
								num10 = 6;
							}
							if (this.dropObject.name.Contains("Off Hand") && this.dragItem.equipSlot == 0)
							{
								num10 = 1;
							}
						}
						if (this.hitWeaponRack)
						{
							int equipSlot2 = this.dragItem.equipSlot;
							if (equipSlot2 == 0)
							{
								if (this.dropObject.name == "Alt Hand 2" && !this.dragItem.invRow._MainSkill.Contains("Whip"))
								{
									num10 = 17;
								}
								else
								{
									num10 = 16;
								}
								if (body.GetItemEquipped(16))
								{
									Library.Inventory invRow = body.GetItemEquipped(16).invRow;
									if (invRow._TwoHanded || !this.selectedPlayer.stats.canUseTwoWeapons || invRow._MainSkill == "Whip")
									{
										if (this.selectedPlayer.stats.race != "Yeti")
										{
											num10 = 16;
										}
									}
									else if (this.selectedPlayer.stats.race == "Yeti" || (!this.dragItem.invRow._TwoHanded && this.dragItem.invRow._MainSkill != "Whip"))
									{
										num10 = 17;
									}
									else
									{
										num10 = 16;
									}
								}
							}
							else if (equipSlot2 == 1)
							{
								if (body.GetItemEquipped(16))
								{
									Library.Inventory invRow2 = body.GetItemEquipped(16).invRow;
									if ((this.selectedPlayer.stats.race != "Yeti" && invRow2._TwoHanded) || !this.selectedPlayer.stats.canUseTwoWeapons || (this.dragItem.invRow._EquipSlotID != 1 && invRow2._MainSkill == "Whip"))
									{
										Links.x.characterSheet.StartQuip("I can't use these together", FaceAnimations.AnimationNames.Frown);
										if (this.dragParent)
										{
											this.HoverOverGround();
											this.EndDragging(true);
											this.FailedDrag();
											this.dragging = false;
											this.draggingSocket = false;
											this.dragGo = null;
											this.dragItem = null;
											flag4 = true;
											return;
										}
										flag4 = true;
										flag3 = false;
									}
								}
								num10 = 17;
							}
						}
						for (int l = 0; l < 2; l++)
						{
							int num12 = 0;
							if (l == 1)
							{
								num12 = 16;
							}
							if (num10 == num12 && this.selectedPlayer.stats.race == "Yeti")
							{
								flag8 = false;
								if (this.dragItem.invRow._TwoHanded && !this.dragItem.invRow._MainSkill.Contains("Sling") && !this.dragItem.invRow._MainSkill.Contains("Bow") && !this.dragItem.invRow._MainSkill.Contains("Elixir"))
								{
									flag8 = true;
								}
								if (!flag8)
								{
									Links.x.characterSheet.StartQuip("Too small for Yeti", FaceAnimations.AnimationNames.Frown);
									if (this.dragParent)
									{
										this.HoverOverGround();
										this.EndDragging(true);
										this.FailedDrag();
										this.dragging = false;
										this.draggingSocket = false;
										this.dragGo = null;
										this.dragItem = null;
										flag4 = true;
										return;
									}
									flag4 = true;
									flag3 = false;
								}
							}
							if (num10 == 1 + num12)
							{
								if (this.selectedPlayer.stats.race == "Yeti")
								{
									flag8 = false;
									if (this.dragItem.invRow._MainSkill.Contains("Large"))
									{
										flag8 = true;
									}
									if (this.dragItem.invRow._TwoHanded && !this.dragItem.invRow._MainSkill.Contains("Sling") && !this.dragItem.invRow._MainSkill.Contains("Bow") && !this.dragItem.invRow._MainSkill.Contains("Elixir"))
									{
										flag8 = true;
									}
									if (!flag8)
									{
										Links.x.characterSheet.StartQuip("Too small for Yeti", FaceAnimations.AnimationNames.Frown);
										if (this.dragParent)
										{
											this.HoverOverGround();
											this.EndDragging(true);
											this.FailedDrag();
											this.dragging = false;
											this.draggingSocket = false;
											this.dragGo = null;
											this.dragItem = null;
											flag4 = true;
											return;
										}
										flag4 = true;
										flag3 = false;
									}
								}
								if (this.dragItem.invRow._MainSkill.Contains("Whip"))
								{
									if (body.GetItemEquipped(num12))
									{
										flag8 = false;
										Links.x.characterSheet.StartQuip("I can't carry a whip in this hand", FaceAnimations.AnimationNames.Frown);
										if (this.dragParent)
										{
											this.HoverOverGround();
											this.EndDragging(true);
											this.FailedDrag();
											this.dragging = false;
											this.draggingSocket = false;
											this.dragGo = null;
											this.dragItem = null;
											return;
										}
										flag4 = true;
										flag3 = false;
									}
									else
									{
										num10 = num12;
									}
								}
							}
						}
						for (int m = 0; m < 2; m++)
						{
							if (flag8)
							{
								global::Item item3 = this.dragItem;
								int num13 = 0;
								if (m == 1)
								{
									num13 = 16;
								}
								if ((num10 == 1 + num13 || num10 == num13) && !this.selectedPlayer.stats.race.Contains("Yeti") && this.dragItem.invRow._TwoHanded && num10 == num13)
								{
									ItemEquipped itemEquipped = body.GetItemEquipped(1 + num13);
									if (itemEquipped)
									{
										this.RemoveEquippedItem(itemEquipped, -1, 1 + num13);
										this.dragItem = item3;
									}
									itemEquipped = body.GetItemEquipped(2 + num13);
									if (itemEquipped)
									{
										this.RemoveEquippedItem(itemEquipped, -1, 2 + num13);
										this.dragItem = item3;
									}
									int num14;
									if (m == 0)
									{
										num14 = 3;
									}
									else
									{
										num14 = 15;
									}
									itemEquipped = body.GetItemEquipped(num14);
									if (itemEquipped)
									{
										this.RemoveEquippedItem(itemEquipped, -1, num14);
										this.dragItem = item3;
									}
								}
							}
						}
						for (int n = 0; n < 2; n++)
						{
							int num15 = 0;
							if (n == 1)
							{
								num15 = 16;
							}
							if (flag8)
							{
								if (num10 == num15)
								{
									if (body.GetItemEquipped(num15) && num10 == 1 + num15)
									{
										Library.Inventory invRow3 = body.GetItemEquipped(num15).invRow;
										Debug.Log(invRow3._MainSkill + " " + this.dragItem.invRow._EquipSlotID.ToString());
										if (this.selectedPlayer.stats.race != "Yeti" && (invRow3._TwoHanded || this.dragItem.invRow._TwoHanded))
										{
											Debug.Log("Can't equip shield, returning");
											flag8 = false;
											Links.x.characterSheet.StartQuip("I can't use these together", FaceAnimations.AnimationNames.Frown);
											if (this.dragParent)
											{
												this.HoverOverGround();
												this.EndDragging(true);
												this.FailedDrag();
												this.dragging = false;
												this.draggingSocket = false;
												this.dragGo = null;
												this.dragItem = null;
												flag4 = true;
												return;
											}
											flag4 = true;
											flag3 = false;
										}
									}
									if (body.GetItemEquipped(1 + num15) && num10 == num15)
									{
										Library.Inventory invRow4 = body.GetItemEquipped(1 + num15).invRow;
										if (this.selectedPlayer.stats.race != "Yeti" && (this.dragItem.invRow._TwoHanded || (!invRow4._Tag.Contains("Shield") && this.dragItem.invRow._MainSkill == "Whip")))
										{
											Debug.Log("Can't equip weapon, returning " + num10.ToString());
											flag8 = false;
											Links.x.characterSheet.StartQuip("I can't use these together", FaceAnimations.AnimationNames.Frown);
											if (this.dragParent)
											{
												this.HoverOverGround();
												this.EndDragging(true);
												this.FailedDrag();
												this.dragging = false;
												this.draggingSocket = false;
												this.dragGo = null;
												this.dragItem = null;
												flag4 = true;
												return;
											}
											flag4 = true;
											flag3 = false;
										}
									}
								}
								if (num10 == 1 + num15 && body.GetItemEquipped(num15))
								{
									Library.Inventory invRow5 = body.GetItemEquipped(num15).invRow;
									if ((invRow5._TwoHanded && this.selectedPlayer.stats.race != "Yeti") || (invRow5._MainSkill == "Whip" && this.dragItem.invRow._EquipSlotID != 1))
									{
										flag8 = false;
										Debug.Log("Can't equip shield, returning");
										if (this.dragItem.equipSlot == 1)
										{
											Links.x.characterSheet.StartQuip("I can't use a shield with this weapon", FaceAnimations.AnimationNames.Frown);
										}
										else
										{
											Links.x.characterSheet.StartQuip("I can't use an extra weapon with this weapon", FaceAnimations.AnimationNames.Frown);
										}
										if (this.dragParent)
										{
											this.HoverOverGround();
											this.EndDragging(true);
											this.FailedDrag();
											this.dragging = false;
											this.draggingSocket = false;
											this.dragGo = null;
											this.dragItem = null;
											flag4 = true;
											return;
										}
										flag4 = true;
										flag3 = false;
									}
								}
								if (num10 == 1 + num15 && this.selectedPlayer.stats.race != "Yeti" && this.dragItem.invRow._TwoHanded)
								{
									if (!body.GetItemEquipped(num15))
									{
										num10 = num15;
									}
									if (num10 == 1 + num15)
									{
										flag8 = false;
										Debug.Log("Can't equip, returning");
										Links.x.characterSheet.StartQuip("I can't carry this weapon in this hand", FaceAnimations.AnimationNames.Frown);
										if (this.dragParent)
										{
											this.HoverOverGround();
											this.EndDragging(true);
											this.FailedDrag();
											this.dragging = false;
											this.draggingSocket = false;
											this.dragGo = null;
											this.dragItem = null;
											flag4 = true;
											return;
										}
										flag4 = true;
										flag3 = false;
									}
								}
							}
						}
					}
					bool flag9 = false;
					if (this.dragItem.invRow._MainSkill != "" && flag8 && !this.SkillCheck(this.dragItem.invRow) && !Records.x.filming && num10 != 7 && num10 != 13 && num10 != 14)
					{
						flag9 = true;
						int num16 = Random.Range(0, 3);
						string text2 = "This is unfamiliar";
						if (num16 == 1)
						{
							text2 = "I've not trained with this";
						}
						if (num16 == 2)
						{
							text2 = "I don't know how to use this";
						}
						Links.x.characterSheet.StartQuip(text2, FaceAnimations.AnimationNames.Frown);
					}
					if (this.dragItem.invRow._Tag == "Ammunition" && (this.dragItem.invRow._Name.Contains("Dart") || this.dragItem.invRow._Name.Contains("Vial")) && (this.dragItem.ID > Links.x.library.dartsMin || (this.dragItem.ID > Links.x.library.vialsMin + 1 && this.dragItem.ID <= Links.x.library.vialsMax)))
					{
						flag8 = false;
						Debug.Log("Can't equip, returning");
						Links.x.characterSheet.StartQuip("I should keep this in my bag until I need it", FaceAnimations.AnimationNames.Frown);
						if (this.dragParent)
						{
							this.HoverOverGround();
							this.EndDragging(true);
							this.FailedDrag();
							this.dragging = false;
							this.draggingSocket = false;
							this.dragGo = null;
							this.dragItem = null;
							flag4 = true;
							return;
						}
						flag4 = true;
						flag3 = false;
					}
					bool flag10 = false;
					global::Item item4 = this.dragItem;
					ItemEquipped itemEquipped2 = null;
					if (flag8)
					{
						if (this.bagID[num10] > 1)
						{
							itemEquipped2 = body.GetItemEquipped(num10);
							if (itemEquipped2)
							{
								flag10 = true;
							}
						}
						if (flag10 && itemEquipped2.invRow._Stackable && itemEquipped2.invRow._ID == this.dragItem.invRow._ID && ((itemEquipped2.socketA == this.dragItem.socketA && itemEquipped2.socketB == this.dragItem.socketB) || (itemEquipped2.socketA.x <= 0f && this.dragItem.socketA.x <= 0f)))
						{
							if (itemEquipped2.stackSize + this.dragItem.stackSize <= itemEquipped2.invRow._MaxStackSize)
							{
								Debug.Log("stacking " + itemEquipped2.stackSize.ToString() + " " + this.dragItem.stackSize.ToString());
								itemEquipped2.stackSize += this.dragItem.stackSize;
								if (itemEquipped2.buddyItemEquipped2D)
								{
									itemEquipped2.buddyItemEquipped2D.stackSize = itemEquipped2.stackSize;
									itemEquipped2.buddyItemEquipped2D.UpdateStackSize();
								}
								if (itemEquipped2.buddyItemEquipped3D)
								{
									itemEquipped2.buddyItemEquipped3D.stackSize = itemEquipped2.stackSize;
									itemEquipped2.buddyItemEquipped3D.UpdateStackSize();
								}
								this.SetBagAmt(num10, itemEquipped2.stackSize, this.selectedPlayer);
								itemEquipped2.UpdateStackSize();
								if (itemEquipped2.buddyItemEquipped2D)
								{
									itemEquipped2.buddyItemEquipped2D.UpdateStackSize();
								}
								if (num9 > -1)
								{
									this.bagItems[num9] = null;
									this.bagID[num9] = 0;
									this.bagAmount[num9] = 0;
									this.socketA[num9] = Vector3.zero;
									this.socketB[num9] = Vector3.zero;
									this.bagPos[num9] = -1;
									this.durabilities[num9] = new Vector4(0f, 0f, 0f, 0f);
								}
								this.dragItem.gridImg.Clear();
								this.dragItem.DestroyItem(false, false);
								this.dragItem = null;
								this.HoverOverGround();
								this.EndDragging(false);
								this.prevHitItem = null;
								this.prevItem = null;
								this.dragging = false;
								this.draggingSocket = false;
								this.dragGo = null;
								this.selectedPlayer.UpdateListsFromInv(true);
								this.selectedPlayer.portrait.skillBag.SetTrinketGrid(false);
								return;
							}
							if (itemEquipped2.stackSize < itemEquipped2.invRow._MaxStackSize)
							{
								int stackSize = itemEquipped2.stackSize;
								itemEquipped2.stackSize = itemEquipped2.invRow._MaxStackSize;
								this.dragItem.stackSize -= itemEquipped2.invRow._MaxStackSize - stackSize;
								this.SetBagAmt(this.dragItem, this.dragItem.stackSize, this.selectedPlayer);
								this.SetBagAmt(num10, itemEquipped2.stackSize, this.selectedPlayer);
								Debug.Log(string.Concat(new string[]
								{
									"stacking ",
									itemEquipped2.stackSize.ToString(),
									" ",
									this.dragItem.stackSize.ToString(),
									" ",
									itemEquipped2.invRow._MaxStackSize.ToString()
								}));
								itemEquipped2.UpdateStackSize();
								if (itemEquipped2.buddyItemEquipped2D)
								{
									itemEquipped2.buddyItemEquipped2D.stackSize = itemEquipped2.stackSize;
									itemEquipped2.buddyItemEquipped2D.UpdateStackSize();
								}
								if (itemEquipped2.buddyItemEquipped3D)
								{
									itemEquipped2.buddyItemEquipped3D.stackSize = itemEquipped2.stackSize;
									itemEquipped2.buddyItemEquipped3D.UpdateStackSize();
								}
								this.dragItem.CheckStackSize();
								this.selectedPlayer.UpdateListsFromInv(true);
								this.selectedPlayer.portrait.skillBag.SetTrinketGrid(false);
								flag4 = true;
								flag8 = false;
							}
						}
					}
					if (flag8)
					{
						if (this.dragItem.ID == Links.x.library.torchID || this.dragItem.ID == Links.x.library.incenseTorchID)
						{
							this.dragItem.durability.z = Links.x.gameplay.seconds;
						}
						global::Item item5 = null;
						if (flag10)
						{
							if (itemEquipped2.ID == Links.x.library.torchID || itemEquipped2.ID == Links.x.library.incenseTorchID)
							{
								this.EndTorchTime(itemEquipped2);
							}
							item5 = this.SpawnItem(null, true, itemEquipped2.ID, itemEquipped2.stackSize, itemEquipped2.socketA, itemEquipped2.socketB, itemEquipped2.durability, Vector3.zero, this.openBag.transform);
							item5.durability = itemEquipped2.durability;
							item5.equipIndex = this.dragItem.equipIndex;
							item5.bagGridID = -1;
							item5.img.enabled = true;
							this.dragItem = item4;
						}
						if (num9 > -1)
						{
							this.bagItems[num9] = null;
							this.bagID[num9] = 0;
							this.bagAmount[num9] = 0;
							this.socketA[num9] = Vector3.zero;
							this.socketB[num9] = Vector3.zero;
							this.bagPos[num9] = -1;
							this.durabilities[num9] = new Vector4(0f, 0f, 0f, 0f);
						}
						if (num10 == 8 || num10 == 10 || num10 == 11 || num10 == 12)
						{
							Links.x.characterSheet.StartQuip("EquipJewelry", FaceAnimations.AnimationNames.Smile);
						}
						if ((num10 <= 7 || num10 == 9 || num10 >= 13) && !flag9)
						{
							Links.x.characterSheet.StartQuip("EquipItem", FaceAnimations.AnimationNames.Smile);
						}
						if (num10 == 0 || num10 == 16)
						{
							this.selectedPlayer.portrait.skillBag.ResetWeapons();
						}
						this.dragItem = item4;
						this.bagItems[num10] = null;
						this.bagID[num10] = this.dragItem.ID;
						this.bagAmount[num10] = this.dragItem.stackSize;
						this.socketA[num10] = this.dragItem.socketA;
						this.socketB[num10] = this.dragItem.socketB;
						this.bagPos[num10] = -1;
						this.durabilities[num10] = this.dragItem.durability;
						if ((this.dragItem.invRow._Life > 0 || this.dragItem.invRow._Effect.Contains("Cure")) && this.dragItem.invRow._Effect.Contains("Cure") && this.dragItem.durability.x <= 0f)
						{
							float num17 = (float)this.dragItem.invRow._Life;
							if (num17 == 0f)
							{
								num17 = 300f;
							}
							float num18 = Links.x.gameplay.seconds + num17;
							Vector4 durability = this.dragItem.durability;
							durability.x = num18;
							this.durabilities[num10] = durability;
						}
						if (this.dragItem.inGroundMenu)
						{
							this.dragItem.LeaveGroundMenuList();
						}
						this.dragItem.gridImg.Clear();
						this.dragItem.DestroyItem(false, false);
						this.dragItem = null;
						this.HoverOverGround();
						this.EndDragging(false);
						this.prevHitItem = null;
						this.prevItem = null;
						this.dragging = false;
						this.draggingSocket = false;
						this.dragGo = null;
						this.selectedPlayer.UpdateListsFromInv(true);
						Links.x.characterSheet.PlayRandomClick();
						this.selectedPlayer.CreateEquippedItems(this.bagID[num10], this.bagAmount[num10], this.socketA[num10], this.socketB[num10], num10 * 2, true);
						this.SetupEquippedItems(body, false, num10, false);
						if (item5)
						{
							if (!this.FindOpenSpace(item5.transform.position, item5, this.mainBagX, this.mainBagY, "Hidden", this.openBag))
							{
								int num19 = -1;
								if (this.selectedPlayer.node != null)
								{
									num19 = (int)this.selectedPlayer.node.Area;
								}
								this.groundBag.DropLoot(item5.ID, item5.stackSize, item5.socketA, item5.socketB, item5.durability, this.selectedPlayer, this.selectedPlayer.tr.position + new Vector3(Random.Range(-2f, 2f), 0f, Random.Range(-2f, 2f)), true, item5.forSale, num19);
								item5.DestroyItem(false, false);
								if (this.open)
								{
									this.UpdateGroundSlots();
								}
							}
							else
							{
								this.inSecondaryBag = false;
								this.ListsAddBagItem(item5);
								if (item5.enabled)
								{
									int num20 = this.bagItems.IndexOf(item5);
									if (num20 > -1)
									{
										this.bagPos[num20] = item5.bagGridID;
									}
									item5.AddSocketImgs();
									item5.CheckStackSize();
								}
								item5.gameObject.transform.SetParent(this.openBag.transform);
								item5.SetSprite(false);
								item5.ToggleBackImage(false);
								this.SetBackImageSize(item5.backImage, item5);
								if (this.dragSaveImg.Count > 0 && item5)
								{
									item5.bagGridID = this.dragSaveImg[0];
								}
								this.selectedPlayer.UpdateListsFromInv(true);
							}
						}
						if (Links.x.joy && Links.x.gameplay.currentEventObject.GetComponent<UITriggerButton>())
						{
							Links.x.hudControl.SetJoyBox(Links.x.gameplay.currentEventObject.GetComponent<UITriggerButton>());
						}
						this.CheckSlotImages();
						this.UpdateSlotStates(this.openBag);
						if (flag2)
						{
							this.AddCombatTime(this.selectedPlayer, "Long");
						}
						return;
					}
					if (this.dragParent)
					{
						flag4 = true;
						return;
					}
					flag4 = true;
					flag3 = false;
				}
				else
				{
					if (this.startDragObjectScript == this.dropScript && this.dropScript.bag && flag && !flag4)
					{
						bool flag11 = false;
						if (this.draggingSocket && this.hitItem && this.CheckSocket(this.dragItem, this.hitItem))
						{
							flag11 = true;
						}
						if (this.hitItem)
						{
							string[] array2 = new string[6];
							array2[0] = "Checking socket ";
							array2[1] = flag11.ToString();
							array2[2] = " ";
							array2[3] = this.draggingSocket.ToString();
							array2[4] = " ";
							int num21 = 5;
							global::Item item6 = this.hitItem;
							array2[num21] = ((item6 != null) ? item6.ToString() : null);
							Debug.Log(string.Concat(array2));
						}
						if (flag11 && this.hitItem)
						{
							bool flag12 = this.hitItem.AddSocket(this.GetSocketLine(this.dragItem.ID));
							string[] array3 = new string[7];
							array3[0] = flag12.ToString();
							array3[1] = " ";
							array3[2] = this.dragItem.ID.ToString();
							array3[3] = " ";
							array3[4] = this.GetSocketLine(this.dragItem.ID).ToString();
							array3[5] = " ";
							int num22 = 6;
							global::Item item7 = this.hitItem;
							array3[num22] = ((item7 != null) ? item7.ToString() : null);
							Debug.Log(string.Concat(array3));
							if (!flag12)
							{
								this.draggingSocket = false;
								this.HoverOverGround();
								this.EndDragging(true);
								this.FailedDrag();
								if (this.dragItem)
								{
									this.dragItem.SetSprite(false);
								}
								this.dragGo = null;
								this.draggingSocket = false;
								this.dragging = false;
								Links.x.characterSheet.PlayRandomClick();
								return;
							}
							this.UpdateSocketLists(this.hitItem);
							this.EndDragging(false);
							this.DestroyedItem(this.dragItem, this.selectedPlayer);
							if (this.dragItem)
							{
								this.dragItem.SetSprite(false);
							}
							this.dragging = false;
							this.draggingSocket = false;
							this.dragItem = null;
							if (this.itemTooltipOpen)
							{
								this.CloseTooltip();
							}
							if (flag2)
							{
								this.AddCombatTime(this.selectedPlayer, "Long");
							}
							return;
						}
						else
						{
							if (this.draggingSocket && !flag11 && this.hitItem)
							{
								this.draggingSocket = false;
								this.HoverOverGround();
								this.EndDragging(true);
								this.FailedDrag();
								if (this.dragItem)
								{
									this.dragItem.SetSprite(false);
								}
								this.dragGo = null;
								this.draggingSocket = false;
								this.dragItem = null;
								this.dragging = false;
								Links.x.characterSheet.PlayRandomClick();
								return;
							}
							this.dragGo.transform.SetParent(this.dropObject.transform, true);
							int num23 = this.bagItems.IndexOf(this.dragItem);
							if (num23 > -1)
							{
								this.bagPos[num23] = this.dragItem.bagGridID;
								this.selectedPlayer.SetBagPosition(num23, this.dragItem.bagGridID);
							}
							global::Item item8 = this.dragItem;
							this.EndDragging(false);
							this.SnapToGrid(this.dragItem, "");
							if (this.dragItem)
							{
								this.dragItem.SetSprite(false);
							}
							this.dragging = false;
							this.draggingSocket = false;
							this.CheckEquippedState(this.dragItem);
							this.dragItem = null;
							if (!flag5)
							{
								goto IL_505A;
							}
							if (Records.x.editor)
							{
								string text3 = "Starting swap ";
								global::Item item9 = item;
								Debug.Log(text3 + ((item9 != null) ? item9.ToString() : null));
							}
							this.hitItem = item;
							this.PrepareDrag();
							this.swapping = true;
							item.ToggleBackImage(false);
							item.bag = this.openBag;
							this.offset = Vector3.zero;
							if (Links.x.mk)
							{
								vector = Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition) + this.offset;
								this.dragItem.transform.position = vector;
							}
							this.controllerOffset = Vector3.zero;
							if (!item8)
							{
								goto IL_505A;
							}
							item8.bag = this.openBag;
							this.startDragObjectScript = this.openBag;
							List<int> list = item8.gridImg;
							if (list.Count > 0)
							{
								item8.bagGridID = list[0];
							}
							using (List<int>.Enumerator enumerator = list.GetEnumerator())
							{
								while (enumerator.MoveNext())
								{
									int num24 = enumerator.Current;
									this.gridState[num24] = true;
									this.gridImg[num24].sprite = this.filledSprite;
								}
								goto IL_505A;
							}
						}
					}
					if (this.startDragObjectScript == this.dropScript && this.dropScript.bag && !flag && !flag4)
					{
						bool flag13 = false;
						if (this.draggingSocket && this.hitItem && this.CheckSocket(this.dragItem, this.hitItem))
						{
							flag13 = true;
						}
						if (this.hitItem)
						{
							Debug.Log(flag13.ToString() + " " + this.draggingSocket.ToString());
						}
						if (flag13 && this.hitItem)
						{
							bool flag14 = this.hitItem.AddSocket(this.GetSocketLine(this.dragItem.ID));
							if (Records.x.editor)
							{
								string[] array4 = new string[8];
								array4[0] = "Socketed: ";
								array4[1] = flag14.ToString();
								array4[2] = " ";
								array4[3] = this.dragItem.ID.ToString();
								array4[4] = " ";
								array4[5] = this.GetSocketLine(this.dragItem.ID).ToString();
								array4[6] = " ";
								int num25 = 7;
								global::Item item10 = this.hitItem;
								array4[num25] = ((item10 != null) ? item10.ToString() : null);
								Debug.Log(string.Concat(array4));
							}
							if (!flag14)
							{
								this.draggingSocket = false;
								this.HoverOverGround();
								this.EndDragging(true);
								this.FailedDrag();
								if (this.dragItem)
								{
									this.dragItem.SetSprite(false);
								}
								this.dragGo = null;
								this.draggingSocket = false;
								this.dragging = false;
								Links.x.characterSheet.PlayRandomClick();
								return;
							}
							bool flag15 = false;
							this.UpdateSocketLists(this.hitItem);
							this.hitItem.ToggleSockets(true);
							if (this.dragItem.stackSize > 1)
							{
								this.dragItem.stackSize--;
								int num26 = this.bagItems.IndexOf(this.dragItem);
								this.bagAmount[num26] = this.dragItem.stackSize;
								this.dragItem.CheckStackSize();
								this.selectedPlayer.UpdateListsFromInv(true);
								flag15 = true;
							}
							int num27 = this.bagItems.IndexOf(this.hitItem);
							if (num27 >= 0)
							{
								this.durabilities[num27] = this.hitItem.durability;
							}
							if (flag15)
							{
								this.draggingSocket = false;
								this.HoverOverGround();
								this.EndDragging(true);
								this.FailedDrag();
								if (this.dragItem)
								{
									this.dragItem.SetSprite(false);
								}
								this.dragGo = null;
								this.draggingSocket = false;
								this.dragging = false;
							}
							else
							{
								this.EndDragging(false);
								this.DestroyedItem(this.dragItem, this.selectedPlayer);
								if (this.dragItem)
								{
									this.dragItem.SetSprite(false);
								}
								this.dragging = false;
								this.draggingSocket = false;
								this.dragItem = null;
								this.UpdateSlotStates(this.openBag);
								this.CheckSlotImages();
							}
							this.selectedPlayer.UpdateListsFromInv(true);
							if (flag2)
							{
								this.AddCombatTime(this.selectedPlayer, "Short");
							}
							return;
						}
						else
						{
							bool flag16 = false;
							bool flag17 = false;
							if (this.hitItem && this.dragItem != this.hitItem)
							{
								if (this.dragItem.invRow._Stackable && this.hitItem && this.hitItem && this.hitItem.ID == this.dragItem.ID && this.hitItem.invRow._Stackable)
								{
									if (this.hitItem.socketA.x == -1f)
									{
										this.hitItem.socketA = Vector3.zero;
										this.hitItem.socketB = Vector3.zero;
									}
									if (this.dragItem.socketA.x == -1f)
									{
										this.dragItem.socketA = Vector3.zero;
										this.dragItem.socketB = Vector3.zero;
									}
									if (this.hitItem.socketA == this.dragItem.socketA && this.hitItem.socketB == this.dragItem.socketB && this.hitItem.durability.w == this.dragItem.durability.w)
									{
										if (this.hitItem.stackSize + this.dragItem.stackSize <= this.hitItem.invRow._MaxStackSize)
										{
											this.hitItem.stackSize += this.dragItem.stackSize;
											this.hitItem.CheckStackSize();
											this.SetBagAmt(this.hitItem, this.hitItem.stackSize, this.selectedPlayer);
											flag17 = true;
											flag16 = true;
										}
										else if (this.hitItem.stackSize < this.hitItem.invRow._MaxStackSize)
										{
											int stackSize2 = this.hitItem.stackSize;
											this.hitItem.stackSize = this.hitItem.invRow._MaxStackSize;
											this.dragItem.stackSize -= this.hitItem.invRow._MaxStackSize - stackSize2;
											this.SetBagAmt(this.dragItem, this.dragItem.stackSize, this.selectedPlayer);
											this.SetBagAmt(this.hitItem, this.hitItem.stackSize, this.selectedPlayer);
											this.hitItem.CheckStackSize();
											this.dragItem.CheckStackSize();
											flag16 = true;
										}
									}
								}
								if (!flag16)
								{
									this.draggingSocket = false;
									this.HoverOverGround();
									this.EndDragging(true);
									this.FailedDrag();
									if (this.dragItem)
									{
										this.dragItem.SetSprite(false);
									}
									this.dragGo = null;
									this.draggingSocket = false;
									this.dragItem = null;
									this.dragging = false;
									Links.x.characterSheet.PlayRandomClick();
									this.ClearDrag();
									this.prevHitItem = null;
									this.prevItem = null;
									return;
								}
								if (flag17)
								{
									this.dragItem.DestroyItem(true, false);
									this.dragItem = null;
									this.HoverOverGround();
									this.EndDragging(true);
								}
								else
								{
									this.HoverOverGround();
									this.EndDragging(true);
									this.FailedDrag();
								}
							}
							else
							{
								flag4 = true;
							}
							if (!flag4)
							{
								if (this.dragItem)
								{
									this.dragItem.SetSprite(false);
								}
								this.dragGo = null;
								this.draggingSocket = false;
								this.dragging = false;
								if (this.dragItem)
								{
									this.CheckEquippedState(this.dragItem);
								}
								Links.x.characterSheet.PlayRandomClick();
								this.selectedPlayer.UpdateListsFromInv(true);
								this.dragItem = null;
								return;
							}
						}
					}
					else if (this.startDragObject != this.dropScript && this.dropScript.portrait && this.dropScript.character != this.selectedPlayer)
					{
						this.dragItem.backImage.transform.SetParent(this.dropScript.linkedBag.transform);
						this.dragItem.ToggleBackImage(false);
						if (this.openBag)
						{
							this.openBag.RemoveImage(this.dragItem.backImage);
						}
						if (this.dragItem.inGroundMenu)
						{
							this.groundContainer.RemoveImage(this.dragItem.backImage);
						}
						this.dropScript.linkedBag.AddImage(this.dragItem.backImage, this.dragItem);
						this.dragGo.transform.SetParent(this.dropScript.linkedBag.transform, true);
						int num28 = this.bagItems.IndexOf(this.dragItem);
						Character character = this.openBag.character;
						this.selectedPlayer = this.dropScript.character;
						this.openBag = this.selectedPlayer.inventoryBag;
						this.bagItems = this.openBag.bagItems;
						this.bagID = this.openBag.bagID;
						this.bagAmount = this.openBag.bagAmount;
						this.socketA = this.openBag.socketA;
						this.socketB = this.openBag.socketB;
						this.bagPos = this.openBag.bagPos;
						this.durabilities = this.openBag.durability;
						bool flag18 = false;
						bool flag19 = false;
						if ((this.selectedPlayer.tr.position - character.tr.position).sqrMagnitude < 900f && this.selectedPlayer.indoorID == character.indoorID)
						{
							flag19 = true;
						}
						bool flag20 = false;
						if (this.selectedPlayer == character)
						{
							flag20 = true;
						}
						this.GetBagLists(this.selectedPlayer);
						if (flag19)
						{
							bool flag21;
							ItemEquipped itemEquipped3;
							this.AddedToStack(this.dragItem, this.selectedPlayer, out flag21, out itemEquipped3);
							if (!flag21)
							{
								flag18 = this.FindOpenSpace(this.dragItem.transform.position, this.dragItem, this.mainBagX, this.mainBagY, "Hidden", this.openBag);
							}
							else
							{
								flag18 = true;
								this.dragItem.InventoryHoverOut(false);
								this.localImg = this.dragItem.gridImg;
								this.currGridImg = this.gridImg;
								this.currGridTrs = this.gridTrs;
								for (int num29 = 0; num29 < this.localImg.Count; num29++)
								{
									if (!this.currGridState[this.localImg[num29]])
									{
										this.currGridImg[this.localImg[num29]].sprite = this.emptySprite;
									}
								}
								this.dragItem.DestroyItem(false, false);
								this.dragItem = null;
							}
						}
						if (this.dragItem)
						{
							this.dragItem.InventoryHoverOut(false);
						}
						if (!flag18)
						{
							InventoryContainer inventoryContainer3 = this.openBag;
							inventoryContainer3.RemoveImage(this.dragItem.backImage);
							if (!flag19)
							{
								this.selectedPlayer.characterSheetPortrait.TooFar();
							}
							else if (!flag20)
							{
								this.selectedPlayer.characterSheetPortrait.FullBag();
							}
							this.GetBagLists(character);
							this.dragItem.backImage.transform.SetParent(this.openBag.transform);
							this.dragItem.bag = this.openBag;
							this.dragItem.ToggleBackImage(true);
							this.openBag.AddImage(this.dragItem.backImage, this.dragItem);
							Image backImage = this.dragItem.backImage;
							global::Item item11 = this.dragItem;
							this.HoverOverGround();
							this.EndDragging(true);
							this.FailedDrag();
							this.SetBackImageSize(backImage, item11);
							inventoryContainer3.Close();
							return;
						}
						if (this.dragItem)
						{
							if (this.dragItem.inGroundMenu)
							{
								this.dragItem.LeaveGroundMenuList();
							}
							this.ListsAddBagItem(this.dragItem);
							this.dragItem.bag = this.openBag;
							int num30 = this.bagItems.IndexOf(this.dragItem);
							if (num30 > -1)
							{
								this.bagPos[num30] = this.dragItem.bagGridID;
							}
							this.dragItem.AddSocketImgs();
							this.dragItem.ToggleSockets(false);
						}
						this.selectedPlayer.UpdateListsFromInv(true);
						this.selectedPlayer.characterSheetPortrait.ReceivedItem();
						this.UpdateWeight(this.openBag, this.selectedPlayer);
						InventoryContainer inventoryContainer4 = this.openBag;
						this.selectedPlayer = character;
						this.openBag = this.selectedPlayer.inventoryBag;
						this.bagItems = this.openBag.bagItems;
						this.bagID = this.openBag.bagID;
						this.bagAmount = this.openBag.bagAmount;
						this.socketA = this.openBag.socketA;
						this.socketB = this.openBag.socketB;
						this.bagPos = this.openBag.bagPos;
						this.durabilities = this.openBag.durability;
						if (this.dragItem)
						{
							this.localImg = this.dragItem.gridImg;
							this.currGridImg = this.gridImg;
							this.currGridTrs = this.gridTrs;
							for (int num31 = 0; num31 < this.localImg.Count; num31++)
							{
								if (!this.currGridState[this.localImg[num31]])
								{
									this.currGridImg[this.localImg[num31]].sprite = this.emptySprite;
								}
							}
						}
						if (num28 > -1)
						{
							this.bagItems[num28] = null;
							this.bagID[num28] = 0;
							this.bagAmount[num28] = 0;
							this.socketA[num28] = Vector3.zero;
							this.socketB[num28] = Vector3.zero;
							this.bagPos[num28] = -1;
							this.durabilities[num28] = Vector4.zero;
						}
						this.UpdateSlots(true, this.openBag);
						this.ClearDrag();
						if (num28 == 0)
						{
							this.CreateFist(0, false, this.selectedPlayer, this.openBag.transform, true);
						}
						this.selectedPlayer.UpdateListsFromInv(true);
						inventoryContainer4.Close();
						if (this.dragItem)
						{
							this.dragItem.SetSprite(false);
						}
						this.dragItem = null;
						this.EndDragging(false);
						if (Links.x.joy)
						{
							Links.x.characterSheet.SetSelectionButton();
						}
						if (this.dragItem)
						{
							this.dragItem.SetSprite(false);
						}
						this.dragging = false;
						this.draggingSocket = false;
						this.dragItem = null;
						if (flag2)
						{
							this.AddCombatTime(this.selectedPlayer, "Long");
						}
						return;
					}
					else if (this.startDragObject != this.dropScript && this.dropScript.ground)
					{
						this.dragGo.transform.SetParent(this.groundBag.groundItemsParent.transform, true);
						int num32 = this.bagItems.IndexOf(this.dragItem);
						if (num32 > -1)
						{
							this.bagItems[num32] = null;
							this.bagID[num32] = 0;
							this.bagAmount[num32] = 0;
							this.socketA[num32] = Vector3.zero;
							this.socketB[num32] = Vector3.zero;
							this.bagPos[num32] = -1;
							this.durabilities[num32] = Vector4.zero;
						}
						this.dragItem.gridImg.Clear();
						if (this.dragItem.bag)
						{
							this.dragItem.bag.RemoveImage(this.dragItem.backImage);
						}
						else
						{
							this.groundContainer.RemoveImage(this.dragItem.backImage);
						}
						this.groundContainer.AddImage(this.dragItem.backImage, this.dragItem);
						this.dragItem.backImage.transform.SetParent(this.dragItem.transform);
						this.dragItem.bag = this.groundContainer;
						bool flag22 = false;
						Image backImage2 = this.dragItem.backImage;
						if (!this.dragItem.inGroundMenu)
						{
							int num33 = -1;
							if (this.selectedPlayer.node != null)
							{
								num33 = (int)this.selectedPlayer.node.Area;
							}
							global::Item item12 = this.groundBag.DropLoot(this.dragItem.ID, this.dragItem.stackSize, this.dragItem.socketA, this.dragItem.socketB, this.dragItem.durability, this.selectedPlayer, this.selectedPlayer.tr.position + new Vector3(Random.Range(-2f, 2f), 0f, Random.Range(-2f, 2f)), true, this.dragItem.forSale, num33);
							if (!item12)
							{
								flag22 = true;
							}
							else
							{
								item12.slotItem = this.dragItem;
							}
							this.dragItem.worldItem = item12;
							this.dragItem.ToggleBackImage(true);
							this.ClearDrag();
						}
						this.SetBackImageSize(this.dragItem.backImage, this.dragItem);
						if (num32 == 0)
						{
							this.CreateFist(0, false, this.selectedPlayer, this.openBag.transform, true);
						}
						this.prevHitItem = null;
						this.prevItem = null;
						if (!flag22)
						{
							this.dragItem.InGroundMenuList();
							this.selectedPlayer.UpdateListsFromInv(true);
							this.UpdateMisc();
							this.dragSaveImg.Clear();
							this.EndDragging(false);
							if (this.dragItem)
							{
								this.dragItem.SetSprite(false);
							}
							this.dragging = false;
							this.draggingSocket = false;
							this.CheckEquippedState(this.dragItem);
							this.dragGo = null;
							this.dragItem = null;
							if (flag2)
							{
								this.AddCombatTime(this.selectedPlayer, "Medium");
							}
							if (Links.x.joy)
							{
								EventSystem.current.SetSelectedGameObject(backImage2.gameObject);
							}
							return;
						}
						this.dragItem.DestroyItem(true, false);
						this.dragItem = null;
						this.HoverOverGround();
						this.EndDragging(true);
						this.selectedPlayer.UpdateListsFromInv(true);
						return;
					}
					else
					{
						if (!flag4 && flag && (this.dropScript.bag || this.dropScript.merchantTake))
						{
							float weight = this.dropScript.weight;
							float weight2 = this.dragItem.invRow._Weight;
							this.dragGo = this.dragItem.gameObject;
							if (this.startDragObjectScript && this.dropScript.merchantTake && !this.startDragObjectScript.merchantTake)
							{
								if (!Links.x.merchant.isBoro())
								{
									if (this.dragItem.durability.w == 1f && !Links.x.merchant.CanSellContraband())
									{
										string merchantText7 = Links.x.merchant.GetMerchantText("Contraband");
										Links.x.characterSheet.StartQuip(merchantText7, FaceAnimations.AnimationNames.Frown);
										Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
										this.HoverOverGround();
										this.EndDragging(true);
										this.FailedDrag();
										this.dragging = false;
										this.draggingSocket = false;
										this.dragGo = null;
										this.dragItem = null;
										return;
									}
									if (this.dragItem.durability.w == 3f)
									{
										string merchantText8 = Links.x.merchant.GetMerchantText("MerchantGoods");
										Links.x.characterSheet.StartQuip(merchantText8, FaceAnimations.AnimationNames.Frown);
										Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
										this.HoverOverGround();
										this.EndDragging(true);
										this.FailedDrag();
										this.dragging = false;
										this.draggingSocket = false;
										this.dragGo = null;
										this.dragItem = null;
										return;
									}
									if (this.dragItem.invRow._ID == Links.x.library.spellbookIndex || this.dragItem.invRow._ID == Links.x.library.songbookIndex)
									{
										string merchantText9 = Links.x.merchant.GetMerchantText("Book");
										Links.x.characterSheet.StartQuip(merchantText9, FaceAnimations.AnimationNames.Frown);
										Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
										this.HoverOverGround();
										this.EndDragging(true);
										this.FailedDrag();
										this.dragging = false;
										this.draggingSocket = false;
										this.dragGo = null;
										this.dragItem = null;
										return;
									}
									if (this.dragItem.invRow._NeedFullStack && this.dragItem.stackSize < this.dragItem.invRow._MaxStackSize)
									{
										string merchantText10 = Links.x.merchant.GetMerchantText("Full Stack");
										Links.x.characterSheet.StartQuip(merchantText10, FaceAnimations.AnimationNames.Frown);
										Links.x.characterSheet.PlayVignetteAnimation("Shake Head");
										this.HoverOverGround();
										this.EndDragging(true);
										this.FailedDrag();
										this.dragging = false;
										this.draggingSocket = false;
										this.dragGo = null;
										this.dragItem = null;
										return;
									}
									if (Links.x.merchant.onlySelling)
									{
										this.HoverOverGround();
										this.EndDragging(true);
										this.FailedDrag();
										this.dragging = false;
										this.draggingSocket = false;
										this.dragGo = null;
										this.dragItem = null;
										return;
									}
									this.dragItem.forSale = true;
								}
								else
								{
									if (weight2 + Records.x.boroWeight > Records.x.BoroMaxWeight())
									{
										Links.x.gameFeed.ShowNotice("Too heavy");
										this.HoverOverGround();
										this.EndDragging(true);
										this.FailedDrag();
										this.dragging = false;
										this.draggingSocket = false;
										this.dragGo = null;
										this.dragItem = null;
										return;
									}
									if (this.dragItem.ID == Links.x.library.bombID)
									{
										Links.x.gameFeed.ShowNotice("Cannot stash this");
										this.HoverOverGround();
										this.EndDragging(true);
										this.FailedDrag();
										this.dragging = false;
										this.draggingSocket = false;
										this.dragGo = null;
										this.dragItem = null;
										return;
									}
								}
							}
							if (flag4 || flag3)
							{
								goto IL_4EAA;
							}
							if (this.startDragObjectScript && !this.dragFromGround && !this.startDragObjectScript.merchantTake)
							{
								this.UpdateContainer(this.dragItem, this.dropPosition, this.startDragObjectScript, this.startDragObjectScript, false, true);
							}
							if (this.dragItem.inGroundMenu)
							{
								this.dragItem.LeaveGroundMenuList();
							}
							this.dragItem.backImage.transform.SetParent(this.dropScript.transform);
							this.openBag.RemoveImage(this.dragItem.backImage);
							if (this.dragItem.inGroundMenu)
							{
								this.groundContainer.RemoveImage(this.dragItem.backImage);
							}
							this.dropScript.AddImage(this.dragItem.backImage, this.dragItem);
							this.dragGo.transform.SetParent(this.dropObject.transform, true);
							this.dragGo.transform.localPosition = new Vector3(this.dragGo.transform.localPosition.x, this.dragGo.transform.localPosition.y, -20f);
							if (this.dropScript && !this.dropScript.merchantTake)
							{
								this.UpdateContainer(this.dragItem, this.dropPosition, this.dropScript, this.startDragObjectScript, true, true);
							}
							this.dragItem.gameObject.transform.localRotation = Quaternion.Euler(Vector3.zero);
							int id = this.dragItem.ID;
							if (this.startDragObjectScript && this.dropScript.merchantTake && !this.startDragObjectScript.merchantTake)
							{
								this.dragItem.forSale = true;
								if (!Links.x.merchant.isBoro())
								{
									float num34 = this.selectedPlayer.stats.PartyDispositionSell(Links.x.diorama.sceneName, Links.x.merchant.merchantCharacter);
									this.addMoney = (int)Mathf.Ceil((float)this.dragItem.invRow._SellPrice * num34);
									this.addMoney = (int)Links.x.merchant.GetItemHistoryCount(this.dragItem.invRow, (float)this.addMoney);
									if (this.dragItem.invRow._NeedFullStack)
									{
										this.addMoney = this.addMoney;
									}
									else
									{
										this.addMoney *= this.dragItem.stackSize;
									}
									if (this.dragItem.socketA.x > 0f)
									{
										this.addMoney += (int)this.dragItem.socketB.y;
									}
									this.peddlerFX.gameObject.SetActive(true);
									this.peddlerFX.Play("Peddler", -1, 0f);
									this.peddlerSellAmount.text = this.addMoney.ToString();
									this.peddlerSellAmount.color = new Color(0.41568628f, 0.6431373f, 0.20784314f, 1f);
									this.peddlerFX.GetComponent<RectTransform>().position = this.dragItem.gameObject.transform.position;
									string merchantText11 = Links.x.merchant.GetMerchantText("Buy");
									Links.x.characterSheet.StartQuip(merchantText11, FaceAnimations.AnimationNames.Smile);
									Links.x.characterSheet.PlayVignetteAnimation("Nod Head");
									MasterAudio.PlaySoundAndForget("Inventory", 1f, new float?(1f), 0.25f, "Coins", null);
								}
								Links.x.merchant.AddItem(this.dragItem, this.dragItem.stackSize, this.dragItem.invRow._MaxStackSize, false);
							}
							if (this.dragItem && !flag3)
							{
								if (this.dragItem.gameObject.activeSelf)
								{
									this.EndDragging(false);
								}
								if (this.dragItem.bag)
								{
									this.dragItem.bag.RemoveImage(this.dragItem.backImage);
								}
								else
								{
									this.groundContainer.RemoveImage(this.dragItem.backImage);
								}
								this.dragItem.bag = this.dropScript;
								this.dragItem.bag.AddImage(this.dragItem.backImage, this.dragItem);
								if (this.dragItem)
								{
									this.dragItem.SetSprite(false);
									this.SnapToGrid(this.dragItem, "");
								}
								this.dragGo = null;
								this.draggingSocket = false;
								this.dragging = false;
								this.ToggleCharacterSheetButtonStateForDrag(false);
								Links.x.characterSheet.PlayRandomClick();
							}
							if (this.dragItem)
							{
								this.CheckEquippedState(this.dragItem);
							}
							global::Item item13 = this.dragItem;
							if (!flag5 || flag3)
							{
								goto IL_4EAA;
							}
							this.hitItem = item;
							this.PrepareDrag();
							this.swapping = true;
							item.ToggleBackImage(false);
							this.offset = Vector3.zero;
							this.startDragObjectScript = this.openBag;
							this.controllerOffset = Vector3.zero;
							if (!item13)
							{
								goto IL_4EAA;
							}
							item13.bag = this.openBag;
							List<int> list2 = item13.gridImg;
							if (list2.Count > 0)
							{
								item13.bagGridID = list2[0];
							}
							using (List<int>.Enumerator enumerator = list2.GetEnumerator())
							{
								while (enumerator.MoveNext())
								{
									int num35 = enumerator.Current;
									string text4 = "setting slot for ";
									string text5 = num35.ToString();
									string text6 = " ";
									global::Item item14 = item13;
									Debug.Log(text4 + text5 + text6 + ((item14 != null) ? item14.ToString() : null));
									this.gridState[num35] = true;
									this.gridImg[num35].sprite = this.filledSprite;
								}
								goto IL_4EAA;
							}
						}
						bool flag23 = false;
						bool flag24 = false;
						string[] array5 = new string[7];
						int num36 = 0;
						global::Item item15 = this.hitItem;
						array5[num36] = ((item15 != null) ? item15.ToString() : null);
						array5[1] = " ";
						int num37 = 2;
						global::Item item16 = this.dragItem;
						array5[num37] = ((item16 != null) ? item16.ToString() : null);
						array5[3] = " ";
						int num38 = 4;
						InventoryContainer inventoryContainer5 = this.dropScript;
						array5[num38] = ((inventoryContainer5 != null) ? inventoryContainer5.ToString() : null);
						array5[5] = " ";
						int num39 = 6;
						InventoryContainer inventoryContainer6 = this.startDragObjectScript;
						array5[num39] = ((inventoryContainer6 != null) ? inventoryContainer6.ToString() : null);
						Debug.Log(string.Concat(array5));
						if (this.hitItem && this.dragItem != this.hitItem)
						{
							if (this.dragItem.invRow._Stackable && this.hitItem && this.hitItem && this.hitItem.ID == this.dragItem.ID && this.hitItem.invRow._Stackable && this.hitItem.socketA == this.dragItem.socketA && this.hitItem.socketB == this.dragItem.socketB && this.hitItem.durability.w == this.dragItem.durability.w)
							{
								if (this.hitItem.stackSize + this.dragItem.stackSize <= this.hitItem.invRow._MaxStackSize)
								{
									this.hitItem.stackSize += this.dragItem.stackSize;
									this.hitItem.CheckStackSize();
									this.SetBagAmt(this.hitItem, this.hitItem.stackSize, this.selectedPlayer);
									flag24 = true;
									flag23 = true;
								}
								else if (this.hitItem.stackSize < this.hitItem.invRow._MaxStackSize)
								{
									int stackSize3 = this.hitItem.stackSize;
									this.hitItem.stackSize = this.hitItem.invRow._MaxStackSize;
									this.dragItem.stackSize -= this.hitItem.invRow._MaxStackSize - stackSize3;
									this.SetBagAmt(this.dragItem, this.dragItem.stackSize, this.selectedPlayer);
									this.SetBagAmt(this.hitItem, this.hitItem.stackSize, this.selectedPlayer);
									this.hitItem.CheckStackSize();
									this.dragItem.CheckStackSize();
									flag23 = true;
								}
							}
							string[] array6 = new string[5];
							array6[0] = flag23.ToString();
							array6[1] = " ";
							array6[2] = this.dragItem.onGround.ToString();
							array6[3] = " ";
							int num40 = 4;
							global::Item worldItem = this.dragItem.worldItem;
							array6[num40] = ((worldItem != null) ? worldItem.ToString() : null);
							Debug.Log(string.Concat(array6));
							if (!flag23)
							{
								flag4 = true;
								flag3 = false;
							}
							else
							{
								flag4 = false;
								flag3 = false;
								if (flag24)
								{
									if (this.dragItem.worldItem)
									{
										this.dragItem.worldItem.DestroyItem(false, false);
									}
									this.dragItem.DestroyItem(true, false);
									this.dragItem = null;
									this.HoverOverGround();
									this.EndDragging(true);
								}
								else
								{
									this.HoverOverGround();
									this.EndDragging(true);
									this.FailedDrag();
								}
							}
						}
						else
						{
							flag4 = true;
							flag3 = false;
						}
						IL_4EAA:
						if (!flag3 && !flag4 && !flag5)
						{
							Links.x.characterSheet.PlayRandomClick();
							if (this.dragItem)
							{
								this.dragItem.SetSprite(false);
							}
							this.ToggleCharacterSheetButtonStateForDrag(false);
							this.dragging = false;
							this.draggingSocket = false;
							if (this.dragFromGround && this.groundDragItem != null)
							{
								this.groundDragItem.DestroyGroundItem();
							}
							if (this.dropScript && flag)
							{
								this.SnapToGrid(this.dragItem, "");
							}
							this.dragFromGround = false;
						}
						if (this.addMoney > 0)
						{
							this.emeralds += this.addMoney;
						}
					}
				}
			}
			else
			{
				flag3 = true;
				flag4 = false;
				for (int num41 = 0; num41 < this.dragHoverImg.Count; num41++)
				{
					Debug.Log(this.gridState[this.dragHoverImg[num41]].ToString() + " " + this.dragHoverImg[num41].ToString());
					if (this.gridState[this.dragHoverImg[num41]])
					{
						Debug.Log("has item in slot " + num41.ToString());
						for (int num42 = 0; num42 < this.bagItems.Count; num42++)
						{
							if (this.bagItems[num42] && this.bagItems[num42].HasGridSlot(this.dragHoverImg[num41]))
							{
								flag3 = false;
								flag4 = true;
							}
						}
					}
				}
			}
			IL_505A:
			if (this.startDragObjectScript && !this.dropScript && !this.startDragObjectScript.merchantTake)
			{
				flag3 = true;
			}
			if (flag3 && !flag4)
			{
				if (this.swapping)
				{
					this.HoverOverGround();
					this.EndDragging(true);
					this.FailedDrag();
					this.dragging = false;
					this.draggingSocket = false;
					this.dragGo = null;
					this.dragItem = null;
					this.ToggleCharacterSheetButtonStateForDrag(false);
					return;
				}
				this.HoverOverGround();
				this.EndDragging(true);
				Links.x.characterSheet.PlayRandomClick();
				if (this.startDragObjectScript && this.startDragObjectScript.equip)
				{
					int equipIndex2 = this.dragItem.equipIndex;
					this.bagItems[equipIndex2] = null;
					this.bagID[equipIndex2] = this.dragItem.ID;
					this.bagAmount[equipIndex2] = this.dragItem.stackSize;
					this.socketA[equipIndex2] = this.dragItem.socketA;
					this.socketB[equipIndex2] = this.dragItem.socketB;
					this.bagPos[equipIndex2] = -1;
					this.durabilities[equipIndex2] = this.dragItem.durability;
					this.dragItem.DestroyItem(false, false);
					this.dragItem = null;
					this.HoverOverGround();
					this.EndDragging(true);
					this.prevHitItem = null;
					this.prevItem = null;
					this.dragging = false;
					this.draggingSocket = false;
					this.dragGo = null;
					this.selectedPlayer.UpdateListsFromInv(true);
					this.selectedPlayer.CreateEquippedItems(this.bagID[equipIndex2], this.bagAmount[equipIndex2], this.socketA[equipIndex2], this.socketB[equipIndex2], equipIndex2 * 2, true);
					this.SetupEquippedItems(Links.x.characterSheet.body, false, equipIndex2, false);
					return;
				}
				if (this.dragItem)
				{
					this.dragItem.SetSprite(false);
				}
				this.dragGo = null;
				this.draggingSocket = false;
				this.dragging = false;
				this.FailedDrag();
			}
			else if (flag2)
			{
				this.AddCombatTime(this.selectedPlayer, "Medium");
			}
			this.UpdateMisc();
			this.UpdateSlotStates(this.openBag);
		}
		this.UpdateSlotStates(this.openBag);
	}

	// Token: 0x060010C2 RID: 4290 RVA: 0x0014719C File Offset: 0x0014539C
	public void UpdateSlotStates(InventoryContainer listBag)
	{
		if (!listBag)
		{
			return;
		}
		this.updateBagItems = listBag.bagItems;
		if (this.gridTrs != null)
		{
			for (int i = 0; i < this.gridTrs.Count; i++)
			{
				this.gridState[i] = false;
			}
		}
		for (int j = 0; j < this.updateBagItems.Count; j++)
		{
			if (this.updateBagItems[j] && this.updateBagItems[j] != this.dragItem)
			{
				this.localImg = this.updateBagItems[j].gridImg;
				for (int k = 0; k < this.localImg.Count; k++)
				{
					this.gridImg[this.localImg[k]].sprite = this.filledSprite;
					this.gridState[this.localImg[k]] = true;
				}
			}
		}
		if (this.gridTrs != null)
		{
			for (int l = 0; l < this.gridTrs.Count; l++)
			{
				if (this.gridState[l])
				{
					this.gridImg[l].sprite = this.filledSprite;
				}
				else if (this.dragging)
				{
					bool flag = false;
					bool flag2 = true;
					if (Links.x.characterSheet.merchant && this.dropScript && this.dropScript.merchantTake)
					{
						flag2 = false;
					}
					if (flag2)
					{
						for (int m = 0; m < this.dragHoverImg.Count; m++)
						{
							if (this.dragHoverImg[m] == l)
							{
								flag = true;
							}
						}
					}
					if (flag)
					{
						this.gridImg[l].sprite = this.hoverSprite;
					}
					else
					{
						this.gridImg[l].sprite = this.emptySprite;
					}
				}
				else
				{
					this.gridImg[l].sprite = this.emptySprite;
				}
			}
		}
	}

	// Token: 0x060010C3 RID: 4291 RVA: 0x001473AC File Offset: 0x001455AC
	public void UpdateSlotStatesMerchantBag()
	{
		this.updateBagItems = Links.x.merchant.items;
		this.gridTrsMisc = this.secondaryBag.gridTrs;
		this.gridStateMisc = this.secondaryBag.gridState;
		this.gridImgMisc = this.secondaryBag.gridImg;
		this.currGridImg = this.gridImgMisc;
		this.currGridTrs = this.gridTrsMisc;
		this.currGridState = this.gridStateMisc;
		for (int i = 0; i < this.gridTrsMisc.Count; i++)
		{
			bool flag = false;
			for (int j = 0; j < this.updateBagItems.Count; j++)
			{
				if (this.updateBagItems[j] && !flag)
				{
					this.localImg = this.updateBagItems[j].gridImg;
					for (int k = 0; k < this.localImg.Count; k++)
					{
						if (this.localImg[k] == i)
						{
							flag = true;
						}
					}
				}
			}
			this.currGridState[i] = flag;
			if (flag)
			{
				this.currGridImg[i].sprite = this.filledSprite;
			}
			else
			{
				this.currGridImg[i].sprite = this.emptySprite;
			}
		}
		this.currGridImg = this.gridImg;
		this.currGridTrs = this.gridTrs;
		this.currGridState = this.gridState;
	}

	// Token: 0x060010C4 RID: 4292 RVA: 0x00147514 File Offset: 0x00145714
	public void RemoveEquippedItem(ItemEquipped currentEquipped, int newIndex, int oldIndex)
	{
		if (newIndex == -1)
		{
			newIndex = this.FindFreeSpace();
		}
		Debug.Log(string.Concat(new string[]
		{
			"Removing item: ",
			currentEquipped.invRow._Name,
			" from ",
			oldIndex.ToString(),
			" to ",
			newIndex.ToString()
		}));
		global::Item item = this.SpawnItem(null, true, currentEquipped.ID, currentEquipped.stackSize, currentEquipped.socketA, currentEquipped.socketB, currentEquipped.durability, Vector3.zero, this.openBag.transform);
		item.img.enabled = true;
		Debug.Log(item.invRow._Name);
		item.durability = currentEquipped.durability;
		item.bagGridID = -1;
		if (newIndex == -1)
		{
			Links.x.characterSheet.StartQuip("I'll throw this item on the ground", FaceAnimations.AnimationNames.LookRight);
			this.ToGround(item, false);
		}
		else
		{
			bool flag = this.FindOpenSpace(item.transform.position, item, this.mainBagX, this.mainBagY, "Hidden", this.openBag);
			Debug.Log(flag.ToString() + " " + item.bagGridID.ToString());
			if (!flag)
			{
				Links.x.characterSheet.StartQuip("I'll throw this item on the ground", FaceAnimations.AnimationNames.LookRight);
				this.ToGround(item, false);
			}
			else
			{
				this.ListsAddBagItem(item);
				this.bagPos[newIndex] = item.bagGridID;
				this.selectedPlayer.SetBagPosition(newIndex, item.bagGridID);
			}
		}
		int num = oldIndex;
		this.bagItems[num] = null;
		this.bagID[num] = 0;
		this.bagAmount[num] = 0;
		this.socketA[num] = Vector3.zero;
		this.socketB[num] = Vector3.zero;
		this.bagPos[num] = -1;
		this.durabilities[num] = Vector4.zero;
		if (this.open)
		{
			this.SetupEquippedItems(Links.x.characterSheet.body, false, num, false);
		}
		this.selectedPlayer.CreateEquippedItems(this.bagID[num], this.bagAmount[num], this.socketA[num], this.socketB[num], num * 2, true);
	}

	// Token: 0x060010C5 RID: 4293 RVA: 0x00147764 File Offset: 0x00145964
	public Button EquipSelected()
	{
		GameObject currentEventObject = Links.x.gameplay.currentEventObject;
		if (currentEventObject && this.equippedItems != null)
		{
			int num = this.equippedItems.Length;
			for (int i = 0; i < num; i++)
			{
				if (this.equippedButtons[i].gameObject == currentEventObject)
				{
					this.selectedEquipButton = i;
					return this.equippedButtons[i];
				}
			}
		}
		return null;
	}

	// Token: 0x060010C6 RID: 4294 RVA: 0x001477CC File Offset: 0x001459CC
	public void AddCombatTime(Character character, string amt)
	{
		if (character.actions)
		{
			if (amt == "Short")
			{
				character.UpdateAtkTime(1f);
			}
			else if (amt == "Medium")
			{
				character.UpdateAtkTime(2f);
			}
			else if (amt == "Long")
			{
				character.UpdateAtkTime(3f);
			}
			else if (amt == "ExtraLong")
			{
				character.UpdateAtkTime(5f);
			}
			this.selectedPlayer.characterSheetPortrait.time.SetActive(true);
			this.selectedPlayer.characterSheetPortrait.timeText.text = character.inventoryTime.ToString() + " sec.";
			Links.x.itemPickupFX.gameObject.SetActive(true);
			Links.x.itemPickupFX.gameObject.GetComponent<HannahAnimator>().Play("Idle");
			Links.x.itemPickupFX.position = this.selectedPlayer.characterSheetPortrait.time.transform.position;
		}
	}

	// Token: 0x060010C7 RID: 4295 RVA: 0x001478EB File Offset: 0x00145AEB
	public void SetColorsForEquipButtons(bool visible)
	{
	}

	// Token: 0x060010C8 RID: 4296 RVA: 0x001478F0 File Offset: 0x00145AF0
	public void UpdateEquipmentButtons()
	{
		if (this.open)
		{
			if (!Links.x.characterSheet.merchant)
			{
				this.equippedItems = Links.x.characterSheet.body.equippedItems;
				if (this.equippedItems != null)
				{
					int num = this.equippedItems.Length;
					for (int i = 0; i < num; i++)
					{
						bool flag = false;
						if (this.dragging)
						{
							int equipSlot = this.dragItem.equipSlot;
							if (equipSlot >= 8 && equipSlot <= 12)
							{
								if (equipSlot == i)
								{
									flag = true;
								}
							}
							else if (equipSlot == 0)
							{
								if (i == 0 || i == 1 || i == 2 || i == 3)
								{
									flag = true;
								}
								if (i == 15 || i == 16 || i == 17 || i == 18)
								{
									flag = true;
								}
							}
							else if (equipSlot == 1)
							{
								if (i == 1 || i == 3)
								{
									flag = true;
								}
							}
							else if (equipSlot == 13)
							{
								if (i == 13 || i == 14 || i == 7)
								{
									flag = true;
								}
							}
							else if (equipSlot == 4 && (i == 4 || i == 5 || i == 6))
							{
								flag = true;
							}
						}
						if (i == 9)
						{
							if ((Links.x.characterSheet.character.GetInvNum(18) > 1 && !this.dragging) || (this.dragging && flag))
							{
								this.equippedButtons[i].interactable = true;
							}
							else
							{
								this.equippedButtons[i].interactable = false;
							}
						}
						else if (i == 0 || i == 1 || i == 7 || i == 8 || i == 9 || i == 10 || i == 11 || i == 12 || i == 13 || i == 14)
						{
							Transform slot = Links.x.characterSheet.body.GetSlot(i * 2);
							if (slot)
							{
								this.equippedButtons[i].transform.position = slot.position + new Vector3(0f, 0.6f, 0f);
								Vector3 position = this.equippedButtons[i].transform.position;
								position.z = this.equipPosition.position.z;
								this.equippedButtons[i].transform.position = position;
								if ((this.equippedItems[i] && !this.dragging) || (this.dragging && flag))
								{
									this.equippedButtons[i].interactable = true;
								}
								else
								{
									this.equippedButtons[i].interactable = false;
								}
							}
							else
							{
								this.equippedButtons[i].interactable = false;
							}
						}
						else
						{
							Transform transform = null;
							if (i == 4)
							{
								transform = this.slotAmmo1;
							}
							if (i == 5)
							{
								transform = this.slotAmmo2;
							}
							if (i == 6)
							{
								transform = this.slotAmmo3;
							}
							if (i == 16)
							{
								transform = this.slotAlt1;
							}
							if (i == 17)
							{
								transform = this.slotAlt2;
							}
							if (transform)
							{
								this.equippedButtons[i].transform.position = transform.position + new Vector3(0f, 0.6f, 0f);
								Vector3 position2 = this.equippedButtons[i].transform.position;
								position2.z = this.equipPosition.position.z;
								this.equippedButtons[i].transform.position = position2;
								if ((this.equippedItems[i] && !this.dragging) || (this.dragging && flag))
								{
									this.equippedButtons[i].interactable = true;
								}
								else
								{
									this.equippedButtons[i].interactable = false;
								}
							}
							else
							{
								this.equippedButtons[i].interactable = false;
							}
						}
					}
					return;
				}
			}
			else
			{
				int num2 = this.equippedButtons.Length;
				for (int j = 0; j < num2; j++)
				{
					this.equippedButtons[j].interactable = false;
				}
			}
		}
	}

	// Token: 0x060010C9 RID: 4297 RVA: 0x00147C9C File Offset: 0x00145E9C
	public int GetEquipSlot(int slot, global::Item inItem)
	{
		Body body = Links.x.characterSheet.body;
		if (slot == 13 && body.GetItemEquipped(13))
		{
			slot = 14;
			if (body.GetItemEquipped(14))
			{
				slot = 7;
			}
		}
		if (slot == 10 && body.GetItemEquipped(10))
		{
			slot = 11;
		}
		if (slot == 0 || slot == 1)
		{
			if (body.GetItemEquipped(0))
			{
				Library.Inventory invRow = body.GetItemEquipped(0).invRow;
				if (invRow._TwoHanded || invRow._MainSkill == "Whip")
				{
					slot = 0;
				}
				else if (!inItem.invRow._TwoHanded && (inItem.invRow._MainSkill != "Whip" || (inItem.invRow._MainSkill == "Whip" && invRow._EquipSlotID == 1)))
				{
					slot = 1;
				}
				else
				{
					slot = 0;
				}
			}
			if (inItem.equipSlot == 1)
			{
				slot = 1;
			}
		}
		if (slot == 4 && body.GetItemEquipped(4))
		{
			slot = 5;
			if (body.GetItemEquipped(5))
			{
				slot = 6;
				if (body.GetItemEquipped(6))
				{
					slot = 4;
				}
			}
		}
		return slot;
	}

	// Token: 0x060010CA RID: 4298 RVA: 0x00147DD0 File Offset: 0x00145FD0
	public void CheckSlotImages()
	{
		if (this.currGridImg != this.secondaryBag.gridImg && this.currGridImg != null)
		{
			for (int i = 0; i < this.gridTrs.Count; i++)
			{
				bool flag = false;
				for (int j = 0; j < this.bagItems.Count; j++)
				{
					if (!flag && this.bagItems[j] && this.bagItems[j].HasGridSlot(i))
					{
						flag = true;
					}
				}
				if (this.currGridImg[i])
				{
					if (!flag)
					{
						this.currGridImg[i].sprite = this.emptySprite;
						this.currGridState[i] = false;
					}
					else
					{
						this.currGridImg[i].sprite = this.filledSprite;
						this.currGridState[i] = true;
					}
				}
			}
		}
		if (Links.x.characterSheet.merchant)
		{
			this.gridTrsMisc = this.secondaryBag.gridTrs;
			this.gridStateMisc = this.secondaryBag.gridState;
			this.gridImgMisc = this.secondaryBag.gridImg;
			this.currGridImg = this.gridImgMisc;
			this.currGridTrs = this.gridTrsMisc;
			this.currGridState = this.gridStateMisc;
			for (int k = 0; k < this.gridTrsMisc.Count; k++)
			{
				if (!this.currGridState[k])
				{
					this.currGridImg[k].sprite = this.emptySprite;
				}
				else
				{
					this.currGridImg[k].sprite = this.filledSprite;
				}
			}
			this.currGridImg = this.gridImg;
			this.currGridTrs = this.gridTrs;
			this.currGridState = this.gridState;
		}
		for (int l = 0; l < this.groundSlotsList.Count; l++)
		{
			if (this.groundSlotsList[l])
			{
				this.groundSlotsList[l].ToggleBackImage(true);
			}
		}
	}

	// Token: 0x060010CB RID: 4299 RVA: 0x00147FE4 File Offset: 0x001461E4
	public void FailedDrag()
	{
		if (Records.x.editor || Records.x.secrets)
		{
			string[] array = new string[5];
			int num = 0;
			global::Item item = this.dragItem;
			array[num] = ((item != null) ? item.ToString() : null);
			array[1] = " failed drag ";
			int num2 = 2;
			Transform transform = this.dragParent;
			array[num2] = ((transform != null) ? transform.ToString() : null);
			array[3] = " ";
			int num3 = 4;
			Vector3 vector = this.savedPosition;
			array[num3] = vector.ToString();
			Debug.Log(string.Concat(array));
		}
		if (this.dragItem && (this.dragParent == this.openBag.transform || this.dragParent == null))
		{
			this.UpdateSlotStates(this.openBag);
			bool flag = this.FindOpenSpace(this.dragItem.transform.position, this.dragItem, this.mainBagX, this.mainBagY, "Hidden", this.openBag);
			if (Records.x.editor || Records.x.secrets)
			{
				string text = "looking for space item ";
				global::Item item2 = this.dragItem;
				Debug.Log(text + ((item2 != null) ? item2.ToString() : null) + " found is " + flag.ToString());
			}
			if (!flag)
			{
				int num4 = -1;
				if (this.selectedPlayer.node != null)
				{
					num4 = (int)this.selectedPlayer.node.Area;
				}
				this.groundBag.DropLoot(this.dragItem.ID, this.dragItem.stackSize, this.dragItem.socketA, this.dragItem.socketB, this.dragItem.durability, this.selectedPlayer, this.selectedPlayer.tr.position + new Vector3(Random.Range(-2f, 2f), 0f, Random.Range(-2f, 2f)), true, this.dragItem.forSale, num4);
				this.dragItem.DestroyItem(false, false);
				this.UpdateSlotStates(this.openBag);
				this.CheckSlotImages();
				if (this.dragSaveImg.Count > 0 && this.dragItem)
				{
					this.dragItem.bagGridID = this.dragSaveImg[0];
				}
				if (this.open)
				{
					this.UpdateGroundSlots();
				}
			}
			else
			{
				this.inSecondaryBag = false;
				if (this.dragParent != this.openBag.transform)
				{
					this.ListsAddBagItem(this.dragItem);
				}
				if (this.dragItem.enabled)
				{
					int num5 = this.bagItems.IndexOf(this.dragItem);
					if (num5 > -1)
					{
						this.bagPos[num5] = this.dragItem.bagGridID;
					}
					this.dragItem.AddSocketImgs();
					this.dragItem.CheckStackSize();
				}
				this.dragItem.gameObject.transform.SetParent(this.openBag.transform);
				this.dragItem.SetSprite(false);
				this.dragItem.ToggleBackImage(false);
				this.SetBackImageSize(this.dragItem.backImage, this.dragItem);
				this.UpdateSlotStates(this.openBag);
				this.CheckSlotImages();
				if (this.dragSaveImg.Count > 0 && this.dragItem)
				{
					this.dragItem.bagGridID = this.dragSaveImg[0];
				}
				this.selectedPlayer.UpdateListsFromInv(true);
			}
		}
		else if (this.dragItem && this.dragParent == this.merchantBag.transform)
		{
			this.UpdateSlotStates(this.openBag);
			this.startDragObjectScript = null;
			this.dropScript = null;
			if (this.dragItem)
			{
				this.dragItem.gameObject.transform.SetParent(this.dragParent, false);
			}
			Links.x.merchant.ReturnFromDrag(this.dragItem);
			Debug.Log("From merchant bag");
			this.UpdateSlotStatesMerchantBag();
		}
		else
		{
			string text2 = "Drag parent ";
			Transform transform2 = this.dragParent;
			Debug.Log(text2 + ((transform2 != null) ? transform2.ToString() : null));
			this.dragItem.gameObject.transform.SetParent(this.dragParent, false);
			this.dragItem.transform.localPosition = this.savedPosition;
		}
		if (Links.x.characterSheet.merchant)
		{
			this.CheckSlotImages();
			this.UpdateSlotStatesMerchantBag();
		}
		this.UpdateSlots(false, this.openBag);
		this.startDragObjectScript;
		if (Links.x.joy && this.dragItem && this.dragItem.bag && !this.dragItem.inGroundMenu && this.dragItem.bagGridID > -1)
		{
			if (this.dragItem.forSale)
			{
				GameObject gameObject = this.gridTrsMisc[this.dragItem.bagGridID].gameObject;
				EventSystem.current.SetSelectedGameObject(gameObject);
			}
			else
			{
				GameObject gameObject2 = this.gridTrs[this.dragItem.bagGridID].gameObject;
				EventSystem.current.SetSelectedGameObject(gameObject2);
			}
		}
		this.currGridImg = this.gridImg;
		this.currGridTrs = this.gridTrs;
		this.currGridState = this.gridState;
		this.inSecondaryBag = false;
		this.dragGo = null;
		if (this.dragItem)
		{
			this.dragItem.SetSprite(false);
		}
		this.dragging = false;
		this.draggingSocket = false;
		this.dragItem = null;
	}

	// Token: 0x060010CC RID: 4300 RVA: 0x00148590 File Offset: 0x00146790
	public global::Item AddedToStack(global::Item item, Character addToCharacter, out bool added, out ItemEquipped stackEquipped)
	{
		global::Item item2 = null;
		added = false;
		stackEquipped = null;
		if (item)
		{
			int maxStackSize = item.invRow._MaxStackSize;
			if (item.socketA.x == -1f)
			{
				item.socketA = Vector3.zero;
				item.socketB = Vector3.zero;
			}
			for (int i = 0; i < this.bagID.Count; i++)
			{
				if (this.bagID[i] > 0 && this.bagID[i] == item.ID)
				{
					if (this.socketA[i].x == -1f)
					{
						this.socketA[i] = Vector3.zero;
						this.socketB[i] = Vector3.zero;
					}
					if (item.socketA.x == -1f)
					{
						item.socketB = Vector3.zero;
						item.socketB = Vector3.zero;
					}
					if (!added && item.socketA == this.socketA[i] && item.socketB == this.socketB[i] && item.durability.w == this.durabilities[i].w)
					{
						if (this.bagItems[i])
						{
							if (this.bagItems[i] != item && this.bagAmount[i] < maxStackSize)
							{
								int num = this.bagAmount[i] + item.stackSize;
								if (num <= maxStackSize)
								{
									this.bagItems[i].stackSize = num;
									this.bagAmount[i] = num;
									this.bagItems[i].CheckStackSize();
									item2 = this.bagItems[i];
									added = true;
								}
							}
						}
						else if (this.bagAmount[i] < maxStackSize)
						{
							int num2 = this.bagAmount[i] + item.stackSize;
							if (num2 <= maxStackSize)
							{
								this.bagAmount[i] = num2;
								added = true;
								if (!this.open)
								{
									SkillBag skillBag = addToCharacter.portrait.skillBag;
									GameObject gameObject = null;
									if (i == 7)
									{
										gameObject = skillBag.beltItem1text.gameObject;
									}
									if (i == 13)
									{
										gameObject = skillBag.beltItem2text.gameObject;
									}
									if (i == 14)
									{
										gameObject = skillBag.beltItem3text.gameObject;
									}
									if (i == 4)
									{
										gameObject = skillBag.ammo1Txt.gameObject;
									}
									if (i == 5)
									{
										gameObject = skillBag.ammo2Txt.gameObject;
									}
									if (i == 6)
									{
										gameObject = skillBag.ammo3Txt.gameObject;
									}
									if (gameObject)
									{
										Links.x.itemPickupFX2.gameObject.SetActive(true);
										Links.x.itemPickupFX2.gameObject.GetComponent<HannahAnimator>().Play("Idle");
										Links.x.itemPickupFX2.position = gameObject.gameObject.transform.position;
									}
								}
								else
								{
									ItemEquipped itemEquippedFromIndex = this.GetItemEquippedFromIndex(i);
									stackEquipped = itemEquippedFromIndex;
									if (itemEquippedFromIndex && Links.x.characterSheet.character == addToCharacter)
									{
										itemEquippedFromIndex.stackSize = num2;
										itemEquippedFromIndex.UpdateStackSize();
									}
								}
							}
						}
					}
				}
			}
			if (added)
			{
				addToCharacter.UpdateListsFromInv(true);
				addToCharacter.portrait.skillBag.SetTrinketGrid(false);
			}
		}
		return item2;
	}

	// Token: 0x060010CD RID: 4301 RVA: 0x00148910 File Offset: 0x00146B10
	public void RemoveStack(Character c, global::Item item, int amt)
	{
		if (c.inventoryBag)
		{
			c.inventoryBag.RemoveStack(item, amt);
		}
	}

	// Token: 0x060010CE RID: 4302 RVA: 0x0014892C File Offset: 0x00146B2C
	public void UpdateSocketLists(global::Item item)
	{
		int num = this.bagItems.IndexOf(item);
		this.socketA[num] = item.socketA;
		this.socketB[num] = item.socketB;
		this.selectedPlayer.UpdateListsFromInv(true);
	}

	// Token: 0x060010CF RID: 4303 RVA: 0x00148978 File Offset: 0x00146B78
	public void UpdateContainer(global::Item item, Vector3 position, InventoryContainer container, InventoryContainer prevContainer, bool add, bool canStack)
	{
		Character character = this.selectedPlayer;
		bool flag = false;
		bool flag2 = false;
		if (container && container.bag)
		{
			flag = true;
		}
		if (flag)
		{
			if (add)
			{
				if (item.stackable)
				{
					flag2 = false;
					int maxStackSize = item.invRow._MaxStackSize;
					canStack = false;
					for (int i = 0; i < this.bagID.Count; i++)
					{
						if (this.bagID[i] > 0 && this.bagID[i] == item.ID && this.bagItems[i] != this.dragItem && this.bagItems[i] && (!flag2 && canStack) && this.bagItems[i] != item && this.bagAmount[i] + item.stackSize < maxStackSize && item.socketA == this.bagItems[i].socketA && item.socketB == this.bagItems[i].socketB && item.durability.w == this.bagItems[i].durability.w)
						{
							this.bagAmount[i] = this.bagAmount[i] + item.stackSize;
							flag2 = true;
							this.bagItems[i].stackSize += item.stackSize;
							this.bagItems[i].CheckStackSize();
							this.RemoveItemSlots(item, true);
							if (item.forSale)
							{
								Debug.Log("for sale");
							}
							item.DestroyItem(false, false);
							if (this.dragging)
							{
								this.EndDragging(true);
							}
						}
					}
				}
				if (!flag2)
				{
					this.ListsAddBagItem(item);
				}
			}
			else
			{
				int num = this.bagItems.IndexOf(item);
				this.UpdateWeight(this.openBag, this.selectedPlayer);
				if (num > -1)
				{
					this.bagItems[num] = null;
					this.bagID[num] = 0;
					this.bagAmount[num] = 0;
					this.bagPos[num] = -1;
					this.durabilities[num] = Vector4.zero;
					this.socketA[num] = Vector3.zero;
					this.socketB[num] = Vector3.zero;
				}
			}
			character.UpdateListsFromInv(true);
		}
	}

	// Token: 0x060010D0 RID: 4304 RVA: 0x00148C24 File Offset: 0x00146E24
	public void RemoveBagItem(int index, Character party)
	{
		InventoryContainer inventoryContainer = null;
		if (party == this.bag1.character)
		{
			inventoryContainer = this.bag1;
		}
		if (party == this.bag2.character)
		{
			inventoryContainer = this.bag2;
		}
		if (party == this.bag3.character)
		{
			inventoryContainer = this.bag3;
		}
		if (party == this.bag4.character)
		{
			inventoryContainer = this.bag4;
		}
		if (inventoryContainer)
		{
			inventoryContainer.RemoveBagItem(index);
		}
	}

	// Token: 0x060010D1 RID: 4305 RVA: 0x00148CAC File Offset: 0x00146EAC
	public void AddSlotItem(int slot, int id, int amt, int socketA, int socketB, global::Item linkedItem, bool fromDrag, Character party)
	{
		Transform transform = this.bag1.transform;
		transform = party.inventoryBag.transform;
		if (linkedItem != null)
		{
			linkedItem.gameObject.transform.SetParent(transform, true);
			if (!fromDrag)
			{
				linkedItem.gameObject.transform.localPosition = new Vector3(50f, 0f, 0f);
			}
			linkedItem.gameObject.transform.localRotation = Quaternion.Euler(Vector3.zero);
		}
	}

	// Token: 0x060010D2 RID: 4306 RVA: 0x00148D34 File Offset: 0x00146F34
	public void ReleaseGroundList()
	{
		for (int i = 0; i < this.groundSlotsList.Count; i++)
		{
			this.groundSlotsList[i].DestroyItem(false, false);
		}
		this.groundSlotsList.Clear();
	}

	// Token: 0x060010D3 RID: 4307 RVA: 0x00148D78 File Offset: 0x00146F78
	public void OpenGroundList()
	{
		if (this.groundSlotsList.Count > 0)
		{
			return;
		}
		this.inRangeGroundItems = Links.x.diorama.groundItems;
		for (int i = 0; i < this.inRangeGroundItems.Count; i++)
		{
			global::Item item = this.inRangeGroundItems[i];
			if (item)
			{
				item.GetLinkedCharacter();
				if (!item.forSale && !item.linkedCharacter && item.ID > 2 && item.gameObject.activeInHierarchy && item.active && (item.transform.position - this.selectedPlayer.tr.position).sqrMagnitude < 36f)
				{
					global::Item item2 = this.SpawnItem(null, false, item.ID, item.stackSize, item.socketA, item.socketB, item.durability, Vector3.zero, this.groundBag.groundItemsParent.transform);
					item.slotItem = item2;
					item2.gameObject.transform.SetParent(this.groundBag.groundItemsParent.transform, false);
					item2.worldItem = item;
					item2.InGroundMenuList();
					item2.SetSprite(false);
					item2.AddSocketImgs();
					item2.img.enabled = true;
					item2.backImage.transform.SetParent(this.groundContent);
					item2.GetBackImage();
					if (item2.bag)
					{
						item2.bag.RemoveImage(item2.backImage);
					}
					this.groundContainer.AddImage(item2.backImage, item2);
					item2.backImage.transform.SetParent(item2.gameObject.transform);
					this.SetBackImageSize(item2.backImage, item2);
					Color color = new Color(0.5f, 0.5f, 0.5f, 1f);
					item2.backImage.color = color;
					item2.ToggleBackImage(true);
				}
			}
		}
		for (int j = 0; j < this.groundSlotsList.Count; j++)
		{
			this.groundSlotsList[j].img.raycastTarget = true;
		}
		this.dragItem = null;
		this.groundContainer.UpdateItemInteractableState(true);
	}

	// Token: 0x060010D4 RID: 4308 RVA: 0x00148FCA File Offset: 0x001471CA
	public void UpdateGroundSlots()
	{
		this.ReleaseGroundList();
		this.OpenGroundList();
	}

	// Token: 0x060010D5 RID: 4309 RVA: 0x00148FD8 File Offset: 0x001471D8
	public void AddToGroundList(global::Item item)
	{
		if (!this.groundSlotsList.Contains(item))
		{
			this.groundSlotsList.Add(item);
		}
	}

	// Token: 0x060010D6 RID: 4310 RVA: 0x00148FF4 File Offset: 0x001471F4
	public void RemoveFromGroundList(global::Item item)
	{
		int num = this.groundSlotsList.IndexOf(item);
		this.groundSlotsList.RemoveAt(num);
	}

	// Token: 0x060010D7 RID: 4311 RVA: 0x0014901C File Offset: 0x0014721C
	public void ToGround(global::Item item, bool fromDragging)
	{
		Links.x.characterSheet.PlayRandomClick();
		bool flag = false;
		Character main = Links.x.main;
		if (this.open)
		{
			main = this.selectedPlayer;
		}
		if (!item.worldItem)
		{
			int num = -1;
			if (this.selectedPlayer && this.selectedPlayer.node != null)
			{
				num = (int)this.selectedPlayer.node.Area;
			}
			global::Item item2 = this.groundBag.DropLoot(item.ID, item.stackSize, item.socketA, item.socketB, item.durability, main, main.tr.position + new Vector3(Random.Range(-2f, 2f), 0f, Random.Range(-2f, 2f)), true, item.forSale, num);
			if (!item2)
			{
				flag = true;
			}
			item.worldItem = item2;
			item2.slotItem = item;
		}
		this.ClearDrag();
		if (flag)
		{
			item.DestroyItem(true, false);
			if (fromDragging)
			{
				this.dragItem = null;
				this.HoverOverGround();
				this.EndDragging(true);
			}
		}
		else
		{
			item.InGroundMenuList();
			if (this.selectedPlayer && this.open)
			{
				this.selectedPlayer.UpdateListsFromInv(true);
			}
			if (item.isEquipped && item.invRow._EquipSlotID == 0)
			{
				this.CreateFist(0, false, this.selectedPlayer, this.openBag.transform, true);
			}
			this.RemoveItemSlots(item, false);
			if (fromDragging)
			{
				this.UpdateContainer(item, this.dropPosition, this.startDragObjectScript, null, false, true);
				this.EndDragging(true);
			}
			this.GroundInstructions(item, main);
			item.transform.SetParent(this.groundBag.groundItemsParent.transform, true);
			if (item.bag)
			{
				item.bag.RemoveImage(item.backImage);
			}
			this.groundContainer.AddImage(item.backImage, item);
		}
		if (this.dragItem)
		{
			this.dragItem.SetSprite(false);
		}
		this.dragItem = null;
		this.draggingSocket = false;
		this.dragGo = null;
		this.dragging = false;
	}

	// Token: 0x060010D8 RID: 4312 RVA: 0x0014924C File Offset: 0x0014744C
	private void GroundInstructions(global::Item item, Character addToCharacter)
	{
		item.backImage.transform.SetParent(this.groundContent);
		item.GetBackImage();
		Debug.Log("setting parent to ground");
		this.groundContainer.AddImage(item.backImage, this.dragItem);
		item.backImage.transform.SetParent(item.gameObject.transform);
		this.SetBackImageSize(item.backImage, item);
	}

	// Token: 0x060010D9 RID: 4313 RVA: 0x001492C0 File Offset: 0x001474C0
	public void DestroyedItem(global::Item item, Character character)
	{
		InventoryContainer inventoryBag = character.inventoryBag;
		this.UpdateContainer(item, Vector3.zero, inventoryBag, null, false, true);
		item.DestroyItem(false, false);
		this.RemoveItemSlots(item, false);
		if (this.dragItem)
		{
			this.dragItem.SetSprite(false);
		}
		this.dragItem = null;
		this.dragGo = null;
		this.draggingSocket = false;
		this.dragging = false;
		this.ToggleCharacterSheetButtonStateForDrag(false);
		this.UpdateWeight(this.openBag, character);
		this.UpdateSlotStates(this.openBag);
		this.CheckSlotImages();
	}

	// Token: 0x060010DA RID: 4314 RVA: 0x0014934F File Offset: 0x0014754F
	public Transform GetGridTransform(int index)
	{
		return this.gridTrs[index];
	}

	// Token: 0x060010DB RID: 4315 RVA: 0x00149360 File Offset: 0x00147560
	public global::Item CheckGridHover()
	{
		float num = float.PositiveInfinity;
		int num2 = -1;
		Vector3 vector = Links.x.menuCamera.ScreenToWorldPoint(Input.mousePosition);
		float num3 = 0.16000001f;
		global::Item item = this.currHoverItem;
		bool flag = this.fromSecondaryBag;
		for (int i = 0; i < this.bagItems.Count; i++)
		{
			global::Item item2 = this.bagItems[i];
			if (item2)
			{
				this.localImg = item2.gridImg;
				foreach (int num4 in this.localImg)
				{
					vector.z = this.gridTrs[num4].position.z;
					float sqrMagnitude = (this.gridTrs[num4].position - vector).sqrMagnitude;
					if (sqrMagnitude < num && sqrMagnitude < num3)
					{
						num = sqrMagnitude;
						num2 = i;
						this.fromSecondaryBag = false;
					}
				}
			}
		}
		bool flag2 = false;
		if (Links.x.characterSheet.merchant)
		{
			flag2 = true;
		}
		if (flag2)
		{
			this.gridTrsMisc = this.secondaryBag.gridTrs;
			this.gridStateMisc = this.secondaryBag.gridState;
			this.gridImgMisc = this.secondaryBag.gridImg;
		}
		if (num2 == -1 && this.open && flag2)
		{
			this.merchantItems = Links.x.merchant.items;
			for (int j = 0; j < this.merchantItems.Count; j++)
			{
				global::Item item3 = this.merchantItems[j];
				if (item3)
				{
					this.localImg = item3.gridImg;
					foreach (int num5 in this.localImg)
					{
						if (num5 < this.gridTrsMisc.Count)
						{
							vector.z = this.gridTrsMisc[num5].position.z;
							float sqrMagnitude2 = (this.gridTrsMisc[num5].position - vector).sqrMagnitude;
							if (sqrMagnitude2 < num && sqrMagnitude2 < num3)
							{
								num = sqrMagnitude2;
								num2 = j;
								this.fromSecondaryBag = true;
							}
						}
					}
				}
			}
		}
		if (num2 <= -1)
		{
			this.currHoverItem = null;
			if (item)
			{
				item.InventoryHoverOut(flag);
				this.SetBackSprite("Normal", item.backImage, item);
			}
			return null;
		}
		if (this.fromSecondaryBag)
		{
			this.currHoverItem = this.merchantItems[num2];
		}
		else
		{
			this.currHoverItem = this.bagItems[num2];
		}
		if (item && this.currHoverItem != item)
		{
			item.InventoryHoverOut(flag);
			this.SetBackSprite("Normal", item.backImage, item);
		}
		bool flag3 = true;
		if (this.dragging && this.dragItem)
		{
			flag3 = false;
			if (this.currHoverItem.isEquipped)
			{
				flag3 = true;
			}
			if (this.draggingSocket && !this.fromSecondaryBag && this.CheckSocket(this.dragItem, this.currHoverItem))
			{
				flag3 = true;
			}
			if (this.dragItem.invRow._Stackable && this.currHoverItem.invRow._Stackable && !this.dragItem.forSale && !this.currHoverItem.forSale && this.currHoverItem.ID == this.dragItem.ID && this.currHoverItem.stackSize + this.dragItem.stackSize <= this.currHoverItem.invRow._MaxStackSize && !this.currHoverItem.inGroundMenu && !this.currHoverItem.forSale)
			{
				flag3 = true;
			}
		}
		if (!flag3)
		{
			this.currHoverItem = null;
			num2 = -1;
			return null;
		}
		if (item != this.currHoverItem)
		{
			this.currHoverItem.InventoryHoverIn(this.fromSecondaryBag);
			this.SetBackSprite("Hover", this.currHoverItem.backImage, this.currHoverItem);
		}
		if (this.fromSecondaryBag)
		{
			return this.merchantItems[num2];
		}
		return this.bagItems[num2];
	}

	// Token: 0x060010DC RID: 4316 RVA: 0x001497E4 File Offset: 0x001479E4
	public void ChangeImage(bool inSlot, Image img, int itemID)
	{
		Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(itemID);
		img.sprite = Links.x.archives.GetItem(invRowByIndex._UIModel);
		img.preserveAspect = true;
	}

	// Token: 0x060010DD RID: 4317 RVA: 0x00149824 File Offset: 0x00147A24
	public void UpdateMisc()
	{
		this.emeraldText.text = this.emeralds.ToString();
		this.gemText.text = this.gems.ToString();
		if (Links.x.characterSheet.merchant)
		{
			Links.x.merchant.CheckSlotCosts();
			Links.x.merchant.UpdateMerchant();
		}
		if (Links.x.characterSheet.open)
		{
			Links.x.characterSheet.GetStats();
			this.selectedPlayer.stats.UpdateAbilityTriggers();
			if (this.selectedPlayer.portrait && this.selectedPlayer.portrait.skillBag)
			{
				if ((this.selectedPlayer.portrait.skillBag.GetSpellCount() > 0 && !this.selectedPlayer.stats.HasSpellbook()) || (this.selectedPlayer.portrait.skillBag.GetSpellCount() == 0 && this.selectedPlayer.stats.HasSpellbook()))
				{
					this.selectedPlayer.portrait.skillBag.SetSpellbookGrid();
				}
				int songCount = this.selectedPlayer.portrait.skillBag.GetSongCount();
				if ((songCount > 0 && !this.selectedPlayer.stats.HasSongbook()) || (songCount == 0 && this.selectedPlayer.stats.HasSongbook()) || (songCount == 0 && this.selectedPlayer.HasInstrument()) || (songCount > 0 && !this.selectedPlayer.HasInstrument()))
				{
					this.selectedPlayer.portrait.skillBag.SetSongGrid();
				}
			}
			Links.x.characterSheet.booksMenu.UpdateAbilityTriggers();
			Links.x.characterSheet.character.portrait.SetMagicColor();
		}
		if (this.selectedPlayer && this.selectedPlayer.portrait && Links.x.gaia.sceneLoaded)
		{
			this.selectedPlayer.portrait.skillBag.UpdateWindowStates();
		}
		this.UpdateWeight(this.openBag, this.selectedPlayer);
		if (Links.x.characterSheet.enchanting)
		{
			this.enchantMenu.OpenMenu(this.selectedPlayer);
		}
	}

	// Token: 0x060010DE RID: 4318 RVA: 0x00149A74 File Offset: 0x00147C74
	public global::Item SpawnItem(global::Item item, bool isDragging, int id, int amt, Vector3 socketA, Vector3 socketB, Vector4 durability, Vector3 position, Transform par)
	{
		bool flag = false;
		if (item == null)
		{
			flag = true;
		}
		Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(id);
		if (id <= 0)
		{
			return null;
		}
		if (invRowByIndex == null)
		{
			return null;
		}
		if (invRowByIndex._ArmorID == -1)
		{
			return null;
		}
		item = Links.x.cellar.GetItem();
		if (item)
		{
			item.Reset();
			item.GetBackImage();
			item.ToggleBackImage(false);
			if (this.openBag)
			{
				item.backImage.gameObject.transform.SetParent(this.openBag.transform);
			}
			if (Records.x.editor)
			{
				item.name = invRowByIndex._DisplayName + "_" + Random.Range(1, 100).ToString();
			}
			Image component = item.GetComponent<Image>();
			if (component)
			{
				component.enabled = true;
				component.sprite = Links.x.archives.GetItem(invRowByIndex._UIModel);
				component.preserveAspect = true;
				if (id == 1)
				{
					component.raycastTarget = false;
				}
				if (par == null)
				{
					par = base.gameObject.transform;
				}
				Transform component2 = item.GetComponent<RectTransform>();
				item.transform.SetParent(par, true);
				component2.localScale = new Vector3(1f, 1f, 1f);
			}
		}
		if (item)
		{
			item.gameObject.SetActive(true);
			item.ToggleBackImage(false);
			if (item.bag)
			{
				item.bag.RemoveImage(item.backImage);
			}
			item.bag = this.openBag;
			if (item.bag)
			{
				item.bag.AddImage(item.backImage, item);
			}
			item.maskedSprite = Links.x.archives.GetItem(invRowByIndex._UIModel);
			item.fullSprite = Links.x.archives.GetItemFull(invRowByIndex._UIModelFull);
			GameObject gameObject = item.gameObject;
			gameObject.transform.localPosition = Vector3.zero;
			global::Item item2 = item;
			if (item2)
			{
				item2.onGround = false;
				if (flag)
				{
					item2.stackSize = amt;
					if (amt > invRowByIndex._MaxStackSize)
					{
						item2.stackSize = invRowByIndex._MaxStackSize;
					}
					item2.ID = id;
				}
				else
				{
					item2.stackSize = item.stackSize;
					if (item.stackSize > invRowByIndex._MaxStackSize)
					{
						item2.stackSize = invRowByIndex._MaxStackSize;
					}
					item2.forSale = item.forSale;
					item2.ID = item.ID;
				}
				item2.equipSlot = invRowByIndex._EquipSlotID;
				item2.socketA = socketA;
				item2.socketB = socketB;
				item2.stackable = invRowByIndex._Stackable;
				item2.itemTag = invRowByIndex._Tag;
				item2.durability = durability;
				if (invRowByIndex._Life > 0)
				{
					if (durability.x > 0f)
					{
						item2.durability = durability;
					}
					else if (!invRowByIndex._Effect.Contains("Cure"))
					{
						item2.durability.x = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours()) + (float)invRowByIndex._Life;
						durability.x = item2.durability.x;
					}
				}
				else
				{
					if (durability.x == -1f)
					{
						item2.durability = new Vector4((float)invRowByIndex._DurabilityMax, durability.y, durability.z, durability.w);
					}
					else
					{
						item2.durability = durability;
					}
					if (item2.durability.x > (float)invRowByIndex._DurabilityMax && (item2.invRow._Tag == "Weapon" || item2.invRow._Tag == "Shield" || item2.invRow._Tag == "Armor"))
					{
						item2.durability.x = (float)invRowByIndex._DurabilityMax;
					}
					if (id == Links.x.library.bombID && item2.durability.x <= 0f)
					{
						item2.durability.x = Links.x.gameplay.seconds;
					}
				}
				if (invRowByIndex._Contraband > 0)
				{
					item2.durability.w = 1f;
				}
				int num = invRowByIndex._SocketMax;
				if (invRowByIndex._Tag == "Weapon" || invRowByIndex._Tag == "Jewelry")
				{
					num = 0;
				}
				item2.socketMax = num;
				item2.invRow = invRowByIndex;
				item2.active = true;
				if (item2.stackSize == 0)
				{
					item2.stackSize = 1;
				}
				gameObject.transform.localRotation = Quaternion.Euler(Vector3.zero);
				this.t = gameObject.GetComponentsInChildren<Transform>();
				for (int i = 0; i < this.t.Length; i++)
				{
					this.t[i].gameObject.layer = 5;
				}
				if (isDragging && item != null)
				{
					this.groundDragItem = item;
					this.dragItem = item2;
					this.sizeX = this.dragItem.invRow._SizeX;
					this.sizeY = this.dragItem.invRow._SizeY;
					this.dragGo = gameObject;
					item.PickUp();
				}
				item2.CheckStackSize();
				item2.SetSprite(false);
				this.SetBackImageSize(item2.backImage, item2);
				if (invRowByIndex._SetVariable != "" && invRowByIndex._Tag != "Note" && DialogueLua.GetVariable(invRowByIndex._SetVariable).asInt == 0)
				{
					DialogueLua.SetVariable(invRowByIndex._SetVariable, 1);
				}
				if (invRowByIndex._SetQuest != "" && invRowByIndex._Tag != "Note")
				{
					bool flag2 = true;
					if (flag2)
					{
						if (invRowByIndex._SetQuestState == "Conversation")
						{
							if (invRowByIndex._SetQuest == "C6_Dan")
							{
								if (QuestLog.GetQuestState(invRowByIndex._SetQuest) == QuestState.PerpIsDead)
								{
									flag2 = false;
								}
								if (QuestLog.GetQuestState(invRowByIndex._SetQuest) == QuestState.Complete)
								{
									flag2 = false;
								}
								if (QuestLog.GetQuestState(invRowByIndex._SetQuest) == QuestState.WaitingForExileIsland)
								{
									flag2 = false;
								}
								if (QuestLog.GetQuestState(invRowByIndex._SetQuest) == QuestState.ExileIsland)
								{
									flag2 = false;
								}
								if (QuestLog.GetQuestState(invRowByIndex._SetQuest) == QuestState.Success)
								{
									flag2 = false;
								}
								if (flag2)
								{
									if (Records.x.editor)
									{
										QuestLog.GetQuestState(invRowByIndex._SetQuest);
									}
									if (Links.x.gaia.sceneLoaded)
									{
										Character secondAvailableParty = Links.x.GetSecondAvailableParty(Links.x.main.currentPosition, Links.x.main);
										Links.x.gameplay.StartDialogue(Links.x.main, secondAvailableParty, null, null, "LazureCaves/MissingDryad");
									}
								}
							}
						}
						else if (invRowByIndex._SetQuest == "D6_Licech")
						{
							flag2 = false;
							if (QuestLog.GetQuestState(invRowByIndex._SetQuest) == QuestState.Unassigned)
							{
								flag2 = true;
							}
							if (QuestLog.GetQuestState(invRowByIndex._SetQuest) == QuestState.Active)
							{
								flag2 = true;
							}
							if (QuestLog.GetQuestState(invRowByIndex._SetQuest) == QuestState.Discussed)
							{
								flag2 = true;
							}
							if (flag2)
							{
								QuestLog.SetQuestState(invRowByIndex._SetQuest, Records.x.StringToQuestState(invRowByIndex._SetQuestState));
							}
							Links.x.dialogue.SetVariableInt("TalkToD6LicechFound", 1);
						}
						else
						{
							QuestLog.SetQuestState(invRowByIndex._SetQuest, Records.x.StringToQuestState(invRowByIndex._SetQuestState));
						}
					}
				}
			}
			return item2;
		}
		return null;
	}

	// Token: 0x060010DF RID: 4319 RVA: 0x0014A218 File Offset: 0x00148418
	public void HandItems()
	{
		this.SwapHandItems(this.selectedPlayer);
	}

	// Token: 0x060010E0 RID: 4320 RVA: 0x0014A228 File Offset: 0x00148428
	public void SwapHandItems(Character c)
	{
		if (this.enchantMenu.open)
		{
			return;
		}
		if (!c.inventoryBag)
		{
			return;
		}
		c.inventoryBag.SwapBagItem(0, 16, this.selectedPlayer, true);
		c.inventoryBag.SwapBagItem(2, 18, this.selectedPlayer, true);
		c.inventoryBag.SwapBagItem(1, 17, this.selectedPlayer, true);
		c.inventoryBag.SwapBagItem(3, 15, this.selectedPlayer, true);
		this.SetupEquippedItems(Links.x.characterSheet.body, true, 0, true);
		this.SetupEquippedItems(Links.x.characterSheet.body, true, 16, true);
	}

	// Token: 0x060010E1 RID: 4321 RVA: 0x0014A2D8 File Offset: 0x001484D8
	public void ClearAllBags()
	{
		if (this.bag1)
		{
			this.bag1.EmptyItems();
		}
		if (this.bag2)
		{
			this.bag2.EmptyItems();
		}
		if (this.bag3)
		{
			this.bag3.EmptyItems();
		}
		if (this.bag4)
		{
			this.bag4.EmptyItems();
		}
	}

	// Token: 0x060010E2 RID: 4322 RVA: 0x0014A348 File Offset: 0x00148548
	public void ClearBag(Character bagToClear)
	{
		InventoryContainer partyBag = this.GetPartyBag(bagToClear);
		if (partyBag)
		{
			partyBag.EmptyItems();
			if (!this.openBags.Contains(partyBag))
			{
				this.openBags.Add(partyBag);
				bagToClear.inventoryBag = null;
			}
		}
		this.openBags.RemoveAll((InventoryContainer item) => item == null);
	}

	// Token: 0x060010E3 RID: 4323 RVA: 0x0014A3B8 File Offset: 0x001485B8
	public void ListsAddBagItem(global::Item item)
	{
		int num = -1;
		for (int i = 0; i < this.bagItems.Count; i++)
		{
			if (i >= 19 && (this.bagItems[i] == null || this.bagItems[i] == item))
			{
				num = i;
				break;
			}
		}
		if (num == -1)
		{
			Debug.Log(((item != null) ? item.ToString() : null) + " ITEM DROPPED TO GROUND");
			this.ToGround(item, true);
			return;
		}
		this.bagItems[num] = item;
		this.bagID[num] = item.ID;
		this.bagAmount[num] = item.stackSize;
		this.bagPos[num] = item.bagGridID;
		this.socketA[num] = item.socketA;
		this.socketB[num] = item.socketB;
		this.durabilities[num] = item.durability;
		if (item.bag)
		{
			item.bag.RemoveImage(item.backImage);
		}
		item.bag = this.openBag;
		item.bag.AddImage(item.backImage, item);
	}

	// Token: 0x060010E4 RID: 4324 RVA: 0x0014A4EC File Offset: 0x001486EC
	public int FindFreeSpace()
	{
		int num = -1;
		for (int i = 0; i < this.bagItems.Count; i++)
		{
			if (i >= 19 && this.bagItems[i] == null)
			{
				num = i;
				break;
			}
		}
		return num;
	}

	// Token: 0x060010E5 RID: 4325 RVA: 0x0014A530 File Offset: 0x00148730
	public bool AddFromGround(GroundItemText textItem, global::Item item, int stackSizeOverride, bool stolen, float cost, int itemID, int stack, Vector3 socketA, Vector3 socketB, Vector4 dur, Character addToCharacter, bool canStack, bool overrideDurability, out global::Item addedItem, out ItemEquipped addedItemEquipped)
	{
		addedItem = null;
		addedItemEquipped = null;
		if (!addToCharacter.party)
		{
			addToCharacter = Links.x.GetNearestPortraitParty(addToCharacter.tr.position);
		}
		Character character = null;
		if (this.open)
		{
			character = this.selectedPlayer;
		}
		this.lookingForSpot = true;
		this.inSecondaryBag = false;
		cost = 0f;
		this.GetBagLists(addToCharacter);
		Transform transform = this.GetPartyBag(addToCharacter).transform;
		if (item)
		{
			if (item.ID == 2)
			{
				if (textItem)
				{
					this.groundBag.RemoveItemLabel(textItem);
				}
				this.emeralds += item.stackSize;
				this.lookingForSpot = false;
				if (this.open)
				{
					this.GetBagLists(this.selectedPlayer);
				}
				return true;
			}
		}
		else if (itemID == 2)
		{
			this.emeralds += stack;
			this.lookingForSpot = false;
			if (this.open)
			{
				this.GetBagLists(this.selectedPlayer);
			}
			return false;
		}
		if (item)
		{
			if (cost > 0f)
			{
				if (item.invRow._NeverSell)
				{
					cost = 0f;
				}
				if (item.invRow._Stackable)
				{
					cost = 0f;
				}
			}
			if (stolen)
			{
				item.durability = new Vector4(item.durability.x, item.durability.y, item.durability.z, 1f);
			}
		}
		global::Item item2;
		if (item)
		{
			item2 = this.SpawnItem(null, true, item.ID, item.stackSize, item.socketA, item.socketB, item.durability, Vector3.zero, transform);
		}
		else
		{
			item2 = this.SpawnItem(null, true, itemID, stack, socketA, socketB, dur, Vector3.zero, transform);
		}
		this.dragFromGround = true;
		this.groundDragItem = item;
		if (textItem)
		{
			this.groundBag.RemoveItemLabel(textItem);
		}
		if (overrideDurability)
		{
			item2.durability = dur;
		}
		if (stolen)
		{
			item2.durability = new Vector4(item2.durability.x, item2.durability.y, item2.durability.z, 1f);
		}
		else if (cost > 0f)
		{
			item2.durability = new Vector4(item2.durability.x, item2.durability.y, item2.durability.z, cost * -1f);
		}
		addedItem = item2;
		bool flag = false;
		this.UpdateSlots(false, addToCharacter.inventoryBag);
		if (item2.gameObject.activeSelf)
		{
			if (stackSizeOverride > 0)
			{
				item2.stackSize = stackSizeOverride;
			}
			bool flag2 = false;
			if (item2.stackable && canStack)
			{
				bool flag3 = false;
				ItemEquipped itemEquipped;
				global::Item item3 = this.AddedToStack(item2, addToCharacter, out flag3, out itemEquipped);
				if (item3 || itemEquipped)
				{
					flag = true;
					flag2 = true;
					item2.DestroyItem(false, false);
					addedItem = item3;
					addedItemEquipped = itemEquipped;
					item2 = null;
				}
				else if (flag3)
				{
					flag = true;
					flag2 = true;
					item2.DestroyItem(false, false);
					item2 = null;
					addedItem = null;
				}
			}
			if (!flag2)
			{
				flag = this.FindOpenSpace(item2.transform.position, item2, this.mainBagX, this.mainBagY, "Hidden", addToCharacter.inventoryBag);
				if (!flag)
				{
					int num = -1;
					if (this.selectedPlayer && this.selectedPlayer.node != null)
					{
						num = (int)this.selectedPlayer.node.Area;
					}
					this.groundBag.DropLoot(item2.ID, item2.stackSize, item2.socketA, item2.socketB, item2.durability, addToCharacter, addToCharacter.tr.position + new Vector3(Random.Range(-2f, 2f), 0f, Random.Range(-2f, 2f)), true, item2.forSale, num);
					item2.DestroyItem(false, false);
					if (this.open)
					{
						this.UpdateGroundSlots();
					}
					addedItem = null;
				}
				else
				{
					this.ListsAddBagItem(item2);
					if (item2.bag)
					{
						item2.bag.RemoveImage(item2.backImage);
					}
					item2.bag = this.openBag;
					item2.bag.AddImage(item2.backImage, item2);
					item2.gameObject.transform.SetParent(addToCharacter.inventoryBag.gameObject.transform, true);
					if (item2.enabled)
					{
						int num2 = this.bagItems.IndexOf(item2);
						if (num2 > -1)
						{
							this.bagPos[num2] = item2.bagGridID;
						}
						item2.AddSocketImgs();
						item2.CheckStackSize();
					}
					if (item2 && !this.open && item2.invRow._RightClickAction == "Consume")
					{
						int num3 = this.bagItems.IndexOf(item2);
						int num4 = -1;
						if (addToCharacter.GetInvNum(14) <= 1)
						{
							num4 = 7;
						}
						if (addToCharacter.GetInvNum(26) <= 1)
						{
							num4 = 13;
						}
						if (addToCharacter.GetInvNum(28) <= 1)
						{
							num4 = 14;
						}
						if (num4 > -1)
						{
							addToCharacter.inventoryBag.SwapBagItem(num3, num4, addToCharacter, true);
							if (this.open)
							{
								this.UpdateGroundSlots();
							}
						}
					}
					addToCharacter.UpdateListsFromInv(true);
					addToCharacter.portrait.skillBag.SetTrinketGrid(false);
				}
			}
		}
		this.currGridImg = this.gridImg;
		this.currGridTrs = this.gridTrs;
		this.currGridState = this.gridState;
		this.CheckSlotImages();
		this.UpdateWeight(this.openBag, addToCharacter);
		this.lookingForSpot = false;
		if (this.open)
		{
			if (item2 && addToCharacter == this.selectedPlayer)
			{
				item2.ToggleBackImage(true);
				item2.CheckStackSize();
				if (Links.x.arrowKit.open)
				{
					this.fx.gameObject.SetActive(true);
					this.fx.gameObject.GetComponent<HannahAnimator>().Play("Idle");
					this.fx.gameObject.transform.position = item2.gameObject.transform.position;
				}
			}
			this.GetBagLists(character);
		}
		return flag;
	}

	// Token: 0x060010E6 RID: 4326 RVA: 0x0014AB3C File Offset: 0x00148D3C
	public void DropInBag(global::Item item, int num, int id, int amt, Vector3 socketA, Vector3 socketB, Vector4 dur, InventoryContainer prevContainer, bool canStack)
	{
		InventoryContainer inventoryContainer = null;
		if (num == 0)
		{
			inventoryContainer = this.bag1;
		}
		if (item == null)
		{
			item = this.SpawnItem(null, false, id, amt, socketA, socketB, dur, Vector3.zero, inventoryContainer.gameObject.transform);
		}
		else if (!this.dragFromGround && prevContainer != null)
		{
			this.UpdateContainer(item, item.gameObject.transform.position, prevContainer, prevContainer, false, canStack);
		}
		else
		{
			if (this.dragFromGround)
			{
				this.groundDragItem.DestroyGroundItem();
			}
			this.dragFromGround = false;
		}
		if (item != null)
		{
			inventoryContainer.transform.position + new Vector3(0f, 0f, 0f);
			if (!item.inGroundMenu)
			{
				item.gameObject.transform.SetParent(inventoryContainer.gameObject.transform, true);
				item.gameObject.transform.localRotation = Quaternion.Euler(Vector3.zero);
				item.SetSprite(false);
				this.UpdateContainer(item, item.gameObject.transform.position, inventoryContainer, prevContainer, true, canStack);
				this.SnapToGrid(item, "Hidden");
			}
			item.AddSocketImgs();
		}
		if (this.openBag)
		{
			this.openBag.UpdateItemInteractableState(this.openBag.lastInteractableState);
		}
		this.UpdateWeight(this.openBag, this.openBag.character);
	}

	// Token: 0x060010E7 RID: 4327 RVA: 0x0014ACAE File Offset: 0x00148EAE
	public void AddGoodItem(global::Item item)
	{
		if (this.goodItems.IndexOf(item) == -1)
		{
			this.goodItems.Add(item);
		}
	}

	// Token: 0x060010E8 RID: 4328 RVA: 0x0014ACCC File Offset: 0x00148ECC
	public void RemoveGoodItem(global::Item item)
	{
		int num = this.goodItems.IndexOf(item);
		if (num > -1)
		{
			this.goodItems.RemoveAt(num);
		}
	}

	// Token: 0x060010E9 RID: 4329 RVA: 0x0014ACF8 File Offset: 0x00148EF8
	public global::Item FindNearItem(Character nearCharacter, int checkForItemID)
	{
		global::Item item = null;
		float num = 400f;
		if (!nearCharacter.actions)
		{
			return null;
		}
		for (int i = 0; i < this.goodItems.Count; i++)
		{
			global::Item item2 = this.goodItems[i];
			float sqrMagnitude = (item2.gameObject.transform.position - nearCharacter.tr.position).sqrMagnitude;
			if (sqrMagnitude < num)
			{
				if (checkForItemID == -1)
				{
					if (this.goodItems[i].itemTag == "Consumable" || this.goodItems[i].itemTag == "Ammunition" || this.goodItems[i].itemTag == "Buff")
					{
						item = item2;
						num = sqrMagnitude;
					}
				}
				else if (this.goodItems[i].ID == checkForItemID)
				{
					item = item2;
					num = sqrMagnitude;
				}
			}
		}
		return item;
	}

	// Token: 0x060010EA RID: 4330 RVA: 0x0014AE00 File Offset: 0x00149000
	public void SetListItems(int invIndex, global::Item i, int newID, int amt, Vector3 sockA, Vector3 sockB, int pos, Vector4 time, Character c)
	{
		if (c.inventoryBag)
		{
			c.inventoryBag.SetListItems(invIndex, i, newID, amt, sockA, sockB, pos, time);
		}
	}

	// Token: 0x060010EB RID: 4331 RVA: 0x0014AE34 File Offset: 0x00149034
	public void SpawnSavedItems(Character party)
	{
		InventoryContainer partyBag = this.GetPartyBag(party);
		if (this.gridTrs.Count == 0)
		{
			this.GetGrid();
		}
		List<int> list = partyBag.bagID;
		List<int> list2 = partyBag.bagAmount;
		List<Vector3> list3 = partyBag.socketA;
		List<Vector3> list4 = partyBag.socketB;
		List<int> list5 = partyBag.bagPos;
		List<Vector4> durability = partyBag.durability;
		List<global::Item> list6 = partyBag.bagItems;
		for (int i = 0; i < 19; i++)
		{
			if (list[i] > 0)
			{
				list6[i] = null;
			}
		}
		this.UpdateSlots(false, party.inventoryBag);
		for (int j = 19; j < list6.Count; j++)
		{
			if (list[j] > 0 && list6[j] == null)
			{
				global::Item item = this.SpawnItem(null, false, list[j], list2[j], list3[j], list4[j], durability[j], Vector3.zero, partyBag.transform);
				if (item != null)
				{
					int num = this.mainBagX;
					int num2 = this.mainBagY;
					durability[j] = item.durability;
					if (list5[j] == -1)
					{
						if (this.FindOpenSpace(Vector3.zero, item, num, num2, "Hidden", partyBag))
						{
							if (item.bag)
							{
								item.bag.RemoveImage(item.backImage);
							}
							item.bag = partyBag;
							item.bag.AddImage(item.backImage, item);
							int num3 = list6.IndexOf(item);
							if (num3 > -1)
							{
								list5[num3] = item.bagGridID;
								party.SetBagPosition(num3, item.bagGridID);
							}
						}
						else
						{
							int num4 = -1;
							if (this.selectedPlayer && this.selectedPlayer.node != null)
							{
								num4 = (int)this.selectedPlayer.node.Area;
							}
							this.groundBag.DropLoot(item.ID, item.stackSize, item.socketA, item.socketB, item.durability, party, party.tr.position + new Vector3(Random.Range(-2f, 2f), 0f, Random.Range(-2f, 2f)), true, item.forSale, num4);
							item.DestroyItem(false, false);
						}
					}
					else
					{
						item.bagGridID = list5[j];
						this.SetupGridFromSave(item, item.bagGridID, -1, num, num2);
					}
					item.AddSocketImgs();
					list6[j] = item;
				}
			}
		}
		this.UpdateWeight(partyBag, party);
		party.UpdateListsFromInv(true);
		party.SetupPartyAfterLoadedVariables2();
	}

	// Token: 0x060010EC RID: 4332 RVA: 0x0014B104 File Offset: 0x00149304
	public void UpdateWeight(InventoryContainer listBag, Character c)
	{
		if (!listBag)
		{
			return;
		}
		listBag.UpdateWeight();
	}

	// Token: 0x060010ED RID: 4333 RVA: 0x0014B118 File Offset: 0x00149318
	public void TooMuchWeight(Character c)
	{
		this.str.Clear();
		this.str.Append(Links.x.gameFeed.GetPartyColorText(c));
		this.str.Append(c.stats.GetName());
		this.str.Append("</color>");
		this.str.Append(" is carrying too much weight.");
		Links.x.gameFeed.AddFeed(this.str.ToString());
	}

	// Token: 0x060010EE RID: 4334 RVA: 0x0014B1A0 File Offset: 0x001493A0
	public InventoryContainer GetPartyBag(Character character)
	{
		return character.inventoryBag;
	}

	// Token: 0x060010EF RID: 4335 RVA: 0x0014B1A8 File Offset: 0x001493A8
	public void GetBagLists(Character character)
	{
		if (character.party && this.openBag != character.inventoryBag)
		{
			if (this.openBag)
			{
				this.openBag.Close();
			}
			this.selectedPlayer = character;
			this.openBag = character.inventoryBag;
			if (this.openBag)
			{
				this.openBag.Open();
				this.openBag.UpdateItemInteractableState(true);
				this.bagItems = this.openBag.bagItems;
				this.bagID = this.openBag.bagID;
				this.bagAmount = this.openBag.bagAmount;
				this.socketA = this.openBag.socketA;
				this.socketB = this.openBag.socketB;
				this.bagPos = this.openBag.bagPos;
				this.durabilities = this.openBag.durability;
				if (this.open && Links.x.characterSheet.body)
				{
					this.equippedItems = Links.x.characterSheet.body.equippedItems;
				}
				this.UpdateSlots(false, character.inventoryBag);
				this.UpdateEquipmentSlots();
				this.CheckSlotImages();
			}
		}
	}

	// Token: 0x060010F0 RID: 4336 RVA: 0x0014B2F0 File Offset: 0x001494F0
	public void GetBag(Character party)
	{
		if (party && this.openBags.Count > 0)
		{
			party.inventoryBag = this.openBags[0];
			this.openBags.RemoveAt(0);
			party.inventoryBag.character = party;
		}
	}

	// Token: 0x060010F1 RID: 4337 RVA: 0x0014B340 File Offset: 0x00149540
	public bool SkillCheck(Library.Inventory invRow)
	{
		int combatSkillID = Links.x.characterSheet.character.stats.GetCombatSkillID(invRow._MainSkill);
		return Links.x.characterSheet.character.stats.GetSkill(combatSkillID) >= 50f;
	}

	// Token: 0x060010F2 RID: 4338 RVA: 0x0014B394 File Offset: 0x00149594
	public void SetupEquippedItems(Body body, bool all, int single, bool skipArmor)
	{
		if (!Links.x.characterSheet.open)
		{
			return;
		}
		body = Links.x.characterSheet.body;
		if (all)
		{
			body.CreateMenuItems(this.bagID[0], this.bagAmount[0], this.socketA[0], this.socketB[0], this.durabilities[0], 0, null);
			body.CreateMenuItems(this.bagID[1], this.bagAmount[1], this.socketA[1], this.socketB[1], this.durabilities[1], 1, null);
			body.CreateMenuItems(this.bagID[2], this.bagAmount[2], this.socketA[2], this.socketB[2], this.durabilities[2], 2, null);
			body.CreateMenuItems(this.bagID[3], this.bagAmount[3], this.socketA[3], this.socketB[3], this.durabilities[3], 3, null);
			body.CreateMenuItems(this.bagID[8], this.bagAmount[8], this.socketA[8], this.socketB[8], this.durabilities[8], 8, null);
			body.CreateMenuItems(this.bagID[10], this.bagAmount[10], this.socketA[10], this.socketB[10], this.durabilities[10], 10, null);
			body.CreateMenuItems(this.bagID[11], this.bagAmount[11], this.socketA[11], this.socketB[11], this.durabilities[11], 11, null);
			body.CreateMenuItems(this.bagID[12], this.bagAmount[12], this.socketA[12], this.socketB[12], this.durabilities[12], 12, null);
			body.CreateMenuItems(this.bagID[7], this.bagAmount[7], this.socketA[7], this.socketB[7], this.durabilities[7], 7, null);
			body.CreateMenuItems(this.bagID[13], this.bagAmount[13], this.socketA[13], this.socketB[13], this.durabilities[13], 13, null);
			body.CreateMenuItems(this.bagID[14], this.bagAmount[14], this.socketA[14], this.socketB[14], this.durabilities[14], 14, null);
			if (this.bagAmount[4] > 0)
			{
				single = 4;
				body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAmmo1);
			}
			if (this.bagAmount[5] > 0)
			{
				single = 5;
				body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAmmo2);
			}
			if (this.bagAmount[6] > 0)
			{
				single = 6;
				body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAmmo3);
			}
			single = 16;
			body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAlt1);
			single = 17;
			body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAlt2);
			single = 18;
			body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAlt3);
			single = 15;
			body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAlt4);
		}
		else
		{
			if (single <= 3 || (single >= 7 && single <= 14))
			{
				body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, null);
			}
			else
			{
				if (single == 4)
				{
					body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAmmo1);
				}
				if (single == 5)
				{
					body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAmmo2);
				}
				if (single == 6)
				{
					body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAmmo3);
				}
				if (single == 16)
				{
					body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAlt1);
				}
				if (single == 17)
				{
					body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAlt2);
				}
				if (single == 18)
				{
					body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAlt3);
				}
				if (single == 15)
				{
					body.CreateMenuItems(this.bagID[single], this.bagAmount[single], this.socketA[single], this.socketB[single], this.durabilities[single], single, this.slotAlt4);
				}
			}
			if (Links.x.characterSheet.body)
			{
				this.equippedItems = Links.x.characterSheet.body.equippedItems;
			}
		}
		if (!skipArmor && (all || single == 9))
		{
			Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.bagID[9]);
			if (invRowByIndex._ArmorID != -1)
			{
				string text = invRowByIndex._CharacterModel;
				if (this.bagID[9] <= 1)
				{
					text = "Tunic";
				}
				string armorModel = Links.x.archives.GetArmorModel(text, this.selectedPlayer.stats.race, this.selectedPlayer.stats.sex, this.selectedPlayer);
				if (armorModel != body.model)
				{
					body = Links.x.characterSheet.UpdateBody(armorModel);
				}
				body.SetupArmorForInventory(this.bagID[9], this.bagAmount[9], this.socketA[9], this.socketB[9], this.durabilities[9], 9);
			}
			else
			{
				string armorModel2 = Links.x.archives.GetArmorModel("Tunic", this.selectedPlayer.stats.race, this.selectedPlayer.stats.sex, this.selectedPlayer);
				if (armorModel2 != body.model)
				{
					body = Links.x.characterSheet.UpdateBody(armorModel2);
				}
				body.SetupArmorForInventory(this.bagID[9], this.bagAmount[9], this.socketA[9], this.socketB[9], this.durabilities[9], 9);
			}
		}
		else if (skipArmor && all)
		{
			body.SetupArmorForInventory(this.bagID[9], this.bagAmount[9], this.socketA[9], this.socketB[9], this.durabilities[9], 9);
		}
		if (!all)
		{
			bool mainSelected = this.selectedPlayer.mainSelected;
		}
		this.selectedPlayer.portrait.skillBag.UpdateWindowStates();
		Links.x.characterSheet.GetStats();
		Links.x.characterSheet.GetProficiency();
	}

	// Token: 0x060010F3 RID: 4339 RVA: 0x0014BDFB File Offset: 0x00149FFB
	public void GetEquipSlotInfo(int index, out Button b, out Image i)
	{
		b = this.equipButtons[index];
		i = this.equipImages[index];
	}

	// Token: 0x060010F4 RID: 4340 RVA: 0x0014BE14 File Offset: 0x0014A014
	public void SetUpBag(Character party)
	{
		if (!party.inventoryBag)
		{
			this.GetBag(party);
		}
		int num = 0;
		this.bag = party.bag;
		this.sockets = party.sockets;
		this.bagPositions = party.bagPositions;
		this.durabilitiesParty = party.durability;
		List<int> list = party.inventoryBag.bagID;
		List<int> list2 = party.inventoryBag.bagAmount;
		List<Vector3> list3 = party.inventoryBag.socketA;
		List<Vector3> list4 = party.inventoryBag.socketB;
		List<int> list5 = party.inventoryBag.bagPos;
		List<Vector4> durability = party.inventoryBag.durability;
		List<global::Item> list6 = party.inventoryBag.bagItems;
		int num2 = this.bagPositions.Count * 2;
		for (int i = 0; i < this.bag.Count; i++)
		{
			if (i < num2)
			{
				int num3 = this.bag[i];
				if (i % 2 == 0)
				{
					list6.Add(null);
					list.Add(num3);
					list5.Add(this.bagPositions[num]);
					list3.Add(this.sockets[i]);
					list4.Add(this.sockets[i + 1]);
					durability.Add(this.durabilitiesParty[num]);
				}
				else if (i % 2 == 1)
				{
					list2.Add(num3);
					num++;
				}
			}
		}
	}

	// Token: 0x060010F5 RID: 4341 RVA: 0x0014BF80 File Offset: 0x0014A180
	public void LookForTorch()
	{
		if (this.open)
		{
			return;
		}
		for (int i = 0; i < 4; i++)
		{
			InventoryContainer inventoryContainer = null;
			if (i == 0)
			{
				inventoryContainer = this.bag1;
			}
			if (i == 1)
			{
				inventoryContainer = this.bag2;
			}
			if (i == 2)
			{
				inventoryContainer = this.bag3;
			}
			if (i == 3)
			{
				inventoryContainer = this.bag4;
			}
			if (inventoryContainer.character)
			{
				inventoryContainer.LookForTorch();
			}
		}
	}

	// Token: 0x060010F6 RID: 4342 RVA: 0x0014BFE4 File Offset: 0x0014A1E4
	public void NewHour()
	{
		for (int i = 0; i < 4; i++)
		{
			InventoryContainer inventoryContainer = null;
			if (i == 0)
			{
				inventoryContainer = this.bag1;
			}
			if (i == 1)
			{
				inventoryContainer = this.bag2;
			}
			if (i == 2)
			{
				inventoryContainer = this.bag3;
			}
			if (i == 3)
			{
				inventoryContainer = this.bag4;
			}
			if (inventoryContainer.character)
			{
				inventoryContainer.NewHour();
			}
		}
	}

	// Token: 0x060010F7 RID: 4343 RVA: 0x0014C040 File Offset: 0x0014A240
	public void UseItemFromPause(global::Item item, int equippedItemIndex, int equippedItemID, Character character)
	{
		Debug.Log(string.Concat(new string[]
		{
			"Using item from pause ",
			(character != null) ? character.ToString() : null,
			" ",
			(item != null) ? item.ToString() : null,
			" ",
			equippedItemIndex.ToString(),
			" ",
			equippedItemID.ToString()
		}));
		if (item == null && equippedItemIndex <= 0)
		{
			return;
		}
		if (item)
		{
			Debug.Log(string.Concat(new string[]
			{
				item.active.ToString(),
				" ",
				item.ID.ToString(),
				" ",
				equippedItemID.ToString()
			}));
			if (!item.active || item.ID != equippedItemID)
			{
				return;
			}
			this.UseItem(item, null, character);
		}
		if (equippedItemIndex > 0 && character.GetInvNum(equippedItemIndex * 2) == equippedItemID)
		{
			this.UseBeltItem(equippedItemIndex, character);
		}
		character.waitingToUseBeltItemIndex = 0;
		character.waitingToUseBeltItemID = 0;
		character.waitingToUseBagItem = null;
		character.waitingToUseItem = false;
	}

	// Token: 0x060010F8 RID: 4344 RVA: 0x0014C164 File Offset: 0x0014A364
	public ItemEquipped GetItemEquippedFromIndex(int index)
	{
		if (this.equipButtons[index])
		{
			return this.equipButtons[index].gameObject.GetComponent<ItemEquipped>();
		}
		return null;
	}

	// Token: 0x060010F9 RID: 4345 RVA: 0x0014C189 File Offset: 0x0014A389
	public void UseItem(global::Item item, ItemEquipped equippedItem, Character character)
	{
		if (character.inventoryBag)
		{
			character.inventoryBag.UseItem(item, equippedItem, this.hitEquippedIndex);
		}
	}

	// Token: 0x060010FA RID: 4346 RVA: 0x0014C1AB File Offset: 0x0014A3AB
	public void UseBeltItem(int beltIndex, Character character)
	{
		if (character.inventoryBag)
		{
			character.inventoryBag.UseBeltItem(beltIndex);
		}
	}

	// Token: 0x060010FB RID: 4347 RVA: 0x0014C1C6 File Offset: 0x0014A3C6
	public void RemoveBeltItem(int beltIndex, Character character)
	{
		if (character.inventoryBag)
		{
			character.inventoryBag.RemoveBeltItem(beltIndex);
		}
	}

	// Token: 0x060010FC RID: 4348 RVA: 0x0014C1E1 File Offset: 0x0014A3E1
	public void AddEffect(global::Item item, Library.Inventory equippedItemRow, int equipIndex, Character character)
	{
		if (character.inventoryBag)
		{
			character.inventoryBag.AddEffect(item, equippedItemRow, equipIndex);
		}
	}

	// Token: 0x060010FD RID: 4349 RVA: 0x0014C200 File Offset: 0x0014A400
	public void SetRepairMessage()
	{
		string text = Links.x.characterSheet.repairInstructions.text;
		if (this.mineralizing)
		{
			bool flag = false;
			if (this.hitItem && this.IsGemMatch(this.hitItem.invRow._Name))
			{
				flag = true;
			}
			string text2 = "Select gems to grind into mineral powder\n\n";
			if (flag)
			{
				text2 = "Grind " + this.hitItem.invRow._DisplayName + " into mineral powder";
				text2 += "\n\nCost: ";
				int stackSize = this.hitItem.stackSize;
				text2 += stackSize.ToString();
				if (stackSize == 1)
				{
					text2 += " emerald";
				}
				else
				{
					text2 += " emeralds";
				}
			}
			Links.x.characterSheet.repairInstructions.text = text2;
		}
		else
		{
			bool flag2 = false;
			if (this.repairType == "Armor")
			{
				if (this.hitItem && (this.hitItem.invRow._Tag == "Armor" || this.hitItem.invRow._Tag == "Shield"))
				{
					flag2 = true;
				}
				if (this.hitEquipped && (this.hitEquipped.invRow._Tag == "Armor" || this.hitEquipped.invRow._Tag == "Shield"))
				{
					flag2 = true;
				}
			}
			else if (this.repairType == "Weapon")
			{
				if (this.hitItem && this.hitItem.invRow._EquipSlotID == 0)
				{
					flag2 = true;
				}
				if (this.hitEquipped && this.hitEquipped.invRow._EquipSlotID == 0)
				{
					flag2 = true;
				}
			}
			else if (this.repairType == "Robe")
			{
				if (this.hitItem && this.hitItem.invRow._Tag == "MagicArmor")
				{
					flag2 = true;
				}
				if (this.hitEquipped && this.hitEquipped.invRow._Tag == "MagicArmor")
				{
					flag2 = true;
				}
			}
			else
			{
				Links.x.characterSheet.repairInstructions.text = "What would you like to repair?";
			}
			if (this.hitEquipped && !this.hitEquipped.buddyItemEquipped3D)
			{
				flag2 = false;
			}
			if (this.repairType.Contains("Armor"))
			{
				string text3 = "Select damaged armor or shield sets to repair to full durability\n\n";
				if (flag2 && (this.hitItem || this.hitEquipped))
				{
					text3 += "Cost: ";
					int repairCost = this.GetRepairCost(this.hitItem, this.hitEquipped);
					text3 += repairCost.ToString();
					if (repairCost == 1)
					{
						text3 += " emerald";
					}
					else
					{
						text3 += " emeralds";
					}
				}
				Links.x.characterSheet.repairInstructions.text = text3;
			}
			if (this.repairType == "Weapon")
			{
				string text4 = "Select damaged weapons to restore them to full durability\n\n";
				if (flag2 && (this.hitItem || this.hitEquipped))
				{
					text4 += "Cost: ";
					int repairCost2 = this.GetRepairCost(this.hitItem, this.hitEquipped);
					text4 += repairCost2.ToString();
					if (repairCost2 == 1)
					{
						text4 += " emerald";
					}
					else
					{
						text4 += " emeralds";
					}
				}
				Links.x.characterSheet.repairInstructions.text = text4;
			}
		}
		if (text != Links.x.characterSheet.repairInstructions.text)
		{
			Links.x.characterSheet.repairInstructions.gameObject.GetComponent<Animator>().Play("Repair Message", -1, 0f);
		}
	}

	// Token: 0x060010FE RID: 4350 RVA: 0x0014C61C File Offset: 0x0014A81C
	public int GetRepairCost(global::Item item, ItemEquipped itemEquipped)
	{
		int num = 0;
		float num2 = 1f;
		if (item)
		{
			num2 = 1f - item.durability.x / (float)item.invRow._DurabilityMax;
		}
		else if (itemEquipped)
		{
			num2 = 1f - itemEquipped.durability.x / (float)itemEquipped.invRow._DurabilityMax;
		}
		if (this.repairType == "Armor")
		{
			num = Mathf.RoundToInt(30f * num2);
		}
		else if (this.repairType == "Weapon")
		{
			num = Mathf.RoundToInt(20f * num2);
		}
		return Mathf.RoundToInt((float)num * this.selectedPlayer.stats.DispositionCost(Links.x.diorama.sceneName, Links.x.merchant.merchantCharacter));
	}

	// Token: 0x060010FF RID: 4351 RVA: 0x0014C6FC File Offset: 0x0014A8FC
	private bool IsGemMatch(string n)
	{
		return n.Contains("Ameythyst") || n.Contains("Citrine") || n.Contains("Emerald") || n.Contains("Garnet") || n.Contains("GemNugget") || n.Contains("GemPoor");
	}

	// Token: 0x06001100 RID: 4352 RVA: 0x0014C75C File Offset: 0x0014A95C
	public void StartGemMineral()
	{
		this.mineralizing = true;
		Links.x.characterSheet.repairInstructions.enabled = true;
		this.SetRepairMessage();
		if (Links.x.mk)
		{
			EventSystem.current.SetSelectedGameObject(null);
		}
		Links.x.hudControl.MenuText();
	}

	// Token: 0x06001101 RID: 4353 RVA: 0x0014C7B4 File Offset: 0x0014A9B4
	private void GrindGem(global::Item gem)
	{
		bool flag = false;
		if (this.repairItem && this.repairItem.onGround)
		{
			flag = true;
		}
		if (gem && gem.onGround)
		{
			flag = true;
		}
		if (!flag)
		{
			int num = (int)gem.invRow._Level * gem.stackSize;
			if (gem.stackSize <= this.emeralds || this.repairItem)
			{
				this.gems += num;
				MasterAudio.PlaySoundAndForget("Mineralize", 1f, new float?(1f), 0f, "", null);
				this.fx.gameObject.transform.position = gem.gameObject.transform.position;
				this.fx.Play("Idle");
				if (!this.repairItem)
				{
					this.emeralds -= gem.stackSize;
				}
				this.RemoveStack(this.selectedPlayer, gem, gem.stackSize);
				this.UpdateMisc();
				Links.x.itemPickupFX.gameObject.SetActive(true);
				Links.x.itemPickupFX.gameObject.GetComponent<HannahAnimator>().Play("Idle");
				Links.x.itemPickupFX.position = this.gemText.gameObject.transform.position;
				return;
			}
			Links.x.characterSheet.StartQuip("Not enough emeralds", FaceAnimations.AnimationNames.Frown);
		}
	}

	// Token: 0x06001102 RID: 4354 RVA: 0x0014C940 File Offset: 0x0014AB40
	public void StartRepair(string type)
	{
		this.repairing = true;
		this.repairType = type;
		this.repairItem = null;
		Links.x.characterSheet.repairInstructions.enabled = true;
		this.SetRepairMessage();
		if (Links.x.mk)
		{
			EventSystem.current.SetSelectedGameObject(null);
		}
		MasterAudio.PlaySoundAndForget("Skill Ready", 0.6f, new float?(1f), 0f, "", null);
		Links.x.hudControl.MenuText();
	}

	// Token: 0x06001103 RID: 4355 RVA: 0x0014C9D0 File Offset: 0x0014ABD0
	public void RepairFromMerchant(global::Item item, ItemEquipped itemEquipped)
	{
		bool flag = false;
		bool flag2 = false;
		bool flag3 = false;
		int repairCost = this.GetRepairCost(item, itemEquipped);
		if (this.emeralds >= repairCost)
		{
			flag = true;
		}
		if (this.repairType == "Armor")
		{
			if (item && (item.invRow._Tag == "Armor" || item.invRow._Tag == "Shield"))
			{
				flag2 = true;
			}
			if (itemEquipped && (itemEquipped.invRow._Tag == "Armor" || itemEquipped.invRow._Tag == "Shield"))
			{
				flag2 = true;
			}
		}
		else if (this.repairType == "Weapon")
		{
			if (item && item.invRow._EquipSlotID == 0)
			{
				flag2 = true;
			}
			if (itemEquipped && itemEquipped.invRow._EquipSlotID == 0)
			{
				flag2 = true;
			}
		}
		if (item && item.durability.x < (float)item.invRow._DurabilityMax)
		{
			flag3 = true;
		}
		if (itemEquipped && itemEquipped.durability.x < (float)itemEquipped.invRow._DurabilityMax)
		{
			flag3 = true;
		}
		if (flag && flag2 && flag3)
		{
			if (this.repairType == "Staff")
			{
				if (item)
				{
					item.durability = new Vector4(item.durability.x, 0f, item.durability.z, item.durability.w);
				}
				if (itemEquipped)
				{
					itemEquipped.durability = new Vector4(itemEquipped.durability.x, 0f, itemEquipped.durability.z, itemEquipped.durability.w);
				}
			}
			else
			{
				if (item)
				{
					item.durability = new Vector4((float)item.invRow._DurabilityMax, item.durability.y, item.durability.z, item.durability.w);
				}
				if (itemEquipped)
				{
					itemEquipped.durability = new Vector4((float)itemEquipped.invRow._DurabilityMax, itemEquipped.durability.y, itemEquipped.durability.z, itemEquipped.durability.w);
				}
			}
			this.emeralds -= repairCost;
			MasterAudio.PlaySoundAndForget("Repair", 1f, new float?(1f), 0f, "", null);
			int num = -1;
			if (item)
			{
				this.fx.gameObject.transform.position = item.gameObject.transform.position;
				this.fx.Play("Idle");
				if (item.durability.x > (float)item.invRow._DurabilityMax)
				{
					item.durability = new Vector4((float)item.invRow._DurabilityMax, item.durability.y, item.durability.z, item.durability.w);
				}
				num = this.bagItems.IndexOf(item);
				this.durabilities[num] = item.durability;
				item.SetDurabilityVisual();
				if (this.repairType == "Armor")
				{
					item.socketA = new Vector3(0f, 0f, 0f);
					item.socketB = new Vector3(0f, 0f, 0f);
					this.socketA[num] = Vector3.zero;
					this.socketB[num] = Vector3.zero;
					item.RemoveSockets();
				}
			}
			if (itemEquipped)
			{
				this.fx.gameObject.transform.position = itemEquipped.gameObject.transform.position;
				this.fx.Play("Idle");
				if (itemEquipped.durability.x > (float)itemEquipped.invRow._DurabilityMax)
				{
					itemEquipped.durability = new Vector4((float)itemEquipped.invRow._DurabilityMax, itemEquipped.durability.y, itemEquipped.durability.z, itemEquipped.durability.w);
				}
				num = itemEquipped.equipIndex;
				this.durabilities[num] = itemEquipped.durability;
				this.selectedPlayer.ChangeDurabilityVisual(num);
				itemEquipped.SetDurabilityVisual();
				if (this.repairType == "Armor")
				{
					itemEquipped.socketA = new Vector3(0f, 0f, 0f);
					itemEquipped.socketB = new Vector3(0f, 0f, 0f);
					this.socketA[num] = Vector3.zero;
					this.socketB[num] = Vector3.zero;
				}
			}
			if (num == 8 || num == 10 || num == 11 || num == 12)
			{
				this.selectedPlayer.stats.EnchantJewelryEffects(num * 2, false);
			}
			this.selectedPlayer.UpdateListsFromInv(true);
			if (itemEquipped)
			{
				itemEquipped.SetDurabilityVisual();
			}
			if (this.itemInfo.open)
			{
				this.itemInfo.SetNumbers(true);
			}
			this.UpdateMisc();
			Links.x.characterSheet.GetStats();
			return;
		}
		if (!flag)
		{
			Links.x.characterSheet.StartQuip("Not enough emeralds", FaceAnimations.AnimationNames.Frown);
			return;
		}
		if (!flag2)
		{
			if (this.repairType == "Armor")
			{
				Links.x.characterSheet.StartQuip("This isn't armor", FaceAnimations.AnimationNames.LookRight);
				return;
			}
			if (this.repairType == "Weapon")
			{
				Links.x.characterSheet.StartQuip("This isn't a weapon", FaceAnimations.AnimationNames.LookRight);
				return;
			}
		}
		else if (!flag3)
		{
			Links.x.characterSheet.StartQuip("This doesn't need to be repaired", FaceAnimations.AnimationNames.LookRight);
		}
	}

	// Token: 0x06001104 RID: 4356 RVA: 0x0014CFA4 File Offset: 0x0014B1A4
	public void RepairItem(global::Item item, ItemEquipped itemEquipped)
	{
		bool flag = true;
		if (item)
		{
			if (item.durability.x >= (float)item.invRow._DurabilityMax || item.invRow._DurabilityMax == 0)
			{
				flag = false;
			}
		}
		else if (itemEquipped.durability.x >= (float)itemEquipped.invRow._DurabilityMax || itemEquipped.invRow._DurabilityMax == 0)
		{
			flag = false;
		}
		if (!flag)
		{
			Links.x.characterSheet.StartQuip("This doesn't need to be repaired", FaceAnimations.AnimationNames.LookLeft);
			return;
		}
		this.AddCombatTime(this.selectedPlayer, "ExtraLong");
		MasterAudio.PlaySoundAndForget("Repair", 1f, new float?(1f), 0f, "", null);
		int num = -1;
		if (item)
		{
			this.fx.gameObject.transform.position = item.gameObject.transform.position;
			this.fx.Play("Idle");
			int num2 = (int)Mathf.Ceil(this.selectedPlayer.stats.Repair(item.invRow._MainSkill, false));
			item.durability.x = item.durability.x + (float)num2;
			if (item.durability.x > (float)item.invRow._DurabilityMax)
			{
				item.durability.x = (float)item.invRow._DurabilityMax;
			}
			num = this.bagItems.IndexOf(item);
			this.durabilities[num] = item.durability;
			item.SetDurabilityVisual();
		}
		if (itemEquipped)
		{
			this.fx.gameObject.transform.position = itemEquipped.gameObject.transform.position;
			this.fx.Play("Idle");
			int num3 = (int)Mathf.Ceil(this.selectedPlayer.stats.Repair(itemEquipped.invRow._MainSkill, false));
			itemEquipped.durability.x = itemEquipped.durability.x + (float)num3;
			if (itemEquipped.durability.x > (float)itemEquipped.invRow._DurabilityMax)
			{
				itemEquipped.durability.x = (float)itemEquipped.invRow._DurabilityMax;
			}
			num = itemEquipped.equipIndex;
			this.durabilities[num] = itemEquipped.durability;
			this.selectedPlayer.ChangeDurabilityVisual(num);
		}
		Links.x.characterSheet.PlayFaceAnimation(FaceAnimations.AnimationNames.Smile);
		this.selectedPlayer.UpdateListsFromInv(true);
		if (itemEquipped)
		{
			itemEquipped.SetDurabilityVisual();
		}
		if (this.itemInfo.open)
		{
			this.itemInfo.SetNumbers(true);
		}
		if (num == 8 || num == 10 || num == 11 || num == 12)
		{
			this.selectedPlayer.stats.EnchantJewelryEffects(num * 2, false);
		}
		Links.x.characterSheet.GetStats();
		this.RemoveStack(this.selectedPlayer, this.repairItem, 1);
		if (!this.repairItem)
		{
			this.repairing = false;
			return;
		}
		if (!this.repairItem.gameObject.activeSelf)
		{
			this.repairing = false;
			return;
		}
	}

	// Token: 0x06001105 RID: 4357 RVA: 0x0014D2B5 File Offset: 0x0014B4B5
	public Library.Sockets GetSocket(int socketID)
	{
		if (socketID > 0 && socketID < this.allSockets.Count)
		{
			return this.allSockets[socketID];
		}
		return null;
	}

	// Token: 0x06001106 RID: 4358 RVA: 0x0014D2D7 File Offset: 0x0014B4D7
	public void Submit(InputAction.CallbackContext ctx)
	{
		Debug.Log("sumbitting");
		if (this.dragging)
		{
			this.releaseItem = true;
		}
	}

	// Token: 0x06001107 RID: 4359 RVA: 0x0014D2F2 File Offset: 0x0014B4F2
	public void Cancel(InputAction.CallbackContext ctx)
	{
		Debug.Log("cancel");
		if (this.dragging)
		{
			this.releaseItem = true;
		}
	}

	// Token: 0x06001108 RID: 4360 RVA: 0x0014D310 File Offset: 0x0014B510
	public void Open()
	{
		if (Records.x.banquetIsle)
		{
			this.emeraldImage.sprite = this.pasaarenEmerald;
			this.gemText.gameObject.transform.parent.gameObject.SetActive(false);
		}
		else
		{
			this.emeraldImage.sprite = this.minerovEmerald;
			this.gemText.gameObject.transform.parent.gameObject.SetActive(true);
		}
		for (int i = 0; i < this.equipImages.Length; i++)
		{
			if (this.equipImages[i])
			{
				this.equipImages[i].enabled = false;
			}
		}
		this.bag1.Close();
		this.bag2.Close();
		this.bag3.Close();
		this.bag4.Close();
		Character character = Links.x.characterSheet.character;
		this.GetBagLists(character);
		this.groundContainer.btn.interactable = false;
		this.groundContainer.img.enabled = true;
		this.groundContainer.img.raycastTarget = false;
		this.hitGroundItem = null;
		this.CheckForExtras();
		this.openBag.Open();
		this.UpdateMisc();
		this.open = true;
		this.UpdateSlots(false, this.openBag);
		this.CloseTooltip();
		this.openBag.UpdateItemInteractableState(false);
		if (Links.x.mk)
		{
			int num = this.equippedButtons.Length;
			for (int j = 0; j < num; j++)
			{
				this.equippedButtons[j].interactable = false;
			}
		}
		else
		{
			this.SetColorsForEquipButtons(false);
		}
		for (int k = 0; k < this.gridTrs.Count; k++)
		{
			if (k >= this.gridAmt - this.equippedGridAmt)
			{
				if (Links.x.characterSheet.merchant)
				{
					this.gridImg[k].enabled = false;
				}
				else
				{
					this.gridImg[k].enabled = true;
				}
			}
			else
			{
				this.gridImg[k].enabled = true;
			}
		}
		this.DeleteRacks();
		this.dragMessageText.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset);
		this.dragMessageText.enabled = false;
		this.dragMessageImg.enabled = false;
		if (Records.x.partySailing)
		{
			this.groundContainer.gameObject.SetActive(false);
		}
		else
		{
			this.groundContainer.gameObject.SetActive(true);
		}
		this.OpenGroundList();
		this.ToggleCharacterSheetButtonStateForDrag(false);
		if (Links.x.characterSheet.blacksmith)
		{
			EventSystem.current.SetSelectedGameObject(Links.x.characterSheet.blacksmithButton);
		}
		this.CheckSlotImages();
		this.UpdateSlotStates(this.openBag);
	}

	// Token: 0x06001109 RID: 4361 RVA: 0x0014D5E4 File Offset: 0x0014B7E4
	public void ToggleEquipmentHover(bool state)
	{
		for (int i = 0; i < this.equippedHoverImages.Length; i++)
		{
			this.equippedHoverImages[i].enabled = state;
		}
	}

	// Token: 0x0600110A RID: 4362 RVA: 0x0014D614 File Offset: 0x0014B814
	public void CheckForExtras()
	{
		foreach (global::Item item in this.bagItems)
		{
			if (item)
			{
				item.CheckStackSize();
				this.SetBackSprite("Normal", item.backImage, item);
				item.SetDurabilityVisual();
			}
		}
	}

	// Token: 0x0600110B RID: 4363 RVA: 0x0014D688 File Offset: 0x0014B888
	public void UpdateSlots(bool updatePositions, InventoryContainer invBag)
	{
		this.currSlotsUsed.Clear();
		this.addToGround.Clear();
		bool flag = false;
		for (int i = 0; i < this.gridTrs.Count; i++)
		{
			this.gridState[i] = false;
			this.gridImg[i].sprite = this.emptySprite;
		}
		this.slotBagItems = this.bagItems;
		this.slotBagPos = this.bagPos;
		if (!this.open)
		{
			this.slotBagItems = invBag.bagItems;
		}
		for (int j = 0; j < this.slotBagItems.Count; j++)
		{
			global::Item item = this.slotBagItems[j];
			if (item)
			{
				flag = false;
				if (item.stackable && item.stackSize == 0)
				{
					item.DestroyItem(true, false);
				}
				else
				{
					if (item.img)
					{
						item.img.enabled = true;
					}
					item.gameObject.SetActive(true);
					this.gridSlots = item.gridImg;
					for (int k = 0; k < this.gridSlots.Count; k++)
					{
						if (k > -1)
						{
							int num = this.gridSlots[k];
							this.gridState[num] = true;
							this.gridImg[num].sprite = this.filledSprite;
							if (!this.currSlotsUsed.Contains(num))
							{
								this.currSlotsUsed.Add(num);
							}
							else
							{
								if (!flag)
								{
									this.addToGround.Add(item);
								}
								flag = true;
							}
						}
					}
				}
				if (this.gridSlots.Count == 0)
				{
					this.addToGround.Add(item);
				}
				if (!flag && updatePositions)
				{
					Vector3 vector = Vector3.zero;
					int num2 = 0;
					for (int l = 0; l < this.gridSlots.Count; l++)
					{
						vector += this.gridTrs[this.gridSlots[l]].position;
						num2++;
					}
					if (vector != Vector3.zero)
					{
						vector /= (float)num2;
					}
					if (item.gameObject)
					{
						item.gameObject.transform.position = vector;
					}
				}
			}
		}
		int count = this.addToGround.Count;
		int num3 = this.mainBagX;
		int num4 = this.mainBagY;
		for (int m = 0; m < count; m++)
		{
			bool flag2 = this.FindOpenSpace(Vector3.zero, this.addToGround[m], num3, num4, "Hidden", invBag);
			if (flag2 && this.addToGround[m])
			{
				if (this.addToGround[m].bag)
				{
					this.addToGround[m].bag.RemoveImage(this.addToGround[m].backImage);
				}
				this.addToGround[m].bag = this.openBag;
				this.addToGround[m].bag.AddImage(this.addToGround[m].backImage, this.addToGround[m]);
				int num5 = this.slotBagItems.IndexOf(this.addToGround[m]);
				if (Records.x.editor || Records.x.secrets)
				{
					string[] array = new string[5];
					int num6 = 0;
					global::Item item2 = this.addToGround[m];
					array[num6] = ((item2 != null) ? item2.ToString() : null);
					array[1] = " ";
					array[2] = this.addToGround[m].stackSize.ToString();
					array[3] = " no spot ";
					array[4] = num5.ToString();
					Debug.Log(string.Concat(array));
				}
				if (num5 > -1)
				{
					this.slotBagPos[num5] = this.addToGround[m].bagGridID;
					this.selectedPlayer.SetBagPosition(num5, this.addToGround[m].bagGridID);
				}
			}
			if (!flag2)
			{
				string text = "";
				if ((Records.x.editor || Records.x.secrets) && m < this.addToGround.Count)
				{
					text = this.addToGround[m].name;
				}
				this.ToGround(this.addToGround[m], true);
				if (Records.x.editor || Records.x.secrets)
				{
					Debug.Log(text + " overlapping item, going to ground");
				}
			}
		}
		if (this.addToGround.Count > 0)
		{
			for (int n = 0; n < this.gridTrs.Count; n++)
			{
				this.gridState[n] = false;
				this.gridImg[n].sprite = this.emptySprite;
			}
			foreach (global::Item item3 in this.slotBagItems)
			{
				if (item3)
				{
					if (item3.img)
					{
						item3.img.enabled = true;
					}
					this.gridSlots = item3.gridImg;
					for (int num7 = 0; num7 < this.gridSlots.Count; num7++)
					{
						if (num7 > -1)
						{
							int num = this.gridSlots[num7];
							this.gridState[num] = true;
							this.gridImg[num].sprite = this.filledSprite;
						}
					}
					if (!flag && updatePositions)
					{
						Vector3 vector2 = Vector3.zero;
						int num8 = 0;
						for (int num9 = 0; num9 < this.gridSlots.Count; num9++)
						{
							vector2 += this.gridTrs[this.gridSlots[num9]].position;
							num8++;
						}
						if (vector2 != Vector3.zero)
						{
							vector2 /= (float)num8;
						}
						if (item3.gameObject)
						{
							item3.gameObject.transform.position = vector2;
						}
					}
				}
			}
		}
		this.UpdateWeight(this.openBag, this.selectedPlayer);
	}

	// Token: 0x0600110C RID: 4364 RVA: 0x0014DD08 File Offset: 0x0014BF08
	public void Close()
	{
		this.repairing = false;
		this.repairItem = null;
		this.repairType = "";
		if (Links.x.characterSheet.repairInstructions)
		{
			Links.x.characterSheet.repairInstructions.enabled = false;
		}
		this.mineralizing = false;
		this.repairing = false;
		this.startDragObjectScript = null;
		this.dropScript = null;
		this.UpdateMisc();
		if (this.openBag)
		{
			this.openBag.Close();
		}
		if (this.dragging)
		{
			this.RemovePrevEquipped();
			this.pickingEquipItem = false;
			this.closing = true;
			bool flag = false;
			if (this.dropScript && this.dropScript.equip)
			{
				flag = true;
			}
			if (flag || !this.dragParent)
			{
				this.ToGround(this.dragItem, false);
			}
			else
			{
				this.DragListen();
			}
			this.closing = false;
		}
		this.dragGo = null;
		if (this.dragItem)
		{
			this.dragItem.SetSprite(false);
		}
		this.dragItem = null;
		this.prevHitItem = null;
		this.hitItem = null;
		this.hitGroundItem = null;
		this.groundDragItem = null;
		this.prevDragItem = null;
		this.prevItem = null;
		this.repairItem = null;
		this.open = false;
		this.ReleaseGroundList();
		this.dragging = false;
		this.draggingSocket = false;
		this.ToggleCharacterSheetButtonStateForDrag(false);
		this.openBag = null;
	}

	// Token: 0x0600110D RID: 4365 RVA: 0x0014DE7C File Offset: 0x0014C07C
	public void CloseTooltip()
	{
		this.itemTooltipOpen = false;
		this.itemInfo.EndMenu();
		this.tooltipitem = null;
		this.itemInfoCompare.gameObject.SetActive(false);
		if (Links.x.mk)
		{
			this.SetDragMessageText("", null);
		}
		Links.x.characterSheet.targetAlpha = -2f;
	}

	// Token: 0x0600110E RID: 4366 RVA: 0x0014DEE0 File Offset: 0x0014C0E0
	public void CloseTooltipController()
	{
		this.itemTooltipOpen = false;
		this.itemInfo.EndMenu();
		this.tooltipitem = null;
		this.itemInfoCompare.gameObject.SetActive(false);
		if (Links.x.mk)
		{
			this.SetDragMessageText("", null);
		}
	}

	// Token: 0x0600110F RID: 4367 RVA: 0x0014DF30 File Offset: 0x0014C130
	public void OpenTooltip(ItemEquipped tooltip)
	{
		this.itemTooltipOpen = true;
		Links.x.characterSheet.levelProgress.SetActive(false);
		Links.x.characterSheet.targetAlpha = 1f;
		this.itemInfo.comboCompare = false;
		this.itemInfo.StartMenu(null, tooltip);
	}

	// Token: 0x06001110 RID: 4368 RVA: 0x0014DF88 File Offset: 0x0014C188
	public void OpenTooltip(global::Item tooltip)
	{
		if (this.spinning || this.dragging)
		{
			return;
		}
		this.itemTooltipOpen = true;
		this.tooltipitem = tooltip;
		Links.x.characterSheet.levelProgress.SetActive(false);
		Links.x.characterSheet.targetAlpha = 1f;
		bool flag = false;
		if (tooltip && (tooltip.invRow._EquipSlotID == 0 || tooltip.invRow._EquipSlotID == 1 || tooltip.invRow._EquipSlotID == 9 || tooltip.invRow._EquipSlotID == 8 || tooltip.invRow._EquipSlotID == 11 || tooltip.invRow._EquipSlotID == 12 || tooltip.invRow._EquipSlotID == 10) && !tooltip.isEquipped && Links.x.characterSheet.body && this.bagID[tooltip.invRow._EquipSlotID] > 1)
		{
			this.itemInfoCompare.gameObject.SetActive(true);
			ItemEquipped itemEquipped = Links.x.characterSheet.body.GetItemEquipped(tooltip.invRow._EquipSlotID);
			if (itemEquipped)
			{
				this.itemInfo.compareItem = itemEquipped;
				this.itemInfoCompare.StartMenu(null, itemEquipped);
				flag = true;
			}
		}
		this.itemInfo.StartMenu(tooltip, null);
		if (!flag)
		{
			this.itemInfoCompare.gameObject.SetActive(false);
		}
	}

	// Token: 0x06001111 RID: 4369 RVA: 0x0014E104 File Offset: 0x0014C304
	public void SetDragMessageText(string text, global::Item item)
	{
		if (Links.x.joy)
		{
			if (!(text != ""))
			{
				this.dragMessageText.enabled = false;
				this.dragMessageImg.enabled = false;
				return;
			}
			this.dragMessageText.enabled = true;
			this.dragMessageImg.enabled = true;
			if (text == "Hover")
			{
				if (!item)
				{
					if (this.hitEquipped)
					{
						if (this.hitEquipped.invRow._RightClickAction == "Consume" && !Records.x.InCombat(false))
						{
							this.dragMessageText.text = Links.x.gameplay.itemHoverUseText;
						}
						else
						{
							this.dragMessageText.text = Links.x.gameplay.itemHoverText;
						}
					}
					else
					{
						this.dragMessageText.text = Links.x.gameplay.itemHoverText;
					}
				}
				else if (item.invRow._Stackable)
				{
					if (item.invRow._RightClickAction == "Consume")
					{
						this.dragMessageText.text = Links.x.gameplay.itemHoverSplitUseText;
					}
					else
					{
						this.dragMessageText.text = Links.x.gameplay.itemHoverSplitText;
					}
				}
				else if (item.invRow._RightClickAction == "Consume" && !Records.x.InCombat(false))
				{
					this.dragMessageText.text = Links.x.gameplay.itemHoverUseText;
				}
				else
				{
					this.dragMessageText.text = Links.x.gameplay.itemHoverText;
				}
			}
			if (text == "Dragging")
			{
				this.dragMessageText.text = Links.x.gameplay.dragJoystickText;
			}
			if (text == "EquipBag")
			{
				if (this.dragging)
				{
					this.dragMessageText.text = Links.x.gameplay.equipBagDragText;
				}
				else
				{
					this.dragMessageText.text = Links.x.gameplay.equipBagText;
				}
			}
			if (text == "Equip")
			{
				this.dragMessageText.text = Links.x.gameplay.equipText;
			}
			if (text == "EquipDragging")
			{
				this.dragMessageText.text = "Equip item\n" + Links.x.gameplay.dragJoystickText;
			}
			if (text == "GroundDragging")
			{
				this.dragMessageText.text = "Drop on ground\n" + Links.x.gameplay.dragJoystickText;
			}
			if (text == "Spinning")
			{
				this.dragMessageText.text = Links.x.gameplay.equipSpinningText;
				return;
			}
		}
		else
		{
			this.dragMessageText.enabled = false;
			this.dragMessageImg.enabled = false;
		}
	}

	// Token: 0x06001112 RID: 4370 RVA: 0x0014E400 File Offset: 0x0014C600
	public int PartyMineralCount()
	{
		return this.gems;
	}

	// Token: 0x06001113 RID: 4371 RVA: 0x0014E408 File Offset: 0x0014C608
	public int MineralValue(Library.Inventory row)
	{
		return (int)row._Level;
	}

	// Token: 0x06001114 RID: 4372 RVA: 0x0014E411 File Offset: 0x0014C611
	public void RemoveMinerals(int amount)
	{
		this.gems -= amount;
	}

	// Token: 0x06001115 RID: 4373 RVA: 0x0014E424 File Offset: 0x0014C624
	public Vector3 SubtractVectors(Vector3 a, Vector3 b)
	{
		Vector3 vector;
		vector.x = a.x - b.x;
		vector.y = a.y - b.y;
		vector.z = a.z - b.z;
		return vector;
	}

	// Token: 0x06001116 RID: 4374 RVA: 0x0014E470 File Offset: 0x0014C670
	public global::Item GetMoney()
	{
		for (int i = 0; i < this.bagItems.Count; i++)
		{
			if (this.bagItems[i] && this.bagItems[i].ID == 2)
			{
				return this.bagItems[i];
			}
		}
		return null;
	}

	// Token: 0x06001117 RID: 4375 RVA: 0x0014E4C8 File Offset: 0x0014C6C8
	public global::Item CheckListForItem(int num, Character party)
	{
		InventoryContainer inventoryContainer = null;
		if (party == this.bag1.character)
		{
			inventoryContainer = this.bag1;
		}
		if (party == this.bag2.character)
		{
			inventoryContainer = this.bag2;
		}
		if (party == this.bag3.character)
		{
			inventoryContainer = this.bag3;
		}
		if (party == this.bag4.character)
		{
			inventoryContainer = this.bag4;
		}
		if (inventoryContainer)
		{
			global::Item item = inventoryContainer.CheckListForItem(num);
			if (item)
			{
				return item;
			}
		}
		return null;
	}

	// Token: 0x06001118 RID: 4376 RVA: 0x0014E55C File Offset: 0x0014C75C
	public int GetRealAmmo(string id, Vector3 sockA)
	{
		bool flag = false;
		bool flag2 = false;
		bool flag3 = false;
		string text = "";
		if (id == "Arrow")
		{
			flag = true;
		}
		if (id == "Dart")
		{
			flag2 = true;
		}
		if (id == "Elixir")
		{
			flag3 = true;
		}
		if (flag)
		{
			if (sockA.y == 0f || sockA.y == 9f)
			{
				text = "Arrow";
			}
			if (sockA.y == 21f)
			{
				text = "ArrowFang";
			}
			if (sockA.y == 20f)
			{
				text = "ArrowNail";
			}
			if (sockA.y == 22f)
			{
				text = "ArrowScales";
			}
		}
		else if (flag2)
		{
			if (sockA.y == 0f || sockA.y == 9f)
			{
				text = "Dart";
			}
			if (sockA.y == 4f)
			{
				text = "DartFrog";
			}
			if (sockA.y == 5f)
			{
				text = "DartMushroom";
			}
			if (sockA.y == 6f)
			{
				text = "DartAcorn";
			}
			if (sockA.y == 7f)
			{
				text = "DartShinyRock";
			}
			if (sockA.y == 8f)
			{
				text = "DartShell";
			}
		}
		else if (flag3)
		{
			text = "Vial";
			if (sockA.y == 10f)
			{
				text = "VialRed1";
			}
			if (sockA.y == 11f)
			{
				text = "VialRed2";
			}
			if (sockA.y == 12f)
			{
				text = "VialBlue1";
			}
			if (sockA.y == 13f)
			{
				text = "VialBlue2";
			}
			if (sockA.y == 14f)
			{
				text = "VialGreen1";
			}
			if (sockA.y == 15f)
			{
				text = "VialGreen2";
			}
			if (sockA.y == 16f)
			{
				text = "VialWhite1";
			}
			if (sockA.y == 17f)
			{
				text = "VialWhite2";
			}
			if (sockA.y == 18f)
			{
				text = "VialBlack1";
			}
			if (sockA.y == 19f)
			{
				text = "VialBlack2";
			}
		}
		return Links.x.library.GetInvRowID(text);
	}

	// Token: 0x04001B7B RID: 7035
	[Header("Lists")]
	private List<global::Item> bagItems;

	// Token: 0x04001B7C RID: 7036
	private List<global::Item> tempBagItems;

	// Token: 0x04001B7D RID: 7037
	private List<global::Item> listUpdateBagItems;

	// Token: 0x04001B7E RID: 7038
	private List<global::Item> slotBagItems;

	// Token: 0x04001B7F RID: 7039
	private List<global::Item> updateBagItems;

	// Token: 0x04001B80 RID: 7040
	private List<int> tempBagStack;

	// Token: 0x04001B81 RID: 7041
	private List<int> listUpdateBagID;

	// Token: 0x04001B82 RID: 7042
	private List<int> listUpdateBagAmount;

	// Token: 0x04001B83 RID: 7043
	private List<Vector3> listUpdateSocketA;

	// Token: 0x04001B84 RID: 7044
	private List<Vector3> listUpdateSocketB;

	// Token: 0x04001B85 RID: 7045
	private List<int> listUpdateBagPositions;

	// Token: 0x04001B86 RID: 7046
	private List<int> slotBagPos;

	// Token: 0x04001B87 RID: 7047
	private List<Vector4> listUpdateDurabilities;

	// Token: 0x04001B88 RID: 7048
	private List<Vector4> torchDurabilities;

	// Token: 0x04001B89 RID: 7049
	private List<int> torchBagID;

	// Token: 0x04001B8A RID: 7050
	private List<int> bagID;

	// Token: 0x04001B8B RID: 7051
	private List<int> bagAmount;

	// Token: 0x04001B8C RID: 7052
	private List<Vector3> socketA;

	// Token: 0x04001B8D RID: 7053
	private List<Vector3> socketB;

	// Token: 0x04001B8E RID: 7054
	private List<int> bagPos;

	// Token: 0x04001B8F RID: 7055
	private List<int> bag;

	// Token: 0x04001B90 RID: 7056
	private List<int> bagPositions;

	// Token: 0x04001B91 RID: 7057
	private List<Vector4> durabilitiesParty;

	// Token: 0x04001B92 RID: 7058
	private List<Vector4> durabilities;

	// Token: 0x04001B93 RID: 7059
	private List<Vector3> sockets;

	// Token: 0x04001B94 RID: 7060
	private List<global::Item> inRangeGroundItems;

	// Token: 0x04001B95 RID: 7061
	private List<global::Item> merchantItems;

	// Token: 0x04001B96 RID: 7062
	public List<InventoryContainer> openBags = new List<InventoryContainer>();

	// Token: 0x04001B97 RID: 7063
	private ItemEquipped[] equippedItems;

	// Token: 0x04001B98 RID: 7064
	[Header("Objects")]
	public GroundBag groundBag;

	// Token: 0x04001B99 RID: 7065
	public InventoryContainer bag1;

	// Token: 0x04001B9A RID: 7066
	public InventoryContainer bag2;

	// Token: 0x04001B9B RID: 7067
	public InventoryContainer bag3;

	// Token: 0x04001B9C RID: 7068
	public InventoryContainer bag4;

	// Token: 0x04001B9D RID: 7069
	public ItemBook itemInfo;

	// Token: 0x04001B9E RID: 7070
	public ItemBook itemInfoCompare;

	// Token: 0x04001B9F RID: 7071
	public GameObject itemTooltip;

	// Token: 0x04001BA0 RID: 7072
	public GameObject itemTooltipCompare;

	// Token: 0x04001BA1 RID: 7073
	public TextMeshProUGUI emeraldText;

	// Token: 0x04001BA2 RID: 7074
	public TextMeshProUGUI gemText;

	// Token: 0x04001BA3 RID: 7075
	public TextMeshProUGUI dragMessageText;

	// Token: 0x04001BA4 RID: 7076
	public Image emeraldImage;

	// Token: 0x04001BA5 RID: 7077
	public RectTransform dragMessageImgRT;

	// Token: 0x04001BA6 RID: 7078
	public Image dragMessageImg;

	// Token: 0x04001BA7 RID: 7079
	public Image[] equippedHoverImages = new Image[0];

	// Token: 0x04001BA8 RID: 7080
	public RectTransform bottomLeft;

	// Token: 0x04001BA9 RID: 7081
	public RectTransform topRight;

	// Token: 0x04001BAA RID: 7082
	public HannahAnimator fx;

	// Token: 0x04001BAB RID: 7083
	public Animator peddlerFX;

	// Token: 0x04001BAC RID: 7084
	public Image peddlerFabric;

	// Token: 0x04001BAD RID: 7085
	public Image peddlerEmeraldBackground;

	// Token: 0x04001BAE RID: 7086
	public TextMeshProUGUI peddlerHeader;

	// Token: 0x04001BAF RID: 7087
	public TextMeshProUGUI peddlerSellAmount;

	// Token: 0x04001BB0 RID: 7088
	public TextMeshProTypewriterEffect typewriter;

	// Token: 0x04001BB1 RID: 7089
	public EnchantItem enchantMenu;

	// Token: 0x04001BB2 RID: 7090
	public Image bagWeightFill;

	// Token: 0x04001BB3 RID: 7091
	[Header("Dragging")]
	public global::Item dragItem;

	// Token: 0x04001BB4 RID: 7092
	public GameObject dropObject;

	// Token: 0x04001BB5 RID: 7093
	public GameObject startDragObject;

	// Token: 0x04001BB6 RID: 7094
	public GameObject dragGo;

	// Token: 0x04001BB7 RID: 7095
	public InventoryContainer dropScript;

	// Token: 0x04001BB8 RID: 7096
	public InventoryContainer startDragObjectScript;

	// Token: 0x04001BB9 RID: 7097
	public InventoryContainer openBag;

	// Token: 0x04001BBA RID: 7098
	public InventoryContainer groundContainer;

	// Token: 0x04001BBB RID: 7099
	public InventoryContainer merchantBag;

	// Token: 0x04001BBC RID: 7100
	public InventoryContainer equipBag;

	// Token: 0x04001BBD RID: 7101
	public Transform groundContent;

	// Token: 0x04001BBE RID: 7102
	public Vector3 dropPosition;

	// Token: 0x04001BBF RID: 7103
	public Vector3 prevPosition;

	// Token: 0x04001BC0 RID: 7104
	public bool dragging;

	// Token: 0x04001BC1 RID: 7105
	public bool doSplit;

	// Token: 0x04001BC2 RID: 7106
	public bool draggingSocket;

	// Token: 0x04001BC3 RID: 7107
	public bool canEndDrag;

	// Token: 0x04001BC4 RID: 7108
	public bool secondaryDragSave;

	// Token: 0x04001BC5 RID: 7109
	private Vector3 itemCenterOffset;

	// Token: 0x04001BC6 RID: 7110
	private Vector3 savedPosition;

	// Token: 0x04001BC7 RID: 7111
	private float prevDist;

	// Token: 0x04001BC8 RID: 7112
	private global::Item swapDragItem;

	// Token: 0x04001BC9 RID: 7113
	public Vector3 startPos;

	// Token: 0x04001BCA RID: 7114
	public Transform dragParent;

	// Token: 0x04001BCB RID: 7115
	public Transform itemDrag;

	// Token: 0x04001BCC RID: 7116
	private int dragX;

	// Token: 0x04001BCD RID: 7117
	private int dragY;

	// Token: 0x04001BCE RID: 7118
	public Vector2 pickUpTiles;

	// Token: 0x04001BCF RID: 7119
	public bool dragFromGround;

	// Token: 0x04001BD0 RID: 7120
	public bool swapping;

	// Token: 0x04001BD1 RID: 7121
	public Bag secondaryBag;

	// Token: 0x04001BD2 RID: 7122
	public RectTransform itemDragRT;

	// Token: 0x04001BD3 RID: 7123
	private float dragTime;

	// Token: 0x04001BD4 RID: 7124
	public bool pickingEquipItem;

	// Token: 0x04001BD5 RID: 7125
	public bool releaseItem;

	// Token: 0x04001BD6 RID: 7126
	public Button groundContainerBtn;

	// Token: 0x04001BD7 RID: 7127
	public Image groundContainerBtnImg;

	// Token: 0x04001BD8 RID: 7128
	private Vector3 controllerOffset;

	// Token: 0x04001BD9 RID: 7129
	private global::Item itemToDrag;

	// Token: 0x04001BDA RID: 7130
	private ItemEquipped itemEquippedToDrag;

	// Token: 0x04001BDB RID: 7131
	public List<Button> draggingOffBtns = new List<Button>();

	// Token: 0x04001BDC RID: 7132
	private bool copyGridList;

	// Token: 0x04001BDD RID: 7133
	public bool hoveringOverEquipmentSlot;

	// Token: 0x04001BDE RID: 7134
	[Header("Paper Doll")]
	public bool spinning;

	// Token: 0x04001BDF RID: 7135
	public bool inSlider;

	// Token: 0x04001BE0 RID: 7136
	public RectTransform tr;

	// Token: 0x04001BE1 RID: 7137
	public RectTransform tl;

	// Token: 0x04001BE2 RID: 7138
	public RectTransform br;

	// Token: 0x04001BE3 RID: 7139
	public RectTransform bl;

	// Token: 0x04001BE4 RID: 7140
	public ItemEquipped hitEquipped;

	// Token: 0x04001BE5 RID: 7141
	private ItemEquipped prevHitEquipped;

	// Token: 0x04001BE6 RID: 7142
	private int hitEquippedIndex;

	// Token: 0x04001BE7 RID: 7143
	private Vector3[] worldCorners = new Vector3[8];

	// Token: 0x04001BE8 RID: 7144
	public bool hitWeaponRack;

	// Token: 0x04001BE9 RID: 7145
	public bool hitArrowRack;

	// Token: 0x04001BEA RID: 7146
	public Vector3 mouseStart;

	// Token: 0x04001BEB RID: 7147
	public Transform lookAt;

	// Token: 0x04001BEC RID: 7148
	public bool doLookAt;

	// Token: 0x04001BED RID: 7149
	public RectTransform lookAtObject;

	// Token: 0x04001BEE RID: 7150
	public Transform slotAmmo1;

	// Token: 0x04001BEF RID: 7151
	public Transform slotAmmo2;

	// Token: 0x04001BF0 RID: 7152
	public Transform slotAmmo3;

	// Token: 0x04001BF1 RID: 7153
	public Transform slotAlt1;

	// Token: 0x04001BF2 RID: 7154
	public Transform slotAlt2;

	// Token: 0x04001BF3 RID: 7155
	public Transform slotAlt3;

	// Token: 0x04001BF4 RID: 7156
	public Transform slotAlt4;

	// Token: 0x04001BF5 RID: 7157
	public MeshRenderer rack;

	// Token: 0x04001BF6 RID: 7158
	public MeshRenderer arrowRack;

	// Token: 0x04001BF7 RID: 7159
	public Material rackNormalMaterial;

	// Token: 0x04001BF8 RID: 7160
	public Material rackHoverMaterial;

	// Token: 0x04001BF9 RID: 7161
	private Vector3 equipMovePosition;

	// Token: 0x04001BFA RID: 7162
	public Transform equipPosition;

	// Token: 0x04001BFB RID: 7163
	public Button[] equippedButtons = new Button[19];

	// Token: 0x04001BFC RID: 7164
	private Button buttonSelect;

	// Token: 0x04001BFD RID: 7165
	private int selectedEquipButton;

	// Token: 0x04001BFE RID: 7166
	public float lightWeight = 10f;

	// Token: 0x04001BFF RID: 7167
	public float heavyWeight = 30f;

	// Token: 0x04001C00 RID: 7168
	public Button[] equipButtons;

	// Token: 0x04001C01 RID: 7169
	public Image[] equipImages;

	// Token: 0x04001C02 RID: 7170
	[Header("Hovering")]
	public global::Item prevHitItem;

	// Token: 0x04001C03 RID: 7171
	public global::Item hitItem;

	// Token: 0x04001C04 RID: 7172
	public global::Item hitGroundItem;

	// Token: 0x04001C05 RID: 7173
	public global::Item groundDragItem;

	// Token: 0x04001C06 RID: 7174
	private global::Item prevDragItem;

	// Token: 0x04001C07 RID: 7175
	public GameObject hitGo;

	// Token: 0x04001C08 RID: 7176
	private int prevBagGridID;

	// Token: 0x04001C09 RID: 7177
	private global::Item prevItem;

	// Token: 0x04001C0A RID: 7178
	public bool lookingForSpot;

	// Token: 0x04001C0B RID: 7179
	private float waitToEndHover;

	// Token: 0x04001C0C RID: 7180
	private float actionSelectTime;

	// Token: 0x04001C0D RID: 7181
	public RectTransform slotsPoint;

	// Token: 0x04001C0E RID: 7182
	public RectTransform merchantPoint;

	// Token: 0x04001C0F RID: 7183
	public RectTransform itemInfoRT;

	// Token: 0x04001C10 RID: 7184
	public Sprite backNormal;

	// Token: 0x04001C11 RID: 7185
	public Sprite backHover;

	// Token: 0x04001C12 RID: 7186
	public Sprite backUnavailable;

	// Token: 0x04001C13 RID: 7187
	public Sprite backGround;

	// Token: 0x04001C14 RID: 7188
	public Sprite backGroundHover;

	// Token: 0x04001C15 RID: 7189
	public bool repairing;

	// Token: 0x04001C16 RID: 7190
	public bool mineralizing;

	// Token: 0x04001C17 RID: 7191
	public global::Item repairItem;

	// Token: 0x04001C18 RID: 7192
	public string repairType;

	// Token: 0x04001C19 RID: 7193
	private float clickTime;

	// Token: 0x04001C1A RID: 7194
	private float downClickTime;

	// Token: 0x04001C1B RID: 7195
	public bool doubleClick;

	// Token: 0x04001C1C RID: 7196
	public bool movedMouse;

	// Token: 0x04001C1D RID: 7197
	private Vector2 prevClickPosition;

	// Token: 0x04001C1E RID: 7198
	private int clickCount;

	// Token: 0x04001C1F RID: 7199
	public GameObject currentHover;

	// Token: 0x04001C20 RID: 7200
	public GameObject prevHover;

	// Token: 0x04001C21 RID: 7201
	private List<RaycastResult> raycastResults = new List<RaycastResult>();

	// Token: 0x04001C22 RID: 7202
	private PointerEventData pointer;

	// Token: 0x04001C23 RID: 7203
	[Header("Grid")]
	public Transform gridTr;

	// Token: 0x04001C24 RID: 7204
	public List<Image> gridImg = new List<Image>();

	// Token: 0x04001C25 RID: 7205
	public List<bool> gridState = new List<bool>();

	// Token: 0x04001C26 RID: 7206
	public List<Transform> gridTrs = new List<Transform>();

	// Token: 0x04001C27 RID: 7207
	public List<int> dragHoverImg = new List<int>();

	// Token: 0x04001C28 RID: 7208
	public List<int> dragHoverImgCopy = new List<int>();

	// Token: 0x04001C29 RID: 7209
	public List<int> dragSaveImg = new List<int>();

	// Token: 0x04001C2A RID: 7210
	public List<int> foundTiles = new List<int>();

	// Token: 0x04001C2B RID: 7211
	public int mainBagX = 6;

	// Token: 0x04001C2C RID: 7212
	public int mainBagY = 6;

	// Token: 0x04001C2D RID: 7213
	public int secondaryBagX = 6;

	// Token: 0x04001C2E RID: 7214
	public int secondaryBagY = 6;

	// Token: 0x04001C2F RID: 7215
	public List<global::Item> groundSlotsList = new List<global::Item>();

	// Token: 0x04001C30 RID: 7216
	public GridLayoutGroup groundGrid;

	// Token: 0x04001C31 RID: 7217
	private List<Image> gridImgMisc;

	// Token: 0x04001C32 RID: 7218
	private List<bool> gridStateMisc;

	// Token: 0x04001C33 RID: 7219
	private List<Transform> gridTrsMisc;

	// Token: 0x04001C34 RID: 7220
	private List<Image> currGridImg;

	// Token: 0x04001C35 RID: 7221
	private List<bool> currGridState;

	// Token: 0x04001C36 RID: 7222
	private List<Transform> currGridTrs;

	// Token: 0x04001C37 RID: 7223
	public int gridAmt;

	// Token: 0x04001C38 RID: 7224
	public int equippedGridAmt;

	// Token: 0x04001C39 RID: 7225
	public float distThresh = 20f;

	// Token: 0x04001C3A RID: 7226
	public int sizeX;

	// Token: 0x04001C3B RID: 7227
	public int sizeY;

	// Token: 0x04001C3C RID: 7228
	public Sprite filledSprite;

	// Token: 0x04001C3D RID: 7229
	public Sprite filledUnavailableSprite;

	// Token: 0x04001C3E RID: 7230
	public Sprite emptySprite;

	// Token: 0x04001C3F RID: 7231
	public Sprite hoverSprite;

	// Token: 0x04001C40 RID: 7232
	private List<int> localImg;

	// Token: 0x04001C41 RID: 7233
	private List<int> gridSlots;

	// Token: 0x04001C42 RID: 7234
	private List<int> gridSlotsTemp1;

	// Token: 0x04001C43 RID: 7235
	private List<int> gridSlotsTemp2;

	// Token: 0x04001C44 RID: 7236
	private List<int> gridSlotSwap = new List<int>();

	// Token: 0x04001C45 RID: 7237
	public bool fromSecondaryBag;

	// Token: 0x04001C46 RID: 7238
	public bool inSecondaryBag;

	// Token: 0x04001C47 RID: 7239
	[Header("Misc")]
	private StringFast str = new StringFast(64);

	// Token: 0x04001C48 RID: 7240
	private StringFast armorStr = new StringFast(64);

	// Token: 0x04001C49 RID: 7241
	public Vector3 offset;

	// Token: 0x04001C4A RID: 7242
	private global::Item currHoverItem;

	// Token: 0x04001C4B RID: 7243
	private float clickStartTime;

	// Token: 0x04001C4C RID: 7244
	public bool itemTooltipOpen;

	// Token: 0x04001C4D RID: 7245
	public bool open;

	// Token: 0x04001C4E RID: 7246
	private Transform[] t;

	// Token: 0x04001C4F RID: 7247
	public List<global::Item> goodItems = new List<global::Item>();

	// Token: 0x04001C50 RID: 7248
	private int addMoney;

	// Token: 0x04001C51 RID: 7249
	public int emeralds;

	// Token: 0x04001C52 RID: 7250
	public int gems;

	// Token: 0x04001C53 RID: 7251
	private global::Item tooltipitem;

	// Token: 0x04001C54 RID: 7252
	public StackSplit splitter;

	// Token: 0x04001C55 RID: 7253
	public Character selectedPlayer;

	// Token: 0x04001C56 RID: 7254
	public Sprite emeraldsNone;

	// Token: 0x04001C57 RID: 7255
	public Sprite emeraldsLow;

	// Token: 0x04001C58 RID: 7256
	public Sprite emeraldsMid;

	// Token: 0x04001C59 RID: 7257
	public Sprite emeraldsHigh;

	// Token: 0x04001C5A RID: 7258
	public Image emeraldsImage;

	// Token: 0x04001C5B RID: 7259
	private bool closing;

	// Token: 0x04001C5C RID: 7260
	public Material inventoryItemMaterial;

	// Token: 0x04001C5D RID: 7261
	public Material inventoryItemLowDurabilityMaterial;

	// Token: 0x04001C5E RID: 7262
	public Material inventoryItemBrokenMaterial;

	// Token: 0x04001C5F RID: 7263
	public Material inventoryItemMagic;

	// Token: 0x04001C60 RID: 7264
	public Material inventoryItemMagicLowDurabilityMaterial;

	// Token: 0x04001C61 RID: 7265
	public Material inventoryItemMagicBrokenMaterial;

	// Token: 0x04001C62 RID: 7266
	public Color weightTextHeavyColor;

	// Token: 0x04001C63 RID: 7267
	public Color weightTextColor;

	// Token: 0x04001C64 RID: 7268
	public Color bagFillLowColor;

	// Token: 0x04001C65 RID: 7269
	public Color bagFillHighColor;

	// Token: 0x04001C66 RID: 7270
	public Sprite pasaarenEmerald;

	// Token: 0x04001C67 RID: 7271
	public Sprite minerovEmerald;

	// Token: 0x04001C68 RID: 7272
	[Header("Sockets")]
	public List<Library.Sockets> socketLevel1Range = new List<Library.Sockets>();

	// Token: 0x04001C69 RID: 7273
	public List<Library.Sockets> socketLevel2Range = new List<Library.Sockets>();

	// Token: 0x04001C6A RID: 7274
	public List<Library.Sockets> socketLevel3Range = new List<Library.Sockets>();

	// Token: 0x04001C6B RID: 7275
	public List<Library.Sockets> socketLevel1Melee = new List<Library.Sockets>();

	// Token: 0x04001C6C RID: 7276
	public List<Library.Sockets> socketLevel2Melee = new List<Library.Sockets>();

	// Token: 0x04001C6D RID: 7277
	public List<Library.Sockets> socketLevel3Melee = new List<Library.Sockets>();

	// Token: 0x04001C6E RID: 7278
	public List<Library.Sockets> socketLevel1Armor = new List<Library.Sockets>();

	// Token: 0x04001C6F RID: 7279
	public List<Library.Sockets> socketLevel2Armor = new List<Library.Sockets>();

	// Token: 0x04001C70 RID: 7280
	public List<Library.Sockets> socketLevel3Armor = new List<Library.Sockets>();

	// Token: 0x04001C71 RID: 7281
	public List<Library.Sockets> allSockets = new List<Library.Sockets>();

	// Token: 0x04001C72 RID: 7282
	[Header("In World Items")]
	private List<global::Item> groundItems;

	// Token: 0x04001C73 RID: 7283
	public List<GameObject> groundFXpool = new List<GameObject>();

	// Token: 0x04001C74 RID: 7284
	private List<global::Item> addToGround = new List<global::Item>();

	// Token: 0x04001C75 RID: 7285
	private List<int> currSlotsUsed = new List<int>();
}
