I realised that there was never a formal announcement here to read up: The Catara NWN server is offline for quite some time now, due to time constraints. I might revive it someday, but it is pretty unlikely. If anyone wants to use our custom classes or tools, ping me on twitter (@jollyorc) and we can see what we can do for you! In the meantime, I do recommend The World of Avlis: https://avlis.org/
Quest XP System
  • As all kill XP are turned off, you need to add in other ways to gain XP when waltzing through the wilderness or a dungeon.
    The magic word is "Quest Objective Triggers", which will note down these XPs. The XPs are handed out to the PC when he leaves the quest area.
    There are a bunch of prefabricated scripts and trigger blueprints, that make it easy to add in quests. I'll attach an .erf with it on this thread later.
    Basically, there are three parts:

    Quest Enter Transition
    Quest Objective Trigger
    Quest Exit Transition

    Quest Enter Transition:
    This one should have c_xp_at_init in its OnAreaTransitionClick event. It also needs to have the local string variable sQuestArea set to the transition object. sQuestArea needs to be unique and identifies the quest. The script activates the quest for the passing PC.
    Quest Objective Trigger:
    A simple trigger, laid into the likely (or unlikely) path of the PC who participates in that quest. It gets c_xp_obj_onent in it's OnEnter event. Note that the XP will only be noted down if the quest is currently active for that PC. The following local variables need to be set on the trigger object:

        string sQuestArea - the Quest identifier, see Quest Enter Transition
        string sObjective - a unique identifier for this objective trigger. It only needs to be unique within the quest
        int iXPtoAdd - the amount of XP that this trigger should grant.
        int iRespawn - time in days after which this trigger will give XP again, 0 for one-time XP
        int iOptimalLevel - if the PC deviates from this level too much, he'll receive less XP

    Quest Exit Transition
    This one should have c_xp_at_reward in its OnAreaTransitionClick event. It also needs to have the local string variable sQuestArea set to the transition object. sQuestArea needs to be unique and identifies the quest. The script will deactivate the quest for the PC and hand out the XP.
    One-Area sized Quests
    Some quests are limited to exactly one area. In this case you don't need the Enter and Exit transitions. Instead, you can add the sQuestArea variable to the whole area. Then lay down Quest Objective Triggers as usual. The c_areaonenter and c_areaonexit scripts will handle the activation, deactivation and XP handouts.
     
     
  • New Functionality!

    iStartHour - the current time needs to be greater or equal to this value for the XP to be handed out
    iEndHour - the current time needs to be smaller or equal to this value for the XP to be handed out

    (if iStartHour and iEndHour are both set to 0, this check won't happen)
  • Is there a problem if there are two or more Quest Exit Transitions set up for the same quest? In the case there are multiple exits from a dungeon.
  • As long as you make sure that every exit of the dungeon has the appropriate scripts attached, there's no problem - vice versa, ensure that every possible entry has the appropriate scripts too.
    Sidenote: It is actually possible to have one dungeon give XP for several quests. Example:
    There is one dungeon. If you enter it normally, you'll get exploration and monster XP on exit. Additionally, you can talk to an NPC somewhere else who gives you an additional quest (whose XP triggers are in the same dungeon) and rewards you when you come back to him. You could even set up a second NPC who is handing out the reward.
    Also: It is not necessary to have quests restricted to one enclosed (set) of areas. It's perfectly fine to have the XP triggers scattered all around, provided you give some logical means of activating and de-activating the quest itself.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!