Advertisement
M3rein

Questing System

Apr 8th, 2017
577
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 26.12 KB | None | 0 0
  1. ##=##===========================================================================
  2. ##=## Easy Questing System - made by M3rein
  3. ##=##===========================================================================
  4. ##=## Create your own quests at line [LINE]. Be aware of the following:
  5. ##=## * Make sure that each quest has a unique ID;
  6. ##=## * Make sure every quest is unique (at least one field has to be different);
  7. ##=## * The "Name" field can't be very long;
  8. ##=## * The "Desc" field can be quite long;
  9. ##=## * The "NPC" field is JUST a name;
  10. ##=## * The "Sprite" field is the name of the sprite in "Graphics/Characters";
  11. ##=## * The "Location" field is JUST a name;
  12. ##=## * The "Color" field is a SYMBOL (starts with ':'). List under "pbColor";
  13. ##=## * The "Time" field can be a random string for it to be "?????" in-game;
  14. ##=## * The "Completed" field can be pre-set, but is normally only changed in-game
  15. ##=##===========================================================================
  16. class Quest
  17.   attr_accessor :id
  18.   attr_accessor :name
  19.   attr_accessor :desc
  20.   attr_accessor :npc
  21.   attr_accessor :sprite
  22.   attr_accessor :location
  23.   attr_accessor :color
  24.   attr_accessor :time
  25.   attr_accessor :completed
  26.   def initialize(id, name, desc, npc, sprite, location, color = :WHITE, time = Time.now, completed = false)
  27.     self.id = id
  28.     self.name = name
  29.     self.desc = desc
  30.     self.npc = npc
  31.     self.sprite = sprite
  32.     self.location = location
  33.     self.color = pbColor(color)
  34.     self.time = time
  35.     self.completed = completed
  36.   end
  37. end
  38.  
  39. def pbColor(color)
  40.   # Mix your own colors: http://www.rapidtables.com/web/color/RGB_Color.htm
  41.   return Color.new(0,0,0)         if color == :BLACK
  42.   return Color.new(255,115,115)   if color == :LIGHTRED
  43.   return Color.new(245,11,11)     if color == :RED
  44.   return Color.new(164,3,3)       if color == :DARKRED
  45.   return Color.new(47,46,46)      if color == :DARKGREY
  46.   return Color.new(100,92,92)     if color == :LIGHTGREY
  47.   return Color.new(226,104,250)   if color == :PINK
  48.   return Color.new(243,154,154)   if color == :PINKTWO
  49.   return Color.new(255,160,50)    if color == :GOLD
  50.   return Color.new(255,186,107)   if color == :LIGHTORANGE
  51.   return Color.new(95,54,6)       if color == :BROWN
  52.   return Color.new(122,76,24)     if color == :LIGHTBROWN
  53.   return Color.new(255,246,152)   if color == :LIGHTYELLOW
  54.   return Color.new(242,222,42)    if color == :YELLOW
  55.   return Color.new(80,111,6)      if color == :DARKGREEN
  56.   return Color.new(154,216,8)     if color == :GREEN
  57.   return Color.new(197,252,70)    if color == :LIGHTGREEN
  58.   return Color.new(74,146,91)     if color == :FADEDGREEN
  59.   return Color.new(6,128,92)      if color == :DARKLIGHTBLUE
  60.   return Color.new(18,235,170)    if color == :LIGHTBLUE # Personal preference
  61.   return Color.new(139,247,215)   if color == :SUPERLIGHTBLUE
  62.   return Color.new(35,203,255)    if color == :BLUE
  63.   return Color.new(3,44,114)      if color == :DARKBLUE
  64.   return Color.new(7,3,114)       if color == :SUPERDARKBLUE
  65.   return Color.new(63,6,121)      if color == :DARKPURPLE
  66.   return Color.new(113,16,209)    if color == :PURPLE
  67.   return Color.new(219,183,37)    if color == :ORANGE
  68.   return Color.new(255,255,255)
  69. end
  70.  
  71. QUESTS = [
  72.    Quest.new(0, "Find a Super Rod!", "Find a Super Rod somewhere in the field. This item does not have to be handed over.", "Quest Master", "trchar039", "Queesting Town", :SUPERLIGHTBLUE)
  73. ]
  74.  
  75. def pbCompletedQuest?(id)
  76.   for i in 0...$Trainer.quests.size
  77.     return true if $Trainer.quests[i].completed && $Trainer.quests[i].id == id
  78.   end
  79.   return false
  80. end
  81.  
  82. def pbQuestlog
  83.   Questlog.new
  84. end
  85.  
  86. def pbAddQuest(id)
  87.   for q in QUESTS
  88.     $Trainer.quests << q if q.id == id
  89.   end
  90. end
  91.  
  92. def pbDeleteQuest(id)
  93.   for q in $Trainer.quests
  94.     $Trainer.quests.delete(q) if q.id == id
  95.   end
  96. end
  97.  
  98. def pbSetQuest(id, completed)
  99.   for q in $Trainer.quests
  100.     q.completed = completed if q.id == id
  101.   end
  102. end
  103.  
  104. def pbSetQuestName(id, name)
  105.   for q in $Trainer.quests
  106.     q.name = name if q.id == id
  107.   end
  108. end
  109.  
  110. def pbSetQuestDesc(id, desc)
  111.   for q in $Trainer.quests
  112.     q.desc = desc if q.id == id
  113.   end
  114. end
  115.  
  116. def pbSetQuestNPC(id, npc)
  117.   for q in $Trainer.quests
  118.     q.npc = npc if q.id == id
  119.   end
  120. end
  121.  
  122. def pbSetQuestNPCSprite(id, sprite)
  123.   for q in $Trainer.quests
  124.     q.sprite = sprite if q.id == id
  125.   end
  126. end
  127.  
  128. def pbSetQuestLocation(id, location)
  129.   for q in $Trainer.quests
  130.     q.location = location if q.id == id
  131.   end
  132. end
  133.  
  134. def pbSetQuestColor(id, color)
  135.   for q in $Trainer.quests
  136.     q.color = pbColor(color) if q.id == id
  137.   end
  138. end
  139.  
  140. class QuestSprite < IconSprite
  141.     attr_accessor :quest
  142. end
  143.  
  144. class Questlog
  145.   def initialize
  146.     @page = 0
  147.     @sel_one = 0
  148.     @sel_two = 0
  149.     @scene = 0
  150.     @mode = 0
  151.     @box = 0
  152.     @completed = []
  153.     @ongoing = []
  154.     for q in $Trainer.quests
  155.       @ongoing << q if !q.completed
  156.       @completed << q if q.completed
  157.     end
  158.     @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
  159.     @viewport.z = 99999
  160.     @sprites = {}
  161.     @sprites["main"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
  162.     @sprites["main"].z = 1
  163.     @sprites["main"].opacity = 0
  164.     @main = @sprites["main"].bitmap
  165.     pbSetSystemFont(@main)
  166.     pbDrawOutlineText(@main,0,2-178,512,384,"Quest Log",Color.new(255,255,255),Color.new(0,0,0),1)
  167.    
  168.     @sprites["bg0"] = IconSprite.new(0, 0, @viewport)
  169.     @sprites["bg0"].setBitmap("Graphics/Pictures/pokegearbg")
  170.     @sprites["bg0"].opacity = 0
  171.    
  172.     for i in 0..1
  173.       @sprites["btn#{i}"] = IconSprite.new(0, 0, @viewport)
  174.       @sprites["btn#{i}"].setBitmap("Graphics/Pictures/questBtn")
  175.       @sprites["btn#{i}"].x = 84
  176.       @sprites["btn#{i}"].y = 130 + 56 * i
  177.       @sprites["btn#{i}"].src_rect.height = (@sprites["btn#{i}"].bitmap.height / 2).round
  178.       @sprites["btn#{i}"].src_rect.y = i == 0 ? (@sprites["btn#{i}"].bitmap.height / 2).round : 0
  179.       @sprites["btn#{i}"].opacity = 0
  180.     end
  181.     pbDrawOutlineText(@main,0,142-178,512,384,"Ongoing: " + @ongoing.size.to_s,Color.new(255,255,255),Color.new(0,0,0),1)
  182.     pbDrawOutlineText(@main,0,198-178,512,384,"Completed: " + @completed.size.to_s,Color.new(255,255,255),Color.new(0,0,0),1)
  183.  
  184.     12.times do |i|
  185.       Graphics.update
  186.       @sprites["bg0"].opacity += 32 if i < 8
  187.       @sprites["btn0"].opacity += 32 if i > 3
  188.       @sprites["btn1"].opacity += 32 if i > 3
  189.       @sprites["main"].opacity += 64 if i > 7
  190.     end
  191.     pbUpdate
  192.   end
  193.  
  194.   def pbUpdate
  195.     @frame = 0
  196.     loop do
  197.       @frame += 1
  198.       Graphics.update
  199.       Input.update
  200.       if @scene == 0
  201.         break if Input.trigger?(Input::B)
  202.         pbList(@sel_one) if Input.trigger?(Input::C)
  203.         pbSwitch(:DOWN) if Input.trigger?(Input::DOWN)
  204.         pbSwitch(:UP) if Input.trigger?(Input::UP)
  205.       end
  206.       if @scene == 1
  207.         pbMain if Input.trigger?(Input::B)
  208.         pbMove(:DOWN) if Input.trigger?(Input::DOWN)
  209.         pbMove(:UP) if Input.trigger?(Input::UP)
  210.         pbLoad(0) if Input.trigger?(Input::C)
  211.                 pbArrows
  212.       end
  213.       if @scene == 2
  214.         pbList(@sel_one) if Input.trigger?(Input::B)
  215.         pbChar if @frame == 6 || @frame == 12 || @frame == 18
  216.         pbLoad(1) if Input.trigger?(Input::RIGHT) && @page == 0
  217.         pbLoad(2) if Input.trigger?(Input::LEFT) && @page == 1
  218.       end
  219.       @frame = 0 if @frame == 18
  220.     end
  221.     pbEnd
  222.     pbDisposeSpriteHash(@sprites)
  223.     @viewport.dispose
  224.     pbWait(1)
  225.   end
  226.    
  227.     def pbArrows
  228.         if @frame == 2 || @frame == 4 || @frame == 14 || @frame == 16
  229.             @sprites["up"].y -= 1 rescue nil
  230.             @sprites["down"].y -= 1 rescue nil
  231.         elsif @frame == 6 || @frame == 8 || @frame == 10 || @frame == 12
  232.             @sprites["up"].y += 1 rescue nil
  233.             @sprites["down"].y += 1 rescue nil
  234.         end
  235.     end
  236.    
  237.     def pbLoad(page)
  238.         return if @mode == 0 ? @ongoing.size == 0 : @completed.size == 0
  239.     quest = @mode == 0 ? @ongoing[@sel_two] : @completed[@sel_two]
  240.     pbWait(1)
  241.     if page == 0
  242.       @scene = 2
  243.       @sprites["bg1"] = IconSprite.new(0, 0, @viewport)
  244.       @sprites["bg1"].setBitmap("Graphics/Pictures/questPage1")
  245.       @sprites["bg1"].opacity = 0
  246.       @sprites["pager"] = IconSprite.new(0, 0, @viewport)
  247.       @sprites["pager"].setBitmap("Graphics/Pictures/questPager")
  248.       @sprites["pager"].x = 442
  249.       @sprites["pager"].y = 3
  250.       @sprites["pager"].z = 1
  251.       @sprites["pager"].opacity = 0
  252.       8.times do
  253.         Graphics.update
  254.                 @sprites["up"].opacity -= 32
  255.                 @sprites["down"].opacity -= 32
  256.         @sprites["main"].opacity -= 32
  257.         @sprites["bg1"].opacity += 32
  258.         @sprites["pager"].opacity += 32
  259.         @sprites["char"].opacity -= 32 rescue nil
  260.         for i in 0...@ongoing.size
  261.                     break if i > 5
  262.           @sprites["ongoing#{i}"].opacity -= 32 rescue nil
  263.         end
  264.         for i in 0...@completed.size
  265.                     break if i > 5
  266.           @sprites["completed#{i}"].opacity -= 32 rescue nil
  267.         end
  268.       end
  269.             @sprites["up"].dispose
  270.             @sprites["down"].dispose
  271.       @sprites["char"] = IconSprite.new(0, 0, @viewport)
  272.       @sprites["char"].setBitmap("Graphics/Characters/#{quest.sprite}")
  273.       @sprites["char"].x = 62
  274.       @sprites["char"].y = 130
  275.       @sprites["char"].src_rect.height = (@sprites["char"].bitmap.height / 4).round
  276.       @sprites["char"].src_rect.width = (@sprites["char"].bitmap.width / 4).round
  277.       @sprites["char"].opacity = 0
  278.       @main.clear
  279.             @text.clear rescue nil
  280.             @text2.clear rescue nil
  281.       drawTextExMulti(@main,188,54,318,8,quest.desc,Color.new(255,255,255),Color.new(0,0,0))
  282.       pbDrawOutlineText(@main,188,162,512,384,"From " + quest.npc,Color.new(255,172,115),Color.new(0,0,0))
  283.       pbDrawOutlineText(@main,10,-178,512,384,quest.name,quest.color,Color.new(0,0,0))
  284.       if !quest.completed
  285.         pbDrawOutlineText(@main,8,136,512,384,"Not Completed",pbColor(:LIGHTRED),Color.new(0,0,0))
  286.       else
  287.         pbDrawOutlineText(@main,8,136,512,384,"Completed",pbColor(:LIGHTBLUE),Color.new(0,0,0))
  288.       end
  289.       10.times do |i|
  290.         Graphics.update
  291.         @sprites["main"].opacity += 32
  292.         @sprites["char"].opacity += 32 if i > 1
  293.       end
  294.     elsif page == 1
  295.       @page = 1
  296.       @sprites["bg2"] = IconSprite.new(0, 0, @viewport)
  297.       @sprites["bg2"].setBitmap("Graphics/Pictures/questPage1")
  298.       @sprites["bg2"].x = 512
  299.       @sprites["pager2"] = IconSprite.new(0, 0, @viewport)
  300.       @sprites["pager2"].setBitmap("Graphics/Pictures/questPager")
  301.       @sprites["pager2"].x = 474 + 512
  302.       @sprites["pager2"].y = 3
  303.       @sprites["pager2"].z = 1
  304.       @sprites["char2"].dispose rescue nil
  305.       @sprites["char2"] = IconSprite.new(0, 0, @viewport)
  306.       @sprites["char2"].setBitmap("Graphics/Characters/#{quest.sprite}")
  307.       @sprites["char2"].x = 62 + 512
  308.       @sprites["char2"].y = 130
  309.       @sprites["char2"].z = 1
  310.       @sprites["char2"].src_rect.height = (@sprites["char2"].bitmap.height / 4).round
  311.       @sprites["char2"].src_rect.width = (@sprites["char2"].bitmap.width / 4).round
  312.       @sprites["text2"] = IconSprite.new(@viewport)
  313.       @sprites["text2"].bitmap = Bitmap.new(Graphics.width,Graphics.height)
  314.       @text2 = @sprites["text2"].bitmap
  315.       pbSetSystemFont(@text2)
  316.       pbDrawOutlineText(@text2,188,-122,512,384,"Quest received in:",Color.new(255,255,255),Color.new(0,0,0))
  317.       pbDrawOutlineText(@text2,188,-94,512,384,quest.location,Color.new(255,172,115),Color.new(0,0,0))
  318.       pbDrawOutlineText(@text2,188,-62,512,384,"Quest received at:",Color.new(255,255,255),Color.new(0,0,0))
  319.       time = quest.time.to_s
  320.       txt = time.split(' ')[1] + " " + time.split(' ')[2] + ", " + time.split(' ')[3].split(':')[0] + ":" + time.split(' ')[3].split(':')[1] rescue "?????"
  321.       pbDrawOutlineText(@text2,188,-36,512,384,txt,Color.new(255,172,115),Color.new(0,0,0))
  322.       pbDrawOutlineText(@text2,188,-4,512,384,"Quest received from:",Color.new(255,255,255),Color.new(0,0,0))
  323.       pbDrawOutlineText(@text2,188,22,512,384,quest.npc,Color.new(255,172,115),Color.new(0,0,0))
  324.       pbDrawOutlineText(@text2,188,162,512,384,"From " + quest.npc,Color.new(255,172,115),Color.new(0,0,0))
  325.       pbDrawOutlineText(@text2,10,-178,512,384,quest.name,quest.color,Color.new(0,0,0))
  326.       if !quest.completed
  327.         pbDrawOutlineText(@text2,8,136,512,384,"Not Completed",pbColor(:LIGHTRED),Color.new(0,0,0))
  328.       else
  329.         pbDrawOutlineText(@text2,8,136,512,384,"Completed",pbColor(:LIGHTBLUE),Color.new(0,0,0))
  330.       end
  331.       @sprites["text2"].x = 512
  332.       16.times do
  333.         Graphics.update
  334.         @sprites["bg1"].x -= (@sprites["bg1"].x + 526) * 0.2
  335.         @sprites["pager"].x -= (@sprites["pager"].x + 526) * 0.2 rescue nil
  336.         @sprites["char"].x -= (@sprites["char"].x + 526) * 0.2 rescue nil
  337.         @sprites["main"].x -= (@sprites["main"].x + 526) * 0.2
  338.         @sprites["text"].x -= (@sprites["text"].x + 526) * 0.2 rescue nil
  339.         @sprites["bg2"].x -= (@sprites["bg2"].x + 14) * 0.2
  340.         @sprites["pager2"].x -= (@sprites["pager2"].x - 459) * 0.2
  341.         @sprites["text2"].x -= (@sprites["text2"].x + 14) * 0.2
  342.         @sprites["char2"].x -= (@sprites["char2"].x - 47) * 0.2
  343.       end
  344.       @sprites["main"].x = 0
  345.       @main.clear
  346.     else
  347.       @page = 0
  348.       @sprites["bg1"] = IconSprite.new(0, 0, @viewport)
  349.       @sprites["bg1"].setBitmap("Graphics/Pictures/questPage1")
  350.       @sprites["bg1"].x = -512
  351.       @sprites["pager"] = IconSprite.new(0, 0, @viewport)
  352.       @sprites["pager"].setBitmap("Graphics/Pictures/questPager")
  353.       @sprites["pager"].x = 442 - 512
  354.       @sprites["pager"].y = 3
  355.       @sprites["pager"].z = 1
  356.       @sprites["text"] = IconSprite.new(@viewport)
  357.       @sprites["text"].bitmap = Bitmap.new(Graphics.width,Graphics.height)
  358.       @text = @sprites["text"].bitmap
  359.       pbSetSystemFont(@text)
  360.       @sprites["char"].dispose rescue nil
  361.       @sprites["char"] = IconSprite.new(0, 0, @viewport)
  362.       @sprites["char"].setBitmap("Graphics/Characters/#{quest.sprite}")
  363.       @sprites["char"].x = 62 - 512
  364.       @sprites["char"].y = 130
  365.       @sprites["char"].z = 1
  366.       @sprites["char"].src_rect.height = (@sprites["char"].bitmap.height / 4).round
  367.       @sprites["char"].src_rect.width = (@sprites["char"].bitmap.width / 4).round
  368.       drawTextExMulti(@text,188,54,318,8,quest.desc,Color.new(255,255,255),Color.new(0,0,0))
  369.       pbDrawOutlineText(@text,188,162,512,384,"From " + quest.npc,Color.new(255,172,115),Color.new(0,0,0))
  370.       pbDrawOutlineText(@text,10,-178,512,384,quest.name,quest.color,Color.new(0,0,0))
  371.       if !quest.completed
  372.         pbDrawOutlineText(@text,8,136,512,384,"Not Completed",pbColor(:LIGHTRED),Color.new(0,0,0))
  373.       else
  374.         pbDrawOutlineText(@text,8,136,512,384,"Completed",pbColor(:LIGHTBLUE),Color.new(0,0,0))
  375.       end
  376.       @sprites["text"].x = -512
  377.       16.times do
  378.         Graphics.update
  379.         @sprites["bg1"].x -= (@sprites["bg1"].x - 14) * 0.2
  380.         @sprites["pager"].x -= (@sprites["pager"].x - 457) * 0.2
  381.         @sprites["bg2"].x -= (@sprites["bg2"].x - 526) * 0.2
  382.         @sprites["pager2"].x -= (@sprites["pager2"].x - 526) * 0.2
  383.         @sprites["char2"].x -= (@sprites["char2"].x - 526) * 0.2
  384.         @sprites["text2"].x -= (@sprites["text2"].x - 526) * 0.2
  385.         @sprites["text"].x -= (@sprites["text"].x - 15) * 0.2
  386.         @sprites["char"].x -= (@sprites["char"].x - 76) * 0.2
  387.       end
  388.     end
  389.   end
  390.  
  391.   def pbChar
  392.     @sprites["char"].src_rect.x += (@sprites["char"].bitmap.width / 4).round rescue nil
  393.     @sprites["char"].src_rect.x = 0 if @sprites["char"].src_rect.x >= @sprites["char"].bitmap.width rescue nil
  394.     @sprites["char2"].src_rect.x += (@sprites["char2"].bitmap.width / 4).round rescue nil
  395.     @sprites["char2"].src_rect.x = 0 if @sprites["char2"].src_rect.x >= @sprites["char2"].bitmap.width rescue nil
  396.   end
  397.  
  398.   def pbMain
  399.     pbWait(1)
  400.     12.times do |i|
  401.       Graphics.update
  402.       @sprites["main"].opacity -= 32 rescue nil
  403.       @sprites["bg0"].opacity += 32 if @sprites["bg0"].opacity < 255
  404.       @sprites["bg1"].opacity -= 32 rescue nil if i > 3
  405.       @sprites["bg2"].opacity -= 32 rescue nil if i > 3
  406.       @sprites["pager"].opacity -= 32 rescue nil if i > 3
  407.       @sprites["pager2"].opacity -= 32 rescue nil if i > 3
  408.       @sprites["char"].opacity -= 32 rescue nil
  409.       @sprites["char2"].opacity -= 32 rescue nil
  410.       @sprites["text"].opacity -= 32 rescue nil
  411.             @sprites["up"].opacity -= 32
  412.             @sprites["down"].opacity -= 32
  413.       for j in 0...@ongoing.size
  414.         @sprites["ongoing#{j}"].opacity -= 32 rescue nil
  415.       end
  416.       for j in 0...@completed.size
  417.         @sprites["completed#{j}"].opacity -= 32 rescue nil
  418.       end
  419.     end
  420.         @sprites["up"].dispose
  421.         @sprites["down"].dispose
  422.     @main.clear
  423.         @text.clear rescue nil
  424.         @text2.clear rescue nil
  425.     @sel_two = 0
  426.     @scene = 0
  427.     pbDrawOutlineText(@main,0,2-178,512,384,"Quest Log",Color.new(255,255,255),Color.new(0,0,0),1)
  428.     pbDrawOutlineText(@main,0,142-178,512,384,"Ongoing: " + @ongoing.size.to_s,Color.new(255,255,255),Color.new(0,0,0),1)
  429.     pbDrawOutlineText(@main,0,198-178,512,384,"Completed: " + @completed.size.to_s,Color.new(255,255,255),Color.new(0,0,0),1)
  430.     12.times do |i|
  431.       Graphics.update
  432.       @sprites["bg0"].opacity += 32 if i < 8
  433.       @sprites["btn0"].opacity += 32 if i > 3
  434.       @sprites["btn1"].opacity += 32 if i > 3
  435.       @sprites["main"].opacity += 48 if i > 5
  436.     end
  437.   end
  438.  
  439.   def pbSwitch(dir)
  440.     if dir == :DOWN
  441.       return if @sel_one == 1
  442.       @sprites["btn#{@sel_one}"].src_rect.y = 0
  443.       @sel_one += 1
  444.       @sprites["btn#{@sel_one}"].src_rect.y = (@sprites["btn#{@sel_one}"].bitmap.height / 2).round
  445.     else
  446.       return if @sel_one == 0
  447.       @sprites["btn#{@sel_one}"].src_rect.y = 0
  448.       @sel_one -= 1
  449.       @sprites["btn#{@sel_one}"].src_rect.y = (@sprites["btn#{@sel_one}"].bitmap.height / 2).round
  450.     end
  451.   end
  452.  
  453.   def pbMove(dir)
  454.     pbWait(1)
  455.     if dir == :DOWN
  456.       return if @sel_two == @ongoing.size - 1 && @mode == 0
  457.             return if @sel_two == @completed.size - 1 && @mode == 1
  458.             return if @ongoing.size == 0 && @mode == 0
  459.             return if @completed.size == 0 && @mode == 1
  460.             @sprites["ongoing#{@box}"].src_rect.y = 0 if @mode == 0
  461.             @sprites["completed#{@box}"].src_rect.y = 0 if @mode == 1
  462.             @sel_two += 1
  463.             @box += 1
  464.             @box = 5 if @box > 5
  465.       @sprites["ongoing#{@box}"].src_rect.y = (@sprites["ongoing#{@box}"].bitmap.height / 2).round if @mode == 0
  466.             @sprites["completed#{@box}"].src_rect.y = (@sprites["completed#{@box}"].bitmap.height / 2).round if @mode == 1
  467.             if @box == 5
  468.                 @main.clear
  469.                 if @mode == 0
  470.                     for i in 0...@ongoing.size
  471.                         break if i > 5
  472.                         j = (i==0 ? -5 : (i==1 ? -4 : (i==2 ? -3 : (i==3 ? -2 : (i==4 ? -1 : 0)))))
  473.                         @sprites["ongoing#{i}"].quest = @ongoing[@sel_two+j]
  474.                         pbDrawOutlineText(@main,11,-124+52*i,512,384,@ongoing[@sel_two+j].name,@ongoing[@sel_two+j].color,Color.new(0,0,0),1)
  475.                     end
  476.                     if @sprites["ongoing0"].quest != @ongoing[0]
  477.                         @sprites["up"].visible = true
  478.                     else
  479.                         @sprites["up"].visible = false
  480.                     end
  481.                     if @sprites["ongoing5"].quest != @ongoing[@ongoing.size - 1]
  482.                         @sprites["down"].visible = true
  483.                     else
  484.                         @sprites["down"].visible = false
  485.                     end
  486.                     pbDrawOutlineText(@main,0,2-178,512,384,"Ongoing Quests",Color.new(255,255,255),Color.new(0,0,0),1)
  487.                 else
  488.                     for i in 0...@completed.size
  489.                         break if i > 5
  490.                         j = (i==0 ? -5 : (i==1 ? -4 : (i==2 ? -3 : (i==3 ? -2 : (i==4 ? -1 : 0)))))
  491.                         @sprites["completed#{i}"].quest = @completed[@sel_two+j]
  492.                         pbDrawOutlineText(@main,11,-124+52*i,512,384,@completed[@sel_two+j].name,@completed[@sel_two+j].color,Color.new(0,0,0),1)
  493.                     end
  494.                     if @sprites["completed0"].quest != @completed[0]
  495.                         @sprites["up"].visible = true
  496.                     else
  497.                         @sprites["up"].visible = false
  498.                     end
  499.                     if @sprites["completed5"].quest != @completed[@completed.size - 1]
  500.                         @sprites["down"].visible = true
  501.                     else
  502.                         @sprites["down"].visible = false
  503.                     end
  504.                     pbDrawOutlineText(@main,0,2-178,512,384,"Completed Quests",Color.new(255,255,255),Color.new(0,0,0),1)
  505.                 end
  506.             end
  507.     else
  508.       return if @sel_two == 0
  509.             return if @ongoing.size == 0 && @mode == 0
  510.             return if @completed.size == 0 && @mode == 1
  511.       @sprites["ongoing#{@box}"].src_rect.y = 0 if @mode == 0
  512.             @sprites["completed#{@box}"].src_rect.y = 0 if @mode == 1
  513.       @sel_two -= 1
  514.             @box -= 1
  515.             @box = 0 if @box < 0
  516.       @sprites["ongoing#{@box}"].src_rect.y = (@sprites["ongoing#{@box}"].bitmap.height / 2).round if @mode == 0
  517.             @sprites["completed#{@box}"].src_rect.y = (@sprites["completed#{@box}"].bitmap.height / 2).round if @mode == 1
  518.             if @box == 0
  519.                 @main.clear
  520.                 if @mode == 0
  521.                     for i in 0...@ongoing.size
  522.                         break if i > 5
  523.                         @sprites["ongoing#{i}"].quest = @ongoing[@sel_two+i]
  524.                         pbDrawOutlineText(@main,11,-124+52*i,512,384,@ongoing[@sel_two+i].name,@ongoing[@sel_two+i].color,Color.new(0,0,0),1)
  525.                     end
  526.                     if @sprites["ongoing5"].quest != @ongoing[0]
  527.                         @sprites["up"].visible = true
  528.                     else
  529.                         @sprites["up"].visible = false
  530.                     end
  531.                     if @sprites["ongoing5"].quest != @ongoing[@ongoing.size - 1]
  532.                         @sprites["down"].visible = true
  533.                     else
  534.                         @sprites["down"].visible = false
  535.                     end
  536.                     pbDrawOutlineText(@main,0,2-178,512,384,"Ongoing Quests",Color.new(255,255,255),Color.new(0,0,0),1)
  537.                 else
  538.                     for i in 0...@completed.size
  539.                         break if i > 5
  540.                         @sprites["completed#{i}"].quest = @completed[@sel_two+i]
  541.                         pbDrawOutlineText(@main,11,-124+52*i,512,384,@completed[@sel_two+i].name,@completed[@sel_two+i].color,Color.new(0,0,0),1)
  542.                     end
  543.                     if @sprites["completed0"].quest != @completed[0]
  544.                         @sprites["up"].visible = true
  545.                     else
  546.                         @sprites["up"].visible = false
  547.                     end
  548.                     if @sprites["completed5"].quest != @completed[@completed.size - 1]
  549.                         @sprites["down"].visible = true
  550.                     else
  551.                         @sprites["down"].visible = false
  552.                     end
  553.                     pbDrawOutlineText(@main,0,2-178,512,384,"Completed Quests",Color.new(255,255,255),Color.new(0,0,0),1)
  554.                 end
  555.             end
  556.     end
  557.   end
  558.  
  559.   def pbList(id)
  560.     pbWait(1)
  561.     @sel_two = 0
  562.     @page = 0
  563.     @scene = 1
  564.     @mode = id
  565.     @box = 0
  566.         @sprites["up"] = IconSprite.new(0, 0, @viewport)
  567.         @sprites["up"].setBitmap("Graphics/Pictures/questArrow")
  568.         @sprites["up"].zoom_x = 1.25
  569.         @sprites["up"].zoom_y = 1.25
  570.         @sprites["up"].x = Graphics.width / 2
  571.         @sprites["up"].y = 36
  572.         @sprites["up"].z = 2
  573.         @sprites["up"].visible = false
  574.         @sprites["down"] = IconSprite.new(0, 0, @viewport)
  575.         @sprites["down"].setBitmap("Graphics/Pictures/questArrow")
  576.         @sprites["down"].zoom_x = 1.25
  577.         @sprites["down"].zoom_y = 1.25
  578.         @sprites["down"].x = Graphics.width / 2 + 21
  579.         @sprites["down"].y = 360
  580.         @sprites["down"].z = 2
  581.         @sprites["down"].angle = 180
  582.         @sprites["down"].visible = @mode == 0 ? @ongoing.size > 6 : @completed.size > 6
  583.         @sprites["down"].opacity = 0
  584.     10.times do |i|
  585.       Graphics.update
  586.       @sprites["btn0"].opacity -= 32 if i > 1
  587.       @sprites["btn1"].opacity -= 32 if i > 1
  588.       @sprites["main"].opacity -= 32 if i > 1
  589.       @sprites["bg1"].opacity -= 32 rescue nil if i > 1
  590.       @sprites["bg2"].opacity -= 32 rescue nil if i > 1
  591.       @sprites["pager"].opacity -= 32 rescue nil if i > 1
  592.       @sprites["pager2"].opacity -= 32 rescue nil if i > 1
  593.       @sprites["char"].opacity -= 32 rescue nil
  594.       @sprites["char2"].opacity -= 32 rescue nil
  595.       @sprites["text"].opacity -= 32 rescue nil if i > 1
  596.       @sprites["text2"].opacity -= 32 rescue nil if i > 1
  597.     end
  598.     @main.clear
  599.         @text.clear rescue nil
  600.         @text2.clear rescue nil
  601.     if id == 0
  602.       for i in 0...@ongoing.size
  603.                 break if i > 5
  604.         @sprites["ongoing#{i}"] = QuestSprite.new(0, 0, @viewport)
  605.         @sprites["ongoing#{i}"].setBitmap("Graphics/Pictures/questBtn")
  606.                 @sprites["ongoing#{i}"].quest = @ongoing[i]
  607.         @sprites["ongoing#{i}"].x = 94
  608.         @sprites["ongoing#{i}"].y = 42 + 52 * i
  609.         @sprites["ongoing#{i}"].src_rect.height = (@sprites["ongoing#{i}"].bitmap.height / 2).round
  610.         @sprites["ongoing#{i}"].src_rect.y = (@sprites["ongoing#{i}"].bitmap.height / 2).round if i == @sel_two
  611.         @sprites["ongoing#{i}"].opacity = 0
  612.         pbDrawOutlineText(@main,11,-124+52*i,512,384,@ongoing[i].name,@ongoing[i].color,Color.new(0,0,0),1)
  613.       end
  614.       pbDrawOutlineText(@main,0,0,512,384,"No ongoing quests",pbColor(:WHITE),pbColor(:BLACK),1) if @ongoing.size == 0
  615.       pbDrawOutlineText(@main,0,2-178,512,384,"Ongoing Quests",Color.new(255,255,255),Color.new(0,0,0),1)
  616.       12.times do |i|
  617.         Graphics.update
  618.         @sprites["main"].opacity += 32 if i < 8
  619.         for j in 0...@ongoing.size
  620.                     break if j > 5
  621.           @sprites["ongoing#{j}"].opacity += 32 if i > 3
  622.         end
  623.       end
  624.     elsif id == 1
  625.       for i in 0...@completed.size
  626.                 break if i > 5
  627.         @sprites["completed#{i}"] = QuestSprite.new(0, 0, @viewport)
  628.         @sprites["completed#{i}"].setBitmap("Graphics/Pictures/questBtn")
  629.         @sprites["completed#{i}"].x = 94
  630.         @sprites["completed#{i}"].y = 42 + 52 * i
  631.         @sprites["completed#{i}"].src_rect.height = (@sprites["completed#{i}"].bitmap.height / 2).round
  632.         @sprites["completed#{i}"].src_rect.y = (@sprites["completed#{i}"].bitmap.height / 2).round if i == @sel_two
  633.         @sprites["completed#{i}"].opacity = 0
  634.         pbDrawOutlineText(@main,11,-124+52*i,512,384,@completed[i].name,@completed[i].color,Color.new(0,0,0),1)
  635.       end
  636.       pbDrawOutlineText(@main,0,0,512,384,"No completed quests",pbColor(:WHITE),pbColor(:BLACK),1) if @completed.size == 0
  637.       pbDrawOutlineText(@main,0,2-178,512,384,"Completed Quests",Color.new(255,255,255),Color.new(0,0,0),1)
  638.       12.times do |i|
  639.         Graphics.update
  640.         @sprites["main"].opacity += 32 if i < 8
  641.                 @sprites["down"].opacity += 32 if i > 3
  642.         for j in 0...@completed.size
  643.                     break if j > 5
  644.           @sprites["completed#{j}"].opacity += 32 if i > 3
  645.         end
  646.       end
  647.     end
  648.   end
  649.  
  650.   def pbEnd
  651.     12.times do |i|
  652.       Graphics.update
  653.       @sprites["bg0"].opacity -= 32 if i > 3
  654.       @sprites["btn0"].opacity -= 32
  655.       @sprites["btn1"].opacity -= 32
  656.       @sprites["main"].opacity -= 32
  657.       @sprites["char"].opacity -= 40 rescue nil
  658.       @sprites["char2"].opacity -= 40 rescue nil
  659.     end
  660.   end
  661. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement