Saturday, 3 October 2009

Close Encounters Of The SoZ Kind

On the back of last week when I worked on map encounter “goodies”, I have continued my work on the overland map by looking at how the encounters work. It was a tangled web of code I had to work through, and by the end of it I was convinced that either I did not use “const” variables enough, or the official way seems to use too many. ;) I often found myself having to work my way back through include files to work out exactly what was going on with each variable. Furthermore, as my own maps had their own unique code for travel, I had to pick my way through those functions that needed to stay, be altered or could be ignored altogether.

In the end, here is a rough outline of what I did, and what others may want to consider doing as well if they want to get overland encounters to work:

1) Bring over a lot of material from the SoZ campaign just to get the template code in place, including: A) Encounter areas. B) Random Encounter Creatures (both overland map ones and normal encounter versions). C) Encounter table 2da files, including the one that awards XP for an encounter “victory”. D) All conversation and script files associated with areas and creatures.

2) Next, I decided how I wanted my own encounters to work. To this end I removed all code that was specific to SoZ “special” encounters to leave just the random generated code to work with. I also reduced the amount of 2da cross-reference required by naming the encounter table as a variable on the terrain trigger rather than use the 2da that lists all tables and then cross-reference that with more code.

3) I then reworked the terrain heartbeat script (the script that checks for encounters) with edited versions of my own functions that are normally called from the ginc_overland include file. In particular, the InitializeEncounter function and others that are called from that, so that they checked the whole party skill set rather than just the leader used at the time. I am still working on slight alterations here, but some calls use the best party PC skill, whereas others will use an average party skill check. I am also considering adding these values to the Travel Info GUI for the player to see their current skill check levels.

It is not probably relevant to post any of the scripts, as my own specific code may only serve to confuse. However, the points I made above are good basic points that could work in general map building.

To remind readers, these maps will be more like “movie maps” in that the player can move across the region at a constant speed (unlike the official map) and time taken will be calculated and fed back in the GUI instead. For the same reason, I have decided not to reflect “night” and “day”, although this could be turned back on if there was much call for it. However, the time only updates when the PC stops moving on the map or moves to another area. Therefore, the night/day shift would (or could) suddenly change from day to night (or vice-versa) if the player did not stop moving for a period of time.

I have added a couple of screenshots (not too exciting) that show the work in progress. The first shot demonstrates that while one PC (the male PC) is doing the leading through the map, that it is the second PC (the female called Threska) who heard the creature for the party. These onscreen text feedbacks are likely to change or be removed before the final version. The second screenshot shows the ogre encounter in place.

There are a couple of other small details that I worked on along the way: a) I reworked the colour of the CR text on creatures, as sometimes I could hardly read them. b) I reworked other areas of lead PC skill checks to party wide skill checks, such as using the best PC intimidate or bluff in encounters where available (if more than one PC had the skill on offer to help save the player from having to remember the highest member).

Having reached this far, I do now realise that to do this specifically for my own campaign, I will need to write some of my own 2da encounter tables and accompanying creatures and conversations. However, it seems a shame not to make use of the many resources already available and intermingle them with some of my own. By the way, making the terrain trigger take the encounter table 2da directly involves one less 2da edit.

While I have not completed my research and coding just yet, I would say that I am 90% there. There are still one or two decisions I am considering, one in particular is whether to allow a player to switch PCs while on the overland map. It is currently disabled and works more as a “movie map” this way as intended. And as all checks are made as if from the party of PCs rather than just the leader, then the ability to change PCs is probably moot. However, if I can enable it without messing up any coding I have done, then I may do so, but I don’t think the feature is necessary more than just included because it can be. UPDATE: This option to switch PCs while on the map will NOT be enabled as it causes one or two other issues. The option to switch between PCs while on the map should never be needed anyway.

If you have any questions about this, or concerns for play, then please do add a comment.

No comments: