4.10 support update (unfinished and untested).
This commit is contained in:
parent
eb624f15e3
commit
8e952f412f
80 changed files with 2343 additions and 2356 deletions
|
|
@ -19,13 +19,6 @@ Class RampancyLogonDummy : Actor
|
|||
|
||||
extend Class SWWMHandler
|
||||
{
|
||||
// list contains a sector that belongs to each portal group
|
||||
// used to ease some portal-aware functions
|
||||
Array<int> psectors;
|
||||
|
||||
// for minimap
|
||||
Array<int> ffsectors;
|
||||
|
||||
bool maphaskeys;
|
||||
|
||||
// level end stats
|
||||
|
|
@ -217,9 +210,122 @@ extend Class SWWMHandler
|
|||
}
|
||||
}
|
||||
|
||||
private void MapStartDialogues()
|
||||
{
|
||||
int whichboss = WhichVanillaBossMap();
|
||||
switch ( whichboss )
|
||||
{
|
||||
case MAP_DE1M8:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_PHOBOS);
|
||||
break;
|
||||
case MAP_DE2M8:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_DEIMOS);
|
||||
break;
|
||||
case MAP_DE3M8:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_DIS);
|
||||
break;
|
||||
case MAP_DE4M8:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_THY);
|
||||
break;
|
||||
case MAP_DMAP07:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_DIMPLE);
|
||||
break;
|
||||
case MAP_DMAP30:
|
||||
bool rampancy = false;
|
||||
foreach ( cls:AllActorClasses )
|
||||
{
|
||||
if ( cls.GetClassName() != "Robot_BossBrain" ) continue;
|
||||
rampancy = true;
|
||||
break;
|
||||
}
|
||||
if ( rampancy ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_RAMPANCY);
|
||||
else SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_IOS);
|
||||
break;
|
||||
case MAP_DLVL08:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_NERVE);
|
||||
break;
|
||||
case MAP_EVMAP30:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_EVIA);
|
||||
break;
|
||||
case MAP_HE1M8_HE4M8:
|
||||
if ( level.mapname ~== "E1M8" ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_MAW);
|
||||
else SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_HEADS);
|
||||
break;
|
||||
case MAP_HE2M8_HE5M8:
|
||||
if ( level.mapname ~== "E2M8" ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_PORTALS);
|
||||
else SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_BULLS);
|
||||
break;
|
||||
case MAP_HE3M8:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_DSPARIL);
|
||||
break;
|
||||
case MAP_HMAP38:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_CLERIC);
|
||||
break;
|
||||
case MAP_HMAP36:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_FIGHTER);
|
||||
break;
|
||||
case MAP_HMAP37:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_MAGE);
|
||||
break;
|
||||
case MAP_HMAP12:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_HYPO);
|
||||
break;
|
||||
case MAP_HMAP40:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_KORAX);
|
||||
break;
|
||||
case MAP_HMAP23_HMAP27_HMAP48_HMAP55:
|
||||
if ( level.mapname ~== "MAP48" ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_CONSTABLE);
|
||||
break;
|
||||
case MAP_HMAP60:
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_DEATHKINGS);
|
||||
break;
|
||||
case MAP_NONE:
|
||||
String csum = level.GetChecksum();
|
||||
// SIGIL E5M8
|
||||
if ( (csum ~== "3D72FD17F36D2D43FD9A21E6E57EE357")
|
||||
|| (csum ~== "09B30C9DA9D73D3D5A709502FBB947AA")
|
||||
|| (csum ~== "6EAD80DA1F30B4B3546FA294EEF9F87C") )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_SIGIL);
|
||||
// Doom 2 MAP11
|
||||
else if ( (csum ~== "73D9E03CEE7BF1A97EFD2EAD86688EF8")
|
||||
|| (csum ~== "F4F2A769609988837458772AAE99008C")
|
||||
|| (csum ~== "DF6A001A6C42DB5CCA599EE5883B294A") )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_CIRCLE);
|
||||
// Doom 2 MAP20
|
||||
else if ( (csum ~== "8898F5EC9CBDCD98019A1BC1BF892A8A")
|
||||
|| (csum ~== "CC53CFFCB30E873669AA2F09DA0D3566") )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_GOTCHA);
|
||||
// Eviternity
|
||||
// MAP05
|
||||
else if ( csum ~== "33B8501B10CE5E2555C03725F765A914" )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_DMN);
|
||||
// MAP10
|
||||
else if ( csum ~== "9E83602D325677B8D7C3BC44BEF9B03F" )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_CRE);
|
||||
// MAP15
|
||||
else if ( csum ~== "CA40E6DDAB6B5C924CDC36B1F851421E" )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_CRY);
|
||||
// MAP20
|
||||
else if ( csum ~== "F34B3FD4D13AC763469A8E0D7379B9D0" )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_CON);
|
||||
// MAP25
|
||||
else if ( csum ~== "196BC735473C593F924A59B238574C35" )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_SLA);
|
||||
// Deathkings
|
||||
// Blight
|
||||
else if ( csum ~== "E3EFB0156A20ADF2DF00915A0EA85DF5" )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_BLIGHT);
|
||||
// Nave
|
||||
else if ( csum ~== "E2B5D1400279335811C1C1C0B437D9C8" )
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_NAVE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
override void WorldLoaded( WorldEvent e )
|
||||
{
|
||||
if ( e.IsReopen ) return;
|
||||
MapStartDialogues();
|
||||
if ( gamestate != GS_TITLELEVEL )
|
||||
{
|
||||
if ( (level.GetChecksum() ~== "D0E5ECD94BD38DF33F25515C00148693")
|
||||
|
|
@ -268,9 +374,9 @@ extend Class SWWMHandler
|
|||
// since KDiKDiZD requires software rendering, while this is a
|
||||
// hardware-only mod... but hey, they can sort-of-work together
|
||||
// (with broken visual effects, but still... somewhat working)
|
||||
for ( int i=0; i<AllClasses.Size(); i++ )
|
||||
foreach ( cls:AllClasses )
|
||||
{
|
||||
if ( AllClasses[i].GetClassName() != 'KdikdizdCompatEventHandler' )
|
||||
if ( cls.GetClassName() != 'KdikdizdCompatEventHandler' )
|
||||
continue;
|
||||
ti = ThinkerIterator.Create("Thinker");
|
||||
Thinker t;
|
||||
|
|
@ -285,36 +391,12 @@ extend Class SWWMHandler
|
|||
// setup cached lockdefs data
|
||||
let cli = SWWMCachedLockInfo.GetInstance();
|
||||
if ( cli.ent.Size() == 0 ) SetupLockdefsCache(cli);
|
||||
// keep a list of sectors containing 3D floors, for use by the minimap
|
||||
// also does the same for the portal group list
|
||||
ffsectors.Clear();
|
||||
psectors.Clear();
|
||||
for ( int i=0; i<level.sectors.Size(); i++ )
|
||||
{
|
||||
Sector s = level.sectors[i];
|
||||
if ( psectors.Size() <= s.portalgroup )
|
||||
psectors.Resize(s.portalgroup+1);
|
||||
psectors[s.portalgroup] = s.Index();
|
||||
if ( !s.Get3DFloorCount() ) continue;
|
||||
int realcount = 0;
|
||||
for ( int j=0; j<s.Get3DFloorCount(); j++ )
|
||||
{
|
||||
F3DFloor rover = s.Get3DFloor(j);
|
||||
if ( rover.flags&F3DFloor.FF_THISINSIDE ) continue;
|
||||
if ( !(rover.flags&F3DFloor.FF_EXISTS) ) continue;
|
||||
if ( rover.alpha == 0 ) continue;
|
||||
realcount++;
|
||||
}
|
||||
if ( !realcount ) continue;
|
||||
ffsectors.Push(s.Index());
|
||||
}
|
||||
// for skipping over merged exit lines (sharing vertices)
|
||||
Array<Line> skipme;
|
||||
skipme.Clear();
|
||||
// find exit lines, and use lines that aren't exits
|
||||
for ( int i=0; i<level.lines.Size(); i++ )
|
||||
foreach ( l:level.Lines )
|
||||
{
|
||||
Line l = level.lines[i];
|
||||
// all lines are immediately visible in DM
|
||||
if ( deathmatch && !(l.flags&Line.ML_DONTDRAW) )
|
||||
l.flags |= Line.ML_MAPPED;
|
||||
|
|
@ -340,15 +422,14 @@ extend Class SWWMHandler
|
|||
do
|
||||
{
|
||||
found = 0;
|
||||
for ( int j=0; j<l.frontsector.Lines.Size(); j++ )
|
||||
foreach ( l2:l.frontsector.Lines )
|
||||
{
|
||||
let l2 = l.frontsector.Lines[j];
|
||||
if ( (l2.special != l.special) || (con.Find(l2) < con.Size()) ) continue;
|
||||
// needs to have a point in common with this one or any of the added lines
|
||||
bool nomatches = true;
|
||||
for ( int k=0; k<con.Size(); k++ )
|
||||
foreach ( c:con )
|
||||
{
|
||||
if ( (l2.v1 != con[k].v1) && (l2.v2 != con[k].v2) && (l2.v1 != con[k].v2) && (l2.v2 != con[k].v1) )
|
||||
if ( (l2.v1 != c.v1) && (l2.v2 != c.v2) && (l2.v1 != c.v2) && (l2.v2 != c.v1) )
|
||||
continue;
|
||||
nomatches = false;
|
||||
break;
|
||||
|
|
@ -366,15 +447,14 @@ extend Class SWWMHandler
|
|||
do
|
||||
{
|
||||
found = 0;
|
||||
for ( int j=0; j<l.backsector.Lines.Size(); j++ )
|
||||
foreach ( l2:l.backsector.Lines )
|
||||
{
|
||||
let l2 = l.backsector.Lines[j];
|
||||
if ( (l2.special != l.special) || (con.Find(l2) < con.Size()) ) continue;
|
||||
// needs to have a point in common with this one or any of the added lines
|
||||
bool nomatches = true;
|
||||
for ( int k=0; k<skipme.Size(); k++ )
|
||||
foreach ( s:skipme )
|
||||
{
|
||||
if ( (l2.v1 != skipme[k].v1) && (l2.v2 != skipme[k].v2) && (l2.v1 != skipme[k].v2) && (l2.v2 != skipme[k].v1) )
|
||||
if ( (l2.v1 != s.v1) && (l2.v2 != s.v2) && (l2.v1 != s.v2) && (l2.v2 != s.v1) )
|
||||
continue;
|
||||
nomatches = false;
|
||||
break;
|
||||
|
|
@ -388,8 +468,8 @@ extend Class SWWMHandler
|
|||
while ( found > 0 );
|
||||
}
|
||||
Vector3 lpos = (0,0,0);
|
||||
for ( int i=0; i<con.Size(); i++ )
|
||||
lpos += SWWMUtility.UseLinePos(con[i]);
|
||||
foreach ( c:con )
|
||||
lpos += SWWMUtility.UseLinePos(c);
|
||||
lpos /= con.Size();
|
||||
SWWMInterest.Spawn(self,lpos,theline:l,theexit:exittype);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue