summaryrefslogtreecommitdiff
path: root/plugins/devel
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-09-02 18:57:10 +0400
committerAlexander Gavrilov2012-09-02 18:57:10 +0400
commit2249cb14fab6fd778ef8e6502cbd749d2f4bfc14 (patch)
treecb157609e64bf67cbe5c90d4c55356185ed1e3eb /plugins/devel
parent3b08ee44d1560f7610187fb1d428fefaa37ed9ab (diff)
downloaddfhack-2249cb14fab6fd778ef8e6502cbd749d2f4bfc14.tar.gz
dfhack-2249cb14fab6fd778ef8e6502cbd749d2f4bfc14.tar.bz2
dfhack-2249cb14fab6fd778ef8e6502cbd749d2f4bfc14.tar.xz
Require level 3 both for water & magma, and indicate level 5 by brightness.
Diffstat (limited to 'plugins/devel')
-rw-r--r--plugins/devel/steam-engine.cpp39
1 files changed, 23 insertions, 16 deletions
diff --git a/plugins/devel/steam-engine.cpp b/plugins/devel/steam-engine.cpp
index 7a67eadd..ef708d11 100644
--- a/plugins/devel/steam-engine.cpp
+++ b/plugins/devel/steam-engine.cpp
@@ -234,7 +234,7 @@ struct workshop_hook : df::building_workshopst {
// Find liquids to consume below the engine.
- bool find_liquids(df::coord *pwater, df::coord *pmagma, bool is_magma, bool any_level)
+ bool find_liquids(df::coord *pwater, df::coord *pmagma, bool is_magma, int min_level)
{
if (!is_magma)
pmagma = NULL;
@@ -252,23 +252,18 @@ struct workshop_hook : df::building_workshopst {
continue;
auto pldes = Maps::getTileDesignation(x,y,z-1);
- if (!pldes || pldes->bits.flow_size == 0)
+ if (!pldes || pldes->bits.flow_size < min_level)
continue;
if (pldes->bits.liquid_type == tile_liquid::Magma)
{
- if (!pmagma || (!any_level && pldes->bits.flow_size < 4))
- continue;
-
- *pmagma = df::coord(x,y,z-1);
+ if (pmagma)
+ *pmagma = df::coord(x,y,z-1);
if (pwater->isValid())
return true;
}
else
{
- if (!any_level && pldes->bits.flow_size < 3)
- continue;
-
*pwater = df::coord(x,y,z-1);
if (!pmagma || pmagma->isValid())
return true;
@@ -286,7 +281,7 @@ struct workshop_hook : df::building_workshopst {
// Consume liquid inputs
df::coord water, magma;
- if (!find_liquids(&water, &magma, engine->is_magma, true))
+ if (!find_liquids(&water, &magma, engine->is_magma, 1))
{
// Destroy the item with enormous wear amount.
liquid->addWear(WEAR_TICKS*5, true, false);
@@ -626,7 +621,7 @@ struct workshop_hook : df::building_workshopst {
if (auto engine = get_steam_engine())
{
df::coord water, magma;
- return !find_liquids(&water, &magma, engine->is_magma, false);
+ return !find_liquids(&water, &magma, engine->is_magma, 3);
}
return INTERPOSE_NEXT(isUnpowered)();
@@ -681,12 +676,24 @@ struct workshop_hook : df::building_workshopst {
if (engine->water_tile.isValid() || engine->magma_tile.isValid())
{
df::coord water, magma;
- find_liquids(&water, &magma, engine->is_magma, false);
+ find_liquids(&water, &magma, engine->is_magma, 3);
+ df::coord dwater, dmagma;
+ find_liquids(&dwater, &dmagma, engine->is_magma, 5);
- if (engine->water_tile.isValid() && !water.isValid())
- db->fore[engine->water_tile.x][engine->water_tile.y] = 0;
- if (engine->magma_tile.isValid() && engine->is_magma && !magma.isValid())
- db->fore[engine->magma_tile.x][engine->magma_tile.y] = 0;
+ if (engine->water_tile.isValid())
+ {
+ if (!water.isValid())
+ db->fore[engine->water_tile.x][engine->water_tile.y] = 0;
+ else if (!dwater.isValid())
+ db->bright[engine->water_tile.x][engine->water_tile.y] = 0;
+ }
+ if (engine->magma_tile.isValid() && engine->is_magma)
+ {
+ if (!magma.isValid())
+ db->fore[engine->magma_tile.x][engine->magma_tile.y] = 0;
+ else if (!dmagma.isValid())
+ db->bright[engine->magma_tile.x][engine->magma_tile.y] = 0;
+ }
}
}
}