Merge remote-tracking branch 'lethosor/pre-commit' into develop

develop
lethosor 2022-04-12 21:17:15 -04:00
commit 0f464b13b3
No known key found for this signature in database
GPG Key ID: 76A269552F4F58C1
119 changed files with 516 additions and 543 deletions

@ -5,7 +5,7 @@ on:
inputs:
pull_request:
description: Pull request ID
type: number
type: string
required: true # remove if we support commit rebuilds later
jobs:

@ -0,0 +1,35 @@
ci:
autofix_prs: false
repos:
# shared across repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.1.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: check-shebang-scripts-are-executable
- id: check-symlinks
- id: check-xml
- id: check-yaml
- id: destroyed-symlinks
- id: end-of-file-fixer
- id: mixed-line-ending
args: ['--fix=lf']
- id: trailing-whitespace
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.14.2
hooks:
- id: check-github-workflows
- repo: https://github.com/Lucas-C/pre-commit-hooks
rev: v1.1.13
hooks:
- id: forbid-tabs
exclude_types:
- json
- id: remove-tabs
exclude_types:
- json
# specific to dfhack:
exclude: '^(depends/|data/examples/.*\.json$|.*\.diff$)'

@ -13,4 +13,3 @@ find_package_handle_standard_args(Sphinx DEFAULT_MSG
)
mark_as_advanced(SPHINX_EXECUTABLE)

