A couple tweaks.
This commit is contained in:
parent
b7d03a602d
commit
98012daf26
8 changed files with 118 additions and 88 deletions
|
|
@ -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**
|
||||||
|
|
|
||||||
151
achievements.lst
151
achievements.lst
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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-";
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue