diff --git a/docs/changelog.txt b/docs/changelog.txt index 614f6f165..d5edef15c 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -35,6 +35,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Fixes - `embark-assistant`: fixed order of factors when calculating min temperature +- `seedwatch`: don't turn off upon map load - `embark-assistant`: improved performance of surveying - `quickfort`: creating zones no longer causes eventual crashes - `search`: fixed crash when searching the ``k`` sidebar and navigating to another tile with certain keys, like ``<`` or ``>`` diff --git a/plugins/seedwatch.cpp b/plugins/seedwatch.cpp index 5f254a955..f233cb27f 100644 --- a/plugins/seedwatch.cpp +++ b/plugins/seedwatch.cpp @@ -1,4 +1,3 @@ -// This does not work with Linux Dwarf Fortress // With thanks to peterix for DFHack and Quietust for information http://www.bay12forums.com/smf/index.php?topic=91166.msg2605147#msg2605147 #include @@ -101,7 +100,23 @@ string searchAbbreviations(string in) DFhackCExport command_result plugin_enable(color_ostream &out, bool enable) { - running = enable; + if(enable == true) + { + if(Core::getInstance().isWorldLoaded()) + { + running = true; + out.print("seedwatch supervision started.\n"); + } else { + out.printerr( + "This plugin needs a fortress to be loaded and will deactivate automatically otherwise.\n" + "Activate with 'seedwatch start' after you load the game.\n" + ); + } + } else { + running = false; + out.print("seedwatch supervision stopped.\n"); + } + return CR_OK; } @@ -143,13 +158,12 @@ command_result df_seedwatch(color_ostream &out, vector& parameters) } else if(par == "start") { - running = true; - out.print("seedwatch supervision started.\n"); + plugin_enable(out, true); + } else if(par == "stop") { - running = false; - out.print("seedwatch supervision stopped.\n"); + plugin_enable(out, false); } else if(par == "clear") { @@ -284,9 +298,12 @@ DFhackCExport command_result plugin_onstatechange(color_ostream &out, state_chan { switch (event) { case SC_MAP_LOADED: + if(running) + out.print("seedwatch supervision started.\n"); + break; case SC_MAP_UNLOADED: if (running) - out.printerr("seedwatch deactivated due to game load/unload\n"); + out.printerr("seedwatch deactivated due to game unload\n"); running = false; break; default: