[crossfire] Quest management system proposal

Nicolas Weeger (Laposte) nicolas.weeger at laposte.net
Tue Aug 8 02:31:04 CDT 2006


>   I'd rather not have the NPC conversation be in python.  IT has long been
> discusses that the NPC conversation needs to be improved, with things like
> conversation states, etc.  This is unrelated to quests in particular - just
> a general good thing to do.
>
>   IMO, having some basic scripting syntax for states in the
> message/endmessage would be a good thing - after all, map makers are people
> that would be using that, and at current time, there isn't a requirement
> that map makers also be programmers.  I suppose and answer could be 'just
> copy the npc script from elsewhere' to the less technical map makers, but
> I'm not sure that is a good answer.

The issue I see with this is that it adds Yet Another Scripting Language to 
Crossfire...
Right now we're using C, autoconf/autotools, LaTeX (documentation - is it 
uptodate, actually??), Perl, Python, NSIS (Windows installer).

Adding Crossfire's Scripting Language would add some complexity, including 
making sure we don't break that, add features mapmakers will want/need, and 
before we know we reimplemented an existing language :)

What could be done, though: let mapmakers write messages with an extended 
syntax, like you suggested, and have a Python plugin/script handle that 
internally (or handle it in server core, but that's less easier to switch i 
think).

>   This also makes sense that anything the NPC says can be heard to anyone
> near by (it isn't just at the player).  This is why I was thinking NPC's
> should have some limited state just for general conversations (the case
> this really covers is when you should be able to keep saying 'yes' to the
> npc to get more info, but the current mechanism doesn't allow that, so
> instead players have to start guessing what is the word to continue the
> conversation).
>
>   There certainly should be state information for the player itself related
> to npc conversations in some cases (especially quests).

Well, then I guess it'll depend on the NPC considered.

>   It seems like every year or so, the discussion of what should be in C and
> what should be in plugins shows up, and this is sort of one of those.  I
> suppose we really should come up with a standard and document it.
>
>   But some also goes to above - the people who will use quests are
> mapmakers. Should it be a requirement for mapmakers to know python/have
> scripting skills to use many of the handy features of crossfire/map maker?
>
>   If the answer there is yes, then no real issues.  If the answer is no,
> then we perhaps need to revisit if python is the best solution.

As I said earlier, I'm not that eager to add/create a new scripting 
language :)

>   That said, it may be reasonable to have some set of basic scripts that do
> basic actions (add exp, etc) - in a sense standard scripts that map makers
> can use without having to know scripting.  they just need to be well
> documented.

All methods are referenced in http://wiki.metalforge.net/doku.php/cfpython
True, it could use some examples and such.

OTOH, I'm sure a mapmaker not knowing how to write scripts and asking on the 
list or IRC would get some help.

>   One question completely unrelated to this - would it make sense for the
> scripts themselves to be located in the same directory as the maps itself?
>
>   For example, right now, all scripts are in python/....

Yes, it'd make sense if scripts are related to a map.
Having:
* mymap
* mymapscripts/*py
makes it easier to package the map.

Note that for "local" events (ie related to a player's action, as opposed to a 
global event like time, death, kill, login/logout), you can already put 
scripts in such a subdirectory, you just have to put in the full filename.


Nicolas



More information about the crossfire mailing list