Merged branch develop into develop
						commit
						61c2fb0a11
					
				@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					*
 | 
				
			||||||
 | 
					!README.txt
 | 
				
			||||||
 | 
					!.gitignore
 | 
				
			||||||
@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					This folder exists as an alternate location for downloaded files. Files will
 | 
				
			||||||
 | 
					ordinarily not be downloaded here, but CMake will look for them here anyway to
 | 
				
			||||||
 | 
					facilitate offline builds.
 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
@echo off
 | 
					 | 
				
			||||||
IF EXIST DF_PATH.txt SET /P _DF_PATH=<DF_PATH.txt
 | 
					 | 
				
			||||||
IF NOT EXIST DF_PATH.txt SET _DF_PATH=%CD%\DF
 | 
					 | 
				
			||||||
mkdir VC2015_32
 | 
					 | 
				
			||||||
cd VC2015_32
 | 
					 | 
				
			||||||
echo generating a build folder
 | 
					 | 
				
			||||||
rem for /f "delims=" %%a in ('DATE /T') do @set myvar=breakfast-%BUILD_NUMBER%
 | 
					 | 
				
			||||||
set myvar=breakfast-%BUILD_NUMBER%
 | 
					 | 
				
			||||||
cmake ..\..\.. -G"Visual Studio 14" -DDFHACK_RELEASE="%myvar%" -DCMAKE_INSTALL_PREFIX="%_DF_PATH%" -DBUILD_DEVEL=1 -DBUILD_DEV_PLUGINS=1 -DBUILD_DF2MC=1 -DBUILD_DFUSION=1 -DBUILD_STONESENSE=1 -DBUILD_SERVER=1
 | 
					 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
@echo off
 | 
					 | 
				
			||||||
IF EXIST DF_PATH.txt SET /P _DF_PATH=<DF_PATH.txt
 | 
					 | 
				
			||||||
IF NOT EXIST DF_PATH.txt SET _DF_PATH=%CD%\DF
 | 
					 | 
				
			||||||
mkdir VC2015
 | 
					 | 
				
			||||||
cd VC2015
 | 
					 | 
				
			||||||
echo generating a build folder
 | 
					 | 
				
			||||||
rem for /f "delims=" %%a in ('DATE /T') do @set myvar=breakfast-%BUILD_NUMBER%
 | 
					 | 
				
			||||||
set myvar=breakfast-%BUILD_NUMBER%
 | 
					 | 
				
			||||||
cmake ..\..\.. -G"Visual Studio 14 Win64" -T v140_xp -DDFHACK_RELEASE="%myvar%" -DCMAKE_INSTALL_PREFIX="%_DF_PATH%" -DBUILD_DEVEL=1 -DBUILD_DEV_PLUGINS=1 -DBUILD_DF2MC=1 -DBUILD_DFUSION=1 -DBUILD_STONESENSE=1 -DBUILD_SERVER=1
 | 
					 | 
				
			||||||
@ -1 +1,6 @@
 | 
				
			|||||||
friend struct df::interfacest;
 | 
					friend struct df::interfacest;
 | 
				
			||||||
 | 
					void feed_key(df::interface_key key) {
 | 
				
			||||||
 | 
					    std::set<df::interface_key> input;
 | 
				
			||||||
 | 
					    input.insert(key);
 | 
				
			||||||
 | 
					    feed(&input);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
Subproject commit 34331ef67f3d163f4ab66121449a8217eb1cfb47
 | 
					Subproject commit a292304c6097a499dfa749d5cc8ab24e69e004f5
 | 
				
			||||||
@ -0,0 +1,274 @@
 | 
				
			|||||||
 | 
					#include "Console.h"
 | 
				
			||||||
 | 
					#include "Core.h"
 | 
				
			||||||
 | 
					#include "DataDefs.h"
 | 
				
			||||||
 | 
					#include "Export.h"
 | 
				
			||||||
 | 
					#include "PluginManager.h"
 | 
				
			||||||
 | 
					#include "df/world.h"
 | 
				
			||||||
 | 
					#include "df/world_raws.h"
 | 
				
			||||||
 | 
					#include "df/creature_raw.h"
 | 
				
			||||||
 | 
					#include "df/caste_raw.h"
 | 
				
			||||||
 | 
					#include "modules/World.h"
 | 
				
			||||||
 | 
					#include "MemAccess.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#include "df/world.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace DFHack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DFHACK_PLUGIN("generated-creature-renamer");
 | 
				
			||||||
 | 
					REQUIRE_GLOBAL(world);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RENAMER_VERSION 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					command_result list_creatures(color_ostream &out, std::vector <std::string> & parameters);
 | 
				
			||||||
 | 
					command_result save_generated_raw(color_ostream &out, std::vector <std::string> & parameters);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DFhackCExport command_result plugin_init(color_ostream &out, std::vector <PluginCommand> &commands)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    commands.push_back(PluginCommand(
 | 
				
			||||||
 | 
					        "list-generated",
 | 
				
			||||||
 | 
					        "Prints a list of generated creature tokens.",
 | 
				
			||||||
 | 
					        list_creatures,
 | 
				
			||||||
 | 
					        false, //allow non-interactive use
 | 
				
			||||||
 | 
					        "Use \"list-generated detailed\" to show descriptions."
 | 
				
			||||||
 | 
					    ));
 | 
				
			||||||
 | 
					    commands.push_back(PluginCommand(
 | 
				
			||||||
 | 
					        "save-generated-raws",
 | 
				
			||||||
 | 
					        "Saves a graphics raw file to use with the renamed generated creatures.",
 | 
				
			||||||
 | 
					        save_generated_raw,
 | 
				
			||||||
 | 
					        false, //allow non-interactive use
 | 
				
			||||||
 | 
					        "Creates graphics_procedural_creatures.txt, with a full set of creature graphics definitions for all possible generated beasts. Modify the resulting file to suit your needs."
 | 
				
			||||||
 | 
					    ));    return CR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DFhackCExport command_result plugin_shutdown(color_ostream &out)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return CR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DFHACK_PLUGIN_IS_ENABLED(is_enabled);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DFhackCExport command_result plugin_enable(color_ostream &out, bool enable)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    is_enabled = enable;
 | 
				
			||||||
 | 
					    return CR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					std::vector<std::string> descriptors = {
 | 
				
			||||||
 | 
					    "blob",        "quadruped",       "humanoid",     "silverfish",    "mayfly",        "dragonfly",   "damselfly",    "stonefly",
 | 
				
			||||||
 | 
					    "earwig",      "grasshopper",     "cricket",      "stick insect",  "cockroach",     "termite",     "mantis",       "louse",
 | 
				
			||||||
 | 
					    "thrips",      "aphid",           "cicada",       "assassin bug",  "wasp",          "hornet",      "tiger beetle", "ladybug",
 | 
				
			||||||
 | 
					    "weevil",      "darkling beetle", "click beetle", "firefly",       "scarab beetle", "stag beetle", "dung beetle",  "rhinoceros beetle",
 | 
				
			||||||
 | 
					    "rove beetle", "snakefly",        "lacewing",     "antlion larva", "mosquito",      "flea",        "scorpionfly",  "caddisfly",
 | 
				
			||||||
 | 
					    "butterfly",   "moth",            "caterpillar",  "maggot",        "spider",        "tarantula",   "scorpion",     "tick",
 | 
				
			||||||
 | 
					    "mite",        "shrimp",          "lobster",      "crab",          "nematode",      "snail",       "slug",         "earthworm",
 | 
				
			||||||
 | 
					    "leech",       "bristleworm",     "ribbon worm",  "flat worm",     "toad",          "frog",        "salamander",   "newt",
 | 
				
			||||||
 | 
					    "alligator",   "crocodile",       "lizard",       "chameleon",     "iguana",        "gecko",       "skink",        "gila monster",
 | 
				
			||||||
 | 
					    "monitor",     "serpent",         "viper",        "rattlesnake",   "cobra",         "python",      "anaconda",     "turtle",
 | 
				
			||||||
 | 
					    "tortoise",    "pterosaur",       "dimetrodon",   "sauropod",      "theropod",      "iguanodont",  "hadrosaurid",  "stegosaurid",
 | 
				
			||||||
 | 
					    "ceratopsid",  "ankylosaurid",    "duck",         "goose",         "swan",          "turkey",      "grouse",       "chicken",
 | 
				
			||||||
 | 
					    "quail",       "pheasant",        "gull",         "loon",          "grebe",         "albatross",   "petrel",       "penguin",
 | 
				
			||||||
 | 
					    "pelican",     "stork",           "vulture",      "flamingo",      "falcon",        "kestrel",     "condor",       "osprey",
 | 
				
			||||||
 | 
					    "buzzard",     "eagle",           "harrier",      "kite",          "crane",         "dove",        "pigeon",       "parrot",
 | 
				
			||||||
 | 
					    "cockatoo",    "cuckoo",          "nightjar",     "swift",         "hummingbird",   "kingfisher",  "hornbill",     "quetzal",
 | 
				
			||||||
 | 
					    "toucan",      "woodpecker",      "lyrebird",     "thornbill",     "honeyeater",    "oriole",      "fantail",      "shrike",
 | 
				
			||||||
 | 
					    "crow",        "raven",           "magpie",       "kinglet",       "lark",          "swallow",     "martin",       "bushtit",
 | 
				
			||||||
 | 
					    "warbler",     "thrush",          "oxpecker",     "starling",      "mockingbird",   "wren",        "nuthatch",     "sparrow",
 | 
				
			||||||
 | 
					    "tanager",     "cardinal",        "bunting",      "finch",         "titmouse",      "chickadee",   "waxwing",      "flycatcher",
 | 
				
			||||||
 | 
					    "opossum",     "koala",           "wombat",       "kangaroo",      "sloth",         "anteater",    "armadillo",    "squirrel",
 | 
				
			||||||
 | 
					    "marmot",      "beaver",          "gopher",       "mouse",         "porcupine",     "chinchilla",  "cavy",         "capybara",
 | 
				
			||||||
 | 
					    "rabbit",      "hare",            "lemur",        "loris",         "monkey",        "hedgehog",    "shrew",        "mole",
 | 
				
			||||||
 | 
					    "fruit bat",   "wolf",            "coyote",       "jackal",        "raccoon",       "coati",       "weasel",       "otter",
 | 
				
			||||||
 | 
					    "badger",      "skunk",           "bear",         "panda",         "panther",       "mongoose",    "hyena",        "civet",
 | 
				
			||||||
 | 
					    "walrus",      "pangolin",        "elephant",     "mammoth",       "horse",         "zebra",       "tapir",        "rhinoceros",
 | 
				
			||||||
 | 
					    "warthog",     "hippopotamus",    "camel",        "llama",         "giraffe",       "deer",        "moose",        "antelope",
 | 
				
			||||||
 | 
					    "sheep",       "goat",            "bison",        "buffalo",       "bull",          "ape",         "ant",          "bat",
 | 
				
			||||||
 | 
					    "owl",         "pig",             "bee",          "fly",           "hawk",          "jay",         "rat",          "fox",
 | 
				
			||||||
 | 
					    "cat",         "ass",             "elk"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					std::vector<std::string> prefixes = {
 | 
				
			||||||
 | 
					    "FORGOTTEN_BEAST_",
 | 
				
			||||||
 | 
					    "TITAN_",
 | 
				
			||||||
 | 
					    "DEMON_",
 | 
				
			||||||
 | 
					    "NIGHT_CREATURE_",
 | 
				
			||||||
 | 
					    "HF"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DFhackCExport command_result plugin_onstatechange(color_ostream &out, state_change_event event)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (!is_enabled)
 | 
				
			||||||
 | 
					        return CR_OK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (event != DFHack::SC_WORLD_LOADED)
 | 
				
			||||||
 | 
					        return CR_OK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    CoreSuspender suspend;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    std::vector<int> descriptorCount = std::vector<int>(descriptors.size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    auto version = World::GetPersistentData("AlreadyRenamedCreatures");
 | 
				
			||||||
 | 
					    if (version.isValid() && version.ival(1) >= RENAMER_VERSION)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return CR_OK;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int creatureCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (int i = 0; i < world->raws.creatures.all.size(); i++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        auto creatureRaw = world->raws.creatures.all[i];
 | 
				
			||||||
 | 
					        if (!creatureRaw->flags.is_set(df::enums::creature_raw_flags::GENERATED))
 | 
				
			||||||
 | 
					            continue;
 | 
				
			||||||
 | 
					        size_t minPos = std::string::npos;
 | 
				
			||||||
 | 
					        size_t foundIndex = -1;
 | 
				
			||||||
 | 
					        size_t prefixIndex = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (size_t j = 0; j < prefixes.size(); j++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (creatureRaw->creature_id.compare(0, prefixes[j].length(), prefixes[j]) == 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                prefixIndex = j;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (prefixIndex < 0)
 | 
				
			||||||
 | 
					            continue; //unrecognized generaed type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (size_t j = 0; j < descriptors.size(); j++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            size_t pos = creatureRaw->caste[0]->description.find(" " + descriptors[j]);
 | 
				
			||||||
 | 
					            if (pos < minPos)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                minPos = pos;
 | 
				
			||||||
 | 
					                foundIndex = j;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (foundIndex < 0)
 | 
				
			||||||
 | 
					            continue; //can't find a match.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        auto descriptor = descriptors[foundIndex];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (int j = 0; j < descriptor.size(); j++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (descriptor[j] == ' ')
 | 
				
			||||||
 | 
					                descriptor[j] = '_';
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                descriptor[j] = toupper(descriptor[j]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        auto prefix = prefixes[prefixIndex];
 | 
				
			||||||
 | 
					        if (prefix[prefix.length() - 1] != '_')
 | 
				
			||||||
 | 
					            prefix.append("_");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        creatureRaw->creature_id = prefixes[prefixIndex] + descriptor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (descriptorCount[foundIndex] > 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            creatureRaw->creature_id.append("_" + std::to_string(descriptorCount[foundIndex]));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        descriptorCount[foundIndex]++;
 | 
				
			||||||
 | 
					        creatureCount++;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version = World::AddPersistentData("AlreadyRenamedCreatures");
 | 
				
			||||||
 | 
					    version.ival(1) = RENAMER_VERSION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    out << "Renamed " << creatureCount << " generated creatures to have sensible names." << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return CR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					command_result list_creatures(color_ostream &out, std::vector <std::string> & parameters)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    bool detailed = false;
 | 
				
			||||||
 | 
					    if (!parameters.empty())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (parameters.size() > 1)
 | 
				
			||||||
 | 
					            return CR_WRONG_USAGE;
 | 
				
			||||||
 | 
					        if(parameters[0].compare("detailed") != 0)
 | 
				
			||||||
 | 
					            return CR_WRONG_USAGE;
 | 
				
			||||||
 | 
					        detailed = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    CoreSuspender suspend;
 | 
				
			||||||
 | 
					    for (int i = 0; i < world->raws.creatures.all.size(); i++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        auto creatureRaw = world->raws.creatures.all[i];
 | 
				
			||||||
 | 
					        if (!creatureRaw->flags.is_set(df::enums::creature_raw_flags::GENERATED))
 | 
				
			||||||
 | 
					            continue;
 | 
				
			||||||
 | 
					        out.print(creatureRaw->creature_id.c_str());
 | 
				
			||||||
 | 
					        if (detailed)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            out.print("\t");
 | 
				
			||||||
 | 
					            out.print(creatureRaw->caste[0]->description.c_str());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        out.print("\n");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return CR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					command_result save_generated_raw(color_ostream &out, std::vector <std::string> & parameters)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef LINUX_BUILD
 | 
				
			||||||
 | 
					    std::string pathSep =  "/";
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    std::string pathSep = "\\";
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    int pageWidth = 16;
 | 
				
			||||||
 | 
					    int pageHeight = (descriptors.size() / pageWidth) + ((descriptors.size() % pageWidth > 0) ? 1 : 0);
 | 
				
			||||||
 | 
					    int tileWidth = 24;
 | 
				
			||||||
 | 
					    int tileHeight = 24;
 | 
				
			||||||
 | 
					    std::string fileName = "graphics_procedural_creatures";
 | 
				
			||||||
 | 
					    std::string pageName = "PROCEDURAL_FRIENDLY";
 | 
				
			||||||
 | 
					    int repeats = 128;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    std::ofstream outputFile(fileName + ".txt", std::ios::out | std::ios::trunc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    outputFile << fileName << endl << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    outputFile << "[OBJECT:GRAPHICS]" << endl << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    outputFile << "[TILE_PAGE:" << pageName << "]" << endl;
 | 
				
			||||||
 | 
					    outputFile << "    [FILE:procedural_friendly.png]" << endl;
 | 
				
			||||||
 | 
					    outputFile << "    [TILE_DIM:" << tileWidth << ":" << tileHeight << "]" << endl;
 | 
				
			||||||
 | 
					    outputFile << "    [PAGE_DIM:" << pageWidth << ":" << pageHeight << "]" << endl << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (size_t descIndex = 0; descIndex < descriptors.size(); descIndex++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        for (size_t prefIndex = 0; prefIndex < prefixes.size(); prefIndex++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            for (size_t rep = 0; rep < repeats; rep++)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                auto descriptor = descriptors[descIndex];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for (int j = 0; j < descriptor.size(); j++)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (descriptor[j] == ' ')
 | 
				
			||||||
 | 
					                        descriptor[j] = '_';
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                        descriptor[j] = toupper(descriptor[j]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                auto prefix = prefixes[prefIndex];
 | 
				
			||||||
 | 
					                if (prefix[prefix.length() - 1] != '_')
 | 
				
			||||||
 | 
					                    prefix.append("_");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                std::string token = prefix + descriptor;
 | 
				
			||||||
 | 
					                if (rep > 0)
 | 
				
			||||||
 | 
					                    token.append("_" + std::to_string(rep));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                outputFile << "[CREATURE_GRAPHICS:" << token << "]" << endl;
 | 
				
			||||||
 | 
					                outputFile << "    [DEFAULT:" << pageName << ":" << descIndex % pageWidth << ":" << descIndex / pageWidth << ":ADD_COLOR]" << endl;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            outputFile << endl;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        outputFile << endl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    outputFile.close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return CR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1 +1 @@
 | 
				
			|||||||
Subproject commit 20eb2146fb93912b07034f3192dde1cf95a9ec7f
 | 
					Subproject commit 7e8daa16822cc67f8e84adab7607694b622fe434
 | 
				
			||||||
		Loading…
	
		Reference in New Issue