From Jay
As fern mentioned, I maintain a list of ".dll" IDs. This is a form of tracking, to help point out if there are conflicts. I also try to point out if things can be done more efficiently. That is especially important for ".dll" IDs, since there is a finite number that can be used. But I do not assign IDs. The topic at ZKL to reserve IDs has been the central location for many years to allow other designers know what IDs are intended to be used, so that designers do not cause conflicts.
There are two types of text that can be in ".dll" files. One type is called STRINGTABLE. This assigns a text string with a number in the range of 0 to 65535, which we call a ".dll" ID. The name of a scenario would be this type. Depending on the scenario, other ".dll" IDs might be needed as well. The other type of text is called a TEXT block. This assigns a block of text with a text name. Including one's initials or name in the text name should help prevent conflicts with other designers. TEXT blocks are used for a scenario's start text, win text, and lose text. Depending on the scenario, other TEXT blocks might be needed as well.
I have not created scenarios or experimented with their configuration. So I do not know if it is possible to reference a string in the scn file itself or another editable file. If it can be done, it is undocumented. But I suspect it cannot be done, since I suspect that capability would have been documented with the other scenario information.
As for an overview of creating scenarios, here are copies of notes I made in 2012 and 2014:
from 2012: "A scenario involves lots of things. The ".scn" file will have rulea/ruleb/value/text lines that are triggers, which is a very small part of a scenario. Typically a scenario will have at least a hundred lines in its ".scn" file. A scenario has to have a story, including what happens on success and what happens on failure. The number in a "name=" line of a scenario ".scn" file is put inside a ".dll" file with the name of the scenario. In addition to the scenario name, the ".dll" will have 4 text blocks containing parts of the story. It has to be decided what economy, research, marketing, awards, and time based unlocks will be used for the scenario. It has to be decided what map will be used. And if the map is a new map, then a map image is needed for ZT's "select scenario" menu, and then a freeform ".scn", another ".dll" message, and another ".dll" text block should also be created so that the new map can also be used in ZT's "select freeform" menu. Based on the map, one has to decide on the background sound and ambient birds to use. Things like starting cash value and maximum time to complete the scenario must also be decided. Depending on the story, other things might be needed in the ".dll" file and new ".cfg" files might also be needed."
from 2014: "When a scenario is created, a picture of the map is needed for the scenario selection screen inside ZT. Zoot can be used to create a ZT image for that, instead of using ".tga". A scenario also needs a ".zoo", which is the same as a saved zoo. A scenario also has a ".scn" file, which configures the scenario. WordPad can be used to do that. Among other things, the ".scn" file says what goals have to be reached to consider the scenario won, as well as what needs to happen to consider the scenario lost. It might also have what awards are given for reaching certain goals. We are limited to the things we can use for goals, but the list is large. The comments inside scenario/example.scn in XPACK2\scenari6.ztd shows all of the things that can be used for goals. Some of these things only work in MM/CC, but if the ".zoo" is made in MM/CC then it does not matter. If the ".zoo" is created in the original ZT, then the things used for goals might want to be limited to those inside scenario/example/example.scn in scenario.ztd. A scenario will also have a ".cfg" file to say what ".scn" to use for the scenario. A scenario might also need other ".cfg" files if it has a different economy, marketing, or research than the standard scenarios. A scenario also uses IDs and TEXT blocks in a ".dll" file. Since I never experimented with scenarios, I don't know if it is possible to reuse IDs or TEXT blocks or to avoid using a ".dll".
Another thing about scenarios... If IDs are needed and cannot be reused, I feel there should be a compelling reason for the scenario. Anyone can already load a zoo and try to reach some goal without needing the game to say "you won". Zoo building contests at sites like Phoenix do not use scenarios to determine who won the contest."