A couple tweaks.

This commit is contained in:
Mari the Deer 2021-04-08 15:56:18 +02:00
commit 98012daf26
8 changed files with 118 additions and 88 deletions

View file

@ -19,6 +19,15 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add after
- [Heretic] Manarock *("A delicacy for gods, but instantly deadly for mortals")* - [Heretic] Manarock *("A delicacy for gods, but instantly deadly for mortals")*
- [Heretic] Lithium - Volume One *(A work of art, one of the finest graphic novels)* - [Heretic] Lithium - Volume One *(A work of art, one of the finest graphic novels)*
- [Hexen] Rubber Duck *("Is this some kind of convoluted joke from those two?")* - [Hexen] Rubber Duck *("Is this some kind of convoluted joke from those two?")*
* **More achievements:**
- [Doom] Heck No *(Instakill 10 Archviles)*
- Kaboom *(Kill 30 enemies with planted Explodium Mags)*
- OH YEAH *(Bust through 20 doors)*
- [Doom] Goodbye Franchise *(Rescue Commander Keen)*
- Pacifist *(Finish a map without killing anything)*
- Untouchable *(Finish a map without taking damage)*
- Under Pressure *(Break a crusher)*
- The Longest Journey *(Walk a total of 1000km)*
* ***(Maybe)* Fake livestream chat overlay, with dynamic reactions to all sorts of stuff** * ***(Maybe)* Fake livestream chat overlay, with dynamic reactions to all sorts of stuff**
* **Replace all hitscan with *"light projectiles"*** * **Replace all hitscan with *"light projectiles"***
* **Leaning and a lot of other stuff involving ViewAngles and ViewPos** * **Leaning and a lot of other stuff involving ViewAngles and ViewPos**

View file

@ -5,78 +5,79 @@
# handling in zscript (usually for cases where this is dynamic, like # handling in zscript (usually for cases where this is dynamic, like
# the "all collectibles" achievement) # the "all collectibles" achievement)
# hasformat: the TXT string has a %d in it to substitute for maxval # hasformat: the TXT string has a %d in it to substitute for maxval
abort,0,no # gametype: the game this belongs to (any, doom, heretic, hexen, raven, etc.)
acid,200,yes abort,0,no,any
allcoll,-1,no acid,200,yes,any
allitems,30,yes allcoll,-1,no,any
allkills,30,yes allitems,30,yes,any
allsecrets,30,yes allkills,30,yes,any
anom,25,yes allsecrets,30,yes,nothexen
anone,0,no anom,25,yes,any
balls,10,yes anone,0,no,any
barrier,25,yes balls,10,yes,any
bonk,300,yes barrier,25,yes,doom
bossdash,10,yes bonk,300,yes,any
brake,30,yes bossdash,10,yes,any
bune,200,yes brake,30,yes,any
bustin,40,yes bune,200,yes,any
butts,100,yes bustin,40,yes,any
cheat,0,no butts,100,yes,any
cliffyb,0,no cheat,0,no,any
clonk,0,no cliffyb,0,no,nothexen
conga,15,yes clonk,0,no,any
#dab,100,yes conga,15,yes,any
#dakka,60,no #dab,100,yes,any
dime,0,no #dakka,60,no,any
dosh,1000000000,no dime,0,no,any
everything,0,no dosh,1000000000,no,any
ezkill,100,yes everything,0,no,any
flight,2000,yes ezkill,100,yes,any
friend,30,yes flight,2000,yes,any
fuel,400,yes friend,30,yes,any
#fuller,0,no fuel,400,yes,any
gcsandwich,25,yes #fuller,0,no,any
#gepgun,30,yes gcsandwich,25,yes,any
ghost,25,yes #gepgun,30,yes,any
gib,1000,yes ghost,25,yes,any
golden,24,yes gib,1000,yes,any
gravity,25,yes golden,24,yes,any
#hnd,6,yes gravity,25,yes,raven
jump,100,yes #hnd,6,yes,any
lead,1500,yes jump,100,yes,any
#lightning,0,no lead,1500,yes,any
ligma,0,no #lightning,0,no,any
love,20,yes ligma,0,no,any
#mashiro,0,no love,20,yes,any
mbf,0,no #mashiro,0,no,any
mega,1000000,no mbf,0,no,doom
moth,50,yes mega,1000000,no,any
nice,0,no moth,50,yes,any
oneguy,0,no nice,0,no,any
onestanding,0,no oneguy,0,no,any
oopsie,0,no onestanding,0,no,any
par,30,yes oopsie,0,no,any
parry,100,yes par,30,yes,nothexen
#pene,20,yes parry,100,yes,any
plush,20,yes #pene,20,yes,any
rage,25,yes plush,20,yes,any
reflect,20,yes rage,25,yes,any
refresh,25,yes reflect,20,yes,any
#roast,30,yes refresh,25,yes,any
salt,0,no #roast,30,yes,any
sanic,800,yes salt,0,no,any
sekiro,0,no sanic,800,yes,any
shame,0,no sekiro,0,no,any
shock,30,yes shame,0,no,any
slayer,40,yes shock,30,yes,any
slemg,50,yes slayer,40,yes,any
sneeze,20,yes slemg,50,yes,any
step,60,yes sneeze,20,yes,any
stomp,50,yes step,60,yes,any
sunny,25,yes stomp,50,yes,any
tele,0,no sunny,25,yes,any
thicc,100,yes tele,0,no,any
thruwall,25,yes thicc,100,yes,any
wantdie,0,no thruwall,25,yes,any
wave,0,no wantdie,0,no,any
yeet,0,no wave,0,no,any
yeet,0,no,doom

