From 5316a63ed95e96ae66846a70c3bcbd3d554ac7d8 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Wed, 24 Mar 2021 03:05:04 +0100 Subject: [PATCH] Achievement cleanup. --- cvarinfo.txt | 10 -- language.def_base | 20 --- language.es_base | 18 -- language.version | 4 +- zscript/handler/swwm_handler_worldload.zsc | 3 + .../swwm_statichandler_achievements.zsc | 51 ------ zscript/kbase/swwm_kbase.zsc | 50 ------ .../weapons/swwm_deathlydeathcannon_fx.zsc | 8 - zscript/weapons/swwm_splode.zsc | 162 ++++++------------ 9 files changed, 57 insertions(+), 269 deletions(-) diff --git a/cvarinfo.txt b/cvarinfo.txt index 7e18bf675..fc5ca1b76 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -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; diff --git a/language.def_base b/language.def_base index 16773ef10..6c3d14422 100644 --- a/language.def_base +++ b/language.def_base @@ -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)"; diff --git a/language.es_base b/language.es_base index b3b2190d1..6ce6de7e1 100644 --- a/language.es_base +++ b/language.es_base @@ -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)"; diff --git a/language.version b/language.version index 631ef3fdc..f970249aa 100644 --- a/language.version +++ b/language.version @@ -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-"; diff --git a/zscript/handler/swwm_handler_worldload.zsc b/zscript/handler/swwm_handler_worldload.zsc index b4e0503bf..a8156ec4c 100644 --- a/zscript/handler/swwm_handler_worldload.zsc +++ b/zscript/handler/swwm_handler_worldload.zsc @@ -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 ) diff --git a/zscript/handler/swwm_statichandler_achievements.zsc b/zscript/handler/swwm_statichandler_achievements.zsc index 2e803a318..7b9fecf46 100644 --- a/zscript/handler/swwm_statichandler_achievements.zsc +++ b/zscript/handler/swwm_statichandler_achievements.zsc @@ -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; diff --git a/zscript/kbase/swwm_kbase.zsc b/zscript/kbase/swwm_kbase.zsc index 75442bc15..c82446c84 100644 --- a/zscript/kbase/swwm_kbase.zsc +++ b/zscript/kbase/swwm_kbase.zsc @@ -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(); diff --git a/zscript/weapons/swwm_deathlydeathcannon_fx.zsc b/zscript/weapons/swwm_deathlydeathcannon_fx.zsc index f1f7cbee5..8c6e36032 100644 --- a/zscript/weapons/swwm_deathlydeathcannon_fx.zsc +++ b/zscript/weapons/swwm_deathlydeathcannon_fx.zsc @@ -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 ) diff --git a/zscript/weapons/swwm_splode.zsc b/zscript/weapons/swwm_splode.zsc index 0f233bb53..41056ef1f 100644 --- a/zscript/weapons/swwm_splode.zsc +++ b/zscript/weapons/swwm_splode.zsc @@ -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();