diff --git a/docs/sdk/definition/properties.xml b/docs/sdk/definition/properties.xml index 12afca454..d2dfd5b5a 100644 --- a/docs/sdk/definition/properties.xml +++ b/docs/sdk/definition/properties.xml @@ -174,6 +174,11 @@ Stand = { MaterialIncinerate bool Incineration when submerged in incendiary material. + + + FireproofContainer + bool + Anything contained in this object does not catch fire when submerged in incendiary material. EditCursorCommands diff --git a/planet/Objects.ocd/Structures.ocd/Armory.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Armory.ocd/Script.c index 797f9ac87..6fd911774 100644 --- a/planet/Objects.ocd/Structures.ocd/Armory.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Armory.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/ChemicalLab.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/ChemicalLab.ocd/Script.c index eedd73590..2cdd127c6 100644 --- a/planet/Objects.ocd/Structures.ocd/ChemicalLab.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/ChemicalLab.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/Flagpole.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Flagpole.ocd/Script.c index da47ab1cb..0f02b6efc 100644 --- a/planet/Objects.ocd/Structures.ocd/Flagpole.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Flagpole.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/Foundry.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Foundry.ocd/Script.c index 6bac4ace4..56cb1856f 100644 --- a/planet/Objects.ocd/Structures.ocd/Foundry.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Foundry.ocd/Script.c @@ -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}; diff --git a/planet/Objects.ocd/Structures.ocd/InventorsLab.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/InventorsLab.ocd/Script.c index 1d8dc92a8..0e9586388 100644 --- a/planet/Objects.ocd/Structures.ocd/InventorsLab.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/InventorsLab.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/Kitchen.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Kitchen.ocd/Script.c index 1af077951..64e30af31 100644 --- a/planet/Objects.ocd/Structures.ocd/Kitchen.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Kitchen.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/Loom.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Loom.ocd/Script.c index acb96b628..50b0a9b58 100644 --- a/planet/Objects.ocd/Structures.ocd/Loom.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Loom.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/Pump.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Pump.ocd/Script.c index af10d12c8..d31bbd9d6 100644 --- a/planet/Objects.ocd/Structures.ocd/Pump.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Pump.ocd/Script.c @@ -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; diff --git a/planet/Objects.ocd/Structures.ocd/Sawmill.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Sawmill.ocd/Script.c index 7409442d5..986c66a9a 100644 --- a/planet/Objects.ocd/Structures.ocd/Sawmill.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Sawmill.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/Shipyard.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Shipyard.ocd/Script.c index 6894bb2da..666bae45c 100644 --- a/planet/Objects.ocd/Structures.ocd/Shipyard.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Shipyard.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/SteamEngine.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/SteamEngine.ocd/Script.c index 22a96537e..19b728c70 100644 --- a/planet/Objects.ocd/Structures.ocd/SteamEngine.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/SteamEngine.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/ToolsWorkshop.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/ToolsWorkshop.ocd/Script.c index 1a7814312..157beef48 100644 --- a/planet/Objects.ocd/Structures.ocd/ToolsWorkshop.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/ToolsWorkshop.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/Windmill.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/Windmill.ocd/Script.c index d1c6d0138..cc977d0da 100644 --- a/planet/Objects.ocd/Structures.ocd/Windmill.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/Windmill.ocd/Script.c @@ -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}; \ No newline at end of file diff --git a/planet/Objects.ocd/Structures.ocd/WoodenCabin.ocd/Script.c b/planet/Objects.ocd/Structures.ocd/WoodenCabin.ocd/Script.c index eac0a91a1..024032b0a 100644 --- a/planet/Objects.ocd/Structures.ocd/WoodenCabin.ocd/Script.c +++ b/planet/Objects.ocd/Structures.ocd/WoodenCabin.ocd/Script.c @@ -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$"; diff --git a/planet/System.ocg/Fire.c b/planet/System.ocg/Fire.c index c19acd866..bbe6fe676 100644 --- a/planet/System.ocg/Fire.c +++ b/planet/System.ocg/Fire.c @@ -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() {