View file

@ -1,3 +1,3 @@
[default] [default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r433 \cu(Wed 7 Apr 11:17:04 CEST 2021)\c-"; SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r435 \cu(Thu 8 Apr 15:57:28 CEST 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r433 \cu(2021-04-07 11:17:04)\c-"; SWWM_SHORTVER="\cw0.9.11b-pre r435 \cu(2021-04-08 15:57:28)\c-";

View file

@ -49,7 +49,7 @@ extend Class SWWMHandler
return false; return false;
} }
private static bool ShouldSpawnGold() static bool ShouldSpawnGold()
{ {
int totalneeded = 0; int totalneeded = 0;
// check "free space" in player inventories // check "free space" in player inventories

View file

@ -18,6 +18,10 @@ Class FroggyChair : Actor
+NOBLOOD; +NOBLOOD;
+INTERPOLATEANGLES; +INTERPOLATEANGLES;
+FORCEPAIN; +FORCEPAIN;
+CANPASS;
+NOBLOCKMONST;
+MOVEWITHSECTOR;
+SLIDESONWALLS;
} }
private void BeginCarry( Actor carrier ) private void BeginCarry( Actor carrier )
{ {
@ -728,12 +732,12 @@ Class Chancebox : Actor
// no candidates? just burst into treats // no candidates? just burst into treats
if ( Random[Chancebox](0,1) ) if ( Random[Chancebox](0,1) )
{ {
let a = Spawn(!Random[Chancebox](0,2)?"GoldShell":Random[Chancebox](0,1)?"GrilledCheeseSandwich":"YnykronAmmo",pos); let a = Spawn((!Random[Chancebox](0,2)&&SWWMUtility.ItemExists("Spreadgun"))?"GoldShell":(Random[Chancebox](0,1)&&SWWMUtility.ItemExists("Ynykron"))?"YnykronAmmo":"GrilledCheeseSandwich",pos);
a.bDROPPED = false; a.bDROPPED = false;
a.bNOGRAVITY = false; a.bNOGRAVITY = false;
a.vel.z = FRandom[Chancebox](2,4); a.vel.z = FRandom[Chancebox](2,4);
} }
else if ( !Random[Chancebox](0,2) ) else if ( !Random[Chancebox](0,2) && SWWMUtility.ItemExists("CandyGun") )
{ {
for ( int i=0; i<=6; i++ ) for ( int i=0; i<=6; i++ )
{ {
@ -744,7 +748,7 @@ Class Chancebox : Actor
if ( i > 0 ) a.vel.xy = (cos(i*60),sin(i*60))*FRandom[Chancebox](1,2); if ( i > 0 ) a.vel.xy = (cos(i*60),sin(i*60))*FRandom[Chancebox](1,2);
} }
} }
else if ( !Random[Chancebox](0,2) ) else if ( !Random[Chancebox](0,2) && SWWMUtility.ItemExists("SilverBullet") )
{ {
for ( int i=0; i<3; i++ ) for ( int i=0; i<3; i++ )
{ {
@ -763,7 +767,7 @@ Class Chancebox : Actor
a.vel.xy = (cos(i*60),sin(i*60))*FRandom[Chancebox](3,4); a.vel.xy = (cos(i*60),sin(i*60))*FRandom[Chancebox](3,4);
} }
} }
else if ( Random[Chancebox](0,1) ) else if ( Random[Chancebox](0,1) && SWWMUtility.ItemExists("Hellblazer") )
{ {
let a = Spawn("HellblazerWarheads",pos); let a = Spawn("HellblazerWarheads",pos);
a.bDROPPED = false; a.bDROPPED = false;
@ -794,7 +798,7 @@ Class Chancebox : Actor
a.vel.xy = (cos(i*45),sin(i*45))*FRandom[Chancebox](5,6); a.vel.xy = (cos(i*45),sin(i*45))*FRandom[Chancebox](5,6);
} }
} }
else if ( Random[Chancebox](0,1) ) else if ( Random[Chancebox](0,1) && SWWMUtility.ItemExists("Spreadgun") )
{ {
let a = Spawn("BlackShell",pos); let a = Spawn("BlackShell",pos);
a.bDROPPED = false; a.bDROPPED = false;
@ -802,7 +806,7 @@ Class Chancebox : Actor
a.vel.z = FRandom[Chancebox](2,4); a.vel.z = FRandom[Chancebox](2,4);
for ( int i=0; i<3; i++ ) for ( int i=0; i<3; i++ )
{ {
a = Spawn("BlueShell",pos); a = Spawn("WhiteShell",pos);
a.bDROPPED = false; a.bDROPPED = false;
a.bNOGRAVITY = false; a.bNOGRAVITY = false;
a.vel.z = FRandom[Chancebox](2,4); a.vel.z = FRandom[Chancebox](2,4);
@ -810,7 +814,7 @@ Class Chancebox : Actor
} }
for ( int i=0; i<8; i++ ) for ( int i=0; i<8; i++ )
{ {
a = Spawn((i%2)?"WhiteShell":"PurpleShell",pos); a = Spawn((i%2)?"PurpleShell":"BlueShell",pos);
a.bDROPPED = false; a.bDROPPED = false;
a.bNOGRAVITY = false; a.bNOGRAVITY = false;
a.vel.z = FRandom[Chancebox](2,4); a.vel.z = FRandom[Chancebox](2,4);
@ -827,13 +831,14 @@ Class Chancebox : Actor
} }
else if ( Random[Chancebox](0,1) ) else if ( Random[Chancebox](0,1) )
{ {
Class<Actor> which = Random[Chancebox](1,0)?"HealthNuggetItem":"ArmorNuggetItem";
for ( int i=0; i<20; i++ ) for ( int i=0; i<20; i++ )
{ {
let a = Spawn("HealthNuggetItem",pos); let a = Spawn(which,pos);
a.bDROPPED = false; a.bDROPPED = false;
a.bNOGRAVITY = false; a.bNOGRAVITY = false;
a.vel.z = FRandom[Chancebox](2,8); a.vel.z = FRandom[Chancebox](2,8);
a.vel.xy = (cos(i*3.6),sin(i*3.6))*FRandom[Chancebox](1,8); a.vel.xy = (cos(i*18),sin(i*18))*FRandom[Chancebox](1,8);
} }
} }
else else

View file

@ -2308,6 +2308,10 @@ Class DemolitionistMenu : GenericMenu
if ( !type ) continue; if ( !type ) continue;
// no collectibles // no collectibles
if ( type is 'SWWMCollectible' ) continue; if ( type is 'SWWMCollectible' ) continue;
// no barriers outside doom
if ( !(gameinfo.gametype&GAME_DOOM) && (type is 'EBarrier') ) continue;
// no gravity outside raven
if ( !(gameinfo.gametype&GAME_RAVEN) && (type is 'GravitySuppressor') ) continue;
// can't sell candygun spares // can't sell candygun spares
if ( sub && (type is 'CandyGunSpares') ) continue; if ( sub && (type is 'CandyGunSpares') ) continue;
let cur = players[consoleplayer].mo.FindInventory(type); let cur = players[consoleplayer].mo.FindInventory(type);

View file

@ -335,7 +335,12 @@ Class Demolitionist : PlayerPawn
{ {
let type = (class<Inventory>)(AllActorClasses[i]); let type = (class<Inventory>)(AllActorClasses[i]);
if ( !type ) continue; if ( !type ) continue;
if ( !(gameinfo.gametype&GAME_Hexen) && (type is 'AmmoFabricator') ) continue; // no fabricators before hexen // no fabricators before hexen
if ( !(gameinfo.gametype&GAME_Hexen) && (type is 'AmmoFabricator') ) continue;
// no barriers outside doom
if ( !(gameinfo.gametype&GAME_DOOM) && (type is 'EBarrier') ) continue;
// no gravity outside raven
if ( !(gameinfo.gametype&GAME_RAVEN) && (type is 'GravitySuppressor') ) continue;
// Don't give maxed items // Don't give maxed items
let owned = FindInventory(type); let owned = FindInventory(type);
if ( owned && (owned.Amount >= owned.MaxAmount) ) continue; if ( owned && (owned.Amount >= owned.MaxAmount) ) continue;

View file

@ -48,6 +48,12 @@ Class SWWMUtility
continue; continue;
Array<String> ln; Array<String> ln;
list[i].Split(ln,",",0); list[i].Split(ln,",",0);
// game filtering
if ( !(gameinfo.gametype&GAME_DOOM) && (ln[3] ~== "doom") ) continue;
else if ( !(gameinfo.gametype&GAME_HERETIC) && (ln[3] ~== "heretic") ) continue;
else if ( !(gameinfo.gametype&GAME_HEXEN) && (ln[3] ~== "hexen") ) continue;
else if ( !(gameinfo.gametype&GAME_RAVEN) && (ln[3] ~== "raven") ) continue;
else if ( !(gameinfo.gametype&(GAME_DOOM|GAME_HERETIC)) && (ln[3] ~== "nothexen") ) continue;
let ac = new("SWWMAchievement"); let ac = new("SWWMAchievement");
ac.basename = ln[0]; ac.basename = ln[0];
ac.maxval = ln[1].ToInt(); ac.maxval = ln[1].ToInt();