Dispatches From Neverwinter

A journal of my progress as I (attempt to) learn how to build modules for Neverwinter Nights.

Name:
Location: United States

Started playing Neverwinter Nights back in November '05 and got hooked. Tried to write my own module, but I just didn't have the time. Maybe I'll try again someday.

Saturday, November 25, 2006

Almost Finished With The Village

After working on it for weeks, I'm just about finished with the village of Cheswick. The following things are finished.

  • All interior areas have been painted, as well as the village exterior.
  • All triggers, encounters, and scripts associated with them are finished. Much of the time I worked on the module this weekend was spent fixing this. At first, I didn't have the full code to make sure no trigger went off more than once. Then I had to change a ton of variables. Then I had to rewrite several scripts. I even turned deleted a couple of them and replaced them a script that goes in the OnEnter event for the area. Now they all seem to be working, and they all seem to be working only once. Well, one of them didn't seem to work at all, but at this point I don't care.
  • The conversations for Jocen, Crissa, Jerym, and the mule are all finished, and all the scripts associated with these conversations are in the right places.
  • The journal entries for the Jerym subquest and the children's subquest are finished and set to go off at the right places.
  • All the dozens of minor fixes have been taken care of, at least until I find some more that need fixing. This includes uncluttering the shed Jocen is hiding in - in one test, I went in there after I had the mule following me, and found I couldn't reach Jocen because the mule was in the way.
Of course, not everything is done. Jocen and Crissa still get into fights with the monsters. The fact that they have scripts that are supposed to make them cower makes them behave oddly: they'll cower, then lash out and attack. In turn, the monsters attack them. They can't actually die, so it looks stupid to see them taking a lot of hits and damage, but never dying from them. I also apparently put the scripts that removes them as henchmen in the wrong places. I think I fixed that, but it's likely to be a moot point: I'm probably going to change them so that they follow me around in the same way the mule does, rather than make them henchmen. In theory, that'll keep them from getting in any more fights. Also, I still need to write a script that will make peasants spawn and walk by while the PC is conversing with Jerym the first time. However, other than that, the village is finished. Now it just needs to be tested. More specifically, all the iterations of the two subquests need to be tested, i.e., bring the children to Jerym but not the mule, and vice versa, and bringing both at the same time. I allowed for all this in the conversation. Hopefully it'll all work.

Although this took much longer than I expected, and I got hung up repeatedly fixing a few things, and on some very dumb mistakes (incorrect tags, missing semicolons, etc...), I'm pretty happy with how things turned out. The mule subquest worked fine the first time I tested it, as did the script that makes the children run off if the PC decides to abandon the quest while one of them is following him. Except for the henchmen thing, the conversation with Jerym that ends the subquests also seems to be working properly. I suppose I could do more work tonight, but I think I've done enough for one evening. Now I think I'll actually play for a little while.

Sunday, November 19, 2006

New Accomplishments

After a lengthy hiatus, I was able to find time over a couple of days to put some work in on the module. I finished painting all the areas except the two large barns, and then I got to work on various scripts and conversations. In the process, and after a lot of research and trial and error, I accomplished the following:

  • Put the command to change the music in the conversation with Crissa. Instead of messing around with user-defined events, I should have thought of this to begin with.
  • Learned how to make a hidden trapdoor. Instead of taking the PC to a new area, when the PC clicks on it, it reveals a hidden stash of gems. I had a hard time with this - no matter what I did, I couldn't get the trapdoor to open - until I realized that I needed to change its facing: the front of the door was against a wall, so the PC couldn't open it.
  • Turned the kids into henchmen, and added the script to have them join the PC.
  • Set up a trigger near the gate which activates if the PC has Jocen with him, but not the other. Basically, it makes Jocen start a conversation, and then leave the PC, run a short distance, and vanish. It also destroys Crissa (or at least it should - I forgot to check), and applies an alignment penalty to the PC. I also wrote the appropriate conversation thread for Jocen to go with this. This was another excercise which reminded me to always make sure all my semicolons are present.
  • Figured out how to rearrange the conversations so that only the options that should come up, do come up when the PC meets the kids.

And of course, there were the usual minor fixes, including having to tediously go through each area in the village and check every container - seems I forgot to remove the scripts that generate treasure on most of them.

This was the first time I actually got to test most of this stuff, and I can see that I'm going to need to do a lot of testing for bugs, as well as for difficulty. I found another conversation problem with Jocen, and what appears to be a repeating trigger, even though all the triggers are set to single shot. Things I need to do next time include:

  • Fix Jocen's conversation
  • Fiddle with Jocen and Crissa's scripts so that they don't get into fights. Not sure why this is happening as they have the herbivore onspawn script, which should prevent this.
  • Add an interjection trigger for Crissa like the one I have for Jocen, and write the conversation node to go with it.
  • Add a journal entry for when either kid leaves the PC when the PC activates this trigger.

And after all that, I then have to deal with the other subquest, which I'm sure will have it's own set of problems.

Monday, November 06, 2006

Back to Work

I finally got in a good solid day of work on the module this weekend, although the pace is still agonizingly slow and I've accepted that there's no way this will be done by the end of the year, as I intended. I spent most of the time working on two specific, complex conversations. Mapping them out as very tricky, as I had to account for a variety of possibilities: the PC could talk to Jocen and agree to find Crissa, or they could talk to Crissa and agree to find Jocen. They could refuse to help Jocen, then later find Crissa and change their mind, and vice versa. This required a lot of juggling of variables to make sure that the right conversation node comes up where it's supposed to. I also had to make sure the right sounds, animations, and alignment shifts were in the right places.

The next step is to figure out how to actually make them follow the PC. I've seen some things on the forum, but I'm finding them too complex to understand. As such, I'll most likely make both of them into henchmen. This has its own set of complexities, but since they aren't "real" henchmen, it should be a lot simpler than it would be if I was creating a real henchman, since I don't have to worry about them leveling up, nor do I have to give them a bunch of conversation options and scripts that a real henchman would have.

I also painted down a bunch of triggers that'll incrementally increase a variable on the PC, and a bunch of encounters that will trigger based on the number of that variable, the idea being that the longer the PC explores the village, the more likely he or she is to run into more monsters. I also did the usual tweaking, including fixing the scene with Crissa so that both hobgoblins taunt her (I forgot to give one the correct script), and also changing it so that Crissa will react appropriately - her script was set to trigger if there were enemies nearby, but since I didn't want the hobgoblins to attack her, I changed her faction to be non-hostle to them, with the result that she didn't see them as enemies and thus didn't react to them.

Finally, I got information on how to disable respawning, so that's one more problem solved. However, I still can't figure out how to set up a user-defined event to make the music change after the hobgoblins are killed. If I can't get clarification on this, I'll probably script the music change in the conversation with Crissa. This isn't ideal, and it irks me that I can't figure out how to make the user-defined event work, but such is life.