v0.13 has a new class called CampaignManager that I’m using to store the progress of the current story. Essentially it is a collection of strings. Various parts of the game engine can read/write these strings to create some persistence and progress in the game world.
Related To Do:
- Move the processDialog and chooseDialogNode into NPC
- Give each NPC a pointer to the current Map (which also contains the CampaignManager). This structure choice will allow future NPCs to move around the map.
- Create handling for Quest Items. Perhaps this should be a new base item type.
- Prevent quest items from being dropped or sold
- Add an on_pickup command to quest items that sets a campaign state
- Allow CampaignManager to check for or remove items from the player inventory (pointer to the carried MenuItemStorage)
With this simple quest implementation in place, I need to create a few archetype quests for v0.13. My plan is to create a simple quest chain that ends in slaying the skeletal warrior Sir Evan Maddox.
- Report for duty: talk to this person, they have work for you.
- Exploration quest: I need intel from an area but it’s too dangerous for me to go
- Fetch quest: get this item for me
- Key quest: take this item, now you can get into a new area
- Kill quest: kill this creature
Other common types not yet represented:
- Escort quest: universally hated so I probably won’t even implement this.
- Gather quest: I don’t have support for e.g. gather 10 boar lungs. That kind of tedium is more for time sink MMOs anyway. Simpler quests (e.g. gather 1 of each of these ingredients) can instead be done in a quest chain or in parallel quests.
- Genocide quest: Kill X of this creature. Again, more of an MMO time sink type quest, I might not implement this.
By covering these basic quest archetypes, I’ll have the first Flare quest chain and have examples of how to create each basic type.