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
|
|
@ -62,9 +62,9 @@ extend Class SWWMHandler
|
|||
S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI);
|
||||
S_StartSound("misc/w_pkup",CHAN_VOICE,CHANF_UI);
|
||||
}
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
foreach ( cls:AllActorClasses )
|
||||
{
|
||||
let w = (Class<SWWMWeapon>)(AllActorClasses[i]);
|
||||
let w = (Class<SWWMWeapon>)(cls);
|
||||
if ( !w || (w == 'SWWMWeapon') ) continue;
|
||||
let def = GetDefaultByType(w);
|
||||
if ( def.bCHEATNOTWEAPON ) continue;
|
||||
|
|
@ -179,9 +179,9 @@ extend Class SWWMHandler
|
|||
if ( !(i is 'Ammo') ) continue;
|
||||
i.Amount = i.MaxAmount;
|
||||
}
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
foreach ( cls:AllActorClasses )
|
||||
{
|
||||
let w = (Class<SWWMWeapon>)(AllActorClasses[i]);
|
||||
let w = (Class<SWWMWeapon>)(cls);
|
||||
if ( !w || (w == 'SWWMWeapon') ) continue;
|
||||
let def = GetDefaultByType(w);
|
||||
if ( def.bCHEATNOTWEAPON ) continue;
|
||||
|
|
@ -411,17 +411,7 @@ extend Class SWWMHandler
|
|||
let s = SWWMStats.Find(players[consoleplayer]);
|
||||
if ( (i > 5) && !swwm_nomapmsg && (!s || !s.oldcheat) )
|
||||
{
|
||||
if ( !swwm_oldcheats )
|
||||
{
|
||||
let m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_ZNVSNAME"),StringTable.Localize("$SWWM_ZNVNAME"),"Znv");
|
||||
m.seqname = "ZNVTXT";
|
||||
m.seqcnt = 5;
|
||||
m.znvspecial = true;
|
||||
m.delay = 80;
|
||||
m.enddelay = 90;
|
||||
m.pausedelay = 40;
|
||||
StatusBar.AttachMessage(m,-1232);
|
||||
}
|
||||
if ( !swwm_oldcheats ) SWWMDialogues.StartSeq(SWWMDLG_CHEATS);
|
||||
CVar.GetCVar('swwm_oldcheats').SetBool(true);
|
||||
SendNetworkEvent("swwmsetoldcheat",consoleplayer);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ extend Class SWWMHandler
|
|||
ctr.ignoreme = mo;
|
||||
Vector3 x, y, z, ofs, origin;
|
||||
Color col;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(e.ViewPitch,e.ViewAngle,e.ViewRoll);
|
||||
[x, y, z] = SWWMUtility.GetAxes(e.ViewAngle,e.ViewPitch,e.ViewRoll);
|
||||
int chp = crosshairhealth;
|
||||
for ( int i=0; i<numcrosshairs; i++ )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ extend Class SWWMHandler
|
|||
private ui void DrawWorldCircle( RenderEvent e, Vector3 pos, double radius, Color col )
|
||||
{
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(e.viewpitch,e.viewangle,e.viewroll);
|
||||
[x, y, z] = SWWMUtility.GetAxes(e.viewangle,e.viewpitch,e.viewroll);
|
||||
Vector3 ndc[64];
|
||||
for ( int i=0; i<64; i++ )
|
||||
{
|
||||
|
|
@ -82,7 +82,7 @@ extend Class SWWMHandler
|
|||
DrawWorldLine(e,(b2.x,b2.y,b1.z),(b2.x,b2.y,b2.z),"White");
|
||||
}
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(a.pitch,a.angle,a.roll);
|
||||
[x, y, z] = SWWMUtility.GetAxes(a.angle,a.pitch,a.roll);
|
||||
DrawWorldLine(e,pos,pos+x*16,"Red");
|
||||
DrawWorldLine(e,pos,pos+y*16,"Green");
|
||||
DrawWorldLine(e,pos,pos+z*16,"Blue");
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ extend Class SWWMHandler
|
|||
Vector3 x, y, z;
|
||||
double ang = e.Thing.target.target?e.Thing.AngleTo(e.Thing.target.target):e.Thing.angle;
|
||||
double pt = e.Thing.target.target?SWWMUtility.PitchTo(e.Thing,e.Thing.target.target,.5):e.Thing.pitch;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(pt,ang,e.Thing.roll);
|
||||
[x, y, z] = SWWMUtility.GetAxes(ang,pt,e.Thing.roll);
|
||||
int numpt = Random[ExtraMissiles](1,2);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ extend Class SWWMHandler
|
|||
if ( !(p.mo is 'Demolitionist') )
|
||||
{
|
||||
// make sure it's defined here, so special purpose classes (player chunks, scripted overrides) are respected
|
||||
for ( int i=0; i<PlayerClasses.Size(); i++ )
|
||||
foreach ( pc:PlayerClasses )
|
||||
{
|
||||
if ( !(p.mo is PlayerClasses[i].Type) ) continue;
|
||||
if ( !(p.mo is pc.Type) ) continue;
|
||||
// perform a hotswap, code adapted from my .flow player morph in spooktober
|
||||
let n = PlayerPawn(Actor.Spawn("Demolitionist",p.mo.pos));
|
||||
n.player = p;
|
||||
|
|
@ -130,10 +130,10 @@ extend Class SWWMHandler
|
|||
if ( swwm_resetscore && level.info.flags2&LEVEL2_RESETINVENTORY && !e.IsReturn )
|
||||
c.credits = 0;
|
||||
// re-add any missing collectibles after a death exit (yes, this happens)
|
||||
for ( int i=0; i<s.ownedcollectibles.Size(); i++ )
|
||||
foreach ( oc:s.ownedcollectibles )
|
||||
{
|
||||
if ( p.mo.FindInventory(s.ownedcollectibles[i]) ) continue;
|
||||
let c = SWWMCollectible(Actor.Spawn(s.ownedcollectibles[i],p.mo.pos));
|
||||
if ( p.mo.FindInventory(oc) ) continue;
|
||||
let c = SWWMCollectible(Actor.Spawn(oc,p.mo.pos));
|
||||
c.propagated = true;
|
||||
if ( !c.CallTryPickup(p.mo) )
|
||||
c.Destroy();
|
||||
|
|
|
|||
|
|
@ -37,6 +37,51 @@ extend Class SWWMHandler
|
|||
}
|
||||
}
|
||||
|
||||
override void InterfaceProcess( ConsoleEvent e )
|
||||
{
|
||||
if ( e.IsManual ) return;
|
||||
if ( e.Name ~== "swwmsetdialogue" )
|
||||
SWWMDialogues.StartSeq(e.Args[0]);
|
||||
else if ( e.Name.Left(11) ~== "swwmkeyget." )
|
||||
{
|
||||
let bar = SWWMStatusBar(StatusBar);
|
||||
if ( !bar || (bar.CPlayer != players[e.Args[0]]) ) return;
|
||||
String kname = e.Name.Mid(11);
|
||||
Class<Key> k = kname;
|
||||
if ( k )
|
||||
{
|
||||
let kg = new("KeyGet");
|
||||
kg.got = k;
|
||||
kg.flashtime = gametic+25;
|
||||
bar.keyflash.Push(kg);
|
||||
}
|
||||
}
|
||||
else if ( e.Name.Left(15) ~== "swwmwpntooltip." )
|
||||
{
|
||||
let bar = SWWMStatusBar(StatusBar);
|
||||
if ( !bar ) return;
|
||||
String wname = e.Name.Mid(15);
|
||||
Class<SWWMWeapon> w = wname;
|
||||
if ( w )
|
||||
{
|
||||
let tt = new("SWWMWeaponTooltip").Init(w);
|
||||
bool appended = false;
|
||||
for ( SWWMWeaponTooltip t=bar.ctip; t; t=t.next )
|
||||
{
|
||||
if ( t.next ) continue;
|
||||
appended = true;
|
||||
t.next = tt;
|
||||
break;
|
||||
}
|
||||
if ( !appended )
|
||||
{
|
||||
bar.ctip = tt;
|
||||
bar.AttachMessage(tt,-2910);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override void NetworkProcess( ConsoleEvent e )
|
||||
{
|
||||
if ( e.Name ~== "swwmgesture" )
|
||||
|
|
@ -343,18 +388,18 @@ extend Class SWWMHandler
|
|||
// if it's an ammo, check the largest unit givable
|
||||
if ( i is 'Ammo' )
|
||||
{
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
foreach ( cls:AllActorClasses )
|
||||
{
|
||||
let a = (Class<Ammo>)(AllActorClasses[i]);
|
||||
let a = (Class<Ammo>)(cls);
|
||||
if ( !a || (a.GetParentClass() != item) || (GetDefaultByType(a).Amount < amt) ) continue;
|
||||
amt = GetDefaultByType(a).Amount;
|
||||
}
|
||||
}
|
||||
if ( i is 'MagAmmo' )
|
||||
{
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
foreach ( cls:AllActorClasses )
|
||||
{
|
||||
let a = (Class<MagAmmo>)(AllActorClasses[i]);
|
||||
let a = (Class<MagAmmo>)(cls);
|
||||
if ( !a || (a.GetParentClass() != item) || (GetDefaultByType(a).Amount < amt) ) continue;
|
||||
amt = GetDefaultByType(a).Amount;
|
||||
}
|
||||
|
|
@ -457,8 +502,6 @@ extend Class SWWMHandler
|
|||
}
|
||||
else if ( e.Name ~== "swwmccstart" )
|
||||
gdat.ccstartonce = true;
|
||||
else if ( e.Name ~== "swwmcclilith" )
|
||||
gdat.cclilithonce = true;
|
||||
// cheats go here
|
||||
else CheatEvent(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ extend Class SWWMHandler
|
|||
PPShader.SetUniform1f("ZoomBlur","Fade",clamp((spd-20.)/60.,0.,1.));
|
||||
double str = min(spd/40.,15.);
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = swwm_CoordUtil.GetAxes(e.ViewPitch,e.ViewAngle,e.ViewRoll);
|
||||
[x, y, z] = SWWMUtility.GetAxes(e.ViewAngle,e.ViewPitch,e.ViewRoll);
|
||||
Vector3 reldir = (worlddir dot y, worlddir dot z, worlddir dot x);
|
||||
Vector2 centerspot = (.5+reldir.x*.5,.5+reldir.y*.5);
|
||||
if ( reldir.z < 0 )
|
||||
|
|
|
|||
|
|
@ -1,561 +0,0 @@
|
|||
// misc. UI Tick stuff
|
||||
|
||||
extend Class SWWMHandler
|
||||
{
|
||||
ui bool didstartmsg;
|
||||
bool doextramsg;
|
||||
ui bool didextramsg;
|
||||
// april fools special
|
||||
ui bool didaprmsg;
|
||||
// corruption cards stuff
|
||||
ui bool incardmenu, cardmessaged;
|
||||
bool dolilithmsg, doromerobotmsg;
|
||||
ui bool didlilithmsg, didromerobotmsg;
|
||||
|
||||
private ui void MapstartUITick()
|
||||
{
|
||||
if ( !didextramsg && doextramsg )
|
||||
{
|
||||
if ( !swwm_nomapmsg )
|
||||
{
|
||||
// angry about phase two
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAEVIB";
|
||||
msg.seqcnt = 2;
|
||||
msg.delay = 20;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
didextramsg = true;
|
||||
}
|
||||
if ( !didlilithmsg && !gdat.cclilithonce && dolilithmsg )
|
||||
{
|
||||
if ( !swwm_nomapmsg )
|
||||
{
|
||||
// saya's live freakout™
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYALILITHA";
|
||||
msg.seqcnt = 2;
|
||||
msg.delay = 1050; // give it about 15 seconds for it to happen
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
|
||||
msg2.seqname = "SAYALILITHB";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 30;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYALILITHC";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
|
||||
msg2.seqname = "SAYALILITHD";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 40;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYALILITHE";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 50;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
}
|
||||
didlilithmsg = true;
|
||||
SendNetworkEvent("swwmcclilith");
|
||||
}
|
||||
if ( !didromerobotmsg && doromerobotmsg )
|
||||
{
|
||||
if ( !swwm_nomapmsg )
|
||||
{
|
||||
// rom3r-0 is about to make you his bitch
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAROMEROA";
|
||||
msg.seqcnt = 1;
|
||||
msg.delay = 50;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
|
||||
msg2.seqname = "SAYAROMEROB";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 40;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYAROMEROC";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 30;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
|
||||
msg2.seqname = "SAYAROMEROD";
|
||||
msg2.seqcnt = 2;
|
||||
msg2.delay = 50;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYAROMEROE";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 70;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
}
|
||||
didromerobotmsg = true;
|
||||
}
|
||||
if ( ccloaded && !gdat.ccstartonce && !cardmessaged && (gamestate == GS_LEVEL) )
|
||||
{
|
||||
let m = Menu.GetCurrentMenu();
|
||||
if ( m && (m.GetClassName() == 'CorruptionCardsSelector') ) incardmenu = true;
|
||||
else if ( incardmenu )
|
||||
{
|
||||
if ( !swwm_ccmessage )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
|
||||
msg.seqname = "CYTHOCCA";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 120;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "CYTHOCCB";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 30;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
|
||||
msg2.seqname = "CYTHOCCC";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 45;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
}
|
||||
CVar.GetCVar('swwm_ccmessage').SetBool(true);
|
||||
cardmessaged = true;
|
||||
SendNetworkEvent("swwmccstart");
|
||||
}
|
||||
}
|
||||
if ( didstartmsg ) return;
|
||||
if ( swwm_nomapmsg )
|
||||
{
|
||||
didstartmsg = true;
|
||||
return;
|
||||
}
|
||||
if ( !didaprmsg && (gamestate == GS_LEVEL) )
|
||||
{
|
||||
didaprmsg = true;
|
||||
if ( SystemTime.Format("%d%m",SystemTime.Now()) == "0104" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAFOOL";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 120;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
didstartmsg = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
int whichboss = WhichVanillaBossMap();
|
||||
if ( bossmap == MAP_DE1M8 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAPHOBOS";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_DE2M8 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYADEIMOS";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_DE3M8 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYADIS";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_DE4M8 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYATHY";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_DMAP07 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYADIMPLE";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_DMAP30 )
|
||||
{
|
||||
// rampancy check
|
||||
bool rampancy = false;
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
{
|
||||
if ( AllActorClasses[i].GetClassName() != "Robot_BossBrain" ) continue;
|
||||
rampancy = true;
|
||||
break;
|
||||
}
|
||||
if ( rampancy )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYARAMPANCY";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 250;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAIOS";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_DLVL08 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
|
||||
msg.seqname = "CYTHONERVE";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_EVMAP30 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAEVIA";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_HE1M8_HE4M8 )
|
||||
{
|
||||
if ( level.mapname ~== "E1M8" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAMAW";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAHEADS";
|
||||
msg.seqcnt = 6;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HE2M8_HE5M8 )
|
||||
{
|
||||
if ( level.mapname ~== "E2M8" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAMASTERS";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYABULLS";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HE3M8 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYADSPARIL";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP38 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYACLERICA";
|
||||
msg.seqcnt = 2;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
|
||||
msg2.seqname = "SAYACLERICB";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYACLERICC";
|
||||
msg2.seqcnt = 2;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP36 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAFIGHTER";
|
||||
msg.seqcnt = 2;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP37 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAMAGE";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP12 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAHYPO";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP40 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAKORAXA";
|
||||
msg.seqcnt = 1;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
|
||||
msg2.seqname = "SAYAKORAXB";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
|
||||
msg2.seqname = "SAYAKORAXC";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYAKORAXD";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
|
||||
msg2.seqname = "SAYAKORAXE";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
}
|
||||
else if ( (bossmap == MAP_HMAP23_HMAP27_HMAP48_HMAP55) && (level.mapname ~== "MAP48") )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYACONSTABLEA";
|
||||
msg.seqcnt = 2;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
|
||||
msg2.seqname = "SAYACONSTABLEB";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 30;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYACONSTABLEC";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
|
||||
msg2.seqname = "SAYACONSTABLED";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP60 )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYADEATHKINGS";
|
||||
msg.seqcnt = 1;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
else if ( bossmap == MAP_NONE ) // gotta get checksums here
|
||||
{
|
||||
String csum = level.GetChecksum();
|
||||
// SIGIL E5M8
|
||||
if ( (csum ~== "3D72FD17F36D2D43FD9A21E6E57EE357")
|
||||
|| (csum ~== "09B30C9DA9D73D3D5A709502FBB947AA")
|
||||
|| (csum ~== "6EAD80DA1F30B4B3546FA294EEF9F87C") )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
|
||||
msg.seqname = "CYTHOSIGIL";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
// Doom 2 MAP11
|
||||
else if ( (csum ~== "73D9E03CEE7BF1A97EFD2EAD86688EF8")
|
||||
|| (csum ~== "F4F2A769609988837458772AAE99008C")
|
||||
|| (csum ~== "DF6A001A6C42DB5CCA599EE5883B294A") )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYACIRCLE";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
// Doom 2 MAP20
|
||||
else if ( (csum ~== "8898F5EC9CBDCD98019A1BC1BF892A8A")
|
||||
|| (csum ~== "CC53CFFCB30E873669AA2F09DA0D3566") )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYAGOTCHA";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
// Eviternity
|
||||
// MAP05
|
||||
else if ( csum ~== "33B8501B10CE5E2555C03725F765A914" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYADMN";
|
||||
msg.seqcnt = 8;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
// MAP10
|
||||
else if ( csum ~== "9E83602D325677B8D7C3BC44BEF9B03F" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYACRE";
|
||||
msg.seqcnt = 4;
|
||||
msg.delay = 50;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
// MAP15
|
||||
else if ( csum ~== "CA40E6DDAB6B5C924CDC36B1F851421E" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYACRY";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 30;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
// MAP20
|
||||
else if ( csum ~== "F34B3FD4D13AC763469A8E0D7379B9D0" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYACON";
|
||||
msg.seqcnt = 5;
|
||||
msg.delay = 50;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
// MAP25
|
||||
else if ( csum ~== "196BC735473C593F924A59B238574C35" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYASLA";
|
||||
msg.seqcnt = 1;
|
||||
msg.delay = 120;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
}
|
||||
// Deathkings
|
||||
// Blight
|
||||
else if ( csum ~== "E3EFB0156A20ADF2DF00915A0EA85DF5" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYABLIGHTA";
|
||||
msg.seqcnt = 1;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
|
||||
msg2.seqname = "SAYABLIGHTB";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 5;
|
||||
msg2.enddelay = 15;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYABLIGHTC";
|
||||
msg2.seqcnt = 2;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
}
|
||||
// Nave
|
||||
else if ( csum ~== "E2B5D1400279335811C1C1C0B437D9C8" )
|
||||
{
|
||||
let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg.seqname = "SAYANAVEA";
|
||||
msg.seqcnt = 2;
|
||||
msg.delay = 40;
|
||||
StatusBar.AttachMessage(msg,-1232);
|
||||
let msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
|
||||
msg2.seqname = "SAYANAVEB";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
|
||||
msg2.seqname = "SAYANAVEC";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 5;
|
||||
msg2.enddelay = 30;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYANAVED";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 20;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
|
||||
msg2.seqname = "SAYANAVEE";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 30;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
msg = msg2;
|
||||
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
|
||||
msg2.seqname = "SAYANAVEF";
|
||||
msg2.seqcnt = 1;
|
||||
msg2.delay = 40;
|
||||
msg.nextmsg = msg2;
|
||||
msg.nextdirect = true;
|
||||
}
|
||||
}
|
||||
didstartmsg = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -49,8 +49,7 @@ Class ROM3R0Message : Inventory
|
|||
if ( Owner.InStateSequence(Owner.CurState,Owner.SeeState) )
|
||||
{
|
||||
Console.PrintfEx(PRINT_CHAT,StringTable.Localize("$BOSSLINE_ROM3R0"));
|
||||
let hnd = SWWMHandler(EventHandler.Find("SWWMHandler"));
|
||||
if ( hnd ) hnd.doromerobotmsg = true;
|
||||
EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_ROMERO);
|
||||
DepleteOrDestroy();
|
||||
return;
|
||||
}
|
||||
|
|
@ -460,7 +459,7 @@ extend Class SWWMHandler
|
|||
bosstag = "$BT_ARCHANGELUS";
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('EndgameBossMarker',1);
|
||||
doextramsg = true;
|
||||
SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_EVIB);
|
||||
}
|
||||
}
|
||||
if ( ccloaded && (e.Thing.GetClassName() == "CCards_Boss_Romero") )
|
||||
|
|
@ -478,10 +477,10 @@ extend Class SWWMHandler
|
|||
{
|
||||
if ( initialized ) return;
|
||||
// wait until bosses are active
|
||||
for ( int i=0; i<bossactors.Size(); i++ )
|
||||
foreach ( a:bossactors )
|
||||
{
|
||||
if ( !bossactors[i] ) continue;
|
||||
if ( (!bossactors[i].target || !bossactors[i].CheckSight(bossactors[i].target,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY))
|
||||
if ( !a ) continue;
|
||||
if ( (!a.target || !a.CheckSight(a.target,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY))
|
||||
&& (!bossviewactor || (bossviewactor && !bossviewactor.target)) ) continue;
|
||||
initialized = true;
|
||||
// oneliners
|
||||
|
|
@ -515,10 +514,10 @@ extend Class SWWMHandler
|
|||
{
|
||||
ui_initialized = true;
|
||||
thealth = 0;
|
||||
for ( int i=0; i<bossactors.Size(); i++ )
|
||||
foreach ( a:bossactors )
|
||||
{
|
||||
if ( !bossactors[i] ) continue;
|
||||
thealth += max(0,bossactors[i].SpawnHealth());
|
||||
if ( !a ) continue;
|
||||
thealth += max(0,a.SpawnHealth());
|
||||
}
|
||||
hmax = thealth;
|
||||
for ( int i=0; i<30; i++ ) oldhealth[i] = thealth;
|
||||
|
|
@ -532,10 +531,10 @@ extend Class SWWMHandler
|
|||
if ( !ui_initialized ) return;
|
||||
// update healthbar
|
||||
int newhealth = 0;
|
||||
for ( int i=0; i<bossactors.Size(); i++ )
|
||||
foreach ( a:bossactors )
|
||||
{
|
||||
if ( !bossactors[i] ) continue;
|
||||
newhealth += max(0,bossactors[i].Health);
|
||||
if ( !a ) continue;
|
||||
newhealth += max(0,a.Health);
|
||||
}
|
||||
oldhealth[0] = newhealth;
|
||||
int curcumm = max(0,thealth-newhealth);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -396,7 +396,10 @@ extend Class SWWMHandler
|
|||
e.Thing.ActiveSound = "grunt/active";
|
||||
}
|
||||
else if ( ccloaded && (e.Thing.GetClassName() == "CCards_Token_Glitched") )
|
||||
dolilithmsg = true;
|
||||
{
|
||||
if ( !gdat.cclilithonce ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue",SWWMDLG_LILITH);
|
||||
gdat.cclilithonce = true;
|
||||
}
|
||||
if ( SWWMUtility.IdentifyingDog(e.Thing) || SWWMUtility.IdentifyingCaco(e.Thing)
|
||||
|| SWWMUtility.IdentifyingDrug(e.Thing) || SWWMUtility.IdentifyingDoubleBoi(e.Thing) )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -306,9 +306,8 @@ extend Class SWWMHandler
|
|||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
// we need to refer to the suckables array to find missiles
|
||||
for ( int i=0; i<suckableactors.Size(); i++ )
|
||||
foreach ( a:suckableactors )
|
||||
{
|
||||
let a = suckableactors[i];
|
||||
if ( !a || !a.bMISSILE ) continue;
|
||||
Vector2 rv = a.pos.xy-players[consoleplayer].Camera.pos.xy;
|
||||
if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist )
|
||||
|
|
@ -317,9 +316,8 @@ extend Class SWWMHandler
|
|||
continue;
|
||||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
for ( int i=0; i<beams.Size(); i++ )
|
||||
foreach ( a:beams )
|
||||
{
|
||||
let a = beams[i];
|
||||
if ( !a ) continue;
|
||||
Vector2 rv = a.pos.xy-players[consoleplayer].Camera.pos.xy;
|
||||
double rad = SWWMUtility.IsYBeam(a)?(a.scale.y*cos(a.pitch-90)):(a.speed*cos(a.pitch));
|
||||
|
|
@ -330,63 +328,58 @@ extend Class SWWMHandler
|
|||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
bt.Destroy();
|
||||
if ( psectors.Size() > 1 )
|
||||
// oh boy here we go
|
||||
int thisgroup = players[consoleplayer].Camera.CurSector.portalgroup;
|
||||
for ( int i=0; i<level.GetPortalGroupCount(); i++ )
|
||||
{
|
||||
// oh boy here we go
|
||||
int thisgroup = players[consoleplayer].Camera.CurSector.portalgroup;
|
||||
for ( int i=0; i<psectors.Size(); i++ )
|
||||
if ( i == thisgroup ) continue;
|
||||
Vector2 relpos = players[consoleplayer].Camera.pos.xy+level.GetDisplacement(thisgroup,i);
|
||||
if ( bt ) bt.Destroy();
|
||||
bt = BlockThingsIterator.CreateFromPos(relpos.x,relpos.y,players[consoleplayer].Camera.pos.z,players[consoleplayer].Camera.pos.z+players[consoleplayer].Camera.height,viewdist,false);
|
||||
while ( bt.Next() )
|
||||
{
|
||||
if ( i == thisgroup ) continue;
|
||||
Vector2 relpos = players[consoleplayer].Camera.pos.xy+SWWMUtility.PortalDisplacement(level.Sectors[psectors[thisgroup]],level.Sectors[psectors[i]]);
|
||||
if ( bt ) bt.Destroy();
|
||||
bt = BlockThingsIterator.CreateFromPos(relpos.x,relpos.y,players[consoleplayer].Camera.pos.z,players[consoleplayer].Camera.pos.z+players[consoleplayer].Camera.height,viewdist,false);
|
||||
while ( bt.Next() )
|
||||
{
|
||||
let a = bt.Thing;
|
||||
if ( !a ) continue;
|
||||
Vector2 rv = a.pos.xy-relpos;
|
||||
if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist )
|
||||
continue;
|
||||
if ( a == players[consoleplayer].Camera )
|
||||
continue;
|
||||
if ( a is 'GhostTarget' )
|
||||
continue;
|
||||
if ( !a.player && !a.bSOLID && !a.bSHOOTABLE && !a.bISMONSTER && !a.bFRIENDLY && !(a is 'Inventory') && !(a is 'Chancebox') )
|
||||
continue;
|
||||
if ( !level.allmap && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !a.IsFriend(players[consoleplayer].mo) && !a.CheckSight(players[consoleplayer].Camera,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) )
|
||||
continue;
|
||||
if ( a.bKILLED || (a.Health <= 0) || a.bUnmorphed )
|
||||
continue;
|
||||
if ( (a is 'Inventory') && (!a.bSPECIAL || Inventory(a).Owner) )
|
||||
continue;
|
||||
if ( (a is 'Chancebox') && (a.CurState != a.SpawnState) )
|
||||
continue;
|
||||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
// we need to refer to the suckables array to find missiles
|
||||
for ( int i=0; i<suckableactors.Size(); i++ )
|
||||
{
|
||||
let a = suckableactors[i];
|
||||
if ( !a || !a.bMISSILE ) continue;
|
||||
Vector2 rv = a.pos.xy-relpos;
|
||||
if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist )
|
||||
continue;
|
||||
if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !a.CheckSight(players[consoleplayer].Camera,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) )
|
||||
continue;
|
||||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
for ( int i=0; i<beams.Size(); i++ )
|
||||
{
|
||||
let a = beams[i];
|
||||
if ( !a ) continue;
|
||||
Vector2 rv = a.pos.xy-relpos;
|
||||
double rad = SWWMUtility.IsYBeam(a)?(a.scale.y*cos(a.pitch-90)):(a.speed*cos(a.pitch));
|
||||
if ( max(abs(rv.x)-rad,abs(rv.y)-rad) > viewdist )
|
||||
continue;
|
||||
if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !a.CheckSight(players[consoleplayer].Camera,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) )
|
||||
continue;
|
||||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
let a = bt.Thing;
|
||||
if ( !a ) continue;
|
||||
Vector2 rv = a.pos.xy-relpos;
|
||||
if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist )
|
||||
continue;
|
||||
if ( a == players[consoleplayer].Camera )
|
||||
continue;
|
||||
if ( a is 'GhostTarget' )
|
||||
continue;
|
||||
if ( !a.player && !a.bSOLID && !a.bSHOOTABLE && !a.bISMONSTER && !a.bFRIENDLY && !(a is 'Inventory') && !(a is 'Chancebox') )
|
||||
continue;
|
||||
if ( !level.allmap && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !a.IsFriend(players[consoleplayer].mo) && !a.CheckSight(players[consoleplayer].Camera,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) )
|
||||
continue;
|
||||
if ( a.bKILLED || (a.Health <= 0) || a.bUnmorphed )
|
||||
continue;
|
||||
if ( (a is 'Inventory') && (!a.bSPECIAL || Inventory(a).Owner) )
|
||||
continue;
|
||||
if ( (a is 'Chancebox') && (a.CurState != a.SpawnState) )
|
||||
continue;
|
||||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
// we need to refer to the suckables array to find missiles
|
||||
foreach ( a:suckableactors )
|
||||
{
|
||||
if ( !a || !a.bMISSILE ) continue;
|
||||
Vector2 rv = a.pos.xy-relpos;
|
||||
if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist )
|
||||
continue;
|
||||
if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !a.CheckSight(players[consoleplayer].Camera,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) )
|
||||
continue;
|
||||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
foreach ( a:beams )
|
||||
{
|
||||
if ( !a ) continue;
|
||||
Vector2 rv = a.pos.xy-relpos;
|
||||
double rad = SWWMUtility.IsYBeam(a)?(a.scale.y*cos(a.pitch-90)):(a.speed*cos(a.pitch));
|
||||
if ( max(abs(rv.x)-rad,abs(rv.y)-rad) > viewdist )
|
||||
continue;
|
||||
if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !a.CheckSight(players[consoleplayer].Camera,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) )
|
||||
continue;
|
||||
SWWMSimpleTracker.Track(self,a);
|
||||
}
|
||||
}
|
||||
SWWMSimpleTracker trk = strackers;
|
||||
|
|
|
|||
|
|
@ -119,12 +119,12 @@ extend Class SWWMStaticHandler
|
|||
dat.Replace("\r","");
|
||||
list.Clear();
|
||||
dat.Split(list,"\n");
|
||||
for ( int i=0; i<list.Size(); i++ )
|
||||
foreach ( l:list )
|
||||
{
|
||||
if ( (list[i].Length() == 0) || (list[i].Left(1) == "#") || (list[i].Left(1) == "") )
|
||||
if ( (l.Length() == 0) || (l.Left(1) == "#") || (l.Left(1) == "") )
|
||||
continue;
|
||||
ln.Clear();
|
||||
list[i].Split(ln,",",0);
|
||||
l.Split(ln,",",0);
|
||||
// game filtering
|
||||
if ( !(gameinfo.gametype&GAME_DOOM) && (ln[3] ~== "doom") ) continue;
|
||||
else if ( !(gameinfo.gametype&GAME_HERETIC) && (ln[3] ~== "heretic") ) continue;
|
||||
|
|
@ -142,9 +142,9 @@ extend Class SWWMStaticHandler
|
|||
if ( (ac.maxval == -1) && (ac.basename == "allcoll") )
|
||||
{
|
||||
int nc = 0;
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
foreach ( cls:AllActorClasses )
|
||||
{
|
||||
let c = (Class<SWWMCollectible>)(AllActorClasses[i]);
|
||||
let c = (Class<SWWMCollectible>)(cls);
|
||||
if ( !c || (c == 'SWWMCollectible') ) continue;
|
||||
let def = GetDefaultByType(c);
|
||||
// check that we can collect it in this IWAD
|
||||
|
|
@ -212,29 +212,29 @@ extend Class SWWMStaticHandler
|
|||
Array<String> keys;
|
||||
keys.Clear();
|
||||
statestr.Split(keys,",");
|
||||
for ( int i=0; i<keys.Size(); i++ )
|
||||
foreach ( k:keys )
|
||||
{
|
||||
int colon = keys[i].IndexOf(":");
|
||||
int colon = k.IndexOf(":");
|
||||
// no value separator?
|
||||
if ( colon == -1 )
|
||||
{
|
||||
CreateAchievements();
|
||||
return;
|
||||
}
|
||||
achievementstate.Insert(keys[i].Left(colon),keys[i].Mid(colon+1));
|
||||
achievementstate.Insert(k.Left(colon),k.Mid(colon+1));
|
||||
}
|
||||
keys.Clear();
|
||||
progstr.Split(keys,",");
|
||||
for ( int i=0; i<keys.Size(); i++ )
|
||||
foreach ( k:keys )
|
||||
{
|
||||
int colon = keys[i].IndexOf(":");
|
||||
int colon = k.IndexOf(":");
|
||||
// no value separator?
|
||||
if ( colon == -1 )
|
||||
{
|
||||
CreateAchievements();
|
||||
return;
|
||||
}
|
||||
achievementprogress.Insert(keys[i].Left(colon),keys[i].Mid(colon+1));
|
||||
achievementprogress.Insert(k.Left(colon),k.Mid(colon+1));
|
||||
}
|
||||
// load achievement info and trim any bogus keys, as well as adding any new ones that are missing
|
||||
ParseAchievementList(achievementinfo);
|
||||
|
|
@ -243,9 +243,9 @@ extend Class SWWMStaticHandler
|
|||
{
|
||||
String key = di.Key();
|
||||
bool deleteme = true;
|
||||
for ( int i=0; i<achievementinfo.Size(); i++ )
|
||||
foreach ( inf:achievementinfo )
|
||||
{
|
||||
if ( achievementinfo[i].basename != key ) continue;
|
||||
if ( inf.basename != key ) continue;
|
||||
deleteme = false;
|
||||
break;
|
||||
}
|
||||
|
|
@ -260,10 +260,10 @@ extend Class SWWMStaticHandler
|
|||
{
|
||||
String key = di.Key();
|
||||
bool deleteme = true;
|
||||
for ( int i=0; i<achievementinfo.Size(); i++ )
|
||||
foreach ( inf:achievementinfo )
|
||||
{
|
||||
if ( achievementinfo[i].basename != key ) continue;
|
||||
if ( !achievementinfo[i].maxval ) continue;
|
||||
if ( inf.basename != key ) continue;
|
||||
if ( !inf.maxval ) continue;
|
||||
deleteme = false;
|
||||
break;
|
||||
}
|
||||
|
|
@ -273,17 +273,17 @@ extend Class SWWMStaticHandler
|
|||
achievementprogress.Remove(key);
|
||||
}
|
||||
}
|
||||
for ( int i=0; i<achievementinfo.Size(); i++ )
|
||||
foreach ( inf:achievementinfo )
|
||||
{
|
||||
if ( achievementstate.At(achievementinfo[i].basename) == "" )
|
||||
if ( achievementstate.At(inf.basename) == "" )
|
||||
{
|
||||
if ( developer >= 2 ) Console.Printf("Adding missing achievement state %s",achievementinfo[i].basename);
|
||||
achievementstate.Insert(achievementinfo[i].basename,"0");
|
||||
if ( developer >= 2 ) Console.Printf("Adding missing achievement state %s",inf.basename);
|
||||
achievementstate.Insert(inf.basename,"0");
|
||||
}
|
||||
if ( achievementinfo[i].maxval && (achievementprogress.At(achievementinfo[i].basename) == "") )
|
||||
if ( inf.maxval && (achievementprogress.At(inf.basename) == "") )
|
||||
{
|
||||
if ( developer >= 2 ) Console.Printf("Adding missing achievement progress %s",achievementinfo[i].basename);
|
||||
achievementprogress.Insert(achievementinfo[i].basename,"0");
|
||||
if ( developer >= 2 ) Console.Printf("Adding missing achievement progress %s",inf.basename);
|
||||
achievementprogress.Insert(inf.basename,"0");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -334,11 +334,11 @@ extend Class SWWMStaticHandler
|
|||
achievementstate = Dictionary.Create();
|
||||
achievementprogress = Dictionary.Create();
|
||||
ParseAchievementList(achievementinfo);
|
||||
for ( int i=0; i<achievementinfo.Size(); i++ )
|
||||
foreach ( inf:achievementinfo )
|
||||
{
|
||||
achievementstate.Insert(achievementinfo[i].basename,"0");
|
||||
if ( !achievementinfo[i].maxval ) continue;
|
||||
achievementprogress.Insert(achievementinfo[i].basename,"0");
|
||||
achievementstate.Insert(inf.basename,"0");
|
||||
if ( !inf.maxval ) continue;
|
||||
achievementprogress.Insert(inf.basename,"0");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -349,17 +349,17 @@ extend Class SWWMStaticHandler
|
|||
achievementprogress = Dictionary.Create();
|
||||
ParseAchievementList(achievementinfo);
|
||||
CVar cv;
|
||||
for ( int i=0; i<achievementinfo.Size(); i++ )
|
||||
foreach ( inf:achievementinfo )
|
||||
{
|
||||
String val = "0";
|
||||
cv = CVar.FindCVar("swwm_achievement_"..achievementinfo[i].basename);
|
||||
cv = CVar.FindCVar("swwm_achievement_"..inf.basename);
|
||||
if ( cv ) val = cv.GetString();
|
||||
achievementstate.Insert(achievementinfo[i].basename,val);
|
||||
if ( !achievementinfo[i].maxval ) continue;
|
||||
achievementstate.Insert(inf.basename,val);
|
||||
if ( !inf.maxval ) continue;
|
||||
val = "0";
|
||||
cv = CVar.FindCVar("swwm_progress_"..achievementinfo[i].basename);
|
||||
cv = CVar.FindCVar("swwm_progress_"..inf.basename);
|
||||
if ( cv ) val = cv.GetString();
|
||||
achievementprogress.Insert(achievementinfo[i].basename,val);
|
||||
achievementprogress.Insert(inf.basename,val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue