Merge pull request #770 from eswald/instruments

Stockflow repairs
develop
Lethosor 2015-12-19 23:11:55 -05:00
commit e3420a5e67
4 changed files with 37 additions and 29 deletions

@ -216,15 +216,13 @@ enable \
zone \ zone \
stocks \ stocks \
autochop \ autochop \
stockflow \
stockpiles stockpiles
#end a line with a backslash to make it continue to the next line. The \ is deleted for the final command. #end a line with a backslash to make it continue to the next line. The \ is deleted for the final command.
# Multiline commands are ONLY supported for scripts like dfhack.init. You cannot do multiline command manually on the DFHack console. # Multiline commands are ONLY supported for scripts like dfhack.init. You cannot do multiline command manually on the DFHack console.
# You cannot extend a commented line. # You cannot extend a commented line.
# You can comment out the extension of a line. # You can comment out the extension of a line.
# allow the fortress bookkeeper to queue jobs through the manager
enable stockflow
# enable mouse controls and sand indicator in embark screen # enable mouse controls and sand indicator in embark screen
embark-tools enable sand mouse embark-tools enable sand mouse
@ -249,10 +247,3 @@ gui/load-screen enable
####################################################### #######################################################
# Apply binary patches at runtime # # Apply binary patches at runtime #
####################################################### #######################################################
#######################################################
# Disable broken tools for v0.42.01 #
#######################################################
disable stockflow
:lua dfhack.printerr("Some tools incompatible with v0.42.01 have been disabled")

@ -1222,7 +1222,6 @@ public:
job_to_labor_table[df::job_type::MakeChain] = jlf_make_object; job_to_labor_table[df::job_type::MakeChain] = jlf_make_object;
job_to_labor_table[df::job_type::MakeFlask] = jlf_make_object; job_to_labor_table[df::job_type::MakeFlask] = jlf_make_object;
job_to_labor_table[df::job_type::MakeGoblet] = jlf_make_object; job_to_labor_table[df::job_type::MakeGoblet] = jlf_make_object;
job_to_labor_table[df::job_type::MakeInstrument] = jlf_make_object;
job_to_labor_table[df::job_type::MakeToy] = jlf_make_object; job_to_labor_table[df::job_type::MakeToy] = jlf_make_object;
job_to_labor_table[df::job_type::MakeAnimalTrap] = jlf_const(df::unit_labor::TRAPPER); job_to_labor_table[df::job_type::MakeAnimalTrap] = jlf_const(df::unit_labor::TRAPPER);
job_to_labor_table[df::job_type::MakeBarrel] = jlf_make_furniture; job_to_labor_table[df::job_type::MakeBarrel] = jlf_make_furniture;

@ -706,7 +706,6 @@ public:
case job_type::MakeChain: case job_type::MakeChain:
case job_type::MakeFlask: case job_type::MakeFlask:
case job_type::MakeGoblet: case job_type::MakeGoblet:
case job_type::MakeInstrument:
case job_type::MakeToy: case job_type::MakeToy:
case job_type::MakeAnimalTrap: case job_type::MakeAnimalTrap:
case job_type::MakeBarrel: case job_type::MakeBarrel:

@ -127,9 +127,28 @@ function collect_orders()
entry = entry, entry = entry,
} }
else else
-- It might be worth searching reaction_list for the name. -- Todo: Search reaction_list for the name.
-- Then again, this should only happen in unusual situations. -- This can happen when loading an old save in a new version.
print("Mismatched stockflow entry for stockpile #"..stockpile.stockpile_number..": "..entry.value.." ("..order_number..")") -- It's even possible that the reaction has been removed.
local found = false
for number, reaction in ipairs(reaction_list) do
if reaction.name == entry.value then
print("Adjusting stockflow entry for stockpile #"..stockpile.stockpile_number..": "..entry.value.." ("..order_number.." => "..number..")")
entry.ints[entry_ints.order_number] = number
entry:save()
result[spid] = {
stockpile = stockpile,
entry = entry,
}
found = true
break
end
end
if not found then
print("Unmatched stockflow entry for stockpile #"..stockpile.stockpile_number..": "..entry.value.." ("..order_number..")")
end
end end
else else
-- The stockpile no longer exists. -- The stockpile no longer exists.
@ -399,6 +418,14 @@ function collect_reactions()
reaction_entry(result, job_types.CustomReaction, {reaction_name = reaction.code}, name) reaction_entry(result, job_types.CustomReaction, {reaction_name = reaction.code}, name)
end end
-- Reactions generated by the game.
for _, reaction in ipairs(df.global.world.raws.reactions) do
if reaction.source_enid == entity.id then
local name = string.gsub(reaction.name, "^.", string.upper)
reaction_entry(result, job_types.CustomReaction, {reaction_name = reaction.code}, name)
end
end
-- Metal forging -- Metal forging
local itemdefs = df.global.world.raws.itemdefs local itemdefs = df.global.world.raws.itemdefs
for rock_id = 0, #rock_types - 1 do for rock_id = 0, #rock_types - 1 do
@ -465,19 +492,10 @@ function collect_reactions()
clothing_reactions(result, mat_flags, metalclothing) clothing_reactions(result, mat_flags, metalclothing)
end end
if material.flags.ITEMS_HARD then
resource_reactions(result, job_types.MakeTool, mat_flags, entity.resources.tool_type, itemdefs.tools, { resource_reactions(result, job_types.MakeTool, mat_flags, entity.resources.tool_type, itemdefs.tools, {
permissible = (function(itemdef) return itemdef.flags.HARD_MAT end), permissible = (function(itemdef) return ((material.flags.ITEMS_HARD and itemdef.flags.HARD_MAT) or (material.flags.ITEMS_METAL and itemdef.flags.METAL_MAT)) and not itemdef.flags.NO_DEFAULT_JOB end),
capitalize = true, capitalize = true,
}) })
end
if material.flags.ITEMS_METAL then
resource_reactions(result, job_types.MakeTool, mat_flags, entity.resources.tool_type, itemdefs.tools, {
permissible = (function(itemdef) return itemdef.flags.METAL_MAT end),
capitalize = true,
})
end
if material.flags.ITEMS_HARD then if material.flags.ITEMS_HARD then
material_reactions(result, { material_reactions(result, {
@ -560,7 +578,8 @@ function collect_reactions()
}, materials.wood) }, materials.wood)
resource_reactions(result, job_types.MakeTool, materials.wood, entity.resources.tool_type, itemdefs.tools, { resource_reactions(result, job_types.MakeTool, materials.wood, entity.resources.tool_type, itemdefs.tools, {
-- permissible = (function(itemdef) return itemdef.flags.WOOD_MAT end), -- permissible = (function(itemdef) return itemdef.flags.WOOD_MAT and not itemdef.flags.NO_DEFAULT_JOB end),
permissible = (function(itemdef) return not itemdef.flags.NO_DEFAULT_JOB end),
capitalize = true, capitalize = true,
}) })