[crossfire] proposal: quest tracking

Brendan Lally b.t.lally at warwick.ac.uk
Wed Mar 2 18:26:51 CST 2005


Following on from a discussion on IRC and after prompting from Lauwenmark, I 
hereby submit a design proposal that might simplify questing (for a player) 
within the game.

Quest fields

a new header for maps be permitted, questmsg

a new value for items also called questmsg be permitted.

a new item type quest_tracker would exist.

that on entering a map, if a quest is defined for the map, then that quest is 
deemed to have started.

A simple example, terry's farm in scorn. 

This is the simplest quest map that I know off-hand, there is a farmhouse with 
a small troll in, a key opens a door, where the troll is found, and the head 
of the troll is used to open the treasure chamber. (map is 
scorn/houses/farmhouse if anyone wants to see it for themselves)

map header would be adjusted to have the lines

questmsg guuhs_head
You come across a peaceful looking farmhouse, but something seems to be amiss, 
perhaps you should investigate....
endquestmsg

added.

when a player enters the map, they will be considered to have started the 
guuh's head quest. Information about which quests the player has undertaken 
would be stored with the player as a separate invisible quest item for each 
quest. If there is no item existing corresponding to that quest, then it has 
been only just started, if there is an item corresponding to the quest then 
increment its level and add the new message to the msg field of the item

If they talk to the farmer, he would have

questmsg guuhs_head
The farmer tells you about the raiders who have occupied his farm, and begs 
you to help, telling you to take the key in his kitchen and free them from 
the bandits.
endquestmsg

the key would have a similar entry

questmsg guuhs_head
You have acquired the key you need to unlock the door to the barn where the 
bandits who have been plaguing the bandits lurk....
end questmsg

the head itself would hold

questmsg guuhs_head
You have killed the leader of the brigands, and will doubtless be rewarded 
handsomely for your valour
end questmsg

and then when the door to the treasure chamber is opened

questmsg guuhs_head
You have saved the farmers etc etc
terminate_quest

terminate_quest (or something similar) would mark a quest as done. (would set 
a field in the quest item?)

to use this then, one new command is needed, quests.

typing quests would list

completed quests
knight_of_scorn
baronet_of_scorn
scorn_gate_password
memeber_of_guild_of_freedom
...

ongoing quests
guuhs_head
assasinate_gothwalte
...

then the command 
quests guuhs_head 
would display all information (inside the questmsg) about that quest.

potential objections:
It involves potentially many invisible items, although there are already many 
of them, and any quests have them already anyway, and there is no real 
consistency with how they are treated. By having a quest item for each quest, 
and a standard check for the completion of the quest then it is easier to 
check for them.

It involves lots of changes to the maps to add all the quest information, 
however this can be done slowly over time, and an empty questmsg-endquestmsg 
block would simply not give any detailed information for the quests command, 
whilst still being enough to track start and end of quests.


OTOH It would make it far easier to have quests not be ignored, and will mean 
that it is easier to mark when something significant has been said.

The parsing is quite simple, since it can just be a simple change to the way 
that the msg block is parsed, make it call an external function and multiple 
quest blocks could be attached to each item.

Possible extension to this idea, allow quests to be specified as;

questmsg foo+n
endquestmsg

where +n is the increase to the level of the quest tracker item, progress 
through a quest then can be measured by comparing level against what it 
should be to keep track of what a player knows for them.

    
    


More information about the crossfire mailing list