DCUG Developer’s Journal #2

Hoo-boy, things have certainly not gone more smoothly since my first journal entry.  This campaign has given me even more troubles.  I encountered a whole set of problems I’d never seen before and just about gave up hope for the finale of the whole darn arc I’m working on.  In the process, I learned a whole lot about maps and objects that I never knew, though I still couldn’t solve my problems.  The good news is that this story has a happy ending, even if it was really in doubt there for a while.

So, when last I left you, I had just finished up mission #14 and had it basically working, so I got started on testing #15.  As with the previous mission, I had already written, scripted, and mapped this one, so testing was all that was left.  It proved to be just as temperamental as its predecessor, but the script problems were magnified by a map problem.  In this mission, the gathered heroes from #14, Green Arrow, Green Lantern, Flash, and Superman, with Batman as an ally, had to rescue the remaining Leaguers, who were once again scattered across different diskworlds.

Fortunately, I had learned from the previous problems, and I anticipated some of the issues in this mission.  I started all of the encounters off at once to avoid the non-completing encounter bug.  Still, I had problems with the custom encounters for MM and GL.  WW’s encounter worked pretty well, but I discovered that I hadn’t created a animportrait (talking head) entry for the Amazons that provided her opponents.  Interestingly, sometimes a missing head.nif or entry will crash the game, sometimes it will just show a dialog balloon with a blank space.  I’m not sure what causes the different reactions.

This instance only resulted in the latter, thankfully.  I was able to fix MM’s encounter by doing the same thing I had one with Flash, using two different encounters with two different MMs, to get both the rescue and the alliance.  This one provided an extra challenge, though, as with so many more characters in play, it isn’t as easy to make the substitution and teleportation as seamless and unnoticeable.  Complicating the matter further, the encounter in question is a ‘Rescue Fire,’ which means the diskworld is sort of a hot place, and my players aren’t going to want to hang around there!  I’ll have teleport my new Jonn to the old one and hope for the best.  Here’s the pertinent script.

#———————————-

Encounter: Burn1
Type: Rescue Fire
Allies: martian_man named jonn
Marker: desert5
Primary Objective: “Save the Martian Manhunter from his fiery prison” for 1000 prestige
Next: If All Congregated: Burn4
Next: If None Congregated: Final2

Ally Congregates Cutscene:
Camera on jonn
jonn says, “Thank you my friends, once again, I owe you my life. I would not have lasted long in this fiery world. these flame creatures seem to be everywhere, and the ground burns constantly.”
flash says, “Don’t worry about it, J’onn, that’s what we do. Now let’s get out of here!”
green_arrow says, “Right, just one more little lost lamb and we’ll have the whole set. Maybe then I can go home!”
Fade for 1 seconds

#———————————-

Encounter: Burn4
Type: Custom
Actions: allies become controllable, allies fight villains, allies follow heroes, allies remain after encounter ends
Allies: martian_man named bob
Marker: bottom2
Next: None

Alert Cutscene:
bob teleports to jonn
jonn teleports to bottom1
jonn is killed
jonn is destroyed
Unfade for 1 seconds

#———————————-

It was here that I really ran into problems, the first of many in this batch of testing, unfortunately.  The GL encounter was only partially working, but the real problem was that my heroes teleported onto the center of the map…and then couldn’t get off of it!  They teleported into the middle of a number of turrets, which were on the edges of the disk, and the team literally could not move to them or reach the Lantern to free him.  There was some type of issue with this particular diskworld that made its edges impassable.  I tried tweaking it in Nifksope, but no luck.  I really don’t know enough about meshes OR maps to figure this out.

So, I had to adjust my story, throwing out that entire encounter or reworking it to fit somewhere else.  I chose the latter, moving his encounter to the final disk, a Timemaster-flavored world, and I switched up the plot slightly.  I’m fairly happy with the results, but it gave me a bad moment or two.

Of course, that was nothing compared to what happened when I went on to #16.  You see, that problem I had with the outskirts of that one diskworld, in the final Timemaster map I was using for the grand showdown with the Key, the ENTIRE map was impassable.  My heroes couldn’t go anywhere, and if I teleported them around with console commands, they would slowly slide back to where they came from.

Once again, I examined the terrain.nif, but I couldn’t make heads or tails of what I was seeing.  I posted on FR, and fortunately, the ever-awesome Detourne_me came to my rescue.  He didn’t know how to solve the problem, but he got me looking in the right directions.  He pointed out that the actual play area of the map was a giant game object, not part of the map itself.  I checked the object attributes of the “cog_massive”, digging through FFEdit’s manual to make sure that it had all the necessary attributes, but no luck.  It’s worth mentioning that there are explanations for each of the mysteries (to me at least) template attributes in the manual.  If you’re ever tying to figure them out, you can check objattributes for a complete listing.

(One of the stages of my frantic attempts to save the map made the cog disappear entirely!)

I checked the terrain itself, which DM had suggested might be the culprit.  Its bottom surface, far below the giant spinning cog, was composed of two levels, and each had an “AREA_UNPASSABLE” label.  DM posited that this might cause problems to anything over such an area, so I tried renaming them.  Progress!  Unfortunately, this only got me one step closer.  Now my characters could move…on the very bottom level of the map, as they would fall through the cog any time I teleported them up there.  I fought and fought with this thing before I hit on a solution.  I finally just copied the cog object directly onto the terrain.nif.  It took a few tries, but I got it right, and I finally had a workable map!  Now I only had to get the script working!

Fortunately, despite the fact that the big finale encounter only partially functioned, it was a very easy fix.  It features a showdown with the Key, where he is invulnerable until you destroy an object.  The CSes weren’t playing, and the object wasn’t showing up.  Turns out, I had misspelled the object name (d’oh!0 and mixed my metaphors, so to speak, in naming the Key.  You see, FF doesn’t like it when you refer to a character in two different ways.  You can use generic terms (like Villain1) OR specific names, like the_key, but you CANNOT use both, or it will choke.  So, easy fixes, and now the mission is playing quite nicely.

That wraps up this journal entry.  Please let me know if this is interesting to y’all, and if there is anything you’d like to hear more/less about, or if you’d like me to illustrate other parts of the process.

Leave a comment