VegaS1234

Quest killing with time

Apr 27th, 2017
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.88 KB | None | 0 0
  1. --[[
  2. ###########################
  3. # Author:   VegaS         #
  4. # Date:     2017.04.28    #
  5. # Quest:    Mission kill  #
  6. ###########################
  7. ]]
  8. quest Quest begin
  9.     state start begin
  10.         function GetCounter()
  11.             return pc.getqf("state")
  12.         end
  13.         function SetCounter(c)
  14.             pc.setqf("state", c)
  15.             q.set_counter("QuestName", c)
  16.         end
  17.         function Get(key)
  18.             local dict = {
  19.                 ["needLevel"]   =   35,
  20.                 ["needKill"]    =   30,
  21.                 ["mobVnum"]     =   101,
  22.                 ["timer"]       =   10*60
  23.             }
  24.             return dict[key]
  25.         end
  26.         function Reward()
  27.             affect.add_collect_point(POINT_ATTBONUS_MONSTER, 10, 60*60*24*365*60)
  28.         end
  29.    
  30.         when login or levelup with pc.get_level() == Quest.Get("needLevel") begin
  31.             set_state(informations)
  32.         end
  33.     end
  34.        
  35.     state informations begin
  36.         when letter begin
  37.             send_letter(string.format("Mission Level %d", pc.get_level()))
  38.         end
  39.  
  40.         when button or info begin
  41.             say("You want to accept the mission?")
  42.             local s = select("Accept", "Maybe later...")
  43.             if (s == 1) then
  44.                 Quest.SetCounter(Quest.Get("needKill"))
  45.                 timer("clock", Quest.Get("timer"))
  46.                 set_state(kill)
  47.             else return end
  48.         end
  49.     end
  50.        
  51.     state kill begin
  52.         when clock.timer begin
  53.             say("Time expired, have a nice day.")
  54.             clear_letter()
  55.             set_state(__COMPLETE__)
  56.         end
  57.  
  58.         when letter begin
  59.             send_letter("Mobs killed")
  60.         end
  61.            
  62.         when button or info begin
  63.             say_reward(string.format("Remaining to kill: %s (%d)", mob_name(Quest.Get("mobVnum")), Quest.GetCounter()))
  64.         end
  65.  
  66.         when kill with npc.get_race() == Quest.Get("mobVnum") begin
  67.             local
  68.                 COUNTER_VALUE = Quest.GetCounter() - 1
  69.                 NEED_TO_KILL = Quest.Get("needKill")
  70.  
  71.             if COUNTER_VALUE <= NEED_TO_KILL then
  72.                 Quest.SetCounter(COUNTER_VALUE) end
  73.  
  74.             if COUNTER_VALUE == 0 then
  75.                 say("Finished!")
  76.                 Quest.Reward()
  77.                 clear_letter()
  78.                 set_state(__COMPLETE__)
  79.             end
  80.         end
  81.     end
  82.     state __COMPLETE__ begin
  83.     end
  84. end
Advertisement
Add Comment
Please, Sign In to add comment