@ -7,88 +7,88 @@ LUA_PATCH=1
ME=$PWD/`basename $0`
usage() {
echo "Usage: $0 [options] {DF_OSX_PATH}"
echo -e "\told\t- use on pre-Snow Leopard OSX installations"
echo -e "\tbrew\t- if GCC 4.5 was installed with homebrew"
echo -e "\tport\t- if GCC 4.5 was insalled with macports"
echo -e "\tclean\t- delete ../build-osx before compiling"
echo "Example:"
echo -e "\t$0 old brew ../../../personal/df_osx"
echo -e "\t$0 port clean /Users/dfplayer/df_osx"
exit $1
echo "Usage: $0 [options] {DF_OSX_PATH}"
echo -e "\told\t- use on pre-Snow Leopard OSX installations"
echo -e "\tbrew\t- if GCC 4.5 was installed with homebrew"
echo -e "\tport\t- if GCC 4.5 was insalled with macports"
echo -e "\tclean\t- delete ../build-osx before compiling"
echo "Example:"
echo -e "\t$0 old brew ../../../personal/df_osx"
echo -e "\t$0 port clean /Users/dfplayer/df_osx"
exit $1
}
options() {
case $1 in
brew)
echo "Using homebrew gcc."
export CC=/usr/local/bin/gcc-4.5
export CXX=/usr/local/bin/g++-4.5
targetted=1
;;
port)
echo "Using macports gcc."
export CC=/opt/local/bin/gcc-mp-4.5
export CXX=/opt/local/bin/g++-mp-4.5
targetted=1
;;
old)
LUA_PATCH=0
;;
clean)
echo "Deleting ../build-osx"
rm -rf ../build-osx
;;
*)
;;
esac
case $1 in
brew)
echo "Using homebrew gcc."
export CC=/usr/local/bin/gcc-4.5
export CXX=/usr/local/bin/g++-4.5
targetted=1
;;
port)
echo "Using macports gcc."
export CC=/opt/local/bin/gcc-mp-4.5
export CXX=/opt/local/bin/g++-mp-4.5
targetted=1
;;
old)
LUA_PATCH=0
;;
clean)
echo "Deleting ../build-osx"
rm -rf ../build-osx
;;
*)
;;
esac
}
# sanity checks
if [[ $# -lt 1 ]]
then
echo "Not enough arguments."
usage 0
echo "Not enough arguments."
usage 0
fi
if [[ $# -gt 4 ]]
then
echo "Too many arguments."
usage 1
echo "Too many arguments."
usage 1
fi
# run through the arguments
for last
do
options $last
options $last
done
# last keeps the last argument
if [[ $targetted -eq 0 ]]
then
echo "You did not specify whether you intalled GCC 4.5 from brew or ports."
echo "If you continue, your default compiler will be used."
read -p "Are you sure you want to continue? [y/N] " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
exit 0
fi
echo "You did not specify whether you intalled GCC 4.5 from brew or ports."
echo "If you continue, your default compiler will be used."
read -p "Are you sure you want to continue? [y/N] " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
exit 0
fi
fi
# check for build folder and start working there
if [[ ! -d ../build-osx ]]
then
mkdir ../build-osx
mkdir ../build-osx
fi
cd ../build-osx
# patch if necessary
if [[ $LUA_PATCH -ne 0 ]]
then
cd ..
echo "$PWD"
sed -e '1,/'"PATCH""CODE"'/d' "$ME" | patch -p0
cd -
cd ..
echo "$PWD"
sed -e '1,/'"PATCH""CODE"'/d' "$ME" | patch -p0
cd -
fi
echo "Generate"
@ -101,17 +101,17 @@ make install
# unpatch if /libarary/luaTypes.cpp was patched
if [[ $LUA_PATCH -ne 0 ]]
then
cd ..
echo -n "un"
sed -e '1,/'"PATCH""CODE"'/d' "$ME" | patch -p0 -R
cd -
cd ..
echo -n "un"
sed -e '1,/'"PATCH""CODE"'/d' "$ME" | patch -p0 -R
cd -
fi
exit 0
# PATCHCODE - everything below this line is fed into patch
--- library/LuaTypes.cpp 2014-08-20 00:13:17.000000000 -0700
+++ library/LuaTypes.cpp 2014-08-31 23:31:00.000000000 -0700
--- library/LuaTypes.cpp 2014-08-20 00:13:17.000000000 -0700
+++ library/LuaTypes.cpp 2014-08-31 23:31:00.000000000 -0700
@@ -464,7 +464,7 @@
{
case struct_field_info::STATIC_STRING:

@ -1,34 +1,34 @@
{
"folders":
[
{
"path": "."
}
],
"build_systems":
[
{
"name": "DFHack make",
"working_dir": "$project_path",
"cmd": ["python", "$project_path/build/sublime/make.py", "$file"],
"variants": [
{
"name": "Build all",
"cmd": ["python", "$project_path/build/sublime/make.py", "-a"]
},
{
"name": "Build+install all",
"cmd": ["python", "$project_path/build/sublime/make.py", "-ai"]
},
{
"name": "Build plugin",
"cmd": ["python", "$project_path/build/sublime/make.py", "-ap", "$file"]
},
{
"name": "Build+install plugin",
"cmd": ["python", "$project_path/build/sublime/make.py", "-aip", "$file"]
}
]
}
]
"folders":
[
{
"path": "."
}
],
"build_systems":
[
{
"name": "DFHack make",
"working_dir": "$project_path",
"cmd": ["python", "$project_path/build/sublime/make.py", "$file"],
"variants": [
{
"name": "Build all",
"cmd": ["python", "$project_path/build/sublime/make.py", "-a"]
},
{
"name": "Build+install all",
"cmd": ["python", "$project_path/build/sublime/make.py", "-ai"]
},
{
"name": "Build plugin",
"cmd": ["python", "$project_path/build/sublime/make.py", "-ap", "$file"]
},
{
"name": "Build+install plugin",
"cmd": ["python", "$project_path/build/sublime/make.py", "-aip", "$file"]
}
]
}
]
}

@ -1,4 +1,3 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
DFHack documentation build configuration file

@ -14,4 +14,3 @@ if(BUILD_TESTS)
DESTINATION blueprints/library/test
)
endif()

@ -58,4 +58,3 @@ u <- drainage level
,,,,,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r
,,,,,,,,,,,,r
,,,,,,,,,,,,r

Can't render this file because it has a wrong number of fields in line 38.

@ -2897,4 +2897,3 @@ build2_apartments/apartments_build2
,,,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h
,,,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,`
,,,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f

Can't render this file because it has a wrong number of fields in line 58.

@ -150,4 +150,3 @@ Wilder
Wisdom
Wyatt
Zephyr

@ -175,4 +175,3 @@ The script interface simply lets you designate one of the squads that
are assigned to the barracks/armory containing the selected stand as
the intended user. In order to aid in the choice, it shows the number
of currently assigned racks for every valid squad.

@ -112,4 +112,3 @@ If you're not comfortable programming, you can help by:
All those things are crucial, and often under-represented. So if that's
your thing, go get started!

@ -31,4 +31,3 @@ of DF-structures:
/library/xml/SYNTAX
/library/xml/how-to-update

@ -18,4 +18,3 @@ These are pages relevant to people developing for DFHack.
/docs/Structures-intro
/docs/Memory-research
/docs/Binpatches

@ -131,4 +131,3 @@ namespace DFHack
};
}
}

@ -93,4 +93,3 @@ DFhackCExport int egg_sdl_event(SDL::Event* event);
// hook - ncurses event. return -1 to consume
DFhackCExport int egg_curses_event(int orig_return);

@ -240,4 +240,3 @@ namespace LuaWrapper {
void AttachDFGlobals(lua_State *state);
}}

@ -57,4 +57,3 @@ namespace DFHack
};
}
#endif //MODULE_H_INCLUDED

@ -352,4 +352,3 @@ namespace DFHack
*/
DFHACK_EXPORT df::tiletype matchTileMaterial(df::tiletype source, df::tiletype_material tmat);
}

@ -18,4 +18,3 @@ bool has_assignments()
{
return tile_bitmask.has_assignments();
}

@ -207,4 +207,3 @@ DFHACK_EXPORT bool isSquadEquipment(df::item *item);
}
}

@ -112,4 +112,3 @@ namespace DFHack
DFHACK_EXPORT bool operator== (const df::job &a, const df::job &b);
}
#endif

@ -383,4 +383,3 @@ namespace DFHack
};
}
#endif

@ -8,4 +8,3 @@ namespace DFHack {
DFHACK_EXPORT bool doOnce(std::string);
}
}

@ -110,4 +110,3 @@ namespace DFHack
}
}
#endif

@ -44,4 +44,3 @@ function scheduleUnlessAlreadyScheduled(name,time,timeUnits,func)
end
return _ENV

@ -397,4 +397,3 @@ function GetTileTypeMat(typ, matspec, x, y, z)
end
return _ENV

@ -276,4 +276,3 @@ bool Burrows::setAssignedBlockTile(df::burrow *burrow, df::map_block *block, df:
return true;
}

@ -1254,4 +1254,3 @@ static void manageInteractionEvent(color_ostream& out) {
//TODO: deduce attacker from latest defend event first
}
}

@ -1153,4 +1153,3 @@ df::enums::biome_type::biome_type Maps::GetBiomeType(int world_coord_x, int worl
{
return Maps::GetBiomeTypeWithRef(world_coord_x, world_coord_y, world_coord_y);
}

@ -13,4 +13,3 @@ bool DFHack::Once::alreadyDone(string bob) {
bool DFHack::Once::doOnce(string bob) {
return thingsDone.insert(bob).second;
}

@ -4,11 +4,11 @@ cd "${PWD}"
#thanks to Iriel for figuring this out
OSREV=`uname -r | cut -d. -f1`
if [ "$OSREV" -ge 11 ] ; then
export DYLD_LIBRARY_PATH="./hack:./libs:./hack/libs"
export DYLD_FRAMEWORK_PATH="./hack:./libs:./hack/libs"
export DYLD_LIBRARY_PATH="./hack:./libs:./hack/libs"
export DYLD_FRAMEWORK_PATH="./hack:./libs:./hack/libs"
else
export DYLD_FALLBACK_LIBRARY_PATH="./hack:./libs:./hack/libs"
export DYLD_FALLBACK_FRAMEWORK_PATH="./hack:./libs:./hack/libs"
export DYLD_FALLBACK_LIBRARY_PATH="./hack:./libs:./hack/libs"
export DYLD_FALLBACK_FRAMEWORK_PATH="./hack:./libs:./hack/libs"
fi
# attempt to remove quarantine flag: https://github.com/DFHack/dfhack/issues/1465

@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@ -158,7 +158,7 @@ Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
@ -267,7 +267,7 @@ Library will still fall under Section 6.)
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
@ -422,7 +422,7 @@ conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest

@ -453,4 +453,3 @@ static command_result autofarm(color_ostream& out, std::vector<std::string>& par
return CR_OK;
}

@ -194,4 +194,3 @@ void unitAttack(color_ostream& out, void* ptr) {
out.print(" %s\n", part->name_singular[0]->c_str());
}
}

@ -32,4 +32,3 @@ command_result onceExample (color_ostream &out, std::vector <std::string> & para
}
return CR_OK;
}

@ -273,4 +273,3 @@ static command_result stockcheck(color_ostream &out, vector <string> & parameter
return CR_OK;
}

@ -80,4 +80,3 @@ command_result df_gzoom (color_ostream &out, std::vector<std::string> & paramete
Gui::setViewCoords(x,y,z);
return CR_OK;
}

@ -1543,4 +1543,3 @@ command_result digtype (color_ostream &out, vector <string> & parameters)
delete mCache;
return CR_OK;
}

@ -11,4 +11,3 @@
using namespace std;
int32_t assignJob(DFHack::color_ostream& out, Edge firstImportantEdge, unordered_map<df::coord,df::coord,PointHash> parentMap, unordered_map<df::coord,cost_t,PointHash>& costMap, vector<int32_t>& invaders, unordered_set<df::coord,PointHash>& requiresZNeg, unordered_set<df::coord,PointHash>& requiresZPos, MapExtras::MapCache& cache, DigAbilities& abilities);

@ -631,5 +631,3 @@ df::coord getRoot(df::coord point, map<df::coord, df::coord>& rootMap) {
rootMap[point] = root;
return root;
}

@ -482,4 +482,3 @@ vector<Edge>* getEdgeSet(color_ostream &out, df::coord point, MapExtras::MapCach
return result;
}

@ -95,4 +95,3 @@ struct PointHash {
cost_t getEdgeCost(DFHack::color_ostream& out, df::coord pt1, df::coord pt2, DigAbilities& abilities);
std::vector<Edge>* getEdgeSet(DFHack::color_ostream &out, df::coord point, MapExtras::MapCache& cache, int32_t xMax, int32_t yMax, int32_t zMax, DigAbilities& abilities);

@ -2549,4 +2549,3 @@ void embark_assist::survey::shutdown() {
delete state;
state = nullptr;
}

@ -2458,4 +2458,3 @@ command_result labormanager(color_ostream &out, std::vector <std::string> & para
return CR_OK;
}
}

@ -491,4 +491,3 @@ protected:
int display_max_rows;
int max_item_width;
};

@ -204,4 +204,3 @@ command_result misery(color_ostream &out, vector<string>& parameters) {
return CR_OK;
}

@ -121,4 +121,3 @@ static command_result nestboxes(color_ostream &out, vector <string> & parameters
}
return CR_OK;
}

@ -87,4 +87,3 @@ DFHACK_PLUGIN_LUA_FUNCTIONS {
DFHACK_LUA_FUNCTION(paintScreen),
DFHACK_LUA_END
};

@ -209,4 +209,3 @@ DFhackCExport command_result plugin_enable(color_ostream &out, bool enable)
return CR_OK;
}

@ -3,20 +3,20 @@ building_spatter
[OBJECT:BUILDING]
[BUILDING_WORKSHOP:GREASING_STATION]
[NAME:Greasing Station]
[NAME_COLOR:2:0:1]
[DIM:1:1]
[WORK_LOCATION:1:1]
[BUILD_LABOR:DYER]
[BUILD_KEY:CUSTOM_ALT_G]
[BLOCK:1:0]
[TILE:0:1:150]
[COLOR:0:1:0:0:1]
[TILE:1:1:150]
[COLOR:1:1:MAT]
[TILE:2:1:8]
[COLOR:2:1:MAT]
[TILE:3:1:8]
[COLOR:3:1:7:5:0]
[BUILD_ITEM:1:BUCKET:NONE:NONE:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:NONE:NONE:NONE:NONE][BUILDMAT]
[NAME:Greasing Station]
[NAME_COLOR:2:0:1]
[DIM:1:1]
[WORK_LOCATION:1:1]
[BUILD_LABOR:DYER]
[BUILD_KEY:CUSTOM_ALT_G]
[BLOCK:1:0]
[TILE:0:1:150]
[COLOR:0:1:0:0:1]
[TILE:1:1:150]
[COLOR:1:1:MAT]
[TILE:2:1:8]
[COLOR:2:1:MAT]
[TILE:3:1:8]
[COLOR:3:1:7:5:0]
[BUILD_ITEM:1:BUCKET:NONE:NONE:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:NONE:NONE:NONE:NONE][BUILDMAT]

@ -3,90 +3,90 @@ building_steam_engine
[OBJECT:BUILDING]
[BUILDING_WORKSHOP:STEAM_ENGINE]
[NAME:Steam Engine]
[NAME_COLOR:4:0:1]
[DIM:3:3]
[WORK_LOCATION:2:3]
[BUILD_LABOR:MECHANIC]
[BUILD_KEY:CUSTOM_ALT_S]
[BLOCK:1:1:1:1]
[BLOCK:2:1:1:1]
[BLOCK:3:1:0:1]
[TILE:0:1:240:' ':254]
[TILE:0:2:' ':' ':128]
[TILE:0:3:246:' ':' ']
[COLOR:0:1:6:0:0:0:0:0:7:0:0]
[COLOR:0:2:0:0:0:0:0:0:7:0:0]
[COLOR:0:3:MAT:0:0:0:0:0:0]
[TILE:1:1:246:128:' ']
[TILE:1:2:' ':' ':254]
[TILE:1:3:254:'/':240]
[COLOR:1:1:MAT:7:0:0:0:0:0]
[COLOR:1:2:0:0:0:0:0:0:7:0:0]
[COLOR:1:3:7:0:0:6:0:0:6:0:0]
[TILE:2:1:21:' ':128]
[TILE:2:2:128:' ':246]
[TILE:2:3:177:19:177]
[COLOR:2:1:6:0:0:0:0:0:7:0:0]
[COLOR:2:2:7:0:0:0:0:0:MAT]
[COLOR:2:3:7:0:0:6:0:0:7:0:0]
Tile 15 marks places where machines can connect.
Tile 19 marks the hearth (color changed to reflect power).
[TILE:3:1:15:246:15]
[TILE:3:2:'\':19:'/']
[TILE:3:3:7:' ':7]
Color 1:?:1 water indicator, 4:?:1 magma indicator:
[COLOR:3:1:7:0:0:MAT:7:0:0]
[COLOR:3:2:6:0:0:0:0:1:6:0:0]
[COLOR:3:3:1:7:1:0:0:0:4:7:1]
[BUILD_ITEM:1:BARREL:NONE:INORGANIC:NONE][EMPTY][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:PIPE_SECTION:NONE:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:TRAPCOMP:ITEM_TRAPCOMP_STEAM_PISTON:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:CHAIN:NONE:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:TRAPPARTS:NONE:NONE:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:BLOCKS:NONE:NONE:NONE][BUILDMAT][FIRE_BUILD_SAFE]
[NAME:Steam Engine]
[NAME_COLOR:4:0:1]
[DIM:3:3]
[WORK_LOCATION:2:3]
[BUILD_LABOR:MECHANIC]
[BUILD_KEY:CUSTOM_ALT_S]
[BLOCK:1:1:1:1]
[BLOCK:2:1:1:1]
[BLOCK:3:1:0:1]
[TILE:0:1:240:' ':254]
[TILE:0:2:' ':' ':128]
[TILE:0:3:246:' ':' ']
[COLOR:0:1:6:0:0:0:0:0:7:0:0]
[COLOR:0:2:0:0:0:0:0:0:7:0:0]
[COLOR:0:3:MAT:0:0:0:0:0:0]
[TILE:1:1:246:128:' ']
[TILE:1:2:' ':' ':254]
[TILE:1:3:254:'/':240]
[COLOR:1:1:MAT:7:0:0:0:0:0]
[COLOR:1:2:0:0:0:0:0:0:7:0:0]
[COLOR:1:3:7:0:0:6:0:0:6:0:0]
[TILE:2:1:21:' ':128]
[TILE:2:2:128:' ':246]
[TILE:2:3:177:19:177]
[COLOR:2:1:6:0:0:0:0:0:7:0:0]
[COLOR:2:2:7:0:0:0:0:0:MAT]
[COLOR:2:3:7:0:0:6:0:0:7:0:0]
Tile 15 marks places where machines can connect.
Tile 19 marks the hearth (color changed to reflect power).
[TILE:3:1:15:246:15]
[TILE:3:2:'\':19:'/']
[TILE:3:3:7:' ':7]
Color 1:?:1 water indicator, 4:?:1 magma indicator:
[COLOR:3:1:7:0:0:MAT:7:0:0]
[COLOR:3:2:6:0:0:0:0:1:6:0:0]
[COLOR:3:3:1:7:1:0:0:0:4:7:1]
[BUILD_ITEM:1:BARREL:NONE:INORGANIC:NONE][EMPTY][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:PIPE_SECTION:NONE:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:TRAPCOMP:ITEM_TRAPCOMP_STEAM_PISTON:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:CHAIN:NONE:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:TRAPPARTS:NONE:NONE:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:BLOCKS:NONE:NONE:NONE][BUILDMAT][FIRE_BUILD_SAFE]
[BUILDING_WORKSHOP:MAGMA_STEAM_ENGINE]
[NAME:Magma Steam Engine]
[NAME_COLOR:4:0:1]
[DIM:3:3]
[WORK_LOCATION:2:3]
[BUILD_LABOR:MECHANIC]
[BUILD_KEY:CUSTOM_ALT_E]
[NEEDS_MAGMA]
[BLOCK:1:1:1:1]
[BLOCK:2:1:1:1]
[BLOCK:3:1:0:1]
[TILE:0:1:240:' ':254]
[TILE:0:2:' ':' ':128]
[TILE:0:3:246:' ':' ']
[COLOR:0:1:6:0:0:0:0:0:7:0:0]
[COLOR:0:2:0:0:0:0:0:0:7:0:0]
[COLOR:0:3:MAT:0:0:0:0:0:0]
[TILE:1:1:246:128:' ']
[TILE:1:2:' ':' ':254]
[TILE:1:3:254:'/':240]
[COLOR:1:1:MAT:7:0:0:0:0:0]
[COLOR:1:2:0:0:0:0:0:0:7:0:0]
[COLOR:1:3:7:0:0:6:0:0:6:0:0]
[TILE:2:1:21:' ':128]
[TILE:2:2:128:' ':246]
[TILE:2:3:177:19:177]
[COLOR:2:1:6:0:0:0:0:0:7:0:0]
[COLOR:2:2:7:0:0:0:0:0:MAT]
[COLOR:2:3:7:0:0:6:0:0:7:0:0]
Tile 15 marks places where machines can connect.
Tile 19 marks the hearth (color changed to reflect power).
[TILE:3:1:15:246:15]
[TILE:3:2:'\':19:'/']
[TILE:3:3:7:' ':7]
Color 1:?:1 water indicator, 4:?:1 magma indicator:
[COLOR:3:1:7:0:0:MAT:7:0:0]
[COLOR:3:2:6:0:0:0:0:1:6:0:0]
[COLOR:3:3:1:7:1:0:0:0:4:7:1]
[BUILD_ITEM:1:BARREL:NONE:INORGANIC:NONE][EMPTY][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:PIPE_SECTION:NONE:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:TRAPCOMP:ITEM_TRAPCOMP_STEAM_PISTON:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:CHAIN:NONE:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:TRAPPARTS:NONE:NONE:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:BLOCKS:NONE:NONE:NONE][BUILDMAT][MAGMA_BUILD_SAFE]
[NAME:Magma Steam Engine]
[NAME_COLOR:4:0:1]
[DIM:3:3]
[WORK_LOCATION:2:3]
[BUILD_LABOR:MECHANIC]
[BUILD_KEY:CUSTOM_ALT_E]
[NEEDS_MAGMA]
[BLOCK:1:1:1:1]
[BLOCK:2:1:1:1]
[BLOCK:3:1:0:1]
[TILE:0:1:240:' ':254]
[TILE:0:2:' ':' ':128]
[TILE:0:3:246:' ':' ']
[COLOR:0:1:6:0:0:0:0:0:7:0:0]
[COLOR:0:2:0:0:0:0:0:0:7:0:0]
[COLOR:0:3:MAT:0:0:0:0:0:0]
[TILE:1:1:246:128:' ']
[TILE:1:2:' ':' ':254]
[TILE:1:3:254:'/':240]
[COLOR:1:1:MAT:7:0:0:0:0:0]
[COLOR:1:2:0:0:0:0:0:0:7:0:0]
[COLOR:1:3:7:0:0:6:0:0:6:0:0]
[TILE:2:1:21:' ':128]
[TILE:2:2:128:' ':246]
[TILE:2:3:177:19:177]
[COLOR:2:1:6:0:0:0:0:0:7:0:0]
[COLOR:2:2:7:0:0:0:0:0:MAT]
[COLOR:2:3:7:0:0:6:0:0:7:0:0]
Tile 15 marks places where machines can connect.
Tile 19 marks the hearth (color changed to reflect power).
[TILE:3:1:15:246:15]
[TILE:3:2:'\':19:'/']
[TILE:3:3:7:' ':7]
Color 1:?:1 water indicator, 4:?:1 magma indicator:
[COLOR:3:1:7:0:0:MAT:7:0:0]
[COLOR:3:2:6:0:0:0:0:1:6:0:0]
[COLOR:3:3:1:7:1:0:0:0:4:7:1]
[BUILD_ITEM:1:BARREL:NONE:INORGANIC:NONE][EMPTY][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:PIPE_SECTION:NONE:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:TRAPCOMP:ITEM_TRAPCOMP_STEAM_PISTON:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:CHAIN:NONE:INORGANIC:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:TRAPPARTS:NONE:NONE:NONE][CAN_USE_ARTIFACT]
[BUILD_ITEM:1:BLOCKS:NONE:NONE:NONE][BUILDMAT][MAGMA_BUILD_SAFE]

@ -5,164 +5,164 @@ reaction_spatter
Reaction name must start with 'SPATTER_ADD_':
[REACTION:SPATTER_ADD_OBJECT_LIQUID]
[NAME:coat object with liquid]
[ADVENTURE_MODE_ENABLED]
[SKILL:DYER]
[REAGENT:extract:150:LIQUID_MISC:NONE:NONE:NONE]
[MIN_DIMENSION:150]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:NONE:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:FAT][UNROTTEN]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:800:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[NAME:coat object with liquid]
[ADVENTURE_MODE_ENABLED]
[SKILL:DYER]
[REAGENT:extract:150:LIQUID_MISC:NONE:NONE:NONE]
[MIN_DIMENSION:150]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:NONE:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:FAT][UNROTTEN]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:800:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[REACTION:SPATTER_ADD_WEAPON_EXTRACT]
[NAME:coat weapon with extract]
[BUILDING:GREASING_STATION:CUSTOM_W]
[SKILL:DYER]
[REAGENT:extract:100:LIQUID_MISC:NONE:NONE:NONE]
[MIN_DIMENSION:100]
[REACTION_CLASS:CREATURE_EXTRACT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[CAN_USE_ARTIFACT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:WEAPON:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:800:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[NAME:coat weapon with extract]
[BUILDING:GREASING_STATION:CUSTOM_W]
[SKILL:DYER]
[REAGENT:extract:100:LIQUID_MISC:NONE:NONE:NONE]
[MIN_DIMENSION:100]
[REACTION_CLASS:CREATURE_EXTRACT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[CAN_USE_ARTIFACT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:WEAPON:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:800:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[REACTION:SPATTER_ADD_AMMO_EXTRACT]
[NAME:coat ammo with extract]
[BUILDING:GREASING_STATION:CUSTOM_A]
[SKILL:DYER]
[REAGENT:extract:50:LIQUID_MISC:NONE:NONE:NONE]
[MIN_DIMENSION:50]
[REACTION_CLASS:CREATURE_EXTRACT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[CAN_USE_ARTIFACT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:AMMO:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[MIN_DIMENSION:5] don't waste materials on single bolts
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:200:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[NAME:coat ammo with extract]
[BUILDING:GREASING_STATION:CUSTOM_A]
[SKILL:DYER]
[REAGENT:extract:50:LIQUID_MISC:NONE:NONE:NONE]
[MIN_DIMENSION:50]
[REACTION_CLASS:CREATURE_EXTRACT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
[CAN_USE_ARTIFACT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:AMMO:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[MIN_DIMENSION:5] don't waste materials on single bolts
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:200:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[REACTION:SPATTER_ADD_WEAPON_GCS]
[NAME:coat weapon with GCS venom]
[BUILDING:GREASING_STATION:NONE]
[SKILL:DYER]
[REAGENT:extract:100:LIQUID_MISC:NONE:CREATURE_MAT:SPIDER_CAVE_GIANT:POISON]
[MIN_DIMENSION:100]
[REACTION_CLASS:CREATURE_EXTRACT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:WEAPON:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:800:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[NAME:coat weapon with GCS venom]
[BUILDING:GREASING_STATION:NONE]
[SKILL:DYER]
[REAGENT:extract:100:LIQUID_MISC:NONE:CREATURE_MAT:SPIDER_CAVE_GIANT:POISON]
[MIN_DIMENSION:100]
[REACTION_CLASS:CREATURE_EXTRACT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:WEAPON:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:800:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[REACTION:SPATTER_ADD_AMMO_GCS]
[NAME:coat ammo with GCS venom]
[BUILDING:GREASING_STATION:NONE]
[SKILL:DYER]
[REAGENT:extract:50:LIQUID_MISC:NONE:CREATURE_MAT:SPIDER_CAVE_GIANT:POISON]
[MIN_DIMENSION:50]
[REACTION_CLASS:CREATURE_EXTRACT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:AMMO:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:200:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[NAME:coat ammo with GCS venom]
[BUILDING:GREASING_STATION:NONE]
[SKILL:DYER]
[REAGENT:extract:50:LIQUID_MISC:NONE:CREATURE_MAT:SPIDER_CAVE_GIANT:POISON]
[MIN_DIMENSION:50]
[REACTION_CLASS:CREATURE_EXTRACT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:AMMO:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:200:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[REACTION:SPATTER_ADD_WEAPON_GDS]
[NAME:coat weapon with GDS venom]
[BUILDING:GREASING_STATION:NONE]
[SKILL:DYER]
[REAGENT:extract:100:LIQUID_MISC:NONE:CREATURE_MAT:SCORPION_DESERT_GIANT:POISON]
[MIN_DIMENSION:100]
[REACTION_CLASS:CREATURE_EXTRACT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:WEAPON:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:800:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[NAME:coat weapon with GDS venom]
[BUILDING:GREASING_STATION:NONE]
[SKILL:DYER]
[REAGENT:extract:100:LIQUID_MISC:NONE:CREATURE_MAT:SCORPION_DESERT_GIANT:POISON]
[MIN_DIMENSION:100]
[REACTION_CLASS:CREATURE_EXTRACT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:WEAPON:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:800:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[REACTION:SPATTER_ADD_AMMO_GDS]
[NAME:coat ammo with GDS venom]
[BUILDING:GREASING_STATION:NONE]
[SKILL:DYER]
[REAGENT:extract:50:LIQUID_MISC:NONE:CREATURE_MAT:SCORPION_DESERT_GIANT:POISON]
[MIN_DIMENSION:50]
[REACTION_CLASS:CREATURE_EXTRACT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:AMMO:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:200:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]
[NAME:coat ammo with GDS venom]
[BUILDING:GREASING_STATION:NONE]
[SKILL:DYER]
[REAGENT:extract:50:LIQUID_MISC:NONE:CREATURE_MAT:SCORPION_DESERT_GIANT:POISON]
[MIN_DIMENSION:50]
[REACTION_CLASS:CREATURE_EXTRACT]
[REAGENT:extract container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRESERVE_REAGENT]
[DOES_NOT_DETERMINE_PRODUCT_AMOUNT]
The object to improve must be after the input mat, so that it is known:
[REAGENT:object:1:AMMO:NONE:NONE:NONE]
[PRESERVE_REAGENT]
[CAN_USE_ARTIFACT]
Need some excuse why the spatter is water-resistant:
[REAGENT:grease:1:GLOB:NONE:NONE:NONE][REACTION_CLASS:TALLOW][UNROTTEN]
The probability is used as spatter size; Legendary gives +90%:
COVERED = liquid, GLAZED = solid, BANDS = paste, SPIKES = powder
[TRANSFER_ARTIFACT_STATUS]
[IMPROVEMENT:200:object:COVERED:GET_MATERIAL_FROM_REAGENT:extract:NONE]

@ -3,12 +3,11 @@ reaction_steam_engine
[OBJECT:REACTION]
[REACTION:STOKE_BOILER]
[NAME:stoke the boiler]
[BUILDING:STEAM_ENGINE:CUSTOM_S]
[BUILDING:MAGMA_STEAM_ENGINE:CUSTOM_S]
[FUEL]
[SKILL:SMELT]
Dimension is the number of days it can produce 100 power * 100.
I.e. with 2000 it means energy of 1 job = 1 water wheel for 20 days.
[PRODUCT:100:1:LIQUID_MISC:NONE:WATER][PRODUCT_DIMENSION:2000]
[NAME:stoke the boiler]
[BUILDING:STEAM_ENGINE:CUSTOM_S]
[BUILDING:MAGMA_STEAM_ENGINE:CUSTOM_S]
[FUEL]
[SKILL:SMELT]
Dimension is the number of days it can produce 100 power * 100.
I.e. with 2000 it means energy of 1 job = 1 water wheel for 20 days.
[PRODUCT:100:1:LIQUID_MISC:NONE:WATER][PRODUCT_DIMENSION:2000]

@ -914,4 +914,3 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re
break;
}
}

@ -11,5 +11,3 @@ DFHack::command_result GetSideMenu(DFHack::color_ostream &stream, const dfproto:
DFHack::command_result SetSideMenu(DFHack::color_ostream &stream, const DwarfControl::SidebarCommand *in);
#endif // !DWARF_CONTROL_H

@ -59,4 +59,3 @@ command_result skeleton2 (color_ostream &out, std::vector <std::string> & parame
out.print("blah");
return CR_OK;
}

@ -44,4 +44,3 @@ public:
private:
OrganicMatLookup();
};

@ -76,5 +76,3 @@ static inline bool is_dfstockfile ( const std::string& filename )
}
// }}} utility Functions

@ -544,7 +544,3 @@ DFHACK_PLUGIN_LUA_COMMANDS
DFHACK_LUA_COMMAND ( stockpiles_list_settings ),
DFHACK_LUA_END
};

@ -31,4 +31,3 @@ struct civ_agreement_view_hook : df::viewscreen_entityst {
};
IMPLEMENT_VMETHOD_INTERPOSE(civ_agreement_view_hook, render);

@ -45,4 +45,3 @@ struct fast_heat_hook : df::item_actual {
IMPLEMENT_VMETHOD_INTERPOSE(fast_heat_hook, updateTempFromMap);
IMPLEMENT_VMETHOD_INTERPOSE(fast_heat_hook, updateTemperature);
IMPLEMENT_VMETHOD_INTERPOSE(fast_heat_hook, adjustTemperature);

@ -57,4 +57,3 @@ struct fast_trade_select_hook : df::viewscreen_tradegoodsst {
};
IMPLEMENT_VMETHOD_INTERPOSE(fast_trade_select_hook, feed);

@ -54,4 +54,3 @@ function test.invert_overwrite()
expect.eq(i.b, 2)
expect.eq(i.a, 3)
end

@ -24,4 +24,3 @@ function test.index_id_bad()
expect.eq(df.global.world.units.other[df.units_other_id._last_item + 1], 'container')
end)
end