I completely forgot what I changed.

This commit is contained in:
Mari the Deer 2021-03-23 17:03:51 +01:00
commit 7d401bdb61
53 changed files with 314 additions and 113 deletions

View file

@ -20,7 +20,7 @@ Class SWWMLevelCompatibility : LevelPostProcessor
protected void Apply( Name checksum, String mapname )
{
int numcol = 6;
int numcol = SWWMUtility.IsEviternity()?7:6;
int ncellsa = 0, ncellsb = 0;
int nbackpack = 0;
switch ( checksum )

View file

@ -74,6 +74,9 @@ extend Class SWWMStaticHandler
{
let c = (Class<SWWMCollectible>)(AllActorClasses[i]);
if ( !c || (c == 'SWWMCollectible') ) continue;
let def = GetDefaultByType(c);
// check that we can collect it in this IWAD
if ( !def.ValidGame() ) continue;
nc++;
}
maxval = nc;

View file

@ -14,9 +14,10 @@ Class SWWMCollectible : Inventory abstract
// minimum gametype requirements
enum EAvailability
{
AVAIL_Hexen = GAME_Hexen,
AVAIL_Heretic = AVAIL_Hexen|GAME_Heretic,
AVAIL_All = AVAIL_Heretic|GAME_DoomChex
AVAIL_Hexen,
AVAIL_Heretic,
AVAIL_Eviternity,
AVAIL_All
};
Default
@ -36,17 +37,24 @@ Class SWWMCollectible : Inventory abstract
Radius 8;
Height 24;
}
bool ValidGame() const
{
if ( avail == AVAIL_All ) return true;
if ( (avail == AVAIL_Eviternity) && ((gameinfo.gametype&GAME_Raven) || SWWMUtility.IsEviternity()) ) return true;
if ( (avail == AVAIL_Heretic) && (gameinfo.gametype&GAME_Raven) ) return true;
if ( (avail == AVAIL_Hexen) && (gameinfo.gametype&GAME_Hexen) ) return true;
return false;
}
override void PostBeginPlay()
{
Super.PostBeginPlay();
// delet ourselves if wrong iwad
if ( !(gameinfo.gametype&avail) )
Destroy();
if ( !ValidGame() ) Destroy();
}
override bool CanPickup( Actor toucher )
{
// no pickup if wrong iwad
if ( !(gameinfo.gametype&avail) ) return false;
if ( !ValidGame() ) return false;
return Super.CanPickup(toucher);
}
override string PickupMessage()
@ -174,14 +182,14 @@ Class SayaBean : SWWMCollectible
Height 23;
}
}
// Heretic
// Eviternity / Heretic
Class DemoPlush : SWWMCollectible
{
Default
{
Tag "$T_DEMOPLUSH";
Inventory.PickupMessage "$T_DEMOPLUSH";
SWWMCollectible.Availability AVAIL_Heretic;
SWWMCollectible.Availability AVAIL_Eviternity;
SWWMCollectible.GestureWeapon "DemoPlushGesture";
Stamina 6000;
Radius 12;

View file

@ -709,7 +709,7 @@ Class Chancebox : Actor
if ( !c || (c == 'SWWMCollectible') ) continue;
let def = GetDefaultByType(c);
// check that we can collect it in this IWAD
if ( !(gameinfo.gametype&def.avail) ) continue;
if ( !def.ValidGame() ) continue;
candidates.Push(c);
}
let ti = ThinkerIterator.Create("SWWMCollectible");
@ -898,7 +898,7 @@ Class Chancebox : Actor
if ( !c || (c == 'SWWMCollectible') ) continue;
let def = GetDefaultByType(c);
// check that we can collect it in this IWAD
if ( !(gameinfo.gametype&def.avail) ) continue;
if ( !def.ValidGame() ) continue;
tcol++;
}
int alldudchance = 5-(4*col)/tcol; // chance for all boxes to be duds (no collectibles)

View file

