[crossfire] Quest management system proposal

Nicolas Weeger (Laposte) nicolas.weeger at laposte.net
Sun Aug 6 04:50:18 CDT 2006


>   Looking at that, and looking at your example, it seems hardly really
> clear to follow.

After some thinking, having a Python script handle the dialog seems the best 
way, actually :)

This way, the whole dialog is written into the Python script, including the 
logic.

>   I think that for the NPC state data, that should probably be stored in a
> force object that expires after some amount of time (like 1 minute
> real-time after last update).  After all, other players may interact with
> that NPC, and state should reset for them.

I'd say each player has his/her own state, so they don't conflict.

>   My personal inclination would be the quest not to be a script - ideally a
> core part of the server, lesser would be a plugin.

Well, there aren't that many quest-general things, actually.
Maybe utilities (like: do this for every player in the quest party) could be 
written to help write quests scripts.

>   I'd put using a python script near the bottom.  Not that python is
> inherently bad, but I think for developer reasons.  In theory, the entire
> crossfire server could be in python - that obviously won't happen.  But
> given that the server is currently in C, it is quite reasonable to expect
> all developers to know C.  But if there are bugs/improvements that need to
> be done to the script, but the developer doesn't know python, not sure
> where that really leaves things.

I'd say you underestimate developers :)
Scripting wouldn't require many functions in Python, just basic ones, and any 
C developer would feel at home looking at the logic imo.

>   As a note, the ability to give such rewards just in general could be nice
> not really related to quests.  Drop an item, get some exp reward, etc.

This can already be done, via a Python script for instance. Unless I'm 
mistaking what you mean?



So what I'd do is:
* remove existing quest system, which is a bastardized version
* write a Python "quests" command, with a few parameters (to get descriptions 
and so on)
* write a few Python scripts to help write quest scripts and manage quests and 
such

Then it's just a matter of writing Python scripts to handle quests :)


Nicolas



More information about the crossfire mailing list