Killer Caravan Quest System v1.1 By Axe
=========================================
This package includes an .erf file containing custom blueprints for three creatures, two conversations, an encounter, two scriptset files, and several scripts. There is also a demo module called Killer Caravan Quest v1_1 Demo.mod included in the zip file (put it into your /modules folder to try it out). Installing the system into your module will give you the ability to add a caravan escort quest system where players can talk to caravan master NPCs to get quests requiring them to escort a caravan and deliver it safely to another caravan master NPC at some other location for an XP and/or GP reward.
Version 1.1:
Updated to be compatible with NWN v1.69. The only thing that needed changes for this was the demo module to support horses -- even though the demo module has no horses in it, if you want to add them it will work. It also serves as a good example of how to set up your module to work with KCQ and v1.69 horses. The instructions for using the OnClientEnter script have changed however so read section D of the Readme file to ensure you are integrating your OCE script correctly to support the v1.69 horse system.
Changed the caravan master's conversation to say "coin" instead of "cash" to better match the D&D setting terminology.
Added 2 functions to the _kcq_inc library to allow builders to easily customize the town names that appear in the caravan master's list of destination towns the player chooses from and the other dialog lines that the NPC speaks where the town name appears rather than using the name assigned to each caravan area there (see Section IV-C2d in the Readme file).
Fixed the caravan creatures so they will properly utilize the Bioware walk waypoints system to stand posts or follow patrol routes when they are dropped off at a caravan master or not being escorted and there are appropriate POST_*, NIGHT_*, WP_* &/or WN_* waypoints nearby. Note that they will not cross areas to run thier route even if the patrol routes and the module are set up for that. They will only utilize the waypoints present in the area where they are dropped off, abandonded, or spawned.
I. Requirements.
-----------------
Killer Caravan Quest System should work with any expansion pack combination including no expansion packs, but you need to patch your game up to v1.68 or later to use this package. The KCQ system is compatible with all custom content you choose to add to your module including CEP, PRC, CRAP, CTP, and any other letter combinations you stumble across.
User's Guide.
--------------
The included Readme file is a User's Guide describing all the details you will need to know about in order to install, configure, and operate KCQ in your modules.
This package includes v1.1 of the system consisting of an .erf file containing custom blueprints for three creatures, two conversations, an encounter, two scriptset files, and several scripts. There are also two demo modules called Killer Caravan Quest v1_1 Demo for NWN v1_68.mod and Killer Caravan Quest v1_1 Demo for NWN v1_69.mod included in the zip file (put the appropriate one into your /modules folder to try it out). Installing the system into your module will give you the ability to add a caravan escort quest system where players can talk to caravan master NPCs to get quests requiring them to escort a caravan and deliver it safely to another caravan master NPC at some other location for an XP and/or GP reward.
Version 1.1 now available from the link above. Includes a couple of new features to address the suggestions posted below, a bug fix related to the walk waypoints system, and has been made compatible with NWN v1.69 including its new horse system.
Be sure to look over the Readme file even if you are upgrading from v1.0 as the installation and customization related instructions have changed considerably.
If you plan to upgrade from v1.0 make sure you read the installation instructions of the Readme file before you import the erf in order to avoid losing your setup customizations for the caravan areas and XP/GP rewards or any modifications you made to the blueprints.
There is a variable at the top of the _kcq_inc script that you can change to customize how long it takes for the oxen to be destroyed after being dropped of or abandoned. By default it is set to 1 game turn.
By the way, the oxen should use the Bioware walk waypoints system when they are not being escorted. So if you plop down a POST_caravan_creature or some WP_caravan_creature &/or WN_caravan_creature waypoints around your caravan masters, you should be able to get them to follow patrol routes or stand posts during the time after they are dropped off until they are destroyed.
They should always disappear but it takes about a minute IIRC for them to do it after you drop them off or abandon them somewhere. I always hate to see creatures just vanish cuz I don't think it looks very real so I made it take a little time since players will typically not wait around to see it happen. Also in a multiplayer environment it will tend to make it so you see more oxen near the caravan merchants which seems natural to expect, and there is a better chance of stumbling across an abandoned one sometimes which also seems more realistic to me.
Posted by Inayity at 2008-06-14 16:21:22 Voted 10.00 on 06/14/08
I really like this and the idea behind this- alot. One trivial observation- the pack-oxen don't seem to disappear after you complete the route.
Posted by RangerSG at 2008-06-14 07:17:10 Voted 10.00 on 06/13/08
Thanks again. :) I'll be sure to pass this along to Archer so she can make any changes she wants to. Once again, we're both very grateful for your help with our world in this and other scripting questions.
4. There is one other place where the area name appears in the conversation. It's in the NPC's initial greeting line where he says:
"I am , the caravan master here in ..."
This one uses custom token #401 and it is initialized in the script called "taw_kcq_cm_1". To customize it you'll want to use the same custom function approach. Edit the script, add the custom function (called, say, GetShortTownName) to the top just under the #include line, and change this line:
SetCustomToken( 401, GetTownName( iFromTown));
to say this instead:
SetCustomToken( 401, GetShortTownName( iFromTown));
1. This is a very good point but not worth an update to the system. The conversation file (kcq_caravan_mstr) is right there in your conversation list if you want to change it from "cash" to "coin".
2. Some like to see it all, some do not. Because of the way the conversation works, the player is given the option to decline the offer if he feels it isn't worth the reward. For that reason he should be told exactly what the reward will be in my opinion. In any event, that information is encoded into custom token #403 by the script called "taw_kcq_cm_2a2_1" if you want to customize it. All you need to do is change the bit in the middle where it generates the sReward string variable to generate whatever string you want there instead of the reward details (right before it gets set into token 403). If you look at kcq_caravan_mstr in the conversation editor for those "Excellent..." lines (there is one such line under each blue branch in the convo list) you can see where it says . That is where the text assigned to sReward and put into token #403 gets inserted into the line. You can then edit the string for the sReward variable in the script and/or the conversation lines in the convo editor and re-word them to say whatever you like. You can even remove the part out of lines completely if you do not wish to see anything at all -- but then the PC response line that declines the offer would not make much sense so you will probably want to do something different with its wording as well.
3. The oxen is just a copy of the default Bioware ox. As pointed out in the Readme file (Section IV-B2), the blueprint in the custom creature palette Special-Custom1 category called KCQ Caravan Creature can be modified in any way you like to beef it up. Just don't change its resref or scripts and leave the conversation slot blank unless you want a different conversation to be available when they are not being escorted by a PC. You can similarly change the KCQ Caravan Bandit blueprint you see there or even make several different bandit blueprints (See Readme Section IV-B3).
4. Actually, the instructions say that the area name (not its TAG) will be used in the conversation and that you should pick a name that would make sense in a dialog line (Section IV-C1). The only thing it says about the area TAG is that it must be unique. I assume you are referring to the convo lines that say "Excellent, I have a delivery bound for ..." and not the list of area names the PC chooses from (since it doesn't matter as much in the list). If you want to change the name that appears in those "Excellent..." lines, you can edit the script called "taw_kcq_cm_2a2_1" and change the line in the middle that sets custom token #402 to say whatever you like for each town. One easy way to do that would be to add a custom function at the top of the script just past the #include line that returns the string you want to appear for each town. It might look something like this:
string GetShortTownName( int iTownNum)
{ string sShortName = "";
switch( iTownNum)
{ case 1: sShortName = "whatever"; break;
case 2: sShortName = "whatever"; break;
...
}
return sShortName;
}
with one case for each caravan area. And then change the line in the script to say:
SetCustomToken( 402, GetShortTownName( iToTown));
instead of:
SetCustomToken( 402, GetTownName( iToTown));
Do not change the GetTownName function in the _kcq_inc library as that function is used elsewhere for validation purposes and it must return the actual name assigned to the caravan areas to work right. If you want to change the "Excellent..." lines, make a new function to do it.
If you want to change the town names that appear in the list as custom token numbers 501, 502, ..., 5XX then you can tweak the SetCaravanTownTokens function in the _kcq_inc library script so it assigns a different string to the sTownName variable used to set those 5XX series of tokens. A similar technique to using the GetShortTownName function described above would work just fine. Add a function in the library, called let's say GetShortTownListName, just before the SetCaravanTownToken function that looks the same as the GetShortTownName example above (except for the function name) and change the line in the SetCaravanTownTokens function from:
{ string sTownName = GetName( GetObjectByTag( sTownTag));
to say this instead:
{ string sTownName = GetShortTownListName( iTown);
then the names in the list will display whatever string you like instead of the area name. Don't forget to rebuild your module if you change the _kcq_inc script.
Posted by RangerSG at 2008-06-13 00:34:38 Voted 10.00 on 06/13/08
Does exactly what it says, and simple to use. :) We've implemented this into our forthcoming PC, and archer and I love it.
Just a couple things:
1) The dialog with the caravan master, you tell him, "I'd like to make some cash." Since cash is a reference to paper money, "coin" would be better, IMHO for the typical D&D setting.
2) The reward he offers for the quest, he tells you both the gold and the xp. I personally find it jarring to have mechanics discussed in open conversation (like xp).
3) The oxen seems a tad too fragile. hehe
4) The instruction from what archer told me, says that the tag for the area will be used in the caravan destination dialog. But the actual dialog uses the full area name. This can be problematic because it doesn't always reflect what someone would use in spoken discourse.
But these are minor things. And most of them I 'think' we could tweak ourselves. This is a really great script. And we're grateful it's been offered to the community. And for the help the author has given us more than once in advice on script issues for our world.
Posted by calsailx at 2008-06-11 16:00:40 Voted 10.00 on 06/11/08