@ -100,6 +100,8 @@ Class DemolitionistMenu : GenericMenu
bool isrclick;
// somehow Drawer can be called while closing prematurely, which is big bollocks
bool isclosing;
// to save on calls
bool nrftl, eviternity, hexdd;
// returns MPlus if we're playing in Japanese, otherwise returns the requested font
Font LangFont( Font req )
@ -151,13 +153,14 @@ Class DemolitionistMenu : GenericMenu
lasttuid = Random[TUID]();
hnd = SWWMHandler(EventHandler.Find("SWWMHandler"));
// mission text
bool nrftl = false;
bool hexdd = false;
nrftl = false;
eviternity = false;
hexdd = false;
if ( (gameinfo.gametype&GAME_Doom) && SWWMUtility.IsKnownMap() )
{
int clus = level.cluster;
if ( clus == 11 ) nrftl = true;
bool eviternity = SWWMUtility.IsEviternity();
eviternity = SWWMUtility.IsEviternity();
if ( eviternity )
{
// we have to do some heavy lifting here because episodes don't match clusters
@ -285,7 +288,7 @@ Class DemolitionistMenu : GenericMenu
c_minute = 28;
}
}
else if ( SWWMUtility.IsEviternity() )
else if ( eviternity )
{
// June 10th 2150, 20:09 +09
// (June 10th 2150, 20:09 JST)
@ -804,6 +807,9 @@ Class DemolitionistMenu : GenericMenu
{
let c = (Class<SWWMCollectible>)(AllActorClasses[i]);
if ( !c || (c == 'SWWMCollectible') ) continue;
let def = GetDefaultByType(c);
// check that we can collect it in this IWAD
if ( !def.ValidGame() ) continue;
nc++;
}
ac.maxval = nc;

View file

@ -367,7 +367,7 @@ Class Demolitionist : PlayerPawn
if ( !type || (type == 'SWWMCollectible') ) continue;
let def = GetDefaultByType(type);
// check that we can collect it in this IWAD
if ( !(gameinfo.gametype&def.avail) ) continue;
if ( !def.ValidGame() ) continue;
let item = Inventory(Spawn(AllActorClasses[i]));
SWWMCollectible(item).propagated = true; // no score or anims
if ( !item.CallTryPickup(self) ) item.Destroy();

View file

@ -378,7 +378,7 @@ Class SWWMLoreLibrary : Thinker
if ( !c || (c == 'SWWMCollectible') ) continue;
let def = GetDefaultByType(c);
// skip if we match and it's not for this game
if ( (c.GetClassName() == ref) && !(gameinfo.gametype&def.avail) )
if ( (c.GetClassName() == ref) && !def.ValidGame() )
return true;
}
ref = ref.MakeUpper();
@ -416,55 +416,66 @@ Class SWWMLoreLibrary : Thinker
// redirects
if ( gameinfo.gametype&GAME_Hexen )
{
if ( text ~== "SWWM_LORETXT_SAYA" )
text = "SWWM_LORETXT_SAYA3"; // married kirin
if ( text ~== "SWWM_LORETXT_AKARIPROJECT" )
text = "SWWM_LORETXT_AKARIPROJECT3"; // mentions kirin
else if ( text ~== "SWWM_LORETXT_ANARUKON" )
text = "SWWM_LORETXT_ANARUKON2"; // comments from miyamoto-xanai wedding
else if ( text ~== "SWWM_LORETXT_HELL" )
text = "SWWM_LORETXT_HELL3"; // met father nostros during the wedding
else if ( text ~== "SWWM_LORETXT_NANA" )
text = "SWWM_LORETXT_NANA3"; // stuff that happened at the wedding
else if ( text ~== "SWWM_LORETXT_GHOULHUNT" )
text = "SWWM_LORETXT_GHOULHUNT2"; // met anthon anderken during the wedding
else if ( text ~== "SWWM_LORETXT_GODS" )
text = "SWWM_LORETXT_GODS2"; // beyond gods
else if ( text ~== "SWWM_LORETXT_HELL" )
text = "SWWM_LORETXT_HELL4"; // met father nostros during the wedding
else if ( text ~== "SWWM_LORETXT_NANA" )
text = "SWWM_LORETXT_NANA3"; // stuff that happened at the wedding
else if ( text ~== "SWWM_LORETXT_RAGEKIT" )
text = "SWWM_LORETXT_RAGEKIT2"; // kirin's reactions to demo using this item
else if ( text ~== "SWWM_LORETXT_SANKAIDERIHA" )
text = "SWWM_LORETXT_SANKAIDERIHA2"; // comments about kirin
else if ( text ~== "SWWM_LORETXT_SAYA" )
text = "SWWM_LORETXT_SAYA3"; // married kirin
else if ( text ~== "SWWM_LORETXT_SERPENTRIDERS" )
text = "SWWM_LORETXT_SERPENTRIDERS2"; // defeated d'sparil
else if ( text ~== "SWWM_LORETXT_XANIMEN" )
text = "SWWM_LORETXT_XANIMEN2"; // footnote about nuoma
else if ( text ~== "SWWM_LORETXT_ZANAVETH2" )
text = "SWWM_LORETXT_ZANAVETH22"; // met at wedding
else if ( text ~== "SWWM_LORETXT_YNYKRON" )
text = "SWWM_LORETXT_YNYKRON2"; // confirmed to harm (but not kill) gods
else if ( text ~== "SWWM_LORETXT_AKARIPROJECT" )
text = "SWWM_LORETXT_AKARIPROJECT3"; // mentions kirin
else if ( text ~== "SWWM_LORETXT_GODS" )
text = "SWWM_LORETXT_GODS2"; // beyond gods
else if ( text ~== "SWWM_LORETXT_ZANAVETH2" )
text = "SWWM_LORETXT_ZANAVETH22"; // met at wedding
}
if ( gameinfo.gametype&GAME_Raven )
{
if ( text ~== "SWWM_LORETXT_SAYA" )
text = "SWWM_LORETXT_SAYA2"; // dating demo
else if ( text ~== "SWWM_LORETXT_AKARILABS" )
if ( text ~== "SWWM_LORETXT_AKARIPROJECT" )
text = "SWWM_LORETXT_AKARIPROJECT2"; // fiction becomes reality
else if ( text ~== "SWWM_LORETXT_DOOMGUY" )
text = "SWWM_LORETXT_DOOMGUY3"; // he gone
else if ( text ~== "SWWM_LORETXT_HELL" )
text = "SWWM_LORETXT_HELL3"; // invasion was a thing of the past
else if ( text ~== "SWWM_LORETXT_UAC" )
text = "SWWM_LORETXT_UAC3"; // events of doom 64 and more
}
if ( (gameinfo.gametype&GAME_Raven) || SWWMUtility.IsEviternity() )
{
if ( text ~== "SWWM_LORETXT_AKARILABS" )
text = "SWWM_LORETXT_AKARILABS2"; // demo won, akari project announced
else if ( text ~== "SWWM_LORETXT_BIGSHOT" )
text = "SWWM_LORETXT_BIGSHOT2"; // predictions about crimes_m
else if ( text ~== "SWWM_LORETXT_DEMOLITIONIST" )
text = "SWWM_LORETXT_DEMOLITIONIST2"; // demo rewarded with maidbot frame
else if ( text ~== "SWWM_LORETXT_DOOMGUY" )
text = "SWWM_LORETXT_DOOMGUY2"; // he gone
else if ( text ~== "SWWM_LORETXT_UAC" )
text = "SWWM_LORETXT_UAC2"; // uac "reformed"
text = "SWWM_LORETXT_DOOMGUY2"; // decommissioned
else if ( text ~== "SWWM_LORETXT_GENERICCUBE" )
text = "SWWM_LORETXT_GENERICCUBE2"; // info from mykka
else if ( text ~== "SWWM_LORETXT_HELL" )
text = "SWWM_LORETXT_HELL2"; // invasion was a thing of the past
text = "SWWM_LORETXT_HELL2"; // events of tnt/plutonia
else if ( text ~== "SWWM_LORETXT_NANA" )
text = "SWWM_LORETXT_NANA2"; // demo met nana
else if ( text ~== "SWWM_LORETXT_SAYA" )
text = "SWWM_LORETXT_SAYA2"; // dating demo
else if ( text ~== "SWWM_LORETXT_UAC" )
text = "SWWM_LORETXT_UAC2"; // uac "reformed"
else if ( text ~== "SWWM_LORETXT_ZANAVETH3" )
text = "SWWM_LORETXT_ZANAVETH32"; // iagb happened
else if ( text ~== "SWWM_LORETXT_BIGSHOT" )
text = "SWWM_LORETXT_BIGSHOT2"; // predictions about crimes_m
else if ( text ~== "SWWM_LORETXT_AKARIPROJECT" )
text = "SWWM_LORETXT_AKARIPROJECT2"; // fiction becomes reality
}
// check if existing
for ( int i=0; i<ent.Size(); i++ )

