# Variables
spot = (32182, 32304, 9)
shop = (32202, 32313, 7)

# Paths
hunting = 0
to_shop = 1
back = 2

ignore_menu = 0
last_time_shop = 0

def onTick():
	global last_time_shop

	if not script.IsInShop():
		last_time_shop = 0
		return

	if last_time_shop > 0:
		cur_time = script.GetCurrentTime()
		if (cur_time - last_time_shop) > 60:
			last_time_shop = 0
			script.StatusMessage('Was stuck')
			script.LeaveShopEx()

def onScriptActivation():
	global last_time_shop
	last_time_shop = 0
	script.EnableTickEvent(10000)

def onReceiveEnteredMenu(shopPacket, menuId, title):
	global ignore_menu, last_time_shop
	
	if title == 'Protus\' Armoury':
		ignore_menu = 0
		last_time_shop = script.GetCurrentTime()
		script.StatusMessage('Menu: ' + title)
		if shopPacket == 1:
			script.ChooseShopOption(menuId, 2) # Sell
	elif title == 'Sell':
		ignore_menu = 0
		last_time_shop = script.GetCurrentTime()
		if script.GetWay() != back:
			script.SetWay(back, 2)
		script.StatusMessage('Selling loot.')
	else:
		ignore_menu = 1

def onReceiveMenuText(menuId, title, text):
	if 'No entry in the list' in text:
		script.StatusMessage('Done.')
		script.LeaveShop() # didn't find items to sell.

def onReceiveMenuRows(rows):
	global last_time_shop

	if ignore_menu == 1:
		return

	found = 0
	for row in rows:
		list = row.split()
		menuId = int(list[0])
		rowId = int(list[1])
		title = list[2]
		looktype = int(list[-1])

		if script.IsInLoot(looktype):
			script.ChooseMenuOption(menuId, 1, rowId) # Sell item
			last_time_shop = script.GetCurrentTime()
			found = 1
			break # break to avoid flood
	if found == 0:
		script.StatusMessage('Done.')
		script.LeaveShop() # didn't find items to sell.

def onChangeLocation(x, y, z):
	if x == spot[0] and y == spot[1] and z == spot[2]:
		if script.IsStorageFull() == 1:
			if script.GetWay() != to_shop:
				script.StatusMessage('Going to the shop to sell loot.')
				script.SetWay(to_shop, 2)
		else:
			if script.GetWay() != hunting:
				script.StatusMessage('Hunt started!')
				script.SetWay(hunting, 2)
	elif x == shop[0] and y == shop[1] and z == shop[2]:
		if script.GetWay() == to_shop:
			if script.EnterShop():
				script.StatusMessage('Going to the shop.')
			else:
				script.Alarm('Can\'t find shop.')
		
def onReceiveAddItemToBackpack(slot, itemId):
	# Warning! Don't use it when retrieving items from depot and etc!
	if not script.IsInLoot(itemId): # Drop items not in autoloot list.
		script.DropItem(slot, 1)

def onKilledEnemy(name, templateId):
	varname = 'killed_' + name
	mobs = script.GetVar(varname) + 1
	script.SetVar(varname, mobs)
	txt = str(mobs)
	script.StatusMessage('Killed: ' + name + ' \nTotal: ~' + txt)
