quest new_quest_lv75 begin
	state start begin
		when login or levelup with pc.get_level() >= 75 begin
			pc.setqf("suraskel0", 1)
			-- for 30124
			pc.setqf("suraskel1", 1)
			-- for 30125
			pc.setqf("suraskel2", 1)
			-- for 30126
			pc.setqf("suraskel3", 1)
			-- for 30127
			pc.setqf("suraskel4", 1)
			-- for 30128
			pc.setqf(timer, get_global_time())
			set_state(gotoinformation)
		end
	end
	
	-- Inform player what to do
	state gotoinformation begin
		when enter or login begin
			diarypage = 30181 -- page of a book
			goto_npc = 20090 -- Heuk-Young
			local v=find_npc_by_vnum(goto_npc)
			if 0!=v then
				target.vid("__TARGET__", v, gameforge.new_quest_lv75._010_target) -- place questarrow on Heuk-Young
			end
		end
		when 20090.chat.gameforge.new_quest_lv75._020_set_title begin -- when Heuk-Younmg is clicked
			target.delete("__TARGET__") -- delete questarrow
			say_title(gameforge.new_quest_lv75._020_set_title) -- displays headline
			say(gameforge.new_quest_lv75._030_say)
			set_state(find_evidence)
		end
	end
	
	-- and the scavenger hunt begins
	state find_evidence begin
		when login or enter begin
			diarypage = 30181 -- page of a book
			send_letter(gameforge.new_quest_lv75._020_set_title)
			new_quest_lv75_mob = 1137 -- Himmels-Eisgolem
			new_quest_lv75_dropProb = 15 -- probability is 1.5%
			new_quest_lv75_npcvnum = 20090        
			q.start()                                                                 
			q.set_title(gameforge.new_quest_lv75._020_set_title) -- for quest-journal 
		end
		
		-- quest journal gives feedback to whatever useful things the player finds. It changes according to the findings
		when button or info begin
			local foundskel = pc.getqf("suraskel0") + pc.getqf("suraskel1") + pc.getqf("suraskel2") + pc.getqf("suraskel3") + pc.getqf("suraskel4")
			if foundskel == 4 and pc.countitem(diarypage) == 0 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._021_say)
			elseif foundskel < 4 and pc.countitem(diarypage) == 0 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._022_say)
			elseif foundskel == 5 and pc.countitem(diarypage) > 0 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(string.format(gameforge.new_quest_lv75._023_say, mob_name(new_quest_lv75_mob)))
			elseif foundskel < 5 and pc.countitem(diarypage) > 0 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._024_say)
			else -- this is the initial task what the player must do
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._025_say)
			end
		end
		
		-- when player finds a skelleton he or she may return to quest giver
		when 30124.chat.gameforge.new_quest_lv75._050_npcChat begin
			say(gameforge.new_quest_lv75._060_say)
			pc.setqf("suraskel0", 0)
			target.vid("__TARGET__", find_npc_by_vnum(new_quest_lv75_npcvnum), gameforge.new_quest_lv75._010_target)
		end
		
		when 30125.chat.gameforge.new_quest_lv75._050_npcChat begin
			say(gameforge.new_quest_lv75._060_say)
			pc.setqf("suraskel1", 0)
			target.vid("__TARGET__", find_npc_by_vnum(new_quest_lv75_npcvnum), gameforge.new_quest_lv75._010_target)
		end
		
		when 30126.chat.gameforge.new_quest_lv75._050_npcChat begin
			say(gameforge.new_quest_lv75._060_say)
			pc.setqf("suraskel2", 0)
			target.vid("__TARGET__", find_npc_by_vnum(new_quest_lv75_npcvnum), gameforge.new_quest_lv75._010_target)
		end
		
		when 30127.chat.gameforge.new_quest_lv75._050_npcChat begin
			say(gameforge.new_quest_lv75._060_say)
			pc.setqf("suraskel3", 0)
			target.vid("__TARGET__", find_npc_by_vnum(new_quest_lv75_npcvnum), gameforge.new_quest_lv75._010_target)
		end
		
		when 30128.chat.gameforge.new_quest_lv75._050_npcChat begin
			say(gameforge.new_quest_lv75._060_say)
			pc.setqf("suraskel4", 0)
			target.vid("__TARGET__", find_npc_by_vnum(new_quest_lv75_npcvnum), gameforge.new_quest_lv75._010_target)
		end
		-- player kills an ice golem and may recieve a page of the legendary diary
		when 1137.kill begin
			if pc.countitem(diarypage) < 1 then
				if math.random(1,1000) <= new_quest_lv75_dropProb then -- probability if s.th. drops
					pc.give_item2(diarypage)
					notice_multiline(gameforge.new_quest_lv75._070_notice, notice)
					target.vid("__TARGET__", find_npc_by_vnum(new_quest_lv75_npcvnum), gameforge.new_quest_lv75._010_target)
				end
			end
		end
		
		when 20090.chat.gameforge.new_quest_lv75._020_set_title begin -- Conversation with Heuk Young befor and after the player found some useful things in the cave
			local foundskel = pc.getqf("suraskel0") + pc.getqf("suraskel1") + pc.getqf("suraskel2") + pc.getqf("suraskel3") + pc.getqf("suraskel4")
			
			if pc.count_item(diarypage) == 0 and foundskel == 5 then -- has neither found a page nor a skeleton
				say_title(gameforge.new_quest_lv75._020_set_title) -- displays headline
				say(gameforge.new_quest_lv75._090_say) -- display this when player gets back to Heuk-Young with empty hands 
			elseif pc.count_item(diarypage) > 0 and foundskel == 5 then -- has found one or more pages but no skeleton
				target.delete("__TARGET__")
				say_title(gameforge.new_quest_lv75._020_set_title) -- displays headline
				say(gameforge.new_quest_lv75._100_say)
				wait()
				say(gameforge.new_quest_lv75._105_say)
				say(gameforge.new_quest_lv75._109_say)
				-- since the player has not found any skeletons yet we want to make sure that not every seleton he or she finds is a success
				local randomvalue = math.random(0,4) -- defines which skeleton is empty
				if randomvalue == 0 then
					pc.setqf("suraskel0", 0)
				elseif randomvalue == 1 then
					pc.setqf("suraskel1", 0)
				elseif randomvalue == 2 then
					pc.setqf("suraskel2", 0)
				elseif randomvalue == 3 then
					pc.setqf("suraskel3", 0)
				else
					pc.setqf("suraskel4", 0)
				end
				set_state(moreinfo)
			elseif pc.count_item(diarypage) == 0 and foundskel < 5 then -- has found one or more skeletons and no pages
				target.delete("__TARGET__")
				say_title(gameforge.new_quest_lv75._020_set_title) -- displays headline
				say(gameforge.new_quest_lv75._110_say)
				wait()
				say(gameforge.new_quest_lv75._115_say)
				if foundskel > 1 then -- if the player has already found more then one skeleton but not all he will miss all the fun finding the pages so we reset some questflags only leaving one skeleton empty
					local counter1 = 0
					repeat
						activeskel = string.format("suraskel%s", counter1)
						if pc.getqf(activeskel) == 0 then
							local counter2 = counter1 +1
							while counter2 < 5 do
								nextskel = string.format("suraskel%s", counter2)
								if pc.getqf(nextskel) == 0 then
									pc.setqf(nextskel, 1)
								end
								counter2 = counter2 +1
							end
						end
						counter1 = counter1 +1
					until counter1 > 4
				else -- player has found all the skeletons or there is something wrong in the questflag -> we reset all the skeletons except one to have a page
					pc.setqf("suraskel0", 1)
					pc.setqf("suraskel1", 1)
					pc.setqf("suraskel2", 1)
					pc.setqf("suraskel3", 1)
					pc.setqf("suraskel4", 1)
					local randomvalue = math.random(0,4) -- defines which skeleton is empty
					if randomvalue == 0 then
						pc.setqf("suraskel0", 0)
					elseif randomvalue == 1 then
						pc.setqf("suraskel1", 0)
					elseif randomvalue == 2 then
						pc.setqf("suraskel2", 0)
					elseif randomvalue == 3 then
						pc.setqf("suraskel3", 0)
					else
						pc.setqf("suraskel4", 0)
					end
				end
				set_state("moreinfo")
			else -- has found one or more skeletons and one or more pages
				target.delete("__TARGET__")
				say_title(gameforge.new_quest_lv75._020_set_title) -- displays headline
				say(gameforge.new_quest_lv75._120_say)
				set_state("moreinfo")
			end
			
		end
	end
	
	-- the player is send out to find 14 pages of the diary. One page he or she already has
	-- when he or she finds a skeleton it is worth 3 pages
	-- killing an iceman is rewarded 1 page at a chance of 8% each
	-- there are 5 different skelotons in 7 different places so some skeletons are doubles
	-- player can only get the pages of one skeleton once
	state moreinfo begin
		when enter or login begin
			diarypage = 30181 -- page of a book
			new_quest_lv75_mob = 1137 -- Himmels-Eisgolem
			new_quest_lv75_dropProb = 15 -- probability is 1.5%
			new_quest_lv75_npcvnum = 20090  
			send_letter(gameforge.new_quest_lv75._020_set_title)
			local story
		end
		
		when button or info begin
			say_title(gameforge.new_quest_lv75._020_set_title)
			say(gameforge.new_quest_lv75._130_say)
			if pc.countitem(diarypage) > 3 and pc.countitem(diarypage) <= 6 then
				story = select(gameforge.new_quest_lv75._140_1_select, gameforge.new_quest_lv75._140_2_select)
			elseif pc.countitem(diarypage) > 6 and pc.countitem(diarypage) <= 9 then
				story = select(gameforge.new_quest_lv75._140_1_select, gameforge.new_quest_lv75._140_2_select, gameforge.new_quest_lv75._140_3_select)
			elseif pc.countitem(diarypage) > 9 and pc.countitem(diarypage) <= 12 then
				story = select(gameforge.new_quest_lv75._140_1_select, gameforge.new_quest_lv75._140_2_select, gameforge.new_quest_lv75._140_3_select, gameforge.new_quest_lv75._140_4_select)
			elseif pc.countitem(diarypage) > 12 and pc.countitem(diarypage) <= 15 then
				story = select(gameforge.new_quest_lv75._140_1_select, gameforge.new_quest_lv75._140_2_select, gameforge.new_quest_lv75._140_3_select, gameforge.new_quest_lv75._140_4_select, gameforge.new_quest_lv75._140_5_select)
			else
				say(gameforge.new_quest_lv75._150_say) -- einfach ein paar zusammenhanslose informationen streuen
			end
			if story == 2 then
				say(gameforge.new_quest_lv75._160_1_say)
			elseif story == 3 then
				say(gameforge.new_quest_lv75._160_2_say)
			elseif story == 4 then
				say(gameforge.new_quest_lv75._160_3_say)
			elseif story == 5 then
				say(gameforge.new_quest_lv75._160_4_say)
			end
		end
		
		when 20090.chat.gameforge.new_quest_lv75._020_set_title begin
			if pc.countitem(diarypage) > 1 and pc.countitem(diarypage) <= 3 then
				say(gameforge.new_quest_lv75._170_say)
				say(gameforge.new_quest_lv75._171_say)
			elseif pc.countitem(diarypage) > 3 and pc.countitem(diarypage) <= 6 then
				say(gameforge.new_quest_lv75._172_say)
				say(gameforge.new_quest_lv75._173_say)
				local story = select(gameforge.new_quest_lv75._140_7_select, gameforge.new_quest_lv75._140_2_select)
			elseif pc.countitem(diarypage) > 6 and pc.countitem(diarypage) <= 9 then
				say(gameforge.new_quest_lv75._174_say)
				local story = select(gameforge.new_quest_lv75._140_7_select, gameforge.new_quest_lv75._140_2_select, gameforge.new_quest_lv75._140_3_select)
			elseif pc.countitem(diarypage) > 9 and pc.countitem(diarypage) <= 12 then
				say(gameforge.new_quest_lv75._175_say)
				say(gameforge.new_quest_lv75._176_say)
				local story = select(gameforge.new_quest_lv75._140_7_select, gameforge.new_quest_lv75._140_2_select, gameforge.new_quest_lv75._140_3_select, gameforge.new_quest_lv75._140_4_select)
			else
				say(gameforge.new_quest_lv75._177_say)
				say(gameforge.new_quest_lv75._178_say)
				local story = select(gameforge.new_quest_lv75._140_7_select, gameforge.new_quest_lv75._140_2_select, gameforge.new_quest_lv75._140_3_select, gameforge.new_quest_lv75._140_4_select, gameforge.new_quest_lv75._140_5_select)
			end
			if story == 2 then
				say(gameforge.new_quest_lv75._160_1_say)
			elseif story == 3 then
				say(gameforge.new_quest_lv75._160_2_say)
			elseif story == 4 then
				say(gameforge.new_quest_lv75._160_3_say)
			elseif story == 5 then
				say(gameforge.new_quest_lv75._160_4_say)
			end
		end
		
		when 1137.kill begin
			if math.random(1,1000) <= new_quest_lv75_dropProb *2 then
				if pc.count_item(diarypage) >= 14 then
					-- if the player finds the last page he is sent to the next state
					-- higher propability because player knows what he or she is searching for
					pc.give_item2(diarypage)
					notice_multiline(gameforge.new_quest_lv75._180_notice, notice)
					send_letter(gameforge.new_quest_lv75._185_send_letter)
					set_state("legendarydiary")
				else
					pc.give_item2(diarypage)
					notice_multiline(string.format(gameforge.new_quest_lv75._190_notice, item_name(diarypage), mob_name(new_quest_lv75_mob)), notice)
					send_letter(gameforge.new_quest_lv75._195_send_letter)
				end
			end
		end
		
		when 30181.use begin -- if the player right clicks the diarypages it will produce a dialog (not working right now)
			if pc.countitem(diarypage) > 3 and pc.countitem(diarypage) <= 6 then
				say(gameforge.new_quest_lv75._160_1_say)
			elseif pc.countitem(diarypage) > 6 and pc.countitem(diarypage) <= 9 then
				say(gameforge.new_quest_lv75._160_2_say)
			elseif pc.countitem(diarypage) > 9 and pc.countitem(diarypage) <= 12 then
				say(gameforge.new_quest_lv75._160_3_say)
			elseif pc.countitem(diarypage) > 12 and pc.countitem(diarypage) <= 15 then
				say(gameforge.new_quest_lv75._160_4_say)
			else
				say(gameforge.new_quest_lv75._150_say) -- einfach ein paar zusammenhanslose informationen streuen
			end
		end
		
		when 30124.chat.gameforge.new_quest_lv75._200_npcChat begin 
			if pc.getqf("suraskel0") == 1 and pc.countitem(diarypage) < 12 then 
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel0", 0)
				pc.give_item2(diarypage, 3)
				wait()
				if pc.countitem(diarypage) > 2 and pc.countitem(diarypage) <= 5 then
					say(gameforge.new_quest_lv75._160_1_say)
				elseif pc.countitem(diarypage) > 5 and pc.countitem(diarypage) <= 8 then
					say(gameforge.new_quest_lv75._160_2_say)
				elseif pc.countitem(diarypage) > 8 and pc.countitem(diarypage) <= 12 then
					say(gameforge.new_quest_lv75._160_3_say)
				else
					say(gameforge.new_quest_lv75._150_say) -- einfach ein paar zusammenhanslose informationen streuen
				end
				wait()
				-- say(string.format("There are only %s pages missing.", 15 - pc.countitem(diarypage)))
			elseif pc.getqf("suraskel0") == 1 and pc.countitem(diarypage) >= 12 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel0", 0)
				pc.give_item2(diarypage, 3)
				wait()
				say(gameforge.new_quest_lv75._160_4_say)
				wait()
				say(gameforge.new_quest_lv75._220_say)
				set_state("legendarydiary") -- to next state
			else
				say(gameforge.new_quest_lv75._230_say)
				-- say(string.format("Mir fehlen immer noch %s Seiten.", 15 - pc.countitem(diarypage)))
			end
		end
		-- player finds skeletons and clicks on them. Opens a dialog
		when 30125.chat.gameforge.new_quest_lv75._200_npcChat begin 
			if pc.getqf("suraskel1") == 1 and pc.countitem(diarypage) < 12 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel1", 0) -- set the skeleton to empty
				pc.give_item2(diarypage, 3)
				wait() -- depending on how many pages the player has collected he or she gets to read another part of the background story
				if pc.countitem(diarypage) > 2 and pc.countitem(diarypage) <= 5 then
					say(gameforge.new_quest_lv75._160_1_say)
				elseif pc.countitem(diarypage) > 5 and pc.countitem(diarypage) <= 8 then
					say(gameforge.new_quest_lv75._160_2_say)
				elseif pc.countitem(diarypage) > 8 and pc.countitem(diarypage) <= 12 then
					say(gameforge.new_quest_lv75._160_3_say)
				else
					say(gameforge.new_quest_lv75._150_say) -- einfach ein paar zusammenhanslose informationen streuen
				end
				wait()
				-- say(string.format("There are only %s pages missing.", 15 - pc.countitem(diarypage)))
			elseif pc.getqf("suraskel1") == 1 and pc.countitem(diarypage) >= 12 then --12 +3 pages = 15 or more pages so we can go to next state 
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel1", 0)
				pc.give_item2(diarypage, 3)
				wait()
				say(gameforge.new_quest_lv75._160_4_say)
				wait()
				say(gameforge.new_quest_lv75._220_say)
				set_state("legendarydiary") -- to next state
			else
				say(gameforge.new_quest_lv75._230_say)
				-- say(string.format("There are only %s pages missing.", 15 - pc.countitem(diarypage)))
			end
		end
		
		when 30126.chat.gameforge.new_quest_lv75._200_npcChat begin 
			if pc.getqf("suraskel2") == 1 and pc.countitem(diarypage) < 12 then 
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel2", 0)
				pc.give_item2(diarypage, 3)
				wait()
				if pc.countitem(diarypage) > 2 and pc.countitem(diarypage) <= 5 then
					say(gameforge.new_quest_lv75._160_1_say)
				elseif pc.countitem(diarypage) > 5 and pc.countitem(diarypage) <= 8 then
					say(gameforge.new_quest_lv75._160_2_say)
				elseif pc.countitem(diarypage) > 8 and pc.countitem(diarypage) <= 12 then
					say(gameforge.new_quest_lv75._160_3_say)
				else
					say(gameforge.new_quest_lv75._150_say) -- einfach ein paar zusammenhanslose informationen streuen
				end
				wait()
				-- say(string.format("There are only %s pages missing.", 15 - pc.countitem(diarypage)))
			elseif pc.getqf("suraskel2") == 1 and pc.countitem(diarypage) >= 12 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel2", 0)
				pc.give_item2(diarypage, 3)
				wait()
				say(gameforge.new_quest_lv75._160_4_say)
				wait()
				say(gameforge.new_quest_lv75._220_say)
				set_state("legendarydiary") -- to next state
			else
				say(gameforge.new_quest_lv75._230_say)
				-- say(string.format("There are only %s pages missing.", 15 - pc.countitem(diarypage)))
			end
		end
		
		when 30127.chat.gameforge.new_quest_lv75._200_npcChat begin 
			if pc.getqf("suraskel3") == 1 and pc.countitem(diarypage) < 12 then 
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel3", 0)
				pc.give_item2(diarypage, 3)
				wait()
				if pc.countitem(diarypage) > 2 and pc.countitem(diarypage) <= 5 then
					say(gameforge.new_quest_lv75._160_1_say)
				elseif pc.countitem(diarypage) > 5 and pc.countitem(diarypage) <= 8 then
					say(gameforge.new_quest_lv75._160_2_say)
				elseif pc.countitem(diarypage) > 8 and pc.countitem(diarypage) <= 12 then
					say(gameforge.new_quest_lv75._160_3_say)
				else
					say(gameforge.new_quest_lv75._150_say) -- einfach ein paar zusammenhanslose informationen streuen
				end
				wait()
				-- say(string.format("There are only %s pages missing.", 15 - pc.countitem(diarypage)))
			elseif pc.getqf("suraskel3") == 1 and pc.countitem(diarypage) >= 12 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel3", 0)
				pc.give_item2(diarypage, 3)
				wait()
				say(gameforge.new_quest_lv75._160_4_say)
				wait()
				say(gameforge.new_quest_lv75._220_say)
				set_state("legendarydiary") -- to next state
			else
				say(gameforge.new_quest_lv75._230_say)
				-- say(string.format("There are only %s pages missing.", 15 - pc.countitem(diarypage)))
			end
		end
		
		when 30128.chat.gameforge.new_quest_lv75._200_npcChat begin 
			if pc.getqf("suraskel4") == 1 and pc.countitem(diarypage) < 12 then 
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel4", 0)
				pc.give_item2(diarypage, 3)
				wait()
				if pc.countitem(diarypage) > 2 and pc.countitem(diarypage) <= 5 then
					say(gameforge.new_quest_lv75._160_1_say)
				elseif pc.countitem(diarypage) > 5 and pc.countitem(diarypage) <= 8 then
					say(gameforge.new_quest_lv75._160_2_say)
				elseif pc.countitem(diarypage) > 8 and pc.countitem(diarypage) <= 12 then
					say(gameforge.new_quest_lv75._160_3_say)
				else
					say(gameforge.new_quest_lv75._150_say) -- einfach ein paar zusammenhanslose informationen streuen
				end
				wait()
				-- say(string.format("Jetzt fehlen mir noch %s Seiten.", 15 - pc.countitem(diarypage)))
			elseif pc.getqf("suraskel4") == 1 and pc.countitem(diarypage) >= 12 then
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._210_say)
				pc.setqf("suraskel4", 0)
				pc.give_item2(diarypage, 3)
				wait()
				say(gameforge.new_quest_lv75._160_4_say)
				wait()
				say(gameforge.new_quest_lv75._220_say)
				set_state("legendarydiary") -- to next state
			else
				say(gameforge.new_quest_lv75._230_say)
				-- say(string.format("Mir fehlen immer noch %s Seiten.", 15 - pc.countitem(diarypage)))
			end
		end
	end
	-- When player returns to Heuk-Young she will tell the 5th part of the story and take all pages from the players
	-- inventory. She retrns it in the form a a valuable book which contains all the pages the player found. 
	-- It can be clicked to read the story once again and will show a part of the heavens cave map which is 
	-- changing every 10 hours to another map. The map never shows the whole cave and lieves out many places. 
	-- But it leads the player to the portal for the second layer. The player may sell the book to Soon at a very high price
	-- but he or she will have to bargain with him.
	state legendarydiary begin
		when enter or login begin
			diarypage = 30181 -- page of a book
			new_quest_lv75_mob = 1137 -- Himmels-Eisgolem
			new_quest_lv75_dropProb = 15 -- probability is 1.5%
			new_quest_lv75_npcvnum = 20090  
			local goto_npc = 20090 -- Heuk-Young
			local v=find_npc_by_vnum(goto_npc)
			if 0!=v then
				target.vid("__TARGET__", v, gameforge.new_quest_lv75._010_target) -- place questarrow on Heuk-Young
			end
			send_letter(gameforge.new_quest_lv75._240_send_letter)
		end
		
		when button or info begin
			say(gameforge.new_quest_lv75._250_say)
		end
		
		when 30181.use begin -- if the player right clicks the diarypages it will produce a dialog (not working right now)
			local choosestory = select(gameforge.new_quest_lv75._140_2_select, gameforge.new_quest_lv75._140_3_select, gameforge.new_quest_lv75._140_4_select, gameforge.new_quest_lv75._140_5_select)
			if choosestory == 1 then
				say (gameforge.new_quest_lv75._160_1_say)
			elseif choosestory == 2 then
				say (gameforge.new_quest_lv75._160_2_say)
			elseif choosestory == 3 then
				say (gameforge.new_quest_lv75._160_3_say)
			else
				say (gameforge.new_quest_lv75._160_4_say)
			end
		end
		
		when __TARGET__.target.click begin -- when Heuk-Young is clicked
			q.set_title(gameforge.new_quest_lv75._020_set_title) -- for quest-journal 
			target.delete("__TARGET__") -- delete questarrow
			say_title(gameforge.new_quest_lv75._020_set_title) -- displays headline
			say(gameforge.new_quest_lv75._270_say)
			wait()
			pc.remove_item(diarypage, pc.countitem(diarypage))
			say(gameforge.new_quest_lv75._280_say)
			local listen = select(gameforge.new_quest_lv75._290_1_select, gameforge.new_quest_lv75._140_7_select)
			if listen == 1 then 
				say(gameforge.new_quest_lv75._160_5_say)
			end
			pc.give_item2(30182) -- Legendary Diary
			pc.change_money(1200000) -- reward for the quest are 1.2 Mil yang and the diry which can be sold for a high price
			pc.give_exp2(90000000)
			pc.setqf("bargainsleft", 3) -- set the number of times the player may turn down an offer of the npc when bargaining for the price of the diary
			q.done()
			set_state("usingbook")
		end
		
		
	end
	
	state usingbook begin	
		when enter or login begin
			averagebargain = math.random(26,34)*100000 -- he will offer between 2,600,000 and 3,400,000 Yang but the player may get the double amount of yang
		end
		
		when 30182.use begin
			local choosestory = select(gameforge.new_quest_lv75._140_2_select, gameforge.new_quest_lv75._140_3_select, gameforge.new_quest_lv75._140_4_select, gameforge.new_quest_lv75._140_5_select, gameforge.new_quest_lv75._140_6_select)
			if choosestory == 1 then
				say (gameforge.new_quest_lv75._160_1_say)
			elseif choosestory == 2 then
				say (gameforge.new_quest_lv75._160_2_say)
			elseif choosestory == 3 then
				say (gameforge.new_quest_lv75._160_3_say)
			elseif choosestory == 4 then
				say (gameforge.new_quest_lv75._160_4_say)
			elseif choosestory == 5 then
				say (gameforge.new_quest_lv75._160_5_say)
			else
				--local xdays = 30 -- 60*60*24*2 -- calculate 2 days in seconds
				--if pc.getqf(timer) + xdays < get_global_time() then -- players have to wait x days befor they get to see another map in the book	
				addimage(20,12, test.tga)
			end
		end
		
		when 20023.chat.gameforge.new_quest_lv75._020_set_title begin
			if pc.count_item(30182) < 1 then -- check if the player has a legendary diary in his or her inventory
				say(gameforge.new_quest_lv75._310_say)
			else -- if he or she has then Soon starts talking about the diary
				-- we calculate the amount of Yang the NPC will offer to the player
				say_title(gameforge.new_quest_lv75._020_set_title)
				say(gameforge.new_quest_lv75._320_say)
				say(gameforge.new_quest_lv75._330_say)
				wait()
				say(gameforge.new_quest_lv75._340_say)
				local sell = select(gameforge.new_quest_lv75._350_1_select,  gameforge.new_quest_lv75._350_2_select) -- the player may decide if h want to sell the diary or not.
				if sell == 1 and pc.getqf("bargainsleft") > 0 then 
					-- when the player is interested to sell the diary and has tried to bargain with the NPC less then 3 times.
					local letmeout = 0 -- this value must be set to 1 to end conversation
					repeat
						say(gameforge.new_quest_lv75._360_say)
						local pcgives = tonumber(input())
						-- player can input the amount of Yang he or she wants to have for the diary
						if pcgives < 1 or pcgives > 999999999 or pc.getqf("bargainsleft") < 1 then 
							-- If does not enter a valid value the NPC offers 500k yang.
							say(gameforge.new_quest_lv75._370_say)
							local nobargain = select(gameforge.new_quest_lv75._380_1_select, gameforge.new_quest_lv75._380_2_select)
							if nobargain == 1 then -- player takes the offer
								pc.remove_item(30182, 1) -- removes 1 diary from inventory
								pc.change_money(500000) -- gives amount of yang
								pc.setqf("bargainsleft", 0) 
								letmeout = 1 -- conversation will end
								set_state(__COMPLETE__)
							else  -- player does not take the offer
								say(gameforge.new_quest_lv75._390_say)
								letmeout = 1
							end
						elseif pcgives >= 1 and pcgives <= 999999999 and pcgives > averagebargain *2 then 
							-- the value the player entered is valid but it is greater then twice the amount of yang which the npc want to give
							say(gameforge.new_quest_lv75._400_say)
							local npcmaxbargain = averagebargain + math.random(1,5)*100000 
							-- we calculate the offer which the npc will make. Since the player wanted much more the npc adds between 100,000 and half a million yang to his offer
							local reducebargains = pc.getqf("bargainsleft") 
							reducebargains = reducebargains -1
							pc.setqf("bargainsleft", reducebargains) -- The number of offers the npc will make is reduced by one
							say(string.format(gameforge.new_quest_lv75._410_say, npcmaxbargain))
							say(gameforge.new_quest_lv75._420_say)
							if pc.getqf("bargainsleft") == 0 then say(gameforge.new_quest_lv75._425_say) end -- this will be shown if there will be no more bargaining
							local makebargain = select(string.format(gameforge.new_quest_lv75._430_1_select, npcmaxbargain), gameforge.new_quest_lv75._430_2_select) 
							if makebargain == 1 then -- taks the offer of the npc
								pc.remove_item(30182, 1) -- removes 1 diary from inventory
								pc.change_money(npcmaxbargain) -- maximum amount of yang varies between 3,900,000 and 2,700,000 yang
								letmeout = 1 -- conversation will end
								pc.setqf("bargainsleft", 0)
								set_state(__COMPLETE__)
							else -- player does not take the offer of the npc
								say(gameforge.new_quest_lv75._440_say)
								--letmeout = 1 -- conversation will end
							end
						else -- npc takes the players offer
							say(gameforge.new_quest_lv75._450_say) 
							pc.remove_item(30182, 1)
							pc.change_money(pcgives) -- maximum amount of yang varies between 6,800,000 and 5,200,000 yang
							pc.setqf("bargainsleft", 0)
							letmeout = 1 -- conversation will end
							set_state(__COMPLETE__)
						end
					until letmeout == 1 -- bargaining will end when variable is set to 1
				elseif sell == 1 and pc.getqf("bargainsleft") == 0 then 
					-- if the player comes back to to the npc but already tried to bargain with him 3 times he will only get half a million yang for the book
					say(gameforge.new_quest_lv75._460_say)
					say(gameforge.new_quest_lv75._470_say)
					local nobargain = select(gameforge.new_quest_lv75._380_1_select, gameforge.new_quest_lv75._380_2_select)
					if nobargain == 1 then -- when player sells the book
						pc.remove_item(30182, 1)
						pc.change_money(500000)
						set_state(__COMPLETE__)
					else -- when player wants to keep the book
						say(gameforge.new_quest_lv75._480_say)
					end
				else -- when player does not want to bargain
					say(gameforge.new_quest_lv75._490_say)
				end
			end
		end
	end
	state __COMPLETE__ begin
	end
end