Achievement cleanup.

This commit is contained in:
Mari the Deer 2021-03-24 03:05:04 +01:00
commit 5316a63ed9
9 changed files with 57 additions and 269 deletions

View file

@ -146,14 +146,12 @@ nosave int swwm_playtime = 0; // total playtime in seconds
// cross-session achievement cvars (0: locked, 1: unlocked, 2: notified)
nosave int swwm_achievement_gcsandwich = 0;
nosave int swwm_achievement_hdoom = 0;
nosave int swwm_achievement_onestanding = 0;
nosave int swwm_achievement_oopsie = 0;
nosave int swwm_achievement_ghost = 0;
nosave int swwm_achievement_clonk = 0;
nosave int swwm_achievement_allitems = 0;
nosave int swwm_achievement_conga = 0;
nosave int swwm_achievement_explogun = 0;
nosave int swwm_achievement_gravity = 0;
nosave int swwm_achievement_flight = 0;
nosave int swwm_achievement_cliffyb = 0;
@ -166,7 +164,6 @@ nosave int swwm_achievement_bossdash = 0;
nosave int swwm_achievement_sneeze = 0;
nosave int swwm_achievement_fuel = 0;
nosave int swwm_achievement_slayer = 0;
nosave int swwm_achievement_broccolidoccoli = 0;
nosave int swwm_achievement_dime = 0;
nosave int swwm_achievement_stomp = 0;
nosave int swwm_achievement_cheat = 0;
@ -222,19 +219,12 @@ nosave int swwm_achievement_bune = 0;
nosave int swwm_achievement_bonk = 0;
nosave int swwm_achievement_anom = 0;
nosave int swwm_achievement_anone = 0;
nosave int swwm_achievement_tetris = 0;
nosave int swwm_achievement_pong = 0;
nosave int swwm_achievement_snake = 0;
nosave int swwm_achievement_smb = 0;
nosave int swwm_achievement_tyrian = 0;
nosave int swwm_achievement_bof = 0;
nosave int swwm_achievement_wantdie = 0;
// cross-session progress cvars
nosave int swwm_progress_gcsandwich = 0;
nosave int swwm_progress_ghost = 0;
nosave int swwm_progress_allitems = 0;
nosave int swwm_progress_conga = 0;
nosave int swwm_progress_explogun = 0;
nosave int swwm_progress_gravity = 0;
nosave int swwm_progress_flight = 0;
nosave int swwm_progress_par = 0;

View file

@ -830,8 +830,6 @@ SWWM_FANART9 = "Marisa3.jpg";
// achievements
SWWM_ACHIEVEMENT_GCSANDWICH_TAG = "A Little Sandwich, as a Treat";
SWWM_ACHIEVEMENT_GCSANDWICH_TXT = "Use %d Grilled Cheese Sandwiches";
SWWM_ACHIEVEMENT_HDOOM_TAG = "Ara Ara";
SWWM_ACHIEVEMENT_HDOOM_TXT = "Load SWWM GZ and H-Doom together";
SWWM_ACHIEVEMENT_ONESTANDING_TAG = "A Warning to the Others";
SWWM_ACHIEVEMENT_ONESTANDING_TXT = "Finish a map with just one enemy left alive";
SWWM_ACHIEVEMENT_OOPSIE_TAG = "Big Oopsie";
@ -844,8 +842,6 @@ SWWM_ACHIEVEMENT_ALLITEMS_TAG = "Collector";
SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtain 100%% items in %d maps";
SWWM_ACHIEVEMENT_CONGA_TAG = "Conga Line of Death";
SWWM_ACHIEVEMENT_CONGA_TXT = "Kill %d enemies with a single XSB round";
SWWM_ACHIEVEMENT_EXPLOGUN_TAG = "Deadeye";
SWWM_ACHIEVEMENT_EXPLOGUN_TXT = "Land %d consecutive Explodium Gun shots on the same enemy without reloading or missing";
SWWM_ACHIEVEMENT_GRAVITY_TAG = "Decent Ascent";
SWWM_ACHIEVEMENT_GRAVITY_TXT = "Use %d Gravity Suppressors";
SWWM_ACHIEVEMENT_FLIGHT_TAG = "Demolitionist Space Program";
@ -870,16 +866,12 @@ SWWM_ACHIEVEMENT_FUEL_TAG = "Hydrogenated";
SWWM_ACHIEVEMENT_FUEL_TXT = "Consume a total of %dL of fuel";
SWWM_ACHIEVEMENT_SLAYER_TAG = "I am Become Death";
SWWM_ACHIEVEMENT_SLAYER_TXT = "Kill %d enemies with a single Slayer Warhead";
SWWM_ACHIEVEMENT_BROCCOLIDOCCOLI_TAG = "I am very Smart";
SWWM_ACHIEVEMENT_BROCCOLIDOCCOLI_TXT = "Load SWWM GZ and Brutal Doom together";
SWWM_ACHIEVEMENT_DIME_TAG = "Icarus Dimes";
SWWM_ACHIEVEMENT_DIME_TXT = "Blow yourself up with your own explosives";
SWWM_ACHIEVEMENT_STOMP_TAG = "Italian Plumber Complex";
SWWM_ACHIEVEMENT_STOMP_TXT = "Kill %d enemies by standing on them";
SWWM_ACHIEVEMENT_CHEAT_TAG = "It's Been Ten Years";
SWWM_ACHIEVEMENT_CHEAT_TXT = "Use a cheat code from SWWM Platinum";
SWWM_ACHIEVEMENT_GOD_TAG = "Just a Replica";
SWWM_ACHIEVEMENT_GOD_TXT = "Find something the Ynykron Artifact can't destroy";
SWWM_ACHIEVEMENT_THRUWALL_TAG = "Knock Knock";
SWWM_ACHIEVEMENT_THRUWALL_TXT = "Kill %d enemies through walls with the Silver Bullet";
SWWM_ACHIEVEMENT_MASHIRO_TAG = "Layers of White";
@ -982,17 +974,5 @@ SWWM_ACHIEVEMENT_ANOM_TAG = "Anomalous";
SWWM_ACHIEVEMENT_ANOM_TXT = "Use %d Mykradvo Artifacts";
SWWM_ACHIEVEMENT_ANONE_TAG = "Completely Necessary Use of Force";
SWWM_ACHIEVEMENT_ANONE_TXT = "Use the Mykradvo Artifact against a single non-boss enemy";
SWWM_ACHIEVEMENT_TETRIS_TAG = "Tetromination";
SWWM_ACHIEVEMENT_TETRIS_TXT = "Complete a full game of Tetris";
SWWM_ACHIEVEMENT_PONG_TAG = "Danny Won, Yeah";
SWWM_ACHIEVEMENT_PONG_TXT = "Complete a full game of Pong";
SWWM_ACHIEVEMENT_SNAKE_TAG = "Tsuchinoko Real";
SWWM_ACHIEVEMENT_SNAKE_TXT = "Complete a full game of Snake";
SWWM_ACHIEVEMENT_SMB_TAG = "Master of Platformers";
SWWM_ACHIEVEMENT_SMB_TXT = "Complete a full game of Demo Land Adventure";
SWWM_ACHIEVEMENT_TYRIAN_TAG = "Master of SHMUPs";
SWWM_ACHIEVEMENT_TYRIAN_TXT = "Complete a full game of Interstellar Demolitionist";
SWWM_ACHIEVEMENT_BOF_TAG = "Master of RPGs";
SWWM_ACHIEVEMENT_BOF_TXT = "Complete a full game of Demolition Quest";
SWWM_ACHIEVEMENT_WANTDIE_TAG = "E N D M I I";
SWWM_ACHIEVEMENT_WANTDIE_TXT = "Fully clear a single map in the hardest difficulty (without dying)";

View file

