Artificial War: Multiagent-Based Simulation of Combat

Just as combat logic and weapon parameters are defined and treated differently in EINSTein version 1.0 (and older) versus version 1.1 (and newer; see page 5.4), the way that terrain is handled by the program depends on which version of EINSTein is being used. Some, but not all, properties of terrain, as they are used in versions 1.0 and older, are carried over to newer versions.
Terrain may be added to a scenario either by (1) defining the sizes and positions of some (typically small number of) medium-sized terrain blocks, or (2) systematically building up more complicated terrain maps by individually positioning primitive (1-by-1 sized) terrain elements. In either case, terrain maps may always be predefined and loaded into an initially terrain-less scenario by loading a predefined terrain input data file. Terrain input data files have the default extension *.ter, and must consist either of all terrain blocks or all terrain elements, but not a mixture of the two. [*]
Terrain blocks are defined by length, width, and center ( x, y) coordinates, along with a logic flag (i.e. an on/off toggle switch) indicating whether it will be actually be used during the current run. This makes it convenient to define a default set of blocks, and to then define which specific subset of these blocks will be used (while retaining the definition of all blocks...