mirror of
https://github.com/ZDoom/qzdoom-gpl.git
synced 2024-11-15 16:51:31 +00:00
- Added clearlinespecial, for doom.wad e3m4 line 1069.
- Allow using the parameterized compatibility options with IWAD maps. SVN r3442 (trunk)
This commit is contained in:
parent
5f23b4f64a
commit
9f168e29e2
2 changed files with 57 additions and 21 deletions
|
@ -75,6 +75,7 @@ enum
|
|||
CP_CLEARFLAGS,
|
||||
CP_SETFLAGS,
|
||||
CP_SETSPECIAL,
|
||||
CP_CLEARSPECIAL,
|
||||
CP_SETACTIVATION
|
||||
};
|
||||
|
||||
|
@ -240,6 +241,13 @@ void ParseCompatibility()
|
|||
CompatParams.Push(sc.Number);
|
||||
}
|
||||
}
|
||||
else if (sc.Compare("clearlinespecial"))
|
||||
{
|
||||
if (flags.ExtCommandIndex == ~0u) flags.ExtCommandIndex = CompatParams.Size();
|
||||
CompatParams.Push(CP_CLEARSPECIAL);
|
||||
sc.MustGetNumber();
|
||||
CompatParams.Push(sc.Number);
|
||||
}
|
||||
else if (sc.Compare("setactivation"))
|
||||
{
|
||||
if (flags.ExtCommandIndex == ~0u) flags.ExtCommandIndex = CompatParams.Size();
|
||||
|
@ -278,6 +286,7 @@ void CheckCompatibility(MapData *map)
|
|||
{
|
||||
FMD5Holder md5;
|
||||
FCompatValues *flags;
|
||||
bool onlyparams = true;
|
||||
|
||||
// When playing Doom IWAD levels force COMPAT_SHORTTEX and COMPATF_LIGHT.
|
||||
// I'm not sure if the IWAD maps actually need COMPATF_LIGHT but it certainly does not hurt.
|
||||
|
@ -306,42 +315,50 @@ void CheckCompatibility(MapData *map)
|
|||
}
|
||||
else
|
||||
{
|
||||
map->GetChecksum(md5.Bytes);
|
||||
onlyparams = false;
|
||||
}
|
||||
|
||||
flags = BCompatMap.CheckKey(md5);
|
||||
map->GetChecksum(md5.Bytes);
|
||||
|
||||
if (developer)
|
||||
flags = BCompatMap.CheckKey(md5);
|
||||
|
||||
if (developer)
|
||||
{
|
||||
Printf("MD5 = ");
|
||||
for (size_t j = 0; j < sizeof(md5.Bytes); ++j)
|
||||
{
|
||||
Printf("MD5 = ");
|
||||
for (size_t j = 0; j < sizeof(md5.Bytes); ++j)
|
||||
{
|
||||
Printf("%02X", md5.Bytes[j]);
|
||||
}
|
||||
if (flags != NULL)
|
||||
{
|
||||
Printf(", cflags = %08x, cflags2 = %08x, bflags = %08x\n",
|
||||
flags->CompatFlags[SLOT_COMPAT], flags->CompatFlags[SLOT_COMPAT2], flags->CompatFlags[SLOT_BCOMPAT]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Printf("\n");
|
||||
}
|
||||
Printf("%02X", md5.Bytes[j]);
|
||||
}
|
||||
|
||||
if (flags != NULL)
|
||||
{
|
||||
Printf(", cflags = %08x, cflags2 = %08x, bflags = %08x\n",
|
||||
flags->CompatFlags[SLOT_COMPAT], flags->CompatFlags[SLOT_COMPAT2], flags->CompatFlags[SLOT_BCOMPAT]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
if (flags != NULL)
|
||||
{
|
||||
if (!onlyparams)
|
||||
{
|
||||
ii_compatflags = flags->CompatFlags[SLOT_COMPAT];
|
||||
ii_compatflags2 = flags->CompatFlags[SLOT_COMPAT2];
|
||||
ib_compatflags = flags->CompatFlags[SLOT_BCOMPAT];
|
||||
ii_compatparams = flags->ExtCommandIndex;
|
||||
}
|
||||
else
|
||||
ii_compatparams = flags->ExtCommandIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!onlyparams)
|
||||
{
|
||||
ii_compatflags = 0;
|
||||
ii_compatflags2 = 0;
|
||||
ib_compatflags = 0;
|
||||
ii_compatparams = -1;
|
||||
}
|
||||
ii_compatparams = -1;
|
||||
}
|
||||
// Reset i_compatflags
|
||||
compatflags.Callback();
|
||||
|
@ -398,6 +415,17 @@ void SetCompatibilityParams()
|
|||
i+=8;
|
||||
break;
|
||||
}
|
||||
case CP_CLEARSPECIAL:
|
||||
{
|
||||
if (CompatParams[i+1] < numlines)
|
||||
{
|
||||
line_t *line = &lines[CompatParams[i+1]];
|
||||
line->special = 0;
|
||||
memset(line->args, 0, sizeof(line->args));
|
||||
}
|
||||
i += 2;
|
||||
break;
|
||||
}
|
||||
case CP_SETACTIVATION:
|
||||
{
|
||||
if (CompatParams[i+1] < numlines)
|
||||
|
|
|
@ -156,3 +156,11 @@ E2B5D1400279335811C1C1C0B437D9C8 // Deathknights of the Dark Citidel, map54
|
|||
setactivation 963 2
|
||||
setactivation 943 2
|
||||
}
|
||||
|
||||
2B65CB046EA40D2E44576949381769CA // Commercial Doom e3m4
|
||||
{
|
||||
// This line is erroneously flagged as a door that monsters can operate.
|
||||
// If they do, they block you off from half the map. Since the attached
|
||||
// sector isn't a door, remove the special.
|
||||
clearlinespecial 1069
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue