Detect when all clear levels get "uncleared" by newly spawning stuff.

Try to fix blood pools on skies (hopefully).
This commit is contained in:
Mari the Deer 2021-02-16 21:05:27 +01:00
commit ddd198974d
7 changed files with 53 additions and 15 deletions

View file

@ -658,6 +658,9 @@ SWWM_LASTMONSTER = "\cf%s\cf killed the last monster. +%d\c-";
SWWM_NEWLORE = "New entries have been added to the Library.";
SWWM_SELLEXTRA = "\cf%s\cf sold an extra %s\cf. +%d\c-";
SWWM_ALLCLEAR = "\cxLevel all clear! \cf+%d\c-";
SWWM_NOTCLEAR = "\cxLevel not clear?\c-";
SWWM_ALLCLEARAGAIN = "\cxLevel all clear... again!? \cf+%d\c-";
SWWM_NOTCLEARAGAIN = "\cxLevel not clear... again??\c-";
SWWM_NEWMISSION = "Mission briefing has been updated.";
// intermission tips
SWWM_NINTERTIP = "120";

View file

@ -585,6 +585,9 @@ SWWM_NEWLORE = "Hay nuevas entradas disponibles en la Biblioteca.";
SWWM_SELLEXTRA = "\cf%s\cf vendió un %s\cf extra. +%d\c-";
SWWM_SELLEXTRA_FEM = "\cf%s\cf vendió una %s\cf extra. +%d\c-";
SWWM_ALLCLEAR = "\cx¡Nivel despejado! \cf+%d\c-";
SWWM_NOTCLEAR = "\cx¿Nivel no despejado?\c-";
SWWM_ALLCLEARAGAIN = "\cx¿¡Nivel despejado... otra vez!? \cf+%d\c-";
SWWM_NOTCLEARAGAIN = "\cx¿¿Nivel no despejado... otra vez??\c-";
SWWM_NEWMISSION = "El informe de misión ha sido actualizado.";
// intermission tips
SWWM_INTERTIP = "Consejo #%d:";

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r278 \cu(Tue 16 Feb 00:51:55 CET 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r278 \cu(2021-02-16 00:51:55)\c-";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r279 \cu(Tue 16 Feb 21:05:27 CET 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r279 \cu(2021-02-16 21:05:27)\c-";

View file

@ -8,6 +8,7 @@ bestsound sounds/CORK.ogg
haha/dab sounds/DAB.ogg
bruh sounds/BRUH.ogg
squeak sounds/SQUEAK.ogg
recordscratch sounds/RECSCRAP.ogg
saya/giggle1 sounds/saya/saya_giggle1.ogg
saya/giggle2 sounds/saya/saya_giggle2.ogg

BIN
sounds/RECSCRAP.ogg Normal file

Binary file not shown.

View file

@ -223,7 +223,7 @@ Class mkBloodDrop : Actor
if ( !d.HitSector )
{
d.HitSector = floorsector;
d.HitTexture = floorpic;
d.HitTexture = floorsector.GetTexture(0);
}
if ( d.HitTexture == skyflatnum )
{
@ -265,7 +265,7 @@ Class mkBloodDrop : Actor
if ( !d.HitSector )
{
d.HitSector = ceilingsector;
d.HitTexture = ceilingpic;
d.HitTexture = ceilingsector.GetTexture(1);
}
if ( (d.HitTexture == skyflatnum) || master )
{

View file

@ -232,9 +232,10 @@ Class SWWMHandler : EventHandler
int lastkill[MAXPLAYERS];
int multilevel[MAXPLAYERS];
int lastitemcount[MAXPLAYERS];
bool mnotify;
bool allkills, allitems, allsecrets;
bool mapclear;
bool mnotify;
int mapclearagain, restartmus;
// for custom cheats
transient ui int kcode;
transient ui String kstr;
@ -1240,16 +1241,37 @@ Class SWWMHandler : EventHandler
private void OneHundredPercentCheck()
{
if ( !mapclear && (restartmus > 0) )
{
restartmus--;
if ( restartmus == 0 ) S_ChangeMusic("*",force:true);
return;
}
// ignore levels that have NOTHING
if ( (level.total_secrets <= 0)
&& (level.total_items <= 0)
&& (level.total_monsters <= 0) ) return;
if ( mapclear ) return;
if ( (level.found_secrets < level.total_secrets)
|| (level.found_items < level.total_items)
|| (level.killed_monsters < level.total_monsters) ) return;
if ( (level.total_secrets <= 0) && (level.total_items <= 0) && (level.total_monsters <= 0) ) return;
if ( mapclear )
{
if ( (swwm_silencemap > 1) && (musplaying.name != "music/olg.ogg") )
S_ChangeMusic("music/olg.ogg",force:true);
if ( (level.found_secrets < level.total_secrets) || (level.found_items < level.total_items) || (level.killed_monsters < level.total_monsters) )
{
if ( swwm_silencemap > 0 )
{
restartmus = 25;
S_ChangeMusic("",force:true);
S_StartSound("recordscratch",CHAN_VOICE,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE);
}
mapclear = false;
if ( mapclearagain > 1 ) Console.Printf(StringTable.Localize("$SWWM_NOTCLEARAGAIN"));
else Console.Printf(StringTable.Localize("$SWWM_NOTCLEAR"));
}
return;
}
if ( (level.found_secrets < level.total_secrets) || (level.found_items < level.total_items) || (level.killed_monsters < level.total_monsters) ) return;
restartmus = 0;
mapclear = true;
Console.Printf(StringTable.Localize("$SWWM_ALLCLEAR"),5000);
if ( mapclearagain ) Console.Printf(StringTable.Localize("$SWWM_ALLCLEARAGAIN"),500);
else Console.Printf(StringTable.Localize("$SWWM_ALLCLEAR"),5000);
S_StartSound("misc/wow",CHAN_VOICE,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE);
if ( swwm_silencemap == 1 ) S_ChangeMusic("",force:true);
else if ( swwm_silencemap > 1 ) S_ChangeMusic("music/olg.ogg",force:true);
@ -1258,10 +1280,19 @@ Class SWWMHandler : EventHandler
if ( !playeringame[i] || !players[i].mo ) continue;
let f = Actor.Spawn("PartyTime",players[i].mo.pos);
f.bAMBUSH = true;
if ( mapclearagain )
{
SWWMCredits.Give(players[i],500);
SWWMScoreObj.Spawn(500,players[i].mo.Vec3Offset(0,0,players[i].mo.Height/2));
}
else
{
SWWMCredits.Give(players[i],5000);
SWWMScoreObj.Spawn(5000,players[i].mo.Vec3Offset(0,0,players[i].mo.Height/2));
}
}
mapclearagain++;
}
override void WorldTick()
{