quest pre_event_heavens_cave begin state start begin when login with pc.get_level() >= 15 begin -- tbd pc.setqf("personalvalue", 0) set_state(pre_event_heavens_cave) end -- tbd end state pre_event_heavens_cave begin when enter with pc.is_gm() begin -- tbd send_letter("Pre-Event Helper Script") -- tbd end -- tbd when button or info begin -- tbd say_reward("Warning!") -- tbd say("This dialog is not part of the Heavens Cave Pre-Event!!!") -- tbd say("It's purpose is to help in the testing of the event. Only run the script ONCE PER SERVER because it automaticly starts the event which should only be done 1 time!") -- tbd say("You may use it to resets - using Stop and then Start - every variable to its default value. It only resets variable concerning the event and not your character's variables.") -- tbd say("The tickets related to this event are: 0030149, 0030150 and 0031479.") -- tbd say("Have Fun!") -- tbd say("") -- tbd say("Benjamin") -- tbd local startevent = select("Start the Event", "Stop the Event", "Close") -- tbd if startevent == 1 then game.set_event_flag("pre_event_hc", 1) -- tbd game.set_event_flag("glyphstones_collected", 0) -- tbd game.set_event_flag("hc_drop", 100) -- tbd game.set_event_flag("gold_collected", 0) -- tbd -- event flags for the score table game.set_event_flag("score0",100) -- tbd game.set_event_flag("score1",90) -- tbd game.set_event_flag("score2",80) -- tbd game.set_event_flag("score3",70) -- tbd game.set_event_flag("score4",60) -- tbd game.set_event_flag("score5",50) -- tbd game.set_event_flag("score6",40) -- tbd game.set_event_flag("score7",30) -- tbd game.set_event_flag("score8",20) -- tbd game.set_event_flag("score9",10) -- tbd -- how many yang did the player spent on Heuk-Young elseif startevent == 2 then game.set_event_flag("pre_event_hc", 0) -- tbd game.set_event_flag("hc_drop", 0) -- tbd else -- tbd return -- tbd end -- tbd end -- tbd function getherbs(maxlevel) local range = maxlevel -12 range = math.floor(range /4) local randomvalue = math.random(1,range) local herbvnum=0 if randomvalue == 2 then herbvnum = 50722 -- Glockenblume - LV20 elseif randomvalue == 3 then herbvnum = 50723 -- Kakiblüte - LV24 elseif randomvalue == 4 then herbvnum = 50724 -- Gango-Wurzel - LV28 elseif randomvalue == 5 or randomvalue == 6 then herbvnum = 50725 -- Flieder - LV32 elseif randomvalue == 7 or randomvalue == 8 then herbvnum = 50726 -- Tue-Pilz - LV40 elseif randomvalue == 9 then herbvnum = 50727 -- Alpenrose - LV46 elseif randomvalue >= 10 then herbvnum = 50728 -- Maulbeeren - LV50 else herbvnum = 50721 -- Pfirsichblüte - LV16 end return herbvnum end function getpotion(maxlevel) local randomvalue = math.random(1,6) local potionvnum = 0 if maxlevel <= 18 then if randomvalue <= 3 then potionvnum = 27100 -- Grüner Trank(K) else potionvnum = 27103 -- Violetter Trank(K) end elseif maxlevel > 18 and maxlevel <= 25 + randomvalue then if randomvalue == 1 then potionvnum = 27100 -- Grüner Trank(K) elseif randomvalue == 2 then potionvnum = 27103 -- Violetter Trank(K) elseif randomvalue == 3 then potionvnum = 27002 -- Roter Trank(M) elseif randomvalue == 4 then potionvnum = 27005 -- Blauer Trank(M) elseif randomvalue == 5 then potionvnum = 27101 -- Grüner Trank(M) else potionvnum = 27104 -- Violetter Trank(M) end else if randomvalue == 1 then potionvnum = 27101 -- Grüner Trank(M) elseif randomvalue == 2 then potionvnum = 27104 -- Violetter Trank(M) elseif randomvalue == 3 then potionvnum = 27003 -- Roter Trank(G) elseif randomvalue == 4 then potionvnum = 27006 -- Blauer Trank(G) elseif randomvalue == 5 then potionvnum = 27102 -- Grüner Trank(G) else potionvnum = 27105 -- Violetter Trank(G) end end return potionvnum end function getsushi() local randomvalue = math.random(1,5) local sushivnum = 0 if randomvalue == 1 then sushivnum = 50091 -- Goldfisch-Sushi elseif randomvalue == 2 then sushivnum = 50092 -- Karpfen-Sushi elseif randomvalue == 3 then sushivnum = 50093 -- Lachs-Sushi elseif randomvalue == 4 then sushivnum = 50094 -- Katzenfisch-Sushi else sushivnum = 50901 -- empty bottle end return sushivnum end when 20090.chat.gameforge.pre_event_heavens_cave._10_npcChat with pc.get_level() >= 15 and pc.get_map_index() <= 43 and game.get_event_flag("hc_drop") > 0 begin say(gameforge.pre_event_heavens_cave._20_say) say(gameforge.pre_event_heavens_cave._30_say) if pc.get_map_index() == 3 then say(gameforge.pre_event_heavens_cave._40_say) elseif pc.get_map_index() == 23 then say(gameforge.pre_event_heavens_cave._50_say) elseif pc.get_map_index() == 43 then say(gameforge.pre_event_heavens_cave._60_say) end wait() say(gameforge.pre_event_heavens_cave._70_say) say(gameforge.pre_event_heavens_cave._80_say) say_item_vnum(30178) local maxlevel = pc.get_level() local glyphcount = 0 glyphcount = pc.count_item(30178) if glyphcount > 0 then -- Glyphstone local giveglyphstone = select(gameforge.pre_event_heavens_cave._90_1_select, gameforge.pre_event_heavens_cave._90_2_select) if giveglyphstone == 1 then say_pc_name() say(gameforge.pre_event_heavens_cave._100_say) local pickpotion = 0 if pc.get_level() < 24 and pc.get_level() >= 20 then pickpotion = math.random(0,8) elseif pc.get_level() < 20 then pickpotion = math.random(0,4) else pickpotion = math.random(0,9) end --notice(string.format("pickpotion = %d", pickpotion)) -- tbd local potion1=0 local potion2=0 local potion3=0 if pickpotion <= 4 then -- Find me 3 types of reward items; 1 juice, 1 potion and 1 sushi potion1 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("potion1 = %d", potion1)) -- tbd potion2 = pre_event_heavens_cave.getpotion(maxlevel) --notice(string.format("potion2 = %d", potion2)) -- tbd potion3 = pre_event_heavens_cave.getsushi() --notice(string.format("potion3 = %d", potion3)) -- tbd elseif pickpotion == 5 or pickpotion == 6 then -- Find me 3 types of reward items; 2 juice and 1 potion and make sure we don't got the same juice twice potion1 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("potion1 = %d", potion1)) -- tbd potion2 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("potion2 = %d", potion2)) -- tbd while potion2 == potion1 do potion2 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("changed potion2 to %d", potion2)) -- tbd end potion3 = pre_event_heavens_cave.getpotion(maxlevel) --notice(string.format("potion3 = %s", potion3)) -- tbd elseif pickpotion == 7 or pickpotion == 8 then -- Find me 3 types of reward items; 2 juice and 1 sushi and make sure we don't got the same juice twice potion1 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("potion1 = %d", potion1)) -- tbd potion2 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("potion2 = %d", potion2)) -- tbd while potion2 == potion1 do potion2 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("changed potion2 to %d", potion2)) -- tbd end potion3 = pre_event_heavens_cave.getsushi() --notice(string.format("potion3 = %d", potion3)) -- tbd else -- Find me 3 types of reward items; 3 juice and make sure we don't got the same juice twice potion1 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("potion1 = %d", potion1)) -- tbd potion2 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("potion2 = %d", potion2)) -- tbd while potion2 == potion1 do potion2 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("changed potion2 to %d", potion2)) -- tbd end potion3 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("potion3 = %d", potion3)) -- tbd while potion3 == potion1 or potion3 == potion2 do potion3 = pre_event_heavens_cave.getherbs(maxlevel) --notice(string.format("changed potion3 to %d", potion3)) -- tbd end end -- potion1 is a herb local potion1amount = pc.count_item(30178) *7 local potion2amount = 0 local potion3amount = 0 if potion2 < 27200 then -- it is a potion potion2amount = pc.count_item(30178) *3 else -- it is a herb potion2amount = pc.count_item(30178) *5 end if potion3 < 27200 then -- it is a potion potion3amount = pc.count_item(30178) *2 elseif potion1 > 50800 then -- it is Sushi potion3amount = pc.count_item(30178) *6 else -- it is a herb potion3amount = pc.count_item(30178) *3 end wait() say(gameforge.pre_event_heavens_cave._20_say) say(gameforge.pre_event_heavens_cave._110_say) say(string.format("%dx", potion1amount)) say_item_vnum(potion1) say(string.format("%dx", potion2amount)) say_item_vnum(potion2) wait() say(string.format(gameforge.pre_event_heavens_cave._120_say, potion3amount)) say_item_vnum(potion3) local choosereward = select( string.format("%d %s", potion1amount, item_name(potion1)), string.format("%d %s", potion2amount, item_name(potion2)), string.format("%d %s", potion3amount, item_name(potion3)), gameforge.pre_event_heavens_cave._130_4_select) if choosereward < 4 then local glyphstones = pc.count_item(30178) pc.remove_item(30178, glyphstones) local glyphcount = game.get_event_flag("glyphstones_collected") glyphcount = glyphcount + glyphstones game.set_event_flag("glyphstones_collected", glyphcount) if choosereward == 1 then pc.give_item2(potion1, potion1amount) elseif choosereward == 2 then pc.give_item2(potion2, potion2amount) elseif choosereward == 3 then pc.give_item2(potion3, potion3amount) end say(gameforge.pre_event_heavens_cave._20_say) say(string.format(gameforge.pre_event_heavens_cave._140_say, glyphcount)) say_pc_name() local eventstory = select(gameforge.pre_event_heavens_cave._150_1_select, gameforge.pre_event_heavens_cave._150_2_select) if eventstory == 1 then say(gameforge.pre_event_heavens_cave._20_say) say(gameforge.pre_event_heavens_cave._160_say) say(gameforge.pre_event_heavens_cave._170_say) say(gameforge.pre_event_heavens_cave._180_say) say(gameforge.pre_event_heavens_cave._190_say) say(gameforge.pre_event_heavens_cave._200_say) wait() if pc.getqf("goldstatus") == 0 then say(string.format(gameforge.pre_event_heavens_cave._210_say, item_name(30180))) say_item_vnum(30180) -- Dragongod Amulet pc.setqf("goldstatus", 2) say(string.format(gameforge.pre_event_heavens_cave._220_say, mob_name(20009), mob_name(9012))) wait() say(gameforge.pre_event_heavens_cave._230_say) else say(gameforge.pre_event_heavens_cave._240_say) end say_item_vnum(50626) -- mined gold 200 Yang say_item_vnum(80008) -- gold nugget 100.000 Yang wait() say("") say_item_vnum(80005) -- gold bar 500.000 Yang say_item_vnum(80006) -- gold bar 1.000.000 Yang say_item_vnum(80007) -- gold bar 2.000.000 Yang end else say(gameforge.pre_event_heavens_cave._250_say) end else --notice("failed") -- tbd end end end when 20090.chat.gameforge.pre_event_heavens_cave._260_npcChat with pc.getqf("goldstatus") > 0 begin if game.get_event_flag("hc_drop") == 0 then set_state(__COMPLETE__) end if pc.count_item(80005) == 0 and pc.count_item(80006) == 0 and pc.count_item(80007) == 0 and pc.count_item(80008) == 0 and pc.count_item(50626) == 0 then say(gameforge.pre_event_heavens_cave._20_say) say(string.format(gameforge.pre_event_heavens_cave._270_say, item_name(30180))) say(item_name(80005)) -- gold bar 500.000 Yang say(item_name(80006)) -- gold bar 1.000.000 Yang say(item_name(80007)) -- gold bar 2.000.000 Yang say(item_name(80008)) -- gold nugget 100.000 Yang say(item_name(50626)) -- mined gold 200 Yang return end say(gameforge.pre_event_heavens_cave._280_say) local checkinventory = {} checkinventory[1] = {} checkinventory[1]["vnum"] = 80005 checkinventory[2] = {} checkinventory[2]["vnum"] = 80006 checkinventory[3] = {} checkinventory[3]["vnum"] = 80007 checkinventory[4] = {} checkinventory[4]["vnum"] = 80008 checkinventory[5] = {} checkinventory[5]["vnum"] = 50626 notice(checkinventory[1]["vnum"]) local goldcounter = 1 repeat checkinventory[goldcounter]["amount"] = pc.count_item(checkinventory[goldcounter].vnum) checkinventory[goldcounter]["name"] = item_name(checkinventory[goldcounter].vnum) goldcounter = goldcounter +1 until goldcounter > 5 notice(checkinventory[1]["amount"]) notice(checkinventory[1]["name"]) local gold = {} local buttoncounter = 1 goldcounter = 1 repeat if checkinventory[goldcounter]["amount"] > 0 then gold[buttoncounter] = checkinventory[goldcounter] buttoncounter = buttoncounter +1 end goldcounter = goldcounter +1 until goldcounter > 5 local choosegold = 0 if buttoncounter == 2 then choosegold = select(gameforge.pre_event_heavens_cave._290_select, string.format("%dx %s", gold[1].amount, gold[1].name)) elseif buttoncounter == 3 then choosegold = select(gameforge.pre_event_heavens_cave._290_select, string.format("%dx %s", gold[1].amount, gold[1].name), string.format("%dx %s", gold[2].amount, gold[2].name)) elseif buttoncounter == 4 then choosegold = select(gameforge.pre_event_heavens_cave._290_select, string.format("%dx %s", gold[1].amount, gold[1].name), string.format("%dx %s", gold[2].amount, gold[2].name), string.format("%dx %s", gold[3].amount, gold[3].name)) elseif buttoncounter == 5 then choosegold = select(gameforge.pre_event_heavens_cave._290_select, string.format("%dx %s", gold[1].amount, gold[1].name), string.format("%dx %s", gold[2].amount, gold[2].name), string.format("%dx %s", gold[3].amount, gold[3].name), string.format("%dx %s", gold[4].amount, gold[4].name)) elseif buttoncounter == 6 then choosegold = select(gameforge.pre_event_heavens_cave._290_select, string.format("%dx %s", gold[1].amount, gold[1].name), string.format("%dx %s", gold[2].amount, gold[2].name), string.format("%dx %s", gold[3].amount, gold[3].name), string.format("%dx %s", gold[4].amount, gold[4].name), string.format("%dx %s", gold[5].amount, gold[5].name)) end if choosegold > 1 then choosegold = choosegold -1 pc.remove_item(gold[choosegold].vnum, 1) local globalvalue = 0 local personalvalue = 0 if gold[choosegold].vnum == 80005 then globalvalue = 500000 + game.get_event_flag("gold_collected") personalvalue = 500000 + pc.getqf("personalvalue") game.set_event_flag("gold_collected", globalvalue) pc.setqf("personalvalue", personalvalue) elseif gold[choosegold].vnum == 80006 then globalvalue = 1000000 + game.get_event_flag("gold_collected") personalvalue = 1000000 + pc.getqf("personalvalue") game.set_event_flag("gold_collected", globalvalue) pc.setqf("personalvalue", personalvalue) elseif gold[choosegold].vnum == 80007 then globalvalue = 2000000 + game.get_event_flag("gold_collected") personalvalue = 2000000 + pc.getqf("personalvalue") game.set_event_flag("gold_collected", globalvalue) pc.setqf("personalvalue", personalvalue) elseif gold[choosegold].vnum == 80008 then globalvalue = 100000 + game.get_event_flag("gold_collected") personalvalue = 100000 + pc.getqf("personalvalue") game.set_event_flag("gold_collected", globalvalue) pc.setqf("personalvalue", personalvalue) elseif gold[choosegold].vnum == 50626 then globalvalue = 200 + game.get_event_flag("gold_collected") personalvalue = 200 + pc.getqf("personalvalue") game.set_event_flag("gold_collected", globalvalue) pc.setqf("personalvalue", personalvalue) end if pc.getqf("goldstatus") == 2 then say(gameforge.pre_event_heavens_cave._20_say) say(gameforge.pre_event_heavens_cave._300_say) pc.give_item2(30180) -- give Dragongod Amulet to player pc.setqf("goldstatus", 1) say(string.format(gameforge.pre_event_heavens_cave._310_say, item_name(30180), mob_name(20009), mob_name(9012))) else say(gameforge.pre_event_heavens_cave._20_say) say(gameforge.pre_event_heavens_cave._320_say) end say(string.format(gameforge.pre_event_heavens_cave._330_say, globalvalue)) wait() -- building table for the score local scoretable = {} scoretable[1] = {} scoretable[2] = {} scoretable[3] = {} scoretable[4] = {} scoretable[5] = {} scoretable[6] = {} scoretable[7] = {} scoretable[8] = {} scoretable[9] = {} scoretable[10] = {} scoretable[11] = {} -- putting all the event flags for the score into the table local scorecounter0 = 0 local scorecounter1 = 1 local score = 0 local pcname = "zzz" local letmeout = 0 local loadscore = 0 repeat score = string.format("score%s", scorecounter0) loadscore = game.get_event_flag(score) scoretable[scorecounter1]["score"] = loadscore *100 scorecounter0 = scorecounter0 +1 scorecounter1 = scorecounter1 +1 until scorecounter0 == 10 -- checking if personalvalue is in the list repeat if scorecounter0 > 0 then if pc.getqf("personalvalue") > scoretable[scorecounter0]["score"] then scoretable[scorecounter1] = scoretable[scorecounter0] scorecounter0 = scorecounter0 -1 scorecounter1 = scorecounter1 -1 else letmeout = 1 end else letmeout = 1 end until letmeout > 0 -- fill in the players score data local scoreplace = scorecounter1 scoretable[scoreplace]["score"] = pc.getqf("personalvalue") -- write the new score back into the event flags and put in in the dialog local scorecounter0 = 0 local scorecounter1 = 1 local savescore = 0 say_title(gameforge.pre_event_heavens_cave._340_say_title) repeat score = string.format("score%d", scorecounter0) savescore = scoretable[scorecounter1]["score"] /100 game.set_event_flag(score, savescore) if scorecounter1 == scoreplace then say_reward(string.format(gameforge.pre_event_heavens_cave._350_say_reward, scorecounter1, scoretable[scorecounter1]["score"])) else say(string.format(gameforge.pre_event_heavens_cave._350_say_reward, scorecounter1, scoretable[scorecounter1]["score"])) end scorecounter0 = scorecounter0 +1 scorecounter1 = scorecounter1 +1 until scorecounter0 == 10 else say(gameforge.pre_event_heavens_cave._20_say) say(gameforge.pre_event_heavens_cave._250_say) end end end state __COMPLETE__ begin end end