Modding Help .lua story quest HELP!

Discussion in 'Starbound Modding' started by Noah Nebula, Apr 16, 2019.

  1. Noah Nebula

    Noah Nebula Sandwich Man

    I am trying to set up a very simple quest;

    1. Find Commander Draii
    2. Talk to Commander Draii

    Can someone help me set this up?

    Here is the script I have so far.
    Code:
    require "/scripts/util.lua"
    require "/quests/scripts/questutil.lua"
    require "/scripts/vec2.lua"
    require "/quests/scripts/portraits.lua"
    
    function init()
      storage.complete = storage.complete or false
      self.compassUpdate = config.getParameter("compassUpdate", 0.5)
      self.descriptions = config.getParameter("descriptions")
    
      self.npcUid = config.getParameter("npcUid")
    
      self.findRange = config.getParameter("findRange")
      self.exploreTime = config.getParameter("exploreTime")
      storage.exploreTimer = storage.exploreTimer or 0
      storage.bookmarked = storage.bookmarked or false
    
      setPortraits()
    
      storage.stage = storage.stage or 1
      self.stages = {
        findNpc,
        foundNpc,
      }
    
      self.state = FSM:new()
      self.state:set(self.stages[storage.stage])
    
      storage.gateActive = storage.gateActive or false
    end
    
    function questInteract(entityId)
      if self.onInteract then
        return self.onInteract(entityId)
      end
    end
    
    function questStart()
      player.upgradeShip(config.getParameter("shipUpgrade"))
    end
    
    function update(dt)
      self.state:update(dt)
    end
    
    function findNpc()
      quest.setProgress(nil)
      quest.setObjectiveList({{self.descriptions.findNpc, false}})
    
      self.state:set(self.stages[storage.stage])
    
        storage.stage = 1
    end
    
    function foundNpc()
      quest.setProgress(nil)
      quest.setCompassDirection(nil)
      player.radioMessage("gaterepair-foundNpc1")
      player.radioMessage("gaterepair-foundNpc1b")
      player.radioMessage("gaterepair-foundNpc2")
      storage.stage = 2
    
      util.wait(14)
    
      self.state:set(self.stages[storage.stage])
    end
    
    function questComplete()
      setPortraits()
      questutil.questCompleteActions()
    end
    
     
  2. projectmayhem

    projectmayhem Spaceman Spiff

    I would try something like this... Its pretty cut/paste from the shiprepair quest

    Code:
    require "/scripts/util.lua"
    require "/scripts/vec2.lua"
    require "/quests/scripts/portraits.lua"
    require "/quests/scripts/questutil.lua"
    
    function init()
      setPortraits()
    
      storage.complete = storage.complete or false
    
      self.compassUpdate = config.getParameter("compassUpdate", 0.5)
    
      self.DraiiUid = config.getParameter("DraiiUid")
    
       storage.stage = storage.stage or 1
      self.stages = {
       findDraii
      }
    
      self.state = FSM:new()
      self.state:set(self.stages[storage.stage])
    end
    
    function questInteract(entityId)
      if self.onInteract then
        return self.onInteract(entityId)
      end
    end
    
    function questStart()
    end
    
    function update(dt)
      self.state:update(dt)
    
      if storage.complete then
        quest.setCanTurnIn(true)
      end
    end
    
    function questComplete()
      setPortraits()
      questutil.questCompleteActions()
    end
    
    
    
    function findDraii()
      quest.setIndicators({})
      quest.setCompassDirection(nil)
      quest.setCanTurnIn(true)
    
      quest.setObjectiveList({{config.getParameter("descriptions.findDraii"), false}})
    
      local trackDraii = util.uniqueEntityTracker(self.DraiiUid, self.compassUpdate)
      while true do
        questutil.pointCompassAt(trackDraii())
    
        coroutine.yield()
      end
    end
    
    And something like this for the quest file

    Code:
    {
      "id" : "findDraii",
      "mainQuest" : true,
      "title" : "Find Draii Yo!",
      "prerequisites" : [ "If you want a quest pre-req, put it here" ],
      "text" : "Text the players sees when reading the quest",
      "completionText" : "What they see when they are done",
      "moneyRange" : [50, 50],
      "rewards" : [
        [ ["rewardbag", 1] ]
      ],
      "canBeAbandoned" : false,
      "updateDelta" : 10,
      "script" : "/quests/scripts/story/YourLuaFile.lua",
      "scriptConfig" : {
        "portraits" : {
          "questStarted" : "questGiver",
          "questComplete" : "questReceiver"
        },
    
        "descriptions" : {
         
          "findEsther" : "^green;Talk to ^orange;Commander  Draii^white; at the ^orange;Insert Location here if there is a set location^white;"
        },
    
        "compassUpdate" : 0.2,
    
       
        "DraiiUid" : "Enter Draii's Uid, this should be in his file"
      }
    }
    
     

Share This Page