Description
Changelog
Reviews (0)
Summary
The ConvoQuest plugin is a lightweight but flexible system for integrating conversations, quests, and inventory into your Godot game. Quests and conversations are defined in human-readable JSON files for easy writing and extending. Example conversation and quest files are included in the source. Class and function descriptions will appear in the in-engine documentation tooltips.
To use, add the Manager scripts to your project as singletons.
Quest JSON File Example
{
"id": "quest_01", // Unique ID string for this quest
"name":"What's that key?", // Human-readable name, used for lists of quests in UI
"desc":"I found an old key. Surely it opens a wonderous treasure...",
// Human-readable description, used for quest details/journals
"prereq_itemss": ["old_key"], // Prerequisite item needed to start this quest, if one exists
"prereq_quests": ["quest_00"], // Prerequisite quest needed to be completed to start this quest, if one exists
"prereq_rels":{ // Prerequisite relationship with characters, if they exist
"anna": 25 // Each entry is a character's ID and the relationship necessary
},
"giver": "anna", // ID of character giving this quest
"start_convo": "q01_init", // Filepath to conversation file that starts the quest
"stages": [ // Array of stages of this quest, each one may contain...
{
"stage_gate": "bob", // ID of character gating this stage
"pass_convo": "q01_s01_pass", // Conversation with stage_gate if stage 01 condition IS met, or if no conditions exist
"fail_gate": "cal", // ID of character that talking to will fail the quest
"fail_convo": "q01_s01_fail", // Conversation with fail_gate
},
{
"stage_gate": "dee",
"stage_desc": "Bob gave me a clue to the chest the key goes to!", // Short description displayed in the diary when this stage is reached
"stage_cond_item": "old_chest", // Prerequisite item needed to finish this stage
"stage_cond_rel": {"dee": 25}, // Prerequisite relationship needed to finish this stage
"stop_convo": "q01_s02_stop", // Conversation with stage_gate if stage 02 condition is not met
"pass_convo": "q01_s02_pass", // Conversation with stage_gate if stage 02 condition is met
},
{
"stage_gate": "anna",
"pass_convo": "q01_s03_pass",
},
],
"reward_item": "lockpick", // Item player receives on completion
"reward_rel_change": 5, // Relationship change with quest giver if completed
"complete_desc": "Done, but not worth it.", // Short description displayed in the diary if the quest is completed successfully
"failure_rel_change": -8, // Relationship change with quest giver if failed
"failure_desc": "I decided not to go through with it." // Short description displayed in the diary if the quest is failed
}
Conversation JSON File Example
{
"char_id":"orange", // ID of the NPC character the player is talking to
"lines": [ // Array of dictionaries, each one containing a single line of dialogue
{
"name": "Orange", // Name of the NPC as it is displayed to the player
"text": "Hey you!", // Text to be displayed to the player
"pic": "res://assets/portraits/orange.png" // Path to image file for this character
},
{
"name": "Orange",
"text": "Can you give Purple a message for me?",
"pic": "res://assets/portraits/orange.png"
},
{
"name": "Orange",
"text": "Whatever you do, DO NOT talk to Green before you talk to Purple.",
"pic": "res://assets/portraits/orange.png"
},
{
"name": "Orange",
"text": "I will NOT be happy with you if you talk to Green first!",
"pic": "res://assets/portraits/orange.png",
"quest_step": "quest_01" // ID for quest to advance one stage
}
]}
Changelog for version ConvoQuest Plugin v0.3
2026-10-07 15:07:00
No changelog provided for this version.