Job remove eliminates a job's worker & holder references, if any, puts
the worker on cd, if appropriate, removes the job's postings, eliminates
the job from the global linked list, and then finally deletes it. This
code was tested by incorporating it into autochop and it does make the
plugin work. However, chop jobs don't have holder building references,
and anyway, with DF being 90% edge case by volume, this could use a heck
of a lot more testing.
I saw elsewhere code that prevented worker removal if the job was a
special job, and that made me feel funny so I made the job remove method
not work if the job is a special job.
From #964, protobuf exceptions in loadstock/savestock would either fail by only
logging an error to the console (when run from the Lua UI) or by crashing the
game entirely (when run from the console).
Figuring out what actually causes the exceptions in the first place (possibly a
misunderstood structure layout?) would be a better solution than this, but this
will at least stop crashes for now.
This changes nothing at all as far as any DFHack user is concerned, as
these plugins have not been possible to build since DF 34.11 - and would
have to be rewritten for compatiblity with new native-DF systems.
"treefarm" is additionally replaced by "autochop".
In the unlikely event that a developer wants the source code for
something... that's what version control is for!
These have different values on x64 Ruby 2.x (see USE_FLONUM in ruby.h in the
ruby source). This was causing dump_rb_error to crash, since it was walking an
array until it got to Qnil (but thinking Qnil was 4 instead of 8) and trying to
print each element as a string. There were probably more subtle issues with
Qnil and Qtrue being wrong too.