Advertisement
Guest User

Quest ideas

a guest
Oct 17th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.68 KB | None | 0 0
  1. #===============================================================================
  2. #  Name Space
  3. #===============================================================================
  4. module Quests
  5.   #  class variable to store quessts
  6.   @@quests = {
  7.     :main => [],
  8.     :sub => []
  9.   }
  10.   #  adds quest to a list of possible quests
  11.   def self.registerQuest(id, style, description, parent=nil)
  12.     type = parent.nil? ? :sub : :main
  13.     @@quests[type].push(Quest.new(id, style, description, parent))
  14.   end
  15.   #  gets quest from ID
  16.   def self.getQuest(id)
  17.     type, i = self.getTypeIndex(id)
  18.     return nil if nil
  19.     return @@quests[type][i]
  20.   end
  21.   #  sets quest as completed
  22.   def self.completeQuest(id)
  23.     type, i = self.getTypeIndex(id)
  24.     @@quests[type][i].status = "complete"
  25.   end
  26.   #  gets quest type and index from ID
  27.   def self.getTypeIndex(id)
  28.     for t in [:main, :sub]
  29.       i = 0
  30.       for q in @@quests[t]
  31.         return t, i if q.id == id
  32.         i += 1
  33.       end
  34.     end
  35.     return nil
  36.   end
  37. end
  38. #===============================================================================
  39. #  Quest Object
  40. #===============================================================================
  41. class Quest
  42.   #  attribute access
  43.   attr_accessor :id
  44.   attr_accessor :style
  45.   attr_accessor :description
  46.   attr_accessor :parent
  47.   attr_accessor :started
  48.   #  constructor
  49.   def initialize(id, style, description, parent=nil)
  50.     # quest ID
  51.     @id = id
  52.     # styling
  53.     @style = style
  54.     # quest description
  55.     @description = description
  56.     # parent (main) quest ID if applicable
  57.     @parent = parent.nil? ? id : parent
  58.     # status of the quest
  59.     @status = "started"
  60.   end
  61. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement