Modding Help Components of building quest-related mods! (Seeking dev attention, please!)

Discussion in 'Starbound Modding' started by Kitaen Silva, Jan 22, 2014.

  1. Kitaen Silva

    Kitaen Silva Phantasmal Quasar

    Hello again everyone~!

    I've noticed that a lot of people have been poking around at quests.config and the related *.questtemplate files, but that nobody has managed to successfully produce any results that deviate from the existing quest conventions and rules - that is...

    You must have the quest at the beginning of the game, OR, you must hook into an existing tutorial quest.
    Quest "kinds" for completion criteria are limited strictly to "gather item(s) (quantity)" as far as we have been able to determine thus far.

    (Current alternatives to "gather" that have been attempted without any results: "drop", "consume", "use", "using", "usable", "consumable", "eat", "interact", "craft", "throw"... in fact, using these terms crashes the game upon loading a new character.)
    You may start a character with multiple initial quests, but may not branch quests by having a quest with multiple "followUp" quests.
    You may not trigger the start of a quest mid-game if it is not a follow-up quest to an initial quest or tutorial, hooked into the previous quest within it's "followUp" field.


    So far, those of us working on the TouhouBound overhaul mod have come across a few roundabout tricks to [somewhat] achieve a few things, but they still follow existing conventions and aren't really what we or other mod authors are trying to achieve. What Alnitak and I have discovered so far...

    You can have your quest be automatically accepted, and silently at that, so that players aren't prompted to accept the request and are only aware of it after they have completed the quest and are accepting the reward. This can allow you to have a simulated delay in your quest being started through this silent accept of the initial quest, though the quest is only completable after the player collects a certain amount of pixels or mundane items, and it will trigger the follow-up quests. I'll use one of our upcoming quests from TouhouBound for an example...

    >New character
    >Start game, appears on ship
    >Silent quest starts, no need to accept since it's automatically accepted due to silent nature.
    >Matter Manipulator quest starts normally, player is unaware of silent quest.
    >game is played as per normal.
    >After player has collected 5,000 dirt, the quest completes and as far as the player is aware, this is the first prompt in the questline.

    "While you were contending with moving all this dirt, you unearthed a metal-bound book..."

    >Quest consumes 5,000 dirt, and rewards the player with 5,000 dirt and two copies of a codex, with a follow up into the next quest.
    >One codex is consumed by the player when they use it, the other is a completion component of the follow-up quest and will be consumed by the quest.*

    *Obviously at this point, it would be best if the next quest were triggered to begin when the player uses the one codex so that two codices aren't needed as the first quest reward. At the very least, this could be somewhat simulated through a second silent quest that completes upon the use of the codex, and is followed up by a non-silent quest. But we haven't yet discovered these alternative conditions for quest start and completion.

    Anyway, I have seen that a lot of you also have questions in regards to quest-related mechanics, so we should probably combine our efforts here and try to uncover something conclusive, or maybe a dev is willing to poke in and elaborate on what is and is not possible with current quest mechanics, because a lot of us are interested in going down some serious storytelling roads with it.

    How Alnitak and I have managed a "silent" quest for TouhouBound...:
    Code:
    {
      "id" : "test.gearup",
      "title" : "",
      "text" : "",
      "completionText" : "Test...",
      "conditions" : [ ],
      "moneyRange" : [ ],
      "rewards" : [
        [ [ "testrewarditem", 1] ]
      ],
      "planetMode" : "none",
      "questDungeons" : [ ],
      "followUp" : "test2.gearup"
    }
    Setting no title or "text" seems to not even bring up the first prompt in which one would normally click the [Accept] button, and setting no conditions at all pretty much serves the same purpose as automatically giving the character an item or set of items and announcing that it's doing so. This in and of itself could be used to auto-give an item or set of starter items at the beginning of a game or tier, for example.

    If you have any information to contribute toward quest-related modding help, please post here~!

    What people in the community are currently asking about quests and how to mod them:

    "How can I have a quest's rewards pull from a *.treasurepool?"
    - This one would be interesting to figure out, I could see loads of application for this, especially for things like generated weaponry as the one asking this question is hoping to achieve. Unfortunately, I don't personally see a way that this would be feasible, at least not just yet.

    "Is there a way to have a quest reference a *.lua script so we can apply some new logic to quest mechanics?"
    - Alnitak and I are working on this one right now, and we may be onto something. Please stay tuned!

    "How can I make a quest trigger through anything other than the completion of another quest?"
    - I don't think anyone outside of the devs know that at the moment, but Alnitak and I are running pretty thorough tests and guessing games to try and determine some additional information. Nothing terribly new at the moment aside from what I detailed above on "silent" quests, and the suggestion for having quests or questlines be delayed.

    "Is there a way to set up randomly-generated quests that fetch info on a system, planet, or the like?"
    - I think what this one is asking is if there's a way to have a quest or type of quest that basically uses a similar function to the Navigation console's [Find Random] button to snag a random planet, it's related info, NPCs, dungeons, and chest content, and then translate that into a "random quest". I have an idea for the application of such a thing, so I'll probably be looking into it myself. Can't guarantee I'll pull anything up though.

    "Is there a way for quest dialogue to pull the name of the character and use it in the completion or start of a quest?"
    - I can't imagine a way that would be possible under the current quest convention standard, but maybe if we can make some headway on getting quests to make use of scripts, it might be plausible to assume a script could be made that pulls the character's name and displays it in place of a certain string of characters. This same script could also be referenced by NPCs to make the universe seem much smaller with everyone knowing your character by name. This could also be extended for other things, like character titles. For a character who's randomly-generated name is "Trunkteaser" and has acquired the title "Gangrel-Smacker":

    In quests:
    "Hello, my name is <getcharactername> the <title>, and I am an interstellar adventurer!"
    =
    "Hello, my name is Trunkteaser the Gangrel-Smacker, and I am an interstellar adventurer!"

    In NPC dialogue:
    "Hey, I know you! You're <getcharactername> the <title>, from the legends!"
    =
    "Hey, I know you! You're Trunkteaser the Gangrel-Smacker, from the legends!"

    (Dat keming. Such letter spacing. Very read.)

    "How can I set multiple follow-up quests?"
    - Currently, attempts at achieving this have not ended in success as far as I can tell from the rest of the community's efforts. We'll be trying it as well, and if we come across something useful, we'll produce the results.

    "Can I set quests to read the player's current status, such as health, hunger, temperature, breath, energy, buffs/debuffs, or equipment?"
    - Once more, not as far as we have currently been able to determine, but perhaps a script might make this possible. If Alnitak and I can get some headway in our attempts at quest scripts, we'll see what we can manage. Can't make any promises, though.

    "What can I do with these fields for "planetMode" and "questDungeons" I see here at the bottom of my *.questtemplate?"
    - Nobody knows this just yet either. I'd be lying if I said I wasn't curious, and I do intend to poke around with that at some point, so maybe I'll learn something.

    "How can I set my quest's rewards to be a generated weapon or gun?"
    - Actually, this one is currently possible! User "p0pp3t" posted how this is possible in another thread:
    "For the silent quests you mentioned, does the quest still register in the quest log?"
    - I'm not sure just yet, but I can probably have that information by tonight. If it does show in the questlog, I can reasonably assume that it would show as nothing more than a blank button, and the log's information on the quest is also blank since there's no text to display, but if the questlog doesn't show the quest... well, it really is a silent quest, then~! Either way, this bears looking into, both for seeing what [does] happen, and whether or not there are ways to have info in the quest start / end be different from the info that shows in the guest log itself.

    ((I can add more questions to this list if you think of them, but for now... I'm going to open the thread~! Let's brainstorm and see what we can't come up with.))
     
    Last edited: Jan 22, 2014
    TohKlidan and warcore like this.
  2. warcore

    warcore Existential Complex

    if the player opens there quest log can they see these silent quests? or are they hidden
     
  3. Kitaen Silva

    Kitaen Silva Phantasmal Quasar

    Hmm, that's actually a good question. I had forgotten that the game offers a questlog, so I'll have to look into that. It probably would, but it might not show the quest's name since it doesn't have one to show, so it'd probably just be a blank button. I'll amend the first post when I find that out, so thank you for asking!
     
    warcore likes this.
  4. CaptainKobold

    CaptainKobold Pangalactic Porcupine

    I set up a quest without a title or text and for whatever reason it still came up. Here is what my code is looking like that the moment.

    Code:
    {
      "id" : "koboldhammeredsword.gearup",
      "title" : "",
      "text" : "",
      "completionText" : "Pounding iron ore isn't easy, but it's certainly better than dealing with an anvil. This ^green;hammered iron sword^white; would be perfect for a wolf spirit to embrace.",
      "conditions" : [
        { "kind" : "gather", "item" : [ "hammeredironsword", 1] }
      ],
      "moneyRange" : [10, 10],
      "rewards" : [
        [ [ "hammeredironsword", 1] ]
      ],
      "planetMode" : "none",
      "questDungeons" : [ ]
    }
    
    Any thoughts on why this may be? Still experimenting with it a bit.
     
  5. The | Suit

    The | Suit Agent S. Forum Moderator

    Quest system is coming up in the coming major patches.
    Bartwe was working on it via twitch stream a few days back
     
  6. CaptainKobold

    CaptainKobold Pangalactic Porcupine

    Oh, fantastic! Never mind trying to get around it, then!
     
  7. sayter

    sayter The Waste of Time

    Can't wait, too. It'll make things so much more interesting. And hopefully a way to have thousands of quests without compatibility issues will be introduced. IE: being able to place quests via item into your questlog, similar to how chips unlock sectors.
     
    CaptainKobold likes this.
  8. Errors4l

    Errors4l Spaceman Spiff

    Bump for justice.

    With the following questtemplate, I've not been able to create such 'silent' quest (unlocked at beginning).
    Code:
    {
      "id" : "silentquest.gearup",
      "title" : "",
      "text" : "",
      "completionText" : "",
    "conditions" : [
        { "kind" : "gather", "item" : [ "money", 1000] }
      ],
      "moneyRange" : [100, 100],
      "rewards" : [
        [ [ "rainbowwoodblock", 200] ]
      ],
      "planetMode" : "none",
      "questDungeons" : [ ],
      "followUp" : "followupquest.gearup"
    }
    Instead, I simply obtain the following quest:
    [​IMG]
    Here's the quests.config I used:
    Code:
    {
      "__merge" : [],
      "initialquests" : {
        "__merge" : [],
        "glitch" : [ "owltutorial.gearup", "silentquest.gearup" ],
        "human" : [ "owltutorial.gearup" ],
        "avian" : [ "owltutorial.gearup" ],
        "apex" : [ "owltutorial.gearup" ],
        "floran" : [ "owltutorial.gearup" ],
        "hylotl" : [ "owltutorial.gearup" ]
        }
    }
    (Don't mind the owltutorial quest, these are seperated from silentquest and do not interfere.)

    Any clues? Did an update break this little 'secret'?
     
  9. sayter

    sayter The Waste of Time

    I had no luck with the silent quest either. Which is why I reverted to the tutorial-load order method instead.

    plus, this method above has no compatibilty with race mods. Easy enough to ADD said compatibility, but none the less, there it is.

    hopefully the next update adds quest stuff for us. Im really counting on it being in soon. FrackinFlora is ridiculously complex at this point and fully integrated quests would make life so much easier.
     
  10. Errors4l

    Errors4l Spaceman Spiff

    Sorry, but what do you mean by the tutorial-load order method?
     
  11. sayter

    sayter The Waste of Time

    aw in, what my mod and Industrialization do. Load it into a quest after one of the tutorial quests,and then have the tutorial continue afterwards.
     
  12. The | Suit

    The | Suit Agent S. Forum Moderator

    You can have side by side quests.
    You don't need a single quest line
     
  13. sayter

    sayter The Waste of Time

    I've tried this, but again, unless you support every custom race out there , at startup this is a no-go. Can I add "multi" lines in any other way? ie: is there support in there right now to do that from completion of a Tutorial quest?
     
  14. Errors4l

    Errors4l Spaceman Spiff

    Code:
    {
      "__merge" : [],
      "initialquests" : {
        "__merge" : [],
        "glitch" : [ "owltutorial.gearup" ],
        "human" : [ "owltutorial.gearup" ],
        "avian" : [ "owltutorial.gearup" ],
        "apex" : [ "owltutorial.gearup" ],
        "floran" : [ "owltutorial.gearup" ],
        "hylotl" : [ "owltutorial.gearup" ]
        }
    }
    Is what I use to add these quests and unlock them at the beginning seperated from the official quests. Of course, you could try to add custom races below the hylotl line and see if that works properly (just copying the section between [ and ] if you're using the same quest for these custom races), and adding a comma where needed), like so:
    Code:
    {
      "__merge" : [],
      "initialquests" : {
        "__merge" : [],
        "glitch" : [ "owltutorial.gearup" ],
        "human" : [ "owltutorial.gearup" ],
        "avian" : [ "owltutorial.gearup" ],
        "apex" : [ "owltutorial.gearup" ],
        "floran" : [ "owltutorial.gearup" ],
        "hylotl" : [ "owltutorial.gearup" ],
        "arace" : [ "owltutorial.gearup" ]
        }
    }
    I haven't tested it, but don't see why it wouldn't work.
    Also, to add more than 1 initial quest just change
    Code:
    [ "owltutorial.gearup" ] to [ "owltutorial.gearup", "otherquest.gearup", "yetanotherquest.gearup" ] 
    etc.
    Of course, I don't have to mention to replace owltutorial, otherquest and yetanotherquest to your own quest IDs.
     
  15. sayter

    sayter The Waste of Time

    Yea, the only reason I have not done this is the afformentioned race issue. I would rather have a universal quest that doesn't need people to get compatibility patches and the like. I may change my mind on that if it's as easy as adding in "Avali" and their own entry, of course. Frankly, it's a far more elegant way to do it, without ruining the natural quest progression
     
  16. Errors4l

    Errors4l Spaceman Spiff

    A good feature would be that you could, for example, add a quest like:
    "*" : [ "quest.gearup" ],
    Where you use a * to define -all- races.

    All we can do is hope, though ^^
     
  17. RyuujinZERO

    RyuujinZERO Supernova

    Fundamentally, all we need is Bartwe to put in one of two 'generic' hooks that either:
    a) Triggers if the player belongs to a custom race
    b) Triggers for player of any race
    That is probably the biggest thing holding back the use of quests, is that there is no simple way for a mod to get non-standard races onto their quest line without co-opting the starter quest line.
     
    sayter likes this.
  18. sayter

    sayter The Waste of Time

    In the end, that will likely be what they do. Makes the most sense, and it's easy from their position to do it.
     
  19. Ramones_fan

    Ramones_fan Pangalactic Porcupine

    can you split the quest line from say tutorial2.questtemplate something like
    Code:
    "followup" : ["quest1.gearup", "quest2,gearup"]
     
  20. Errors4l

    Errors4l Spaceman Spiff

    Not right now I'm afraid.
     

Share This Page