New property, set for all buildings: FireproofContainer.

A fireproof container shields all contents from incendiary material (lava mainly). Structures can now be submerged in lava and the contents will not burn up.
install-platforms
Clonkonaut 2017-11-21 18:16:45 +01:00
parent 5794e1bfb4
commit 8cb3c6f6b3
16 changed files with 41 additions and 8 deletions

View File

@ -174,6 +174,11 @@ Stand = {
<literal_col>MaterialIncinerate</literal_col>
<col>bool</col>
<col>Incineration when submerged in incendiary material.</col>
</row>
<row>
<literal_col>FireproofContainer</literal_col>
<col>bool</col>
<col>Anything contained in this object does not catch fire when submerged in incendiary material.</col>
</row>
<row>
<literal_col>EditCursorCommands</literal_col>

View File

@ -89,5 +89,6 @@ local Name = "$Name$";
local Description ="$Description$";
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Components = {Wood = 3, Metal = 2, Loam = 2};
local Components = {Wood = 3, Metal = 2, Loam = 2};

View File

@ -82,5 +82,6 @@ local Name = "$Name$";
local Description ="$Description$";
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Components = {Wood = 3, Metal = 2};
local Components = {Wood = 3, Metal = 2};

View File

@ -129,5 +129,6 @@ public func Definition(def, ...)
local Name = "$Name$";
local Description = "$Description$";
local HitPoints = 60;
local FireproofContainer = true;
local neutral = false;
local Components = {Wood = 3, Metal = 1};

View File

@ -200,4 +200,5 @@ local Description = "$Description$";
local ContainBlast = true;
local BlastIncinerate = 100;
local HitPoints = 100;
local FireproofContainer = true;
local Components = {Rock = 4, Wood = 2};

View File

@ -78,5 +78,6 @@ local Name = "$Name$";
local Description ="$Description$";
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Components = {Wood = 4, Metal = 3};

View File

@ -81,5 +81,6 @@ local Name = "$Name$";
local Description ="$Description$";
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Components = {Wood = 3, Rock = 2, Metal = 1};

View File

@ -102,5 +102,6 @@ local Name = "$Name$";
local Description ="$Description$";
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Components = {Wood = 3, Metal = 1, Rock = 1};

View File

@ -913,9 +913,10 @@ local ActMap = {
local Name = "$Name$";
local Description = "$Description$";
local BlastIncinerate = 50;
local BlastIncinerate = 70;
local NoBurnDecay = true;
local HitPoints = 70;
local FireproofContainer = true;
local Components = {Wood = 1, Metal = 3};
// Pump speed in amount of pixels to pump per 30 frames.
local PumpSpeed = 50;

View File

@ -310,5 +310,6 @@ local Description = "$Description$";
local SpinStep = 30;
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Components = {Rock = 4, Wood = 1};
local Components = {Rock = 4, Wood = 1};

View File

@ -105,5 +105,6 @@ local Name = "$Name$";
local Description ="$Description$";
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Components = {Wood = 4, Metal = 3};
local Components = {Wood = 4, Metal = 3};

View File

@ -289,6 +289,7 @@ protected func Definition(def)
local ContainBlast = true;
local BlastIncinerate = 130;
local HitPoints = 100;
local FireproofContainer = true;
local Name = "$Name$";
local Description = "$Description$";
local Components = {Rock = 6, Metal = 3};
local Components = {Rock = 6, Metal = 3};

View File

@ -103,5 +103,6 @@ local Name = "$Name$";
local Description ="$Description$";
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Components = {Wood = 3, Metal = 2};
local Components = {Wood = 3, Metal = 2};

View File

@ -209,7 +209,8 @@ protected func Definition(def)
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Name = "$Name$";
local Description = "$Description$";
local Components = {Rock = 6, Wood = 2};
local Components = {Rock = 6, Wood = 2};

View File

@ -71,6 +71,7 @@ func Definition(def) {
}
local ContainBlast = true;
local BlastIncinerate = 100;
local FireproofContainer = true;
local HitPoints = 70;
local Name = "$Name$";
local Description = "$Description$";

View File

@ -78,12 +78,26 @@ global func Incinerate(
// Called if the object is submerged in incendiary material (for example in lava).
global func OnInIncendiaryMaterial()
{
if (this->IsInFireproofContainer())
return;
this->DoEnergy(-7, false, FX_Call_EngFire, NO_OWNER);
// The object might have removed itself.
if (!this) return true;
return this->Incinerate(15, NO_OWNER);
}
global func IsInFireproofContainer()
{
if (!this) return false;
if (this->Contained())
{
if (this->Contained().FireproofContainer)
return true;
return this->Contained()->IsInFireproofContainer();
}
return false;
}
// Makes the calling object non flammable.
global func MakeNonFlammable()
{