# Names of items which must be dropped:
drop_items_list = (
	'Hell crystal',
	'Chili stick'
)

queue = {}

def checkDropQueue(x, y, z):
	if script.IsLocationFree(x, y, z) == 1:
		if len(queue) > 0: # there are items in queue, try to drop them
			for slot, itemId in queue.items():
				if script.GetItemInSlot(slot) == itemId:
					if script.DropItem(slot, 0) == 'ok':
						script.IgnoreNextItem(itemId)
						script.StatusMessage('Dropping item from queue.')
						queue.pop(slot) # Deletes item from queue
						break
				else:
					script.StatusMessage('Deleted item from queue.')
					queue.pop(slot) # Deletes item from queue, because it's not in slot.

def onScriptActivation():
	script.PZChecksForDrop(0) # allow dropping items in protection zone
	script.PauseStorage(False)

def onScriptDeactivation():
	script.PauseStorage(False)

def onChangeLocation(x, y, z):
	checkDropQueue(x, y, z)
	initResume()

def initResume():
	if len(queue) == 0:
		script.RunEvent('resumeStorage', 2000)

def resumeStorage(): # executed by RunEvent
	script.PauseStorage(False)

def onReceiveAddItemToBackpack(slot, itemId):
	script.PauseStorage(True)

def onDroppedItem(slot):
	initResume()

def onReceiveItemDescriptionEx(itemId, name, slot):
	if name in drop_items_list:
		if script.DropItem(slot, 1) == 'no_room':
			script.StatusMessage('No room! Adding to queue.')
			queue[slot] = itemId # add item to queue and drop it later
		else:
			script.StatusMessage('Dropping: ' + name)
			script.IgnoreNextItem(itemId)
	else: # item not in drop list, trying to resume storage
		initResume()
