[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