More work towards Legacy of Rust support (with caveats).

As of this commit, do not consider the experience when playing that new
expansion to be complete. I've only partially written some of the mission texts
and rudimentarily enhanced some boss fights.

Currently there is one major limitation in that the intermission texts cannot
be replaced, as they're hardcoded inside the UMAPINFO. I don't know if I can
work around that.
This commit is contained in:
Mari the Deer 2025-08-20 15:50:07 +02:00
commit 2aa0ea4680
16 changed files with 414 additions and 43 deletions

View file

@ -139,6 +139,11 @@ Class SWWMLevelCompatibility : LevelPostProcessor
level.nextsecretmap = level.nextmap; // so the handler can detect this
if ( LevelInfo.MapExists("MAP01") ) level.nextmap = "MAP01";
break;
// Legacy of Rust E1M7
case '7F00D2FAA5F0B10A6028BE2FC5530EC9':
level.nextsecretmap = level.nextmap; // so the handler can detect this
level.nextmap = "MAP08";
break;
// Heretic E1M8
case '27639D04F8090D57A47D354992435893':
level.nextsecretmap = level.nextmap; // so the handler can detect this
@ -539,6 +544,35 @@ Class SWWMLevelCompatibility : LevelPostProcessor
}
switch ( checksum )
{
// ALL of Legacy of Rust
case '4F9E705F55E45C1047FABF8BDF2B2399':
case '5FB5010F988FFAE2679A9BDD57460473':
case '7CABD8B043B69996D9777F7070C8BCCE':
case '7F00D2FAA5F0B10A6028BE2FC5530EC9':
case '8A2C0869EAA69FB7B441CD2B648978D0':
case '95B94864754AC50446A456A88DA3E052':
case '867B6AD67389A077CE3C9E3CC896F484':
case '1283C3288A2F51B7455D817C5B7FCFAD':
case '1699E255B8C0DB86EBB00E5B3C44B4AA':
case 'A3F7A58FC08C369F1360741A99F1497C':
case 'B6447217725A2A709D6D021CDE15FE10':
case 'BF34C34C5DFC8BB47228CC304F9A6748':
case 'C745F8D0D8824A1910F9DC8B7AB16AA2':
case 'E2D2886FD22DC4354939E6E51690C34B':
case 'F5AED83945C8BDE642E55E72FE0D92AA':
// we need to replace the dehacked things with the
// ones defined in zscript internally, for the sake of
// script compatibility and whatnot
for ( uint i=0; i<GetThingCount(); i++ )
{
int ednum = GetThingEdNum(i);
if ( ((ednum >= 3007) && (ednum <= 3014))
|| ((ednum >= 3100) && (ednum <= 3142)) )
SetThingEdNum(i,ednum+4204000);
}
break;
case 'F206766043C4D9BA2C36F76106F96279':
case 'FCF009C63BBA5F8CEE71ED5EC0B02CDA':
// ALL of Equinox
case '9705315427A2F951A538B23C39199236':
case '54E9953A3C1A88641E00AA353BAF46E9':