# Display kill count.
# 0 = disabled, 1 = enabled.
display_kill_count = 1
# 0 = don't drop anything, 1 = drop picked up/added to backpack items not in autoloot list.
# 2 = drop only items from the list.
# Warning! If drop_items == 1, bot will drop stuff when retrieving from depot, buying from shop.
drop_items = 2
dropList = (6405) # Drop Shimmering onyx

# Variables
spot = (33022, 31891, 9) # Spot where path changes to hunt or shop. 'Shop' path starts from it and 'Back' ends in it.
shop = (32981, 31887, 7) # Spot near shop, player enters shop from it
shop_name = 'Scrapyard' # Change to your shop name which you will be using
sell_option_id = 1 # In shops like Scrapyard it's only possible to sell items, so in Scrapyard set it to 1.

# Paths
# Make hunting path in set 0.
# Make to shop path in set 1.
# Make back to hunt place path in set 2.
hunt = 0
to_shop = 1
back = 2

# Keep this as it is. (Must be 0)
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 getToShopPath():
	return to_shop
	
def getToHuntPath():
	return back

def onReceiveEnteredMenu(shopPacket, menuId, title):
	global ignore_menu, last_time_shop
	
	if title == shop_name:
		ignore_menu = 0
		last_time_shop = script.GetCurrentTime()
		script.StatusMessage('Shop: ' + title)
		if shopPacket == 1:
			script.ChooseShopOption(menuId, sell_option_id) # Sell
	elif title == 'Sell':
		ignore_menu = 0
		last_time_shop = script.GetCurrentTime()
		if script.GetWay() != getToHuntPath():
			script.SetWay(getToHuntPath(), 2)
		script.StatusMessage('Selling items...')
	else:
		ignore_menu = 1

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 onReceiveMenuText(menuId, title, text):
	if 'No entry in the list' in text:
		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() != getToShopPath():
				script.StatusMessage('Going to shop to sell items...')
				script.SetWay(getToShopPath(), 2)
		else:
			if script.GetWay() != hunt:
				script.StatusMessage('Hunt started!')
				script.SetWay(hunt, 2)
	elif x == shop[0] and y == shop[1] and z == shop[2]:
		if script.GetWay() == getToShopPath():
			if script.EnterShop():
				script.StatusMessage('Entering shop.')
			else:
				script.Alarm('Can\'t find the shop.')
		
def onReceiveAddItemToBackpack(slot, itemId):
	if drop_items == 1:
		if not script.IsInLoot(itemId):
			script.DropItem(slot, 1)
	elif drop_items == 2:
		if itemId in dropList:
			script.DropItem(slot, 1)

def onKilledEnemy(name, templateId):
	if display_kill_count == 0:
		return
	varname = 'killed_' + name
	mobs = script.GetVar(varname) + 1
	script.SetVar(varname, mobs)
	txt = str(mobs)
	script.StatusMessage('Killed: ' + name + ' \nTotal: ~' + txt)
