
# waypoints
to_elvira = 0
to_crimson = 1 
to_gorgos = 2
gorgos = 3
to_darktaur = 4
darktaur = 5
to_elvira_done = 6
to_crimson_done = 7

# NPC 
elvira = (32650, 31766, 7)
crimson = (32667, 31771, 14)

# Waypoints trigger spots
darktaur_spot = (32649, 31730, 8)
gorgos_spot = (32645, 31782, 13)

# null var for 2 quests
def onScriptActivation():
	# 0 - none, 1 - have, 2 - finished
	script.SetVar('q_Elvira', 0)
	script.SetVar('q_Crimson', 0)
	
def onChangeLocation(x, y, z):
	way = script.GetWay()

	#if global_state == 0: # elvira quest
	if way == to_elvira and x == elvira[0] and y == elvira[1] and z == elvira[2]:
		if script.GoToNpc('Elvira', 5):
			script.StatusMessage('Going to Elvira.')
		else:
			script.StatusMessage('Can\'t find Elvira.')
			script.Alarm('Can\'t find Elvira.')
	elif way == to_elvira_done and x == elvira[0] and y == elvira[1] and z == elvira[2]:
		if script.GoToNpc('Elvira', 5):
			script.StatusMessage('Going to Elvira.')
		else:
			script.StatusMessage('Can\'t find Elvira.')
			script.Alarm('Can\'t find Elvira.')
	if way == to_crimson and x == crimson[0] and y == crimson[1] and z == crimson[2]:
		if script.GoToNpc('Crimson', 5):
			script.StatusMessage('Going to Crimson.')
		else:
			script.StatusMessage('Can\'t find Crimson.')
			script.Alarm('Can\'t find Crimson.')
	elif way == to_crimson_done and x == crimson[0] and y == crimson[1] and z == crimson[2]:
		if script.GoToNpc('Crimson', 5):
			script.StatusMessage('Going to Crimson.')
		else:
			script.StatusMessage('Can\'t find Crimson.')
			script.Alarm('Can\'t find Crimson.')			
	elif x == gorgos_spot[0] and y == gorgos_spot[1] and z == gorgos_spot[2]:
		if script.GetVar('gorgos_done') == 1:
			script.StatusMessage('Going to Crymson to take reward.')
			script.SetWay(to_crymson_done, 2)
		elif way != gorgos:
			script.StatusMessage('Hunt gorgos.')
			script.SetWay(gorgos, 2)
	elif x == darktaur_spot[0] and y == darktaur_spot[1] and z == darktaur_spot[2]:
		if script.GetVar('darktaur_done') == 1:
			script.StatusMessage('Going to Elvira to take reward.')
			script.SetWay(to_elvira_done, 2)
		elif way != darktaur:
			script.StatusMessage('Hunt Darktaur.')
			script.SetWay(darktaur, 2)
	
	
def onReceiveNpcText(name, text, page):
	if name == 'Elvira':
		# if quest is not taken
		if text.find('Good to see you again') != -1:
			script.StatusMessage('Starting Quest Elvira.')
			# Yes
			script.ChooseNpcOption(1)
		# if taken now or early
		elif text.find('You are not done yet') != -1 or text.find('go and slaughter 100 of these darktaur beasts') != -1:
			script.StatusMessage('Taken.')
			script.SetVar('q_elvira', 1)
			next_t = script.GetCurrentTime() + 86400
			script.SetRegVar('elvira_time', next_t) # next quest after 24h
			# and fast run to Crimson XD
			script.SetWay(to_crimson, 2)
			script.ForgetNpc()
        # if 24h
		elif text.find('Come back later') != -1:
			script.StatusMessage('Come back after 24h.')
			script.SetVar('q_elvira', 0) # quest = none
			next_t = script.GetCurrentTime() + 86400
			script.SetRegVar('elvira_time', next_t) # return after 24h
			script.SetWay(to_crimson, 2)
			script.ForgetNpc()
		elif text.find('Here, take your reward') != -1:
			script.SetWay(to_crimson_done, 2)
			script.ForgetNpc()

        elif name == 'Crimson':
		# if quest is not taken
		if text.find('Great,then comb the caves and kill at least 100 of them') != -1:
			script.StatusMessage('Starting Quest Crimson.')
			# Yes
			script.ChooseNpcOption(1)
		elif text.find('You are not finished yet') != -1 or text.find('go out there and kill 100 at least 100 gorgons') != -1:
			script.StatusMessage('Taken.')
			script.SetVar('q_crimson', 1)
			next_t = script.GetCurrentTime() + 86400
			script.SetRegVar('crimson_time', next_t) # next quest after 24h
			# run to gorgos
			script.SetWay(to_gorgon, 2)
			script.ForgetNpc()
		elif text.find('Come back later') != -1:
			script.StatusMessage('Come back after 24h.')
			script.SetVar('q_crimson', 0) # none
			next_t = script.GetCurrentTime() + 86400
			script.SetRegVar('crimson_time', next_t) # next quest after 24h
			script.SetWay(to_elvira, 2)
			script.ForgetNpc()
		elif text.find('Here, take your reward') != -1:
			script.SetWay(to_elvira, 2)
			script.ForgetNpc()
	# Done

def onReceiveQuestLogUpdate(text):
	if text.find('I killed 100 Darktaurs for Elvira.') != -1:
		script.SetVar('q_elvira', 2) # finished
	if text.find('I killed the promised 100 Gorgos.') != -1:
		script.SetVar('q_crimson', 2) # finished

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)