View file

@ -1601,27 +1601,27 @@ Class SWWMUtility
{
String tn = TexMan.GetName(checkme);
if ( (tn ~== "MARBFAC2") )
return true, TexMan.CheckForTexture("textures/deface/defaced_MARBFAC2.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_MARBFAC2",TexMan.Type_Any);
if ( (tn ~== "MARBFAC3") )
return true, TexMan.CheckForTexture("textures/deface/defaced_MARBFAC3.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_MARBFAC3",TexMan.Type_Any);
if ( (tn ~== "MARBFAC4") )
return true, TexMan.CheckForTexture("textures/deface/defaced_MARBFAC4.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_MARBFAC4",TexMan.Type_Any);
if ( (tn ~== "MARBFACE") )
return true, TexMan.CheckForTexture("textures/deface/defaced_MARBFACE.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_MARBFACE",TexMan.Type_Any);
if ( (tn ~== "ZZWOLF2") )
return true, TexMan.CheckForTexture("textures/deface/defaced_ZZWOLF2.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_ZZWOLF2",TexMan.Type_Any);
if ( (tn ~== "ZZWOLF3") )
return true, TexMan.CheckForTexture("textures/deface/defaced_ZZWOLF3.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_ZZWOLF3",TexMan.Type_Any);
if ( (tn ~== "ZZWOLF4") )
return true, TexMan.CheckForTexture("textures/deface/defaced_ZZWOLF4.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_ZZWOLF4",TexMan.Type_Any);
if ( (tn ~== "ZZWOLF6") )
return true, TexMan.CheckForTexture("textures/deface/defaced_ZZWOLF6.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_ZZWOLF6",TexMan.Type_Any);
if ( (tn ~== "ZZWOLF7") )
return true, TexMan.CheckForTexture("textures/deface/defaced_ZZWOLF7.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_ZZWOLF7",TexMan.Type_Any);
if ( (tn ~== "ZZWOLF12") )
return true, TexMan.CheckForTexture("textures/deface/defaced_ZZWOLF12.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_ZZWOLF12",TexMan.Type_Any);
if ( (tn ~== "ZZWOLF13") )
return true, TexMan.CheckForTexture("textures/deface/defaced_ZZWOLF13.png",TexMan.Type_Any);
return true, TexMan.CheckForTexture("defaced_ZZWOLF13",TexMan.Type_Any);
return false, checkme;
}