- Updates rst documentation
- Adds feature: risk-averse
- Revises ChannelManager::manage_group
- Now performs analysis of group designations
- If any designation has fall space, designations are analyzed for accessibility (a weighted score of how many ways it can be accessed)
- If a designation has no fall space, but cannot be accessed it will be "dig_now"'ed
- accessibility scores are stored for the management phase
- Management loop has been extended
- iff no cave-in candidates exist, then perform simple management (as requested)
- if candidates do exist, then we must check if our current position is one
- if the current position is a cave-in candidate it must also be within range (+2) of the least access
- if the candidate is in range or on the dignow queue, then we activate the designation and modify the dig priority according to distance from least_access
- if not a candidate, or the other checks failed, then we set the designation to marker mode
- Updates rst documentation
- Adds troubleshooting section
- Renames the monitor feature to monitoring
- Adds cave-in helper functions
- ChannelJobs::has_cavein_conditions()
- ChannelJobs::possible_cavein()
- find_dwarf() ~ finds the nearest dwarf or the first one that has a path to a position
- Moves dignow/resurrect to inlines.h
- Improves management of regular dig designations
- Adds df::job* tracking back into ChannelJobs to simplify cancellations
- Updates/improves debug logging
- Switches unordered structures with ordered in some locations to have ordered debugging information
- Simplifies ChannelManager::manage_group()
- Fixes up ChannelManager::manage_one()
- the return value is now useful even if unused
Fixes spectate not starting with the first job
Updates spectate.cpp
- refactors features/settings to under a `Configuration` struct with a global variable `config`
- refactors existing `config` => `pconfig`
- moves plugin logic, mostly, to namespace SP (spectate plugin)
- utilizes debugging log macros
- updates status format
- refactors status print code into a separate function
- removes redundant `if (df::global::ui)` checks; and tested to ensure no segfaults cropped up like in the past times I've removed these
- removes useless `if (pause_lock)` pause lock is set when plugin initializes, even if pause lock was left null (since we technically don't need it, and that was the point of the null check) it still would be a useless check (actually an impediment preventing functionality)
- removes disabled interpose code
- removes lua linkage
- updates doc
extra:
- surrounds user input for tick frequency with `std::abs()` not that we would have ended up with a negative value, but it was probably a typo and this is easier than printing an error or letting it underflow past max int (on most systems)
- Fixes for state transitions that were found broken. eg. plugin disabled -> enable auto-unpause feature -> enable plugin (auto-unpause will not truly be enabled; similar transitions were broken)
- Adds a commented out lock for if the pause code is ever adopted into the core API, as to enable many mods to use the `World::SetPauseState()` without walking over each other, and in the case of `reveal hell` also be able to avoid needing to set the state every tick in onupdate
- Revises the usage docs with `enable|disable|set` syntax