@ -733,7 +733,6 @@ SWWM_FANART = "Arte: ";
// achievements
SWWM_ACHIEVEMENT_GCSANDWICH_TAG = "Un Poco de Sandwich, de Propina";
SWWM_ACHIEVEMENT_GCSANDWICH_TXT = "Usa %d Sándwiches de Queso a la Plancha";
SWWM_ACHIEVEMENT_HDOOM_TXT = "Carga SWWM GZ y H-Doom juntos";
SWWM_ACHIEVEMENT_ONESTANDING_TAG = "Una Advertencia a los Otros";
SWWM_ACHIEVEMENT_ONESTANDING_TXT = "Termina un mapa con solo un enemigo vivo";
SWWM_ACHIEVEMENT_OOPSIE_TAG = "Gran Errorcito";
@ -746,8 +745,6 @@ SWWM_ACHIEVEMENT_ALLITEMS_TAG = "Recolector";
SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtén 100%% ítems en %d mapas";
SWWM_ACHIEVEMENT_CONGA_TAG = "Conga de la Muerte";
SWWM_ACHIEVEMENT_CONGA_TXT = "Mata %d enemigos con una sola bala XSB";
SWWM_ACHIEVEMENT_EXPLOGUN_TAG = "Puntería";
SWWM_ACHIEVEMENT_EXPLOGUN_TXT = "Haz blanco %d veces consecutivas en el mismo enemigo con la Pistola de Explodium sin recargar ni fallar";
SWWM_ACHIEVEMENT_GRAVITY_TAG = "Ascenso Decente";
SWWM_ACHIEVEMENT_GRAVITY_TXT = "Usa %d Supresores de Gravedad";
SWWM_ACHIEVEMENT_FLIGHT_TAG = "Programa Espacial Demolicionista";
@ -772,15 +769,11 @@ SWWM_ACHIEVEMENT_FUEL_TAG = "Hidrogenado";
SWWM_ACHIEVEMENT_FUEL_TXT = "Consume un total de %dL de combustible";
SWWM_ACHIEVEMENT_SLAYER_TAG = "Me he Convertido en Muerte";
SWWM_ACHIEVEMENT_SLAYER_TXT = "Mata %d enemigos con una sola Cabeza Nuclear Slayer";
SWWM_ACHIEVEMENT_BROCCOLIDOCCOLI_TAG = "Soy muy Inteligente";
SWWM_ACHIEVEMENT_BROCCOLIDOCCOLI_TXT = "Carga SWWM GZ y Brutal Doom juntos";
SWWM_ACHIEVEMENT_DIME_TXT = "Reviéntate con tus propios explosivos";
SWWM_ACHIEVEMENT_STOMP_TAG = "Complejo de Fontanero Italiano";
SWWM_ACHIEVEMENT_STOMP_TXT = "Mata %d enemigos saltando encima";
SWWM_ACHIEVEMENT_CHEAT_TAG = "Han Pasado Diez Años";
SWWM_ACHIEVEMENT_CHEAT_TXT = "Usa un código trampa de SWWM Platinum";
SWWM_ACHIEVEMENT_GOD_TAG = "Solo una Réplica";
SWWM_ACHIEVEMENT_GOD_TXT = "Encuentra algo que el Artefacto Ynykron no pueda destruir";
SWWM_ACHIEVEMENT_THRUWALL_TAG = "Toc Toc";
SWWM_ACHIEVEMENT_THRUWALL_TXT = "Mata %d enemigos a través de las paredes con el Silver Bullet";
SWWM_ACHIEVEMENT_MASHIRO_TAG = "Capas de Blanco";
@ -877,16 +870,5 @@ SWWM_ACHIEVEMENT_ANOM_TAG = "Anómalo";
SWWM_ACHIEVEMENT_ANOM_TXT = "Usa %d Artefactos Mykradvo";
SWWM_ACHIEVEMENT_ANONE_TAG = "Uso Completamente Necesario de Fuerza";
SWWM_ACHIEVEMENT_ANONE_TXT = "Usa el Artefacto Mykradvo contra un único enemigo no-jefe";
SWWM_ACHIEVEMENT_TETRIS_TAG = "Tetrominación";
SWWM_ACHIEVEMENT_TETRIS_TXT = "Completa una partida entera de Tetris";
SWWM_ACHIEVEMENT_PONG_TAG = "Danny Ganó, Yeah";
SWWM_ACHIEVEMENT_PONG_TXT = "Completa una partida entera de Pong";
SWWM_ACHIEVEMENT_SNAKE_TXT = "Completa una partida entera de Snake";
SWWM_ACHIEVEMENT_SMB_TAG = "Maestro de Plataformas";
SWWM_ACHIEVEMENT_SMB_TXT = "Completa una partida entera de Demo Land Adventure";
SWWM_ACHIEVEMENT_TYRIAN_TAG = "Maestro de SHMUPs";
SWWM_ACHIEVEMENT_TYRIAN_TXT = "Completa una partida entera de Interstellar Demolitionist";
SWWM_ACHIEVEMENT_BOF_TAG = "Maestro de RPGs";
SWWM_ACHIEVEMENT_BOF_TXT = "Completa una partida entera de Demolition Quest";
SWWM_ACHIEVEMENT_WANTDIE_TAG = "Mata a tu Jefe";
SWWM_ACHIEVEMENT_WANTDIE_TXT = "Despeja un mapa en la dificultad más alta (sin morir)";

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r396 \cu(Wed 24 Mar 02:25:38 CET 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r396 \cu(2021-03-24 02:25:38)\c-";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r397 \cu(Wed 24 Mar 03:05:04 CET 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r397 \cu(2021-03-24 03:05:04)\c-";

View file

@ -87,6 +87,9 @@ extend Class SWWMHandler
// beat the par time?
if ( level.partime && (Thinker.Tics2Seconds(level.maptime) <= level.partime) )
SWWMUtility.AchievementProgressInc('swwm_progress_par',1,players[consoleplayer]);
// one standing?
if ( (level.total_monsters-level.killed_monsters) == 1 )
SWWMUtility.MarkAchievement('swwm_achievement_onestanding',players[consoleplayer]);
}
private void SetupLockdefsCache( SWWMCachedLockInfo cli )

View file

@ -5,7 +5,6 @@ const SA_GCSANDWICH = 25;
const SA_GHOST = 25;
const SA_ALLITEMS = 30;
const SA_CONGA = 15;
const SA_EXPLOGUN = 7;
const SA_GRAVITY = 25;
const SA_FLIGHT = 2000;
const SA_PAR = 30;
@ -114,14 +113,12 @@ extend Class SWWMStaticHandler
static const Name vars[] =
{
'swwm_achievement_gcsandwich',
'swwm_achievement_hdoom',
'swwm_achievement_onestanding',
'swwm_achievement_oopsie',
'swwm_achievement_ghost',
'swwm_achievement_clonk',
'swwm_achievement_allitems',
'swwm_achievement_conga',
'swwm_achievement_explogun',
'swwm_achievement_gravity',
'swwm_achievement_flight',
'swwm_achievement_cliffyb',
@ -134,11 +131,9 @@ extend Class SWWMStaticHandler
'swwm_achievement_sneeze',
'swwm_achievement_fuel',
'swwm_achievement_slayer',
'swwm_achievement_broccolidoccoli',
'swwm_achievement_dime',
'swwm_achievement_stomp',
'swwm_achievement_cheat',
'swwm_achievement_god',
'swwm_achievement_thruwall',
'swwm_achievement_mashiro',
'swwm_achievement_lead',
@ -189,26 +184,18 @@ extend Class SWWMStaticHandler
'swwm_achievement_bonk',
'swwm_achievement_anom',
'swwm_achievement_anone',
'swwm_achievement_tetris',
'swwm_achievement_pong',
'swwm_achievement_snake',
'swwm_achievement_smb',
'swwm_achievement_tyrian',
'swwm_achievement_bof',
'swwm_achievement_wantdie'
};
// localized name
static const String names[] =
{
"$SWWM_ACHIEVEMENT_GCSANDWICH",
"$SWWM_ACHIEVEMENT_HDOOM",
"$SWWM_ACHIEVEMENT_ONESTANDING",
"$SWWM_ACHIEVEMENT_OOPSIE",
"$SWWM_ACHIEVEMENT_GHOST",
"$SWWM_ACHIEVEMENT_CLONK",
"$SWWM_ACHIEVEMENT_ALLITEMS",
"$SWWM_ACHIEVEMENT_CONGA",
"$SWWM_ACHIEVEMENT_EXPLOGUN",
"$SWWM_ACHIEVEMENT_GRAVITY",
"$SWWM_ACHIEVEMENT_FLIGHT",
"$SWWM_ACHIEVEMENT_CLIFFYB",
@ -221,11 +208,9 @@ extend Class SWWMStaticHandler
"$SWWM_ACHIEVEMENT_SNEEZE",
"$SWWM_ACHIEVEMENT_FUEL",
"$SWWM_ACHIEVEMENT_SLAYER",
"$SWWM_ACHIEVEMENT_BROCCOLIDOCCOLI",
"$SWWM_ACHIEVEMENT_DIME",
"$SWWM_ACHIEVEMENT_STOMP",
"$SWWM_ACHIEVEMENT_CHEAT",
"$SWWM_ACHIEVEMENT_GOD",
"$SWWM_ACHIEVEMENT_THRUWALL",
"$SWWM_ACHIEVEMENT_MASHIRO",
"$SWWM_ACHIEVEMENT_LEAD",
@ -276,26 +261,18 @@ extend Class SWWMStaticHandler
"$SWWM_ACHIEVEMENT_BONK",
"$SWWM_ACHIEVEMENT_ANOM",
"$SWWM_ACHIEVEMENT_ANONE",
"$SWWM_ACHIEVEMENT_TETRIS",
"$SWWM_ACHIEVEMENT_PONG",
"$SWWM_ACHIEVEMENT_SNAKE",
"$SWWM_ACHIEVEMENT_SMB",
"$SWWM_ACHIEVEMENT_TYRIAN",
"$SWWM_ACHIEVEMENT_BOF",
"$SWWM_ACHIEVEMENT_WANTDIE"
};
// has number in txt
static const int number[] =
{
SA_GCSANDWICH,
0, // HDOOM
0, // ONESTANDING
0, // OOPSIE
SA_GHOST,
0, // CLONK
SA_ALLITEMS,
SA_CONGA,
SA_EXPLOGUN,
SA_GRAVITY,
SA_FLIGHT,
0, // CLIFFYB
@ -308,11 +285,9 @@ extend Class SWWMStaticHandler
SA_SNEEZE,
SA_FUEL,
SA_SLAYER,
0, // BROCCOLIDOCCOLI
0, // DIME
SA_STOMP,
0, // CHEAT
0, // GOD
SA_THRUWALL,
0, // MASHIRO
SA_LEAD,
@ -363,26 +338,18 @@ extend Class SWWMStaticHandler
SA_BONK,
SA_ANOM,
0, // ANONE
0, // TETRIS
0, // PONG
0, // SNAKE
0, // SMB
0, // TYRIAN
0, // BOF
0 // WANTDIE
};
// is ignored (hide away achievements that can't be done yet)
static const bool ignoreme[] =
{
false, // GCSANDWICH
false, // HDOOM
false, // ONESTANDING
false, // OOPSIE
false, // GHOST
false, // CLONK
false, // ALLITEMS
false, // CONGA
false, // EXPLOGUN
false, // GRAVITY
false, // FLIGHT
false, // CLIFFYB
@ -395,11 +362,9 @@ extend Class SWWMStaticHandler
false, // SNEEZE
false, // FUEL
false, // SLAYER
false, // BROCCOLIDOCCOLI
false, // DIME
false, // STOMP
false, // CHEAT
false, // GOD
false, // THRUWALL
true, // MASHIRO
false, // LEAD
@ -450,26 +415,18 @@ extend Class SWWMStaticHandler
false, // BONK
false, // ANOM
false, // ANONE
true, // TETRIS
true, // PONG
true, // SNAKE
true, // SMB
true, // TYRIAN
true, // BOF
false // WANTDIE
};
// progress tracking cvar (if any)
static const Name pvar[] =
{
'swwm_progress_gcsandwich',
'None', // HDOOM
'None', // ONESTANDING
'None', // OOPSIE
'swwm_progress_ghost',
'None', // CLONK
'swwm_progress_allitems',
'swwm_progress_conga',
'swwm_progress_explogun',
'swwm_progress_gravity',
'swwm_progress_flight',
'None', // CLIFFYB
@ -482,11 +439,9 @@ extend Class SWWMStaticHandler
'swwm_progress_sneeze',
'swwm_progress_fuel',
'swwm_progress_slayer',
'None', // BROCCOLIDOCCOLI
'None', // DIME
'swwm_progress_stomp',
'None', // CHEAT
'None', // GOD
'swwm_progress_thruwall',
'None', // MASHIRO
'swwm_progress_lead',
@ -537,12 +492,6 @@ extend Class SWWMStaticHandler
'swwm_progress_bonk',
'swwm_progress_anom',
'None', // ANONE
'None', // TETRIS
'None', // PONG
'None', // SNAKE
'None', // SMB
'None', // TYRIAN
'None', // BOF
'None' // WANTDIE
};
bool alldone = true;

View file

@ -356,14 +356,12 @@ Class DemolitionistMenu : GenericMenu
static const Name vars[] =
{
'swwm_achievement_gcsandwich',
'swwm_achievement_hdoom',
'swwm_achievement_onestanding',
'swwm_achievement_oopsie',
'swwm_achievement_ghost',
'swwm_achievement_clonk',
'swwm_achievement_allitems',
'swwm_achievement_conga',
'swwm_achievement_explogun',
'swwm_achievement_gravity',
'swwm_achievement_flight',
'swwm_achievement_cliffyb',
@ -376,11 +374,9 @@ Class DemolitionistMenu : GenericMenu
'swwm_achievement_sneeze',
'swwm_achievement_fuel',
'swwm_achievement_slayer',
'swwm_achievement_broccolidoccoli',
'swwm_achievement_dime',
'swwm_achievement_stomp',
'swwm_achievement_cheat',
'swwm_achievement_god',
'swwm_achievement_thruwall',
'swwm_achievement_mashiro',
'swwm_achievement_lead',
@ -432,26 +428,18 @@ Class DemolitionistMenu : GenericMenu
'swwm_achievement_bonk',
'swwm_achievement_anom',
'swwm_achievement_anone',
'swwm_achievement_tetris',
'swwm_achievement_pong',
'swwm_achievement_snake',
'swwm_achievement_smb',
'swwm_achievement_tyrian',
'swwm_achievement_bof',
'swwm_achievement_wantdie'
};
// localized name
static const String names[] =
{
"$SWWM_ACHIEVEMENT_GCSANDWICH",
"$SWWM_ACHIEVEMENT_HDOOM",
"$SWWM_ACHIEVEMENT_ONESTANDING",
"$SWWM_ACHIEVEMENT_OOPSIE",
"$SWWM_ACHIEVEMENT_GHOST",
"$SWWM_ACHIEVEMENT_CLONK",
"$SWWM_ACHIEVEMENT_ALLITEMS",
"$SWWM_ACHIEVEMENT_CONGA",
"$SWWM_ACHIEVEMENT_EXPLOGUN",
"$SWWM_ACHIEVEMENT_GRAVITY",
"$SWWM_ACHIEVEMENT_FLIGHT",
"$SWWM_ACHIEVEMENT_CLIFFYB",
@ -464,11 +452,9 @@ Class DemolitionistMenu : GenericMenu
"$SWWM_ACHIEVEMENT_SNEEZE",
"$SWWM_ACHIEVEMENT_FUEL",
"$SWWM_ACHIEVEMENT_SLAYER",
"$SWWM_ACHIEVEMENT_BROCCOLIDOCCOLI",
"$SWWM_ACHIEVEMENT_DIME",
"$SWWM_ACHIEVEMENT_STOMP",
"$SWWM_ACHIEVEMENT_CHEAT",
"$SWWM_ACHIEVEMENT_GOD",
"$SWWM_ACHIEVEMENT_THRUWALL",
"$SWWM_ACHIEVEMENT_MASHIRO",
"$SWWM_ACHIEVEMENT_LEAD",
@ -520,26 +506,18 @@ Class DemolitionistMenu : GenericMenu
"$SWWM_ACHIEVEMENT_BONK",
"$SWWM_ACHIEVEMENT_ANOM",
"$SWWM_ACHIEVEMENT_ANONE",
"$SWWM_ACHIEVEMENT_TETRIS",
"$SWWM_ACHIEVEMENT_PONG",
"$SWWM_ACHIEVEMENT_SNAKE",
"$SWWM_ACHIEVEMENT_SMB",
"$SWWM_ACHIEVEMENT_TYRIAN",
"$SWWM_ACHIEVEMENT_BOF",
"$SWWM_ACHIEVEMENT_WANTDIE"
};
// has number in txt
static const int number[] =
{
SA_GCSANDWICH,
0, // HDOOM
0, // ONESTANDING
0, // OOPSIE
SA_GHOST,
0, // CLONK
SA_ALLITEMS,
SA_CONGA,
SA_EXPLOGUN,
SA_GRAVITY,
SA_FLIGHT,
0, // CLIFFYB
@ -552,11 +530,9 @@ Class DemolitionistMenu : GenericMenu
SA_SNEEZE,
SA_FUEL,
SA_SLAYER,
0, // BROCCOLIDOCCOLI
0, // DIME
SA_STOMP,
0, // CHEAT
0, // GOD
SA_THRUWALL,
0, // MASHIRO
SA_LEAD,
@ -608,26 +584,18 @@ Class DemolitionistMenu : GenericMenu
SA_BONK,
SA_ANOM,
0, // ANONE
0, // TETRIS
0, // PONG
0, // SNAKE
0, // SMB
0, // TYRIAN
0, // BOF
0 // WANTDIE
};
// is ignored (hide away achievements that can't be done yet)
static const bool ignoreme[] =
{
false, // GCSANDWICH
false, // HDOOM
false, // ONESTANDING
false, // OOPSIE
false, // GHOST
false, // CLONK
false, // ALLITEMS
false, // CONGA
false, // EXPLOGUN
false, // GRAVITY
false, // FLIGHT
false, // CLIFFYB
@ -640,11 +608,9 @@ Class DemolitionistMenu : GenericMenu
false, // SNEEZE
false, // FUEL
false, // SLAYER
false, // BROCCOLIDOCCOLI
false, // DIME
false, // STOMP
false, // CHEAT
false, // GOD
false, // THRUWALL
true, // MASHIRO
false, // LEAD
@ -696,26 +662,18 @@ Class DemolitionistMenu : GenericMenu
false, // BONK
false, // ANOM
false, // ANONE
true, // TETRIS
true, // PONG
true, // SNAKE
true, // SMB
true, // TYRIAN
true, // BOF
false // WANTDIE
};
// progress tracking cvar (if any)
static const Name pvar[] =
{
'swwm_progress_gcsandwich',
'None', // HDOOM
'None', // ONESTANDING
'None', // OOPSIE
'swwm_progress_ghost',
'None', // CLONK
'swwm_progress_allitems',
'swwm_progress_conga',
'swwm_progress_explogun',
'swwm_progress_gravity',
'swwm_progress_flight',
'None', // CLIFFYB
@ -728,11 +686,9 @@ Class DemolitionistMenu : GenericMenu
'swwm_progress_sneeze',
'swwm_progress_fuel',
'swwm_progress_slayer',
'None', // BROCCOLIDOCCOLI
'None', // DIME
'swwm_progress_stomp',
'None', // CHEAT
'None', // GOD
'swwm_progress_thruwall',
'None', // MASHIRO
'swwm_progress_lead',
@ -784,12 +740,6 @@ Class DemolitionistMenu : GenericMenu
'swwm_progress_bonk',
'swwm_progress_anom',
'None', // ANONE
'None', // TETRIS
'None', // PONG
'None', // SNAKE
'None', // SMB
'None', // TYRIAN
'None', // BOF
'None' // WANTDIE
};
achievements.Clear();

View file

@ -420,11 +420,7 @@ Class YnykronImpact : Actor
gc.Amount--;
}
else if ( !tracer.FindInventory("GrilledCheeseSafeguard") )
{
tracer.DamageMobj(self,target,int.max,'Ynykron',DMG_FORCED|DMG_THRUSTLESS);
if ( target && tracer && (tracer.Health > 0) )
SWWMUtility.MarkAchievement('swwm_achievement_god',target.player);
}
if ( tracer && (tracer.Health <= 0) )
{
if ( tracer.player )
@ -2427,11 +2423,7 @@ Class YnykronSingularity : Actor
gc.Amount--;
}
else if ( !a.FindInventory("GrilledCheeseSafeguard") )
{
a.DamageMobj(self,target,int.max,'Ynykron',DMG_FORCED|DMG_THRUSTLESS);
if ( target && a && (a.Health > 0) )
SWWMUtility.MarkAchievement('swwm_achievement_god',target.player);
}
if ( a && (a.Health <= 0) )
{
if ( a.player )

View file

@ -9,8 +9,6 @@ Class ExplodiumGun : SWWMWeapon
double casex, casey;
transient ui TextureID WeaponBox;
transient ui Font TewiFont;
transient Actor deadeye_tgt;
transient int deadeye_cnt;
Property ClipCount : ClipCount;
@ -112,17 +110,6 @@ Class ExplodiumGun : SWWMWeapon
SWWMBulletTrail.DoTrail(self,origin,dir,10000,2);
if ( d.HitType == TRACE_HitActor )
{
if ( invoker.deadeye_tgt && (d.HitActor != invoker.deadeye_tgt) )
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
}
else
{
invoker.deadeye_tgt = d.HitActor;
invoker.deadeye_cnt++;
SWWMUtility.AchievementProgress('swwm_progress_explogun',invoker.deadeye_cnt,player);
}
int dmg = 15;
// might as well apply explosion on top
if ( dmg >= d.HitActor.Health ) dmg += 20;
@ -144,38 +131,33 @@ Class ExplodiumGun : SWWMWeapon
b.pitch = asin(d.HitDir.z);
b.target = self;
}
else
else if ( d.HitType != TRACE_HitNone )
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
if ( d.HitType != TRACE_HitNone )
Vector3 hitnormal = -d.HitDir;
if ( d.HitType == TRACE_HitFloor )
{
Vector3 hitnormal = -d.HitDir;
if ( d.HitType == TRACE_HitFloor )
{
if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal;
else hitnormal = d.HitSector.floorplane.Normal;
}
else if ( d.HitType == TRACE_HitCeiling )
{
if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal;
else hitnormal = d.HitSector.ceilingplane.Normal;
}
else if ( d.HitType == TRACE_HitWall )
{
hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit();
if ( !d.LineSide ) hitnormal *= -1;
}
let p = Spawn("SWWMBulletImpact",d.HitLocation+hitnormal*0.01);
p.angle = atan2(hitnormal.y,hitnormal.x);
p.pitch = asin(-hitnormal.z);
if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation);
let b = Spawn("ExplodiumBulletImpact",d.HitLocation+hitnormal*4.);
b.angle = atan2(hitnormal.y,hitnormal.x);
b.pitch = asin(-hitnormal.z);
b.target = self;
if ( swwm_omnibust ) BusterWall.BustLinetrace(d,50,self,d.HitDir,d.HitLocation.z);
if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal;
else hitnormal = d.HitSector.floorplane.Normal;
}
else if ( d.HitType == TRACE_HitCeiling )
{
if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal;
else hitnormal = d.HitSector.ceilingplane.Normal;
}
else if ( d.HitType == TRACE_HitWall )
{
hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit();
if ( !d.LineSide ) hitnormal *= -1;
}
let p = Spawn("SWWMBulletImpact",d.HitLocation+hitnormal*0.01);
p.angle = atan2(hitnormal.y,hitnormal.x);
p.pitch = asin(-hitnormal.z);
if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation);
let b = Spawn("ExplodiumBulletImpact",d.HitLocation+hitnormal*4.);
b.angle = atan2(hitnormal.y,hitnormal.x);
b.pitch = asin(-hitnormal.z);
b.target = self;
if ( swwm_omnibust ) BusterWall.BustLinetrace(d,50,self,d.HitDir,d.HitLocation.z);
}
for ( int i=0; i<6; i++ )
{
@ -301,12 +283,7 @@ Class ExplodiumGun : SWWMWeapon
XZW1 A -1;
Stop;
Select:
XZW2 B 2
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
A_FullRaise();
}
XZW2 B 2 A_FullRaise();
XZW2 CDEFGH 2;
Goto Ready;
Ready:
@ -371,8 +348,6 @@ Class ExplodiumGun : SWWMWeapon
Reload:
XZW2 A 1
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
if ( invoker.clipcount >= invoker.default.clipcount ) return ResolveState("CheckBullet");
A_PlayerReload();
if ( invoker.clipcount <= 0 ) return ResolveState("ReloadEmpty");
@ -480,8 +455,6 @@ Class DualExplodiumGun : SWWMWeapon
double casex, casey, lcasex, lcasey;
transient ui TextureID WeaponBox;
transient ui Font TewiFont;
transient Actor deadeye_tgt;
transient int deadeye_cnt;
Property ClipCount : ClipCount;
@ -579,17 +552,6 @@ Class DualExplodiumGun : SWWMWeapon
SWWMBulletTrail.DoTrail(self,origin,dir,10000,2);
if ( d.HitType == TRACE_HitActor )
{
if ( invoker.deadeye_tgt && (d.HitActor != invoker.deadeye_tgt) )
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
}
else
{
invoker.deadeye_tgt = d.HitActor;
invoker.deadeye_cnt++;
SWWMUtility.AchievementProgress('swwm_progress_explogun',invoker.deadeye_cnt,player);
}
int dmg = 15;
// might as well apply explosion on top
if ( dmg >= d.HitActor.Health ) dmg += 20;
@ -611,38 +573,33 @@ Class DualExplodiumGun : SWWMWeapon
b.pitch = asin(d.HitDir.z);
b.target = self;
}
else
else if ( d.HitType != TRACE_HitNone )
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
if ( d.HitType != TRACE_HitNone )
Vector3 hitnormal = -d.HitDir;
if ( d.HitType == TRACE_HitFloor )
{
Vector3 hitnormal = -d.HitDir;
if ( d.HitType == TRACE_HitFloor )
{
if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal;
else hitnormal = d.HitSector.floorplane.Normal;
}
else if ( d.HitType == TRACE_HitCeiling )
{
if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal;
else hitnormal = d.HitSector.ceilingplane.Normal;
}
else if ( d.HitType == TRACE_HitWall )
{
hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit();
if ( !d.LineSide ) hitnormal *= -1;
}
let p = Spawn("SWWMBulletImpact",d.HitLocation+hitnormal*0.01);
p.angle = atan2(hitnormal.y,hitnormal.x);
p.pitch = asin(-hitnormal.z);
if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation);
let b = Spawn("ExplodiumBulletImpact",d.HitLocation+hitnormal*4.);
b.angle = atan2(hitnormal.y,hitnormal.x);
b.pitch = asin(-hitnormal.z);
b.target = self;
if ( swwm_omnibust ) BusterWall.BustLinetrace(d,50,self,d.HitDir,d.HitLocation.z);
if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal;
else hitnormal = d.HitSector.floorplane.Normal;
}
else if ( d.HitType == TRACE_HitCeiling )
{
if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal;
else hitnormal = d.HitSector.ceilingplane.Normal;
}
else if ( d.HitType == TRACE_HitWall )
{
hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit();
if ( !d.LineSide ) hitnormal *= -1;
}
let p = Spawn("SWWMBulletImpact",d.HitLocation+hitnormal*0.01);
p.angle = atan2(hitnormal.y,hitnormal.x);
p.pitch = asin(-hitnormal.z);
if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation);
let b = Spawn("ExplodiumBulletImpact",d.HitLocation+hitnormal*4.);
b.angle = atan2(hitnormal.y,hitnormal.x);
b.pitch = asin(-hitnormal.z);
b.target = self;
if ( swwm_omnibust ) BusterWall.BustLinetrace(d,50,self,d.HitDir,d.HitLocation.z);
}
for ( int i=0; i<6; i++ )
{
@ -717,12 +674,7 @@ Class DualExplodiumGun : SWWMWeapon
States
{
Select:
XZW2 B 2
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
A_FullRaise();
}
XZW2 B 2 A_FullRaise();
XZW2 C 2;
XZW2 D 2 { player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftSelect")); }
XZW2 EFGHAA 2;
@ -837,12 +789,7 @@ Class DualExplodiumGun : SWWMWeapon
XZWB A 1;
Goto LeftReady;
Reload:
XZW2 A 9
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLower"));
}
XZW2 A 9 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLower")); }
XZW2 A 1
{
A_PlayerReload();
@ -898,12 +845,7 @@ Class DualExplodiumGun : SWWMWeapon
XZW2 A 0 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaise")); }
Goto Ready;
LeftReload:
XZWB A 9
{
invoker.deadeye_tgt = null;
invoker.deadeye_cnt = 0;
player.SetPSPrite(PSP_WEAPON,ResolveState("Lower"));
}
XZWB A 9 { player.SetPSPrite(PSP_WEAPON,ResolveState("Lower")); }
XZWB A 1
{
A_PlayerReload();