diff --git a/docs/sdk/material/ocm.xml b/docs/sdk/material/ocm.xml
index 017937aab..f85616798 100644
--- a/docs/sdk/material/ocm.xml
+++ b/docs/sdk/material/ocm.xml
@@ -106,9 +106,12 @@
Inflammability.
- Incindiary
+ Incendiary
Integer
- This material incinerates objects.
+
+ This material incinerates objects.
+ Note: For compatibility reasons, the misspelling "Incindiary" is also accepted if (and only if) no value with the correct spelling is set.
+
Corrode
@@ -372,8 +375,11 @@
The background material.
- Incindiary
- All materials to be incinerated.
+ Incendiary
+
+ All materials that can incinerate objects.
+ Note: For compatibility reasons, the misspelling "Incindiary" is also accepted.
+
Extinguisher
diff --git a/planet/Arena.ocf/FrozenFortress.ocs/Material.ocg/Snow.ocm b/planet/Arena.ocf/FrozenFortress.ocs/Material.ocg/Snow.ocm
index ebb0ae639..a815e4f3e 100644
--- a/planet/Arena.ocf/FrozenFortress.ocs/Material.ocg/Snow.ocm
+++ b/planet/Arena.ocf/FrozenFortress.ocs/Material.ocg/Snow.ocm
@@ -25,5 +25,5 @@ InMatConvertDepth=1
[Reaction]
Type=Convert
-TargetSpec=Incindiary
+TargetSpec=Incendiary
ConvertMat=Water
diff --git a/planet/Material.ocg/DuroLava.ocm b/planet/Material.ocg/DuroLava.ocm
index d7e7ab693..e1a41c8fc 100644
--- a/planet/Material.ocg/DuroLava.ocm
+++ b/planet/Material.ocg/DuroLava.ocm
@@ -5,7 +5,7 @@ Instable=1
MaxAirSpeed=50
MaxSlide=10000
WindDrift=40
-Incindiary=1
+Incendiary=1
Placement=10
Light=1
TextureOverlay=lava_red
diff --git a/planet/Material.ocg/Lava.ocm b/planet/Material.ocg/Lava.ocm
index 809aa7d8e..f8f8a4d7d 100644
--- a/planet/Material.ocg/Lava.ocm
+++ b/planet/Material.ocg/Lava.ocm
@@ -5,7 +5,7 @@ Instable=1
MaxAirSpeed=50
MaxSlide=10000
WindDrift=40
-Incindiary=1
+Incendiary=1
TempConvStrength=12
BelowTempConvert=100
BelowTempConvertTo=Rock
diff --git a/planet/Material.ocg/Snow.ocm b/planet/Material.ocg/Snow.ocm
index 5a0b4d060..a20d75dfa 100644
--- a/planet/Material.ocg/Snow.ocm
+++ b/planet/Material.ocg/Snow.ocm
@@ -27,5 +27,5 @@ Dig2ObjectRatio=400
[Reaction]
Type=Poof
-TargetSpec=Incindiary
+TargetSpec=Incendiary
diff --git a/planet/Parkour.ocf/VolcanoEscapeEx.ocs/Material.ocg/StableLava.ocm b/planet/Parkour.ocf/VolcanoEscapeEx.ocs/Material.ocg/StableLava.ocm
index 364b8e409..af54f8cda 100644
--- a/planet/Parkour.ocf/VolcanoEscapeEx.ocs/Material.ocg/StableLava.ocm
+++ b/planet/Parkour.ocf/VolcanoEscapeEx.ocs/Material.ocg/StableLava.ocm
@@ -5,7 +5,7 @@ Instable=0
MaxAirSpeed=50
MaxSlide=10000
WindDrift=40
-Incindiary=1
+Incendiary=1
Placement=10
TextureOverlay=lava_red
PXSGfxSize=6
diff --git a/src/landscape/C4Material.cpp b/src/landscape/C4Material.cpp
index 684b5b50f..c9f2c2f14 100644
--- a/src/landscape/C4Material.cpp
+++ b/src/landscape/C4Material.cpp
@@ -123,7 +123,7 @@ void C4MaterialCore::Clear()
MaxSlide = 0;
WindDrift = 0;
Inflammable = 0;
- Incindiary = 0;
+ Incendiary = 0;
Extinguisher = 0;
Corrosive = 0;
Corrode = 0;
@@ -183,6 +183,7 @@ bool C4MaterialCore::Load(C4Group &hGroup,
void C4MaterialCore::CompileFunc(StdCompiler *pComp)
{
+ assert(pComp->hasNaming());
if (pComp->isCompiler()) Clear();
pComp->Name("Material");
pComp->Value(mkNamingAdapt(toC4CStr(Name), "Name", ""));
@@ -214,7 +215,27 @@ void C4MaterialCore::CompileFunc(StdCompiler *pComp)
pComp->Value(mkNamingAdapt(MaxSlide, "MaxSlide", 0));
pComp->Value(mkNamingAdapt(WindDrift, "WindDrift", 0));
pComp->Value(mkNamingAdapt(Inflammable, "Inflammable", 0));
- pComp->Value(mkNamingAdapt(Incindiary, "Incindiary", 0));
+ if (pComp->isCompiler())
+ {
+ // The value used to have a wrong spelling ("Incindiary"). If there's
+ // no "Incendiary" value, use the wrong spelling instead
+ try
+ {
+ pComp->Value(mkNamingAdapt(Incendiary, "Incendiary"));
+ }
+ catch (StdCompiler::NotFoundException *ex)
+ {
+ delete ex;
+ pComp->Value(mkNamingAdapt(Incendiary, "Incindiary", 0));
+ }
+ }
+ else
+ {
+ // When serializing, write both spellings because some script might be
+ // calling GetMaterialVal with the wrong one
+ pComp->Value(mkNamingAdapt(Incendiary, "Incendiary"));
+ pComp->Value(mkNamingAdapt(Incendiary, "Incindiary"));
+ }
pComp->Value(mkNamingAdapt(Corrode, "Corrode", 0));
pComp->Value(mkNamingAdapt(Corrosive, "Corrosive", 0));
pComp->Value(mkNamingAdapt(Extinguisher, "Extinguisher", 0));
@@ -371,10 +392,10 @@ bool C4MaterialMap::CrossMapMaterials(const char* szEarthMaterial) // Called aft
else if (pMatPXS && pMatLS)
{
// incindiary vs extinguisher
- if ((pMatPXS->Incindiary && pMatLS->Extinguisher) || (pMatPXS->Extinguisher && pMatLS->Incindiary))
+ if ((pMatPXS->Incendiary && pMatLS->Extinguisher) || (pMatPXS->Extinguisher && pMatLS->Incendiary))
pReaction = &DefReactPoof;
// incindiary vs inflammable
- else if ((pMatPXS->Incindiary && pMatLS->Inflammable) || (pMatPXS->Inflammable && pMatLS->Incindiary))
+ else if ((pMatPXS->Incendiary && pMatLS->Inflammable) || (pMatPXS->Inflammable && pMatLS->Incendiary))
pReaction = &DefReactIncinerate;
// corrosive vs corrode
else if (pMatPXS->Corrosive && pMatLS->Corrode)
@@ -476,11 +497,11 @@ bool C4MaterialMap::CrossMapMaterials(const char* szEarthMaterial) // Called aft
else
for (int32_t cnt2=0; cnt2TargetSpec.getData(), "Incindiary"))
+ else if (SEqualNoCase(pReact->TargetSpec.getData(), "Incendiary") || SEqualNoCase(pReact->TargetSpec.getData(), "Incindiary"))
{
// add to all incendiary materials
if (pReact->fInverseSpec) SetMatReaction(cnt, -1, pReact);
- for (int32_t cnt2=0; cnt2fInverseSpec) SetMatReaction(cnt, cnt2, pReact);
+ for (int32_t cnt2=0; cnt2fInverseSpec) SetMatReaction(cnt, cnt2, pReact);
}
else if (SEqualNoCase(pReact->TargetSpec.getData(), "Extinguisher"))
{
@@ -667,8 +688,8 @@ bool mrfInsertCheck(int32_t &iX, int32_t &iY, C4Real &fXDir, C4Real &fYDir, int3
// Contact: Stop
fYDir = -GravAccel;
- // Incindiary mats smoke on contact even before doing their slide
- if (::MaterialMap.Map[iPxsMat].Incindiary)
+ // Incendiary mats smoke on contact even before doing their slide
+ if (::MaterialMap.Map[iPxsMat].Incendiary)
if (!Random(25))
{
Smoke(iX, iY, 4 + Random(3));
diff --git a/src/landscape/C4Material.h b/src/landscape/C4Material.h
index fd8ae8691..4508edc34 100644
--- a/src/landscape/C4Material.h
+++ b/src/landscape/C4Material.h
@@ -106,7 +106,7 @@ public:
int32_t MaxSlide;
int32_t WindDrift;
int32_t Inflammable;
- int32_t Incindiary;
+ int32_t Incendiary;
int32_t Extinguisher;
int32_t Corrosive;
int32_t Corrode;
diff --git a/src/object/C4Object.cpp b/src/object/C4Object.cpp
index a1802584a..552d7c296 100644
--- a/src/object/C4Object.cpp
+++ b/src/object/C4Object.cpp
@@ -995,7 +995,7 @@ bool C4Object::ExecLife()
// InMat incineration
if (!::Game.iTick10)
if (InMat!=MNone)
- if (::MaterialMap.Map[InMat].Incindiary)
+ if (::MaterialMap.Map[InMat].Incendiary)
if (GetPropertyInt(P_ContactIncinerate) > 0)
{
Call(PSF_OnInIncendiaryMaterial, &C4AulParSet());