Skip to content

Quests

Folder Structure

Quests can be written in a json file. Quests must be under the "quests" folder of your mod.

Folder Structure

  📂 AppData
  └── 📂 LocalLow
       └─── 📂 Bitten Toast Games
             └─── 📂 GardenPaws
                   └─── 📂 Mods
                         └─── 📂 Your_Mod_Folder
                               └──── 📁 quests
                                      └─── 📄 Your_Quest_File.json

Json Example

Here's what a Quest's json 📄 file would look like.

{
    "id" : "Id",
    "relativeToId" : "Relative To Id",
    "day" : 0,
    "secondaryRequirement" : "Secondary Requirement",
    "dontReceiveIf" : "Dont Receive If",
    "questTitle" : "Quest Title",
    "text" : "Text",
    "questType" : "Quest Type",
    "uponCompletion" : "Upon Completion",
    "getFrom" : "Get From",
    "deliverTo" : "Deliver To",
    "seasonSpecific" : "Season Specific",
    "questAsksFor" : "Quest Asks For",
    "asksForExtraText" : "Asks For Extra Text",
    "npcShowsUp" : false,
    "repeatable" : false,
    "autotrigger" : false,
    "itemReward" : "Daisy : 1, Poop : 1",
    "goldReward" : 100,
    "rewardIcon" : "Reward Icon",
    "rewardText" : "Reward Text",
    "specialAreas" : "285, 5, 128"
}

Json parameter descriptions.

Parameter Type 📝 Description
id string Quest Id. It should be unique so make sure to use a prefix that's unique to you so it doesn't conflict with other mods or existing game quests.
relativeToId string This quest will appear relative to the event ID set in this variable. It could be the ID of another mail, or quest, or achievement. If you want to refer to the day the world was first created set this to 'gamestart' You can also use a season like 'spring' and it will be relative to the current spring.
day string How many days after the relativeToId event happened this mail will arrive. If you want it to arrive in the same day set it to 0
secondaryRequirement string Does this quest have a secondary requirement? As an example, if it requires an npc that comes with an upgrade that the player doesn't have yet, then we'd set the secondary requirement to be that Upgrade's ID.
dontReceiveIf string If this variable is set to an event ID this quest won't show up if the event has happened.
questTitle string Quest Title
text string Quest Dialogue. Separate with 2 line breaks for different dialogue boxes. Line breaks can be done with \n. Example: 'Hey what's up \n\n Wanna give me 60 thousand coin? I'm bruce!'
questType string: talk, collect or event Quest Type. Must be set to either Talk, Collect or Event. If it's just talk to some npc (same npc or different) it's a talk quest. If it's going to ask for items it's a Collect quest. If it's going to wait for a certain event to happen (Another quest, mail, upgrade or custom event) then it's an event quest.
uponCompletion string Dialogue to show upon completion of the quest. Separate with 2 line breaks for different dialogue boxes. Line breaks can be done with \n. Example: 'Oh hey! Thanks for the 60 thousand coin! \n\n Can I have 100 thousand now? KThanksBye!'
getFrom string NPC ID that gives this quest. If the NPC is not in the current scene the quest won't be given. Can also be set to mail which will make the quest show up in the mail box. Check the NPC Reference page for the existing NPC IDs.
deliverTo string NPC ID that this quest can be delivered to. If it's the same ID as the getFrom ID and it's a talk quest, it will do both the quest dialogue and completion dialogue in succession and auto-complete the quest. Check the NPC Reference page for the existing NPC IDs.
seasonSpecific string If this mail should only arrive in a specific season define it here. You can define multiple seasons separated by commas like 'spring, fall'. If no season is written here then it will be available all year around.
questAsksFor string What this quest is asking for. In the case of a Talk quest this would be blank. In case of a collect quest this would be a list of items ids with amounts like 'Daisy : 1, Poop 2, Chick :1'. In case of an event quest this would be the event id.
asksForExtraText string This is useful for Event type quests where what we're asking the player isn't hard-defined in the code. It will show up in the quest tracker when you have this quest. Example: 'Finish a quest from the Bulletin Board'
npcShowsUp bool If this is set to true the npc will show up at the player's door the day this quest becomes available.
repeatable bool If this is set to true and this is a season specific quest then this quest will reappear as available every season.
autotrigger bool If this is set to true the quest will be automatically added to the player's quests as soon as the requirements for it being available are met.
itemReward string If this quest should give items as a reward this would be a list of items ids with amounts like 'Daisy : 1, Poop 2, Chick :1'.
goldReward number If the quest should give coins as a reward then set the amount of coins here.
rewardIcon string If you want a specific icon as reward of the quest, write the icon name here.
rewardText string In case the Quest unlocks something like a blueprint or an upgrade, this field is useful to describe what is the reward. Example: 'Finish a quest from the Bulletin Board.'
specialAreas Vector3 If your quest involves a specific area of the map you can define it here like this: '278,7,156'

Comments