vignetteparams.ini - post everything you know, let''s figure
vignetteparams.ini is a collection of nodes, each of which have zero or more child_nodes. There is only one node (2) in the file which isn't a child_node of another node. Some nodes have multiple child_nodes, indicating that the program will follow different paths through the file. There are no loops in the file - each possible path starts at 2 and progresses through to one of the nine "end nodes" - nodes with no children (66, 67, 85, 193, 198, 287, 291, 328, 611). There are also four nodes in the file with "Implemented = false" set (193, 248, 611, 614). Note that two of these nodes are also end nodes.
It seemed to me - being a programmer and all - that VignetteParams was originally a script, and was converted to an INI file by a program - that would explain why all the nodes aren't in any particular order. I wrote a Perl script to turn the system of possible paths through the node tree into something which looked like a simple program, collapsing the tree where paths merged (e.g. 1; 2; if(3) { 4; 5; } else { 6; }; 7; 8 ) but I found that there was still a rediculous amount of redundancy in my output. I now have an 8MB XML file which doesn't really shed any light on anything. If I could figure out an algorithm for collapsing repeated identical procedures into "functions", the output might be more managable, but I'm not sure it would help me understand the system.
The next thing I tried should have been the first. I made a minor change in vignetteparams.ini to see what would happen in the game. Stepping throught eh nodes from 2, I found the first node with more than one child_node and changed it's children so it would only point to one of them. The node is 256, and it's a DecisionNode with a nickname of Destroy_solars_mission. I changed its child_nodes from this:
child_node = 454
child_node = 5
to this:
child_node = 5
child_node = 5
I started up the single-player game to find that every single mission offered to me in the bar on Planet Manhattan was a "Destroy Installation" mission. I thought: "Yes! Progress!" Unfortunately, the mission descriptions were all missing text, and when I got to the mission waypoint nothing spawned: I was just sitting in space doing nothing. When I left, my good friend Mission Control told me to "get back to the fight". Heh.
Then I tried changing things around the other way:
child_node = 454
child_node = 454
When I did this, no missions were available in the bar on Manhattan at all. I was told to come back later.
Obviously, DecisionNodes aren't just "if (rnd < .5) { goto child_node[0; } else { goto child_node[1; }" like I thought they might be.
I'm hoping I'll think up something else to try tomorrow, but I'm all out of ideas right now. Any ideas? Thoughts? Anything? I think I need some help